Skip to content

Commit 2d40cee

Browse files
committed
feat: Use rag.
1 parent 734cf3c commit 2d40cee

7 files changed

Lines changed: 5245 additions & 2478 deletions

File tree

api/configs/apo/__init__.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,16 @@ class APOConfig(BaseSettings):
3030
DATAPLANE_URL: str = Field(
3131
description="dataplane url",
3232
default="http://localhost:8089"
33-
)
33+
)
34+
APO_KNOWLEDGE_BASE_URL: str = Field(
35+
description="apo knowledge base url",
36+
default="http://localhost:8080",
37+
)
38+
APO_KNOWLEDGE_BASE_API_KEY: str = Field(
39+
description="apo knowledge base api key",
40+
default="",
41+
)
42+
APO_DEFAULT_KNOWLEDGE_BASE_ID: str = Field(
43+
description="apo knowledge base default id",
44+
default="syncause_default",
45+
)
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import json
2+
from collections.abc import Generator
3+
from typing import Any, Optional
4+
5+
import requests
6+
7+
from configs import dify_config
8+
from core.tools.builtin_tool.tool import BuiltinTool
9+
from core.tools.entities.tool_entities import ToolInvokeMessage
10+
from models.dataset import Dataset
11+
12+
13+
class KnowledgeRetrievalTool(BuiltinTool):
14+
def _invoke(
15+
self,
16+
user_id: str,
17+
tool_parameters: dict[str, Any],
18+
conversation_id: Optional[str] = None,
19+
app_id: Optional[str] = None,
20+
message_id: Optional[str] = None,
21+
) -> Generator[ToolInvokeMessage, None, None]:
22+
# 获取参数
23+
query = tool_parameters.get('query')
24+
knowledge_base_id = tool_parameters.get('knowledge_base_id')
25+
top_k = tool_parameters.get('top_k', 5)
26+
score_threshold = tool_parameters.get('score_threshold', 0.0)
27+
28+
data = {
29+
"query": query,
30+
"knowledge_id": knowledge_base_id if knowledge_base_id else dify_config.APO_DEFAULT_KNOWLEDGE_BASE_ID,
31+
"retrieval_setting": {
32+
"top_k": top_k,
33+
"score_threshold": score_threshold
34+
}
35+
}
36+
37+
try:
38+
url = dify_config.APO_KNOWLEDGE_BASE_URL + '/retrieval'
39+
response = requests.post(
40+
url, json=data, timeout=30)
41+
42+
if response.status_code == 200:
43+
result = response.json()
44+
yield self.create_text_message(json.dumps(result, ensure_ascii=False))
45+
else:
46+
yield self.create_text_message(json.dumps({
47+
'success': False,
48+
'error': f'检索服务返回错误: {response.status_code}',
49+
'details': response.text
50+
}))
51+
except Exception as e:
52+
yield self.create_text_message(json.dumps({
53+
'success': False,
54+
'error': f'请求检索服务时发生错误: {str(e)}'
55+
}))
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
identity:
2+
name: knowledge_retrieval
3+
author: APO
4+
label:
5+
en_US: Retrieve knowledge from APO.
6+
zh_Hans: 在APO检索知识
7+
description:
8+
human:
9+
en_US: Retrieve knowledge from APO.
10+
zh_Hans: 在APO检索知识
11+
llm: Retrieve knowledge from APO.
12+
display:
13+
type: metric
14+
title: 知识检索
15+
unit: s
16+
parameters:
17+
- name: query
18+
type: string
19+
required: true
20+
label:
21+
en_US: Knowledge Retrieval Query statement
22+
zh_Hans: 知识检索查询语句
23+
human_description:
24+
en_US: Knowledge retrieval query statement
25+
zh_Hans: 知识检索查询语句
26+
llm_description: Knowledge retrieval query statement
27+
form: llm
28+
- name: top_k
29+
type: number
30+
required: false
31+
label:
32+
en_US: Top K
33+
zh_Hans: 前K个结果
34+
human_description:
35+
en_US: Top K results
36+
zh_Hans: 前K个结果
37+
llm_description: Top K results
38+
form: llm
39+
- name: score_threshold
40+
type: number
41+
required: false
42+
label:
43+
en_US: Score Threshold
44+
zh_Hans: 分数阈值
45+
human_description:
46+
en_US: Score threshold for knowledge retrieval
47+
zh_Hans: 知识检索分数阈值
48+
llm_description: Score threshold for knowledge retrieval
49+
form: llm
50+
- name: knowledge_base_id
51+
type: string
52+
required: false
53+
label:
54+
en_US: Knowledge Base ID
55+
zh_Hans: 知识库ID
56+
human_description:
57+
en_US: Knowledge base ID
58+
zh_Hans: 知识库ID
59+
llm_description: Knowledge base ID
60+
form: llm

0 commit comments

Comments
 (0)