Roc 2 days ago
parent
commit
26538d05fa

+ 1 - 1
controllers/rag/abstract.go

@@ -59,7 +59,7 @@ func (c *AbstractController) List() {
 	var pars []interface{}
 
 	if keyWord != "" {
-		condition = fmt.Sprintf(` AND a.%s = ?`, rag.WechatArticleAbstractColumns.Content)
+		condition = fmt.Sprintf(` AND a.%s like ?`, rag.WechatArticleAbstractColumns.Content)
 		pars = append(pars, `%`+keyWord+`%`)
 	}
 

+ 4 - 9
controllers/rag/wechat_platform.go

@@ -61,7 +61,7 @@ func (c *WechatPlatformController) TagList() {
 	var pars []interface{}
 
 	if keyWord != "" {
-		condition = fmt.Sprintf(` AND %s = ?`, rag.WechatPlatformColumns.Nickname)
+		condition = fmt.Sprintf(` AND %s like ?`, rag.WechatPlatformColumns.Nickname)
 		pars = append(pars, `%`+keyWord+`%`)
 	}
 
@@ -203,18 +203,13 @@ func (c *WechatPlatformController) FollowList() {
 	var pars []interface{}
 
 	if keyWord != "" {
-		condition = fmt.Sprintf(` AND %s = ?`, rag.WechatPlatformColumns.Nickname)
+		condition = fmt.Sprintf(` AND %s like ?`, rag.WechatPlatformColumns.Nickname)
 		pars = append(pars, `%`+keyWord+`%`)
 	}
 
 	condition = fmt.Sprintf(` AND b.%s = ?`, rag.WechatPlatformUserMappingColumns.SysUserID)
 	pars = append(pars, c.SysUser.AdminId)
 
-	if keyWord != "" {
-		condition = fmt.Sprintf(` AND %s = ?`, rag.WechatPlatformColumns.Nickname)
-		pars = append(pars, `%`+keyWord+`%`)
-	}
-
 	obj := new(rag.WechatPlatformUserMapping)
 	list, err := obj.GetListByCondition(condition, pars, startSize, pageSize)
 	if err != nil {
@@ -490,7 +485,7 @@ func (c *WechatPlatformController) ArticleList() {
 	var pars []interface{}
 
 	if keyWord != "" {
-		condition = fmt.Sprintf(` AND a.%s = ?`, rag.WechatPlatformColumns.Nickname)
+		condition = fmt.Sprintf(` AND a.%s like ?`, rag.WechatPlatformColumns.Nickname)
 		pars = append(pars, `%`+keyWord+`%`)
 	}
 
@@ -643,7 +638,7 @@ func (c *WechatPlatformController) ArticleDel() {
 //
 //	obj := rag.WechatArticle{}
 //	//item, _ := obj.GetById(30)
-//	list, _ := obj.GetListByCondition(``, ` `, []interface{}{}, 0, 1)
+//	list, _ := obj.GetListByCondition(``, ` `, []interface{}{}, 0, 1000)
 //	//llm.ArticleToTmpFile(item.TextContent)
 //	for _, item := range list {
 //		//llm.ArticleToKnowledge(item)

+ 2 - 1
services/llm/chat.go

@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"eta/eta_api/utils"
 	"eta/eta_api/utils/llm/eta_llm"
+	"eta/eta_api/utils/llm/eta_llm/eta_llm_http"
 	"fmt"
 	"io"
 	"mime/multipart"
@@ -131,7 +132,7 @@ type HistoryContent struct {
 	Role    string `json:"role"`
 }
 
-func ChatByFile(knowledgeId, question string, historyList []HistoryContent) (answerStr string, answer ChatResp, err error) {
+func ChatByFile(knowledgeId, question string, historyList []eta_llm_http.HistoryContent) (answerStr string, answer ChatResp, err error) {
 	// 没有问题那就直接返回
 	if question == `` {
 		return

+ 9 - 4
services/llm/wechat_platform.go

@@ -4,6 +4,7 @@ import (
 	"eta/eta_api/models"
 	"eta/eta_api/models/rag"
 	"eta/eta_api/utils"
+	"eta/eta_api/utils/llm/eta_llm/eta_llm_http"
 	"fmt"
 	"html"
 	"os"
@@ -274,7 +275,7 @@ func GenerateArticleAbstract(item *rag.WechatArticle) {
 	//tmpDocId := `2dde8afe62d24525a814e74e0a5e35e4` // 钢材
 	//tmpDocId := `7634cc1086c04b3687682220a2cf1a48` //
 
-	historyList := make([]HistoryContent, 0)
+	historyList := make([]eta_llm_http.HistoryContent, 0)
 
 	questionObj := rag.Question{}
 	questionList, err := questionObj.GetListByCondition(``, []interface{}{}, 0, 100)
@@ -295,10 +296,10 @@ func GenerateArticleAbstract(item *rag.WechatArticle) {
 		}
 		abstract = tmpAnswer
 
-		historyList = append(historyList, HistoryContent{
+		historyList = append(historyList, eta_llm_http.HistoryContent{
 			Role:    `user`,
 			Content: question.QuestionContent,
-		}, HistoryContent{
+		}, eta_llm_http.HistoryContent{
 			Role:    `assistant`,
 			Content: tmpAnswer,
 		})
@@ -351,7 +352,7 @@ func GenerateArticleAbstract(item *rag.WechatArticle) {
 	}
 }
 
-func getAnswerByContent(docId, question string, historyList []HistoryContent) (originalAnswer, answer string, err error) {
+func getAnswerByContent(docId, question string, historyList []eta_llm_http.HistoryContent) (originalAnswer, answer string, err error) {
 	originalAnswer, result, err := ChatByFile(docId, question, historyList)
 	fmt.Println(result)
 	if err != nil {
@@ -439,6 +440,10 @@ func AbstractToKnowledge(wechatArticleItem *rag.WechatArticle, item *rag.WechatA
 	if item.Content == `` {
 		return
 	}
+	// 已经生成了,那就不处理了
+	if item.VectorKey != `` {
+		return
+	}
 	var err error
 	defer func() {
 		if err != nil {

+ 30 - 0
services/task.go

@@ -610,3 +610,33 @@ func HandleWechatArticleOp() {
 		})
 	}
 }
+
+// HandleWechatArticleLLmOp
+// @Description: 处理微信文章加入知识库
+func HandleWechatArticleLLmOp() {
+	defer func() {
+		if err := recover(); err != nil {
+			fmt.Println("[ImportManualDataRefresh]", err)
+		}
+	}()
+	obj := rag.WechatArticle{}
+	for {
+		utils.Rc.Brpop(utils.CACHE_WECHAT_PLATFORM_ARTICLE_KNOWLEDGE, func(b []byte) {
+			wechatArticleOp := new(llm.WechatArticleOp)
+			if err := json.Unmarshal(b, &wechatArticleOp); err != nil {
+				fmt.Println("json unmarshal wrong!")
+				return
+			}
+			item, tmpErr := obj.GetById(wechatArticleOp.WechatPlatformId)
+			if tmpErr != nil {
+				// 找不到就处理失败
+				return
+			}
+
+			// 文章加入到知识库
+			llm.ArticleToKnowledge(item)
+			// 生成摘要
+			llm.GenerateArticleAbstract(item)
+		})
+	}
+}

+ 3 - 2
utils/constants.go

@@ -260,8 +260,9 @@ const (
 
 	CACHE_DATA_SOURCE_ES_HANDLE = "eta:data_source_es:handle" // 数据源es处理队列
 
-	CACHE_EXCEL_REFRESH           = "CACHE_EXCEL_REFRESH"        // 表格刷新
-	CACHE_WECHAT_PLATFORM_ARTICLE = "wechat_platform:article:op" //微信文章处理
+	CACHE_EXCEL_REFRESH                     = "CACHE_EXCEL_REFRESH"                  // 表格刷新
+	CACHE_WECHAT_PLATFORM_ARTICLE           = "wechat_platform:article:op"           //微信文章处理
+	CACHE_WECHAT_PLATFORM_ARTICLE_KNOWLEDGE = "wechat_platform:article:knowledge:op" //微信文章入知识库处理
 )
 
 // 模板消息推送类型