package llm_service

//type LangChainService struct {
//	client *utils_langchain.UtilLangChain
//}
//
//func NewLangChainGenerate(
//	client *utils_langchain.UtilLangChain,
//) *LangChainService {
//
//	return &LangChainService{
//		client: client,
//	}
//}
//
//func (r *LangChainService) IntentRecognize(ctx context.Context, sysInfo model.AiSy, history []model.AiChatHi, userInput string, tasks []model.AiTask) (msg string, err error) {
//	prompt := r.getPrompt(sysInfo, history, userInput, tasks)
//	AgentClient := r.client.Get()
//	defer r.client.Put(AgentClient)
//	match, err := AgentClient.Llm.GenerateContent(
//		ctx, // 使用可取消的上下文
//		prompt,
//		llms.WithJSONMode(),
//	)
//	msg = match.Choices[0].Content
//	return
//}
//
//func (r *LangChainService) getPrompt(sysInfo model.AiSy, history []model.AiChatHi, reqInput string, tasks []model.AiTask) []llms.MessageContent {
//	var (
//		prompt = make([]llms.MessageContent, 0)
//	)
//	prompt = append(prompt, llms.MessageContent{
//		Role: llms.ChatMessageTypeSystem,
//		Parts: []llms.ContentPart{
//			llms.TextPart(buildSystemPrompt(sysInfo.SysPrompt)),
//		},
//	}, llms.MessageContent{
//		Role: llms.ChatMessageTypeTool,
//		Parts: []llms.ContentPart{
//			llms.TextPart(pkg.JsonStringIgonErr(buildAssistant(history))),
//		},
//	}, llms.MessageContent{
//		Role: llms.ChatMessageTypeTool,
//		Parts: []llms.ContentPart{
//			llms.TextPart(pkg.JsonStringIgonErr(r.registerTools(tasks))),
//		},
//	}, llms.MessageContent{
//		Role: llms.ChatMessageTypeHuman,
//		Parts: []llms.ContentPart{
//			llms.TextPart(reqInput),
//		},
//	})
//	return prompt
//}
//
//func (r *LangChainService) registerTools(tasks []model.AiTask) []llms.Tool {
//	taskPrompt := make([]llms.Tool, 0)
//	for _, task := range tasks {
//		var taskConfig entitys.TaskConfig
//		err := json.Unmarshal([]byte(task.Config), &taskConfig)
//		if err != nil {
//			continue
//		}
//		taskPrompt = append(taskPrompt, llms.Tool{
//			Type: "function",
//			Function: &llms.FunctionDefinition{
//				Name:        task.Index,
//				Description: task.Desc,
//				Parameters:  taskConfig.Param,
//			},
//		})
//
//	}
//	return taskPrompt
//}
