kobe6258 6 天之前
父节点
当前提交
1a981b9117

+ 32 - 4
services/llm/facade/llm_service.go

@@ -49,6 +49,8 @@ func LLMKnowledgeBaseSearchDocs(search LLMKnowledgeSearch) (resp bus_response.Se
 
 // AIGCBaseOnPromote aigc 生成内容
 func AIGCBaseOnPromote(aigc AIGC) (resp bus_response.AIGCEtaResponse, err error) {
+	param := make(map[string]interface{})
+	param["LLM"] =aigc.LLMModel
 	mapping, queryErr := rag.GetArticleKbMapping(aigc.ArticleId)
 	if queryErr != nil && !errors.Is(queryErr, gorm.ErrRecordNotFound) {
 		utils.FileLog.Error("获取文章知识库信息失败,err: %v", queryErr)
@@ -85,7 +87,7 @@ func AIGCBaseOnPromote(aigc AIGC) (resp bus_response.AIGCEtaResponse, err error)
 				utils.FileLog.Error("打开文件失败,err:", err)
 				return
 			}
-			uploadResp, httpErr := llmService.UploadFileToTemplate([]*os.File{file}, nil)
+			uploadResp, httpErr := llmService.UploadFileToTemplate([]*os.File{file}, param)
 			if httpErr != nil {
 				utils.FileLog.Error("上传文件失败,err:", err.Error())
 				err = fmt.Errorf("上传文件失败,err:%v", httpErr)
@@ -129,9 +131,35 @@ func AIGCBaseOnPromote(aigc AIGC) (resp bus_response.AIGCEtaResponse, err error)
 			return
 		}
 		if gcResp.Code == 404 {
-			_, httpErr = llmService.UploadFileToTemplate([]*os.File{file}, map[string]interface{}{
-				"PrevId": kbId,
-			})
+			param["PrevId"] = kbId
+			article, fileErr := rag.GetArticleById(aigc.ArticleId)
+			if fileErr != nil {
+				// 找不到就处理失败
+				utils.FileLog.Error("公众号文章不存在")
+				err = fmt.Errorf("公众号文章不存在")
+				return
+			}
+			if article.TextContent == "" {
+				utils.FileLog.Error("暂不支持纯文本以外的内容生成")
+				err = fmt.Errorf("暂不支持纯文本以外的内容生成")
+				return
+			}
+			// 文章加入到知识库
+			path, fileErr := localService.CreateArticleFile(article)
+			if fileErr != nil {
+				utils.FileLog.Error("创建文章文件失败,err: %v", fileErr)
+				err = fmt.Errorf("创建文章文件失败,err: %v", fileErr)
+				return
+			}
+			defer func() {
+				_ = os.Remove(path)
+			}()
+			file, err = os.Open(path)
+			if err != nil {
+				utils.FileLog.Error("打开文件失败,err:", err)
+				return
+			}
+			_, httpErr = llmService.UploadFileToTemplate([]*os.File{file}, param)
 			if httpErr != nil {
 				utils.FileLog.Error("上传文件失败,err:", err.Error())
 				err = fmt.Errorf("上传文件失败,err:%v", httpErr)

文件差异内容过多而无法显示
+ 0 - 0
static/imgs/ai/article/【专题报告】关税来袭黑色怎么看.md


文件差异内容过多而无法显示
+ 0 - 0
static/imgs/ai/article/【东海首席】黑色金属专题报告新一轮钢铁供给侧改革能否全面开启.md


文件差异内容过多而无法显示
+ 0 - 0
static/imgs/ai/article/【开源宏观】财政支出力度如何12月财政数据点评.md


文件差异内容过多而无法显示
+ 0 - 0
static/imgs/ai/article/巴菲特2025股东信1000字精华版来了附全文.md


+ 12 - 2
utils/llm/eta_llm/eta_llm_client.go

@@ -22,6 +22,10 @@ var (
 	dsOnce sync.Once
 
 	etaLlmClient *ETALLMClient
+	modelRouter  = map[string]string{
+		"deepseek-r1:32b": "/dsr1",
+		"qwq:32b":         "/qwq",
+	}
 )
 
 const (
@@ -177,7 +181,7 @@ func (ds *ETALLMClient) FileChat(query string, KnowledgeId string, llmModel stri
 		err = fmt.Errorf("内容生成失败,序列化请求参数失败,err:%v", err)
 		return
 	}
-	return ds.DoPost(DOCUMENT_CHAT_API, body)
+	return ds.DoPost(fmt.Sprintf("%s%s", modelRouter[model], DOCUMENT_CHAT_API), body)
 }
 
 func (ds *ETALLMClient) UploadFileToTemplate(files []*os.File, param map[string]interface{}) (data interface{}, err error) {
@@ -185,6 +189,12 @@ func (ds *ETALLMClient) UploadFileToTemplate(files []*os.File, param map[string]
 	if value, ok := param["PrevId"]; ok {
 		pervId = value.(string)
 	}
+	var model string
+	if value, ok := param["LLM"]; ok {
+		model = value.(string)
+	} else {
+		model = ds.LlmModel
+	}
 	docReq := eta_llm_http.UploadTempDocsRequest{
 		ChunkOverlap:   "150",
 		ChunkSize:      "750",
@@ -195,7 +205,7 @@ func (ds *ETALLMClient) UploadFileToTemplate(files []*os.File, param map[string]
 	if err != nil {
 		return
 	}
-	resp, err := ds.DoFile(UPLOAD_TEMP_DOCS_API, body, files)
+	resp, err := ds.DoFile(fmt.Sprintf("%s%s", modelRouter[model], UPLOAD_TEMP_DOCS_API), body, files)
 	if !resp.Success {
 		err = errors.New(resp.Msg)
 		return

部分文件因为文件数量过多而无法显示