This commit is contained in:
rjb
2026-01-23 09:49:45 +08:00
parent 32ce289b3b
commit 171a6edf94
24 changed files with 7317 additions and 72 deletions

View File

@@ -78,7 +78,7 @@ def generate_chat_agent(db: Session, user: User):
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.3",
"max_tokens": "1000",
"max_tokens": "200",
"prompt": """你是一个专业的对话意图分析助手。请分析用户的输入,识别用户的意图和情感。
用户输入:{{user_input}}
@@ -129,7 +129,7 @@ def generate_chat_agent(db: Session, user: User):
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.7",
"max_tokens": "500",
"max_tokens": "200",
"prompt": """你是一个温暖、友好的AI助手。用户向你打招呼请用自然、亲切的方式回应。
用户输入:{{user_input}}
@@ -150,19 +150,20 @@ def generate_chat_agent(db: Session, user: User):
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.5",
"max_tokens": "2000",
"prompt": """你是一个知识渊博、乐于助人的AI助手。请回答用户的问题。
"max_tokens": "500",
"prompt": """你是一个知识渊博、乐于助人的AI助手。请简洁、准确地回答用户的问题。
用户问题:{{user_input}}
对话历史:{{memory.conversation_history}}
意图分析:{{output}}
请提供
1. 直接、准确的答案
2. 必要的解释和说明
3. 如果问题不明确,友好地询问更多信息
回答要求
1. 直接给出核心答案,避免冗长描述
2. 如果是介绍类问题(如"你能做什么"用简洁的要点列举控制在100字以内
3. 如果是知识性问题提供准确答案和简要说明控制在150字以内
4. 如果问题不明确友好地询问更多信息控制在50字以内
请以自然、易懂的方式回答,长度控制在200字以内。直接输出回答内容。"""
请以自然、简洁的方式回答,避免重复和冗余。直接输出回答内容,无需额外格式化"""
}
}
nodes.append(question_node)
@@ -177,7 +178,7 @@ def generate_chat_agent(db: Session, user: User):
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.8",
"max_tokens": "1000",
"max_tokens": "500",
"prompt": """你是一个善解人意的AI助手。请根据用户的情感状态给予适当的回应。
用户输入:{{user_input}}
@@ -204,7 +205,7 @@ def generate_chat_agent(db: Session, user: User):
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.4",
"max_tokens": "1500",
"max_tokens": "800",
"prompt": """你是一个专业的AI助手。用户提出了一个请求请分析并回应。
用户请求:{{user_input}}
@@ -231,7 +232,7 @@ def generate_chat_agent(db: Session, user: User):
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.6",
"max_tokens": "300",
"max_tokens": "150",
"prompt": """你是一个友好的AI助手。用户要结束对话请给予温暖的告别。
用户输入:{{user_input}}
@@ -252,7 +253,7 @@ def generate_chat_agent(db: Session, user: User):
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.6",
"max_tokens": "1000",
"max_tokens": "500",
"prompt": """你是一个友好、专业的AI助手。请回应用户的输入。
用户输入:{{user_input}}
@@ -286,31 +287,24 @@ def generate_chat_agent(db: Session, user: User):
"label": "更新记忆",
"operation": "set",
"key": "user_memory_{user_id}",
"value": '{"conversation_history": {{memory.conversation_history}} + [{"role": "user", "content": "{{user_input}}", "timestamp": "{{timestamp}}"}, {"role": "assistant", "content": "{{output}}", "timestamp": "{{timestamp}}"}], "user_profile": {{memory.user_profile}}, "context": {{memory.context}}}',
"value": '{"conversation_history": ({{memory.conversation_history}} + [{"role": "user", "content": "{{user_input}}", "timestamp": "{{timestamp}}"}, {"role": "assistant", "content": "{{output}}", "timestamp": "{{timestamp}}"}]), "user_profile": {{memory.user_profile}}, "context": {{memory.context}}}',
"ttl": 86400
}
}
nodes.append(update_memory_node)
# ========== 14. 格式化最终回复 ==========
format_response_node = {
"id": "llm-format",
"type": "llm",
# ========== 14. JSON提取节点 - 提取最终回答文本 ==========
json_extract_node = {
"id": "json-extract",
"type": "json",
"position": {"x": 1650, "y": 400},
"data": {
"label": "格式化回复",
"provider": "deepseek",
"model": "deepseek-chat",
"temperature": "0.3",
"max_tokens": "500",
"prompt": """请将以下回复内容格式化为最终输出。确保回复自然、流畅。
原始回复:{{output}}
请直接输出格式化后的回复内容,不要包含其他说明或标记。如果原始回复已经是合适的格式,直接输出即可。"""
"label": "提取回答",
"operation": "extract",
"path": "right.right.right"
}
}
nodes.append(format_response_node)
nodes.append(json_extract_node)
# ========== 15. 结束节点 ==========
end_node = {
@@ -458,19 +452,19 @@ def generate_chat_agent(db: Session, user: User):
"targetHandle": "left"
})
# 更新记忆 -> 格式化回复
# 更新记忆 -> JSON提取
edges.append({
"id": "e8",
"source": "cache-update",
"target": "llm-format",
"target": "json-extract",
"sourceHandle": "right",
"targetHandle": "left"
})
# 格式化回复 -> 结束
# JSON提取 -> 结束
edges.append({
"id": "e9",
"source": "llm-format",
"source": "json-extract",
"target": "end-1",
"sourceHandle": "right",
"targetHandle": "left"