Rename product to Dabenying QA assistant
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# AI 知识库系统 V2 后端
|
||||
# 大本营答疑助手后端
|
||||
|
||||
这是 V2 的后端服务目录,当前处于阶段二第一批建设:后端基础工程、核心数据模型、mock 登录能力。
|
||||
这是大本营答疑助手的后端服务目录,当前处于阶段二第一批建设:后端基础工程、核心数据模型、mock 登录能力。
|
||||
|
||||
## 技术栈
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ from app.services.rag_service import RagResult
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
DEFAULT_PROMPT = "你是企业飞书知识库 AI 助手。你只能基于提供的知识片段回答,不能编造。"
|
||||
DEFAULT_PROMPT = "你是大本营答疑助手。你只能基于提供的知识片段回答,不能编造。"
|
||||
|
||||
|
||||
@router.get("/prompt")
|
||||
|
||||
@@ -214,7 +214,7 @@ class ChatService:
|
||||
|
||||
# 拼接成文本
|
||||
import re
|
||||
role_labels = {"user": "用户", "assistant": "AI助手"}
|
||||
role_labels = {"user": "用户", "assistant": "大本营答疑助手"}
|
||||
parts = []
|
||||
for msg in to_summarize:
|
||||
content = re.sub(r"<think[\s\S]*?</think\s*>", "", msg.content, flags=re.IGNORECASE).strip()
|
||||
|
||||
@@ -184,7 +184,7 @@ def _call_openai_compatible_model(model: ModelConfig, rag_result: RagResult) ->
|
||||
payload = {
|
||||
"model": model.model_name,
|
||||
"messages": [
|
||||
{"role": "system", "content": "你是企业知识库问答助手,只能基于已提供的知识片段回答。"},
|
||||
{"role": "system", "content": "你是大本营答疑助手,只能基于已提供的知识片段回答。"},
|
||||
{"role": "user", "content": rag_result.prompt},
|
||||
],
|
||||
"stream": False,
|
||||
@@ -217,7 +217,7 @@ def _call_anthropic_messages(model: ModelConfig, rag_result: RagResult) -> str:
|
||||
payload = {
|
||||
"model": model.model_name,
|
||||
"max_tokens": model.max_token or 1024,
|
||||
"system": "你是企业知识库问答助手,只能基于已提供的知识片段回答。",
|
||||
"system": "你是大本营答疑助手,只能基于已提供的知识片段回答。",
|
||||
"messages": [{"role": "user", "content": rag_result.prompt}],
|
||||
"stream": False,
|
||||
}
|
||||
@@ -251,7 +251,7 @@ def _call_gemini_generate_content(model: ModelConfig, rag_result: RagResult) ->
|
||||
|
||||
payload = {
|
||||
"systemInstruction": {
|
||||
"parts": [{"text": "你是企业知识库问答助手,只能基于已提供的知识片段回答。"}]
|
||||
"parts": [{"text": "你是大本营答疑助手,只能基于已提供的知识片段回答。"}]
|
||||
},
|
||||
"contents": [{"role": "user", "parts": [{"text": rag_result.prompt}]}],
|
||||
}
|
||||
@@ -329,14 +329,14 @@ def _call_minimax(model: ModelConfig, rag_result: RagResult) -> str:
|
||||
payload: dict[str, Any] = {
|
||||
"model": model.model_name,
|
||||
"tokens_to_generate": model.max_token or 1024,
|
||||
"reply_constraints": {"sender_type": "BOT", "sender_name": "AI知识库助手"},
|
||||
"reply_constraints": {"sender_type": "BOT", "sender_name": "大本营答疑助手"},
|
||||
"messages": [
|
||||
{"sender_type": "USER", "sender_name": "用户", "text": rag_result.prompt},
|
||||
],
|
||||
"bot_setting": [
|
||||
{
|
||||
"bot_name": "AI知识库助手",
|
||||
"content": "你是企业知识库问答助手,只能基于已提供的知识片段回答。",
|
||||
"bot_name": "大本营答疑助手",
|
||||
"content": "你是大本营答疑助手,只能基于已提供的知识片段回答。",
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ def _stream_openai_compatible_model(model: ModelConfig, rag_result: RagResult) -
|
||||
payload: dict[str, Any] = {
|
||||
"model": model.model_name,
|
||||
"messages": [
|
||||
{"role": "system", "content": "你是企业知识库问答助手,只能基于已提供的知识片段回答。"},
|
||||
{"role": "system", "content": "你是大本营答疑助手,只能基于已提供的知识片段回答。"},
|
||||
{"role": "user", "content": rag_result.prompt},
|
||||
],
|
||||
"max_tokens": model.max_token or 1024,
|
||||
@@ -211,7 +211,7 @@ def _openai_stream_payload(model: ModelConfig, rag_result: RagResult) -> dict[st
|
||||
payload: dict[str, Any] = {
|
||||
"model": model.model_name,
|
||||
"messages": [
|
||||
{"role": "system", "content": "你是企业知识库问答助手,只能基于已提供的知识片段回答。"},
|
||||
{"role": "system", "content": "你是大本营答疑助手,只能基于已提供的知识片段回答。"},
|
||||
{"role": "user", "content": rag_result.prompt},
|
||||
],
|
||||
"max_tokens": model.max_token or 1024,
|
||||
@@ -317,7 +317,7 @@ def _stream_anthropic_messages(model: ModelConfig, rag_result: RagResult) -> Ite
|
||||
payload: dict[str, Any] = {
|
||||
"model": model.model_name,
|
||||
"max_tokens": model.max_token or 1024,
|
||||
"system": "你是企业知识库问答助手,只能基于已提供的知识片段回答。",
|
||||
"system": "你是大本营答疑助手,只能基于已提供的知识片段回答。",
|
||||
"messages": [{"role": "user", "content": rag_result.prompt}],
|
||||
}
|
||||
_put_if_not_none(payload, "temperature", _decimal_to_float(model.temperature))
|
||||
@@ -361,7 +361,7 @@ def _anthropic_stream_payload(model: ModelConfig, rag_result: RagResult) -> dict
|
||||
payload: dict[str, Any] = {
|
||||
"model": model.model_name,
|
||||
"max_tokens": model.max_token or 1024,
|
||||
"system": "你是企业知识库问答助手,只能基于已提供的知识片段回答。",
|
||||
"system": "你是大本营答疑助手,只能基于已提供的知识片段回答。",
|
||||
"messages": [{"role": "user", "content": rag_result.prompt}],
|
||||
}
|
||||
_put_if_not_none(payload, "temperature", _decimal_to_float(model.temperature))
|
||||
|
||||
@@ -61,7 +61,7 @@ class RagService:
|
||||
|
||||
class PromptService:
|
||||
_default_prompt = (
|
||||
"你是企业飞书知识库 AI 助手。你只能基于提供的知识片段回答,不能编造。"
|
||||
"你是大本营答疑助手。你只能基于提供的知识片段回答,不能编造。"
|
||||
"如果知识片段之间有冲突,需要说明不同来源的观点。"
|
||||
)
|
||||
|
||||
@@ -114,7 +114,7 @@ class PromptService:
|
||||
# 只保留最近 KEEP_RECENT 轮的原文(1 轮 = 1 个 user + 1 个 assistant)
|
||||
recent = history[-(KEEP_RECENT * 2):]
|
||||
if recent:
|
||||
role_labels = {"user": "用户", "assistant": "AI助手"}
|
||||
role_labels = {"user": "用户", "assistant": "大本营答疑助手"}
|
||||
for msg in recent:
|
||||
label = role_labels.get(msg.role, msg.role)
|
||||
content = msg.content.strip()
|
||||
|
||||
Reference in New Issue
Block a user