Browse Source

feat: - 私域知识库升级支持标签检索

zhangwl 1 week ago
parent
commit
fb0cbf19c3
2 changed files with 18 additions and 8 deletions
  1. 4 2
      app/routers/chat_tools.py
  2. 14 6
      app/utils/chat_utils.py

+ 4 - 2
app/routers/chat_tools.py

@@ -672,10 +672,12 @@ async def entrepreneur_chat(request: RoleBasedChatRequest):
         # 配置工具:联网搜索 + 知识库
         # 配置工具:联网搜索 + 知识库
         tools = get_web_search_tools()
         tools = get_web_search_tools()
         if knowledge_id:
         if knowledge_id:
-            tools += get_knowledge_search_tools(knowledge_id)
+            tools += get_knowledge_search_tools(knowledge_id,request.app_name)
 
 
         print("----最终的提示词----")
         print("----最终的提示词----")
         print(api_messages)
         print(api_messages)
+        print("-------配置工具")
+        print(tools)
         # 调用 AI 客户端
         # 调用 AI 客户端
         response = client.responses.create(
         response = client.responses.create(
             model=Config.MODEL_NAME,
             model=Config.MODEL_NAME,
@@ -902,7 +904,7 @@ async def femininity_chat(request: RoleBasedChatRequest):
         # 配置工具:联网搜索 + 知识库
         # 配置工具:联网搜索 + 知识库
         tools = get_web_search_tools()
         tools = get_web_search_tools()
         if knowledge_id:
         if knowledge_id:
-            tools += get_knowledge_search_tools(knowledge_id)
+            tools += get_knowledge_search_tools(knowledge_id,request.app_name)
 
 
         # 调用 AI 客户端
         # 调用 AI 客户端
         response = client.responses.create(
         response = client.responses.create(

+ 14 - 6
app/utils/chat_utils.py

@@ -27,12 +27,20 @@ def get_web_search_tools() -> list:
         "sources": ["douyin", "toutiao"],# 附加搜索来源(抖音百科、墨迹天气、头条图文等平台)
         "sources": ["douyin", "toutiao"],# 附加搜索来源(抖音百科、墨迹天气、头条图文等平台)
     }]
     }]
 # 私域知识库 --- 此处的知识库也需要映射
 # 私域知识库 --- 此处的知识库也需要映射
-def get_knowledge_search_tools(knowledge_resource_id: str) -> list:
-    return [{
-            "type": "knowledge_search",
-            "knowledge_resource_id": knowledge_resource_id,  # 替换为实际知识库ID
-            "limit": 10,  # 最多返回10条搜索结果
-        }]
+def get_knowledge_search_tools(knowledge_resource_id: str, app_name: Optional[str] = None) -> list:
+    tool: Dict = {
+        "type": "knowledge_search",
+        "knowledge_resource_id": knowledge_resource_id,  # 替换为实际知识库ID
+        "limit": 10,  # 最多返回10条搜索结果
+    }
+    # 当 app_name 有值时,按 app_name 字段过滤,否则全局查询
+    if app_name:
+        tool["doc_filter"] = {
+            "op": "must",
+            "field": "app_name",
+            "conds": [app_name],
+        }
+    return [tool]
 
 
 # 豆包助手工具
 # 豆包助手工具
 def get_doubao_tools() -> list:
 def get_doubao_tools() -> list: