修改readme
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 7m7s

This commit is contained in:
2026-05-05 13:38:51 +08:00
parent 8c021c264e
commit 424484ac20

238
README.md
View File

@@ -79,49 +79,49 @@
```mermaid
graph TB
User[用户浏览器] -->|HTTP/SSE| Frontend[Streamlit 前端 :8501]
Frontend -->|REST API| Backend[FastAPI 后端 :8079]
User[用户浏览器] --> Frontend[Streamlit 前端 :8501]
Frontend --> Backend[FastAPI 后端 :8079]
Backend --> AgentService[AIAgentService]
AgentService -->|初始化| LangGraph[LangGraph 工作流引擎]
AgentService --> LangGraph[LangGraph 工作流引擎]
LangGraph -->|阶段1| RetrieveMemory[记忆检索 retrieve_memory]
LangGraph -->|阶段2| MemoryTrigger[记忆触发 memory_trigger]
LangGraph -->|阶段3| InitState[初始化状态 init_state]
LangGraph -->|阶段4| HybridRouter[混合路由 hybrid_router]
LangGraph -->|阶段5| ReactLoop[React 循环 react_loop]
LangGraph -->|阶段6| FastPath[快速路径 fast_*]
LangGraph -->|阶段7| LLMCall[LLM 调用 llm_call]
LangGraph -->|阶段8| Summarize[记忆摘要 summarize]
LangGraph -->|阶段9| Finalize[最终处理 finalize]
LangGraph --> RetrieveMemory[记忆检索 retrieve_memory]
LangGraph --> MemoryTrigger[记忆触发 memory_trigger]
LangGraph --> InitState[初始化状态 init_state]
LangGraph --> HybridRouter[混合路由 hybrid_router]
LangGraph --> ReactLoop[React 循环 react_loop]
LangGraph --> FastPath[快速路径 fast_*]
LangGraph --> LLMCall[LLM 调用 llm_call]
LangGraph --> Summarize[记忆摘要 summarize]
LangGraph --> Finalize[最终处理 finalize]
HybridRouter -->|闲聊| FastChitchat[fast_chitchat]
HybridRouter -->|知识查询| FastRAG[fast_rag]
HybridRouter -->|工具调用| FastTool[fast_tool]
HybridRouter -->|复杂任务| ReactLoop
HybridRouter --> FastChitchat[fast_chitchat]
HybridRouter --> FastRAG[fast_rag]
HybridRouter --> FastTool[fast_tool]
HybridRouter --> ReactLoop
ReactLoop -->|推理| ReactReason[react_reason 推理节点]
ReactLoop -->|RAG检索| RAGRetrieve[rag_retrieve]
ReactLoop -->|联网搜索| WebSearch[web_search]
ReactLoop -->|通讯录| ContactSubgraph[contact_subgraph]
ReactLoop -->|词典| DictionarySubgraph[dictionary_subgraph]
ReactLoop -->|资讯分析| NewsSubgraph[news_analysis_subgraph]
ReactLoop -->|错误处理| HandleError[handle_error]
ReactLoop --> ReactReason[react_reason 推理节点]
ReactLoop --> RAGRetrieve[rag_retrieve]
ReactLoop --> WebSearch[web_search]
ReactLoop --> ContactSubgraph[contact_subgraph]
ReactLoop --> DictionarySubgraph[dictionary_subgraph]
ReactLoop --> NewsSubgraph[news_analysis_subgraph]
ReactLoop --> HandleError[handle_error]
RAGRetrieve -->|向量检索| Qdrant[Qdrant向量库]
RAGRetrieve -->|重排序| RerankService[Rerank服务]
RAGRetrieve -->|嵌入| EmbeddingService[Embedding服务]
RAGRetrieve --> Qdrant[Qdrant向量库]
RAGRetrieve --> RerankService[Rerank服务]
RAGRetrieve --> EmbeddingService[Embedding服务]
AgentService -->|模型路由| ChatServices[模型服务层 chat_services]
ChatServices -->|自动降级| FallbackChain[FallbackServiceChain]
FallbackChain -->|创建| Zhipu[智谱 GLM-4]
FallbackChain -->|创建| DeepSeek[DeepSeek V3]
FallbackChain -->|创建| OpenAI[OpenAI GPT-4o]
FallbackChain -->|创建| LocalQwen[本地 Qwen3.5-9B]
AgentService --> ChatServices[模型服务层 chat_services]
ChatServices --> FallbackChain[FallbackServiceChain]
FallbackChain --> Zhipu[智谱 GLM-4]
FallbackChain --> DeepSeek[DeepSeek V3]
FallbackChain --> OpenAI[OpenAI GPT-4o]
FallbackChain --> LocalQwen[本地 Qwen3.5-9B]
RetrieveMemory -->|存储/读取| PostgreSQL[PostgreSQL]
Summarize -->|存储| PostgreSQL
RetrieveMemory --> PostgreSQL[PostgreSQL]
Summarize --> PostgreSQL
style User fill:#e1f5ff
style Frontend fill:#fff4e1
@@ -146,38 +146,38 @@ graph TB
RetrieveMemory[记忆检索]
MemoryTrigger[记忆触发]
InitState[初始化状态]
HybridRouter[混合路由<br>规则分流 + LLM意图分类]
FastChitchat[fast_chitchat<br>闲聊快速路径]
FastRAG[fast_rag<br>RAG快速路径]
FastTool[fast_tool<br>工具快速路径]
ReactReason[react_reason<br>React推理节点]
LLMCall[llm_call<br>LLM调用节点]
HybridRouter[混合路由]
FastChitchat[fast_chitchat]
FastRAG[fast_rag]
FastTool[fast_tool]
ReactReason[react_reason]
LLMCall[llm_call]
FinalMain[最终响应]
EndMain[END]
StartMain -->|用户输入| RetrieveMemory
StartMain --> RetrieveMemory
RetrieveMemory --> MemoryTrigger
MemoryTrigger --> InitState
InitState --> HybridRouter
HybridRouter -->|闲聊| FastChitchat
HybridRouter -->|知识查询| FastRAG
HybridRouter -->|工具调用| FastTool
HybridRouter -->|复杂任务| ReactReason
HybridRouter --> FastChitchat
HybridRouter --> FastRAG
HybridRouter --> FastTool
HybridRouter --> ReactReason
FastChitchat -->|成功| LLMCall
FastChitchat -->|失败| ReactReason
FastRAG -->|成功| LLMCall
FastRAG -->|失败| ReactReason
FastTool -->|成功| LLMCall
FastTool -->|失败| ReactReason
FastChitchat --> LLMCall
FastChitchat -.-> ReactReason
FastRAG --> LLMCall
FastRAG -.-> ReactReason
FastTool --> LLMCall
FastTool -.-> ReactReason
ReactReason -->|rag_retrieve| RAGRetrieve[RAG检索]
ReactReason -->|web_search| WebSearchNode[联网搜索]
ReactReason -->|contact_subgraph| ContactNode[通讯录子图]
ReactReason -->|dictionary_subgraph| DictNode[词典子图]
ReactReason -->|news_analysis_subgraph| NewsNode[资讯子图]
ReactReason -->|llm_call| LLMCall
ReactReason --> RAGRetrieve[RAG检索]
ReactReason --> WebSearchNode[联网搜索]
ReactReason --> ContactNode[通讯录子图]
ReactReason --> DictNode[词典子图]
ReactReason --> NewsNode[资讯子图]
ReactReason --> LLMCall
RAGRetrieve --> ReactReason
WebSearchNode --> ReactReason
@@ -191,53 +191,53 @@ graph TB
subgraph "通讯录子图 ContactSubgraph"
StartContact[START]
IntentContact[parse_intent<br>解析意图]
ListContacts[list_contacts<br>列出联系人]
AddContact[add_contact<br>添加联系人]
ListEmails[list_emails<br>列出邮件]
GenEmail[generate_email_draft<br>生成邮件草稿]
HumanReview[human_review<br>人工审核]
SendEmail[send_email<br>发送邮件]
SniffContact[sniff_contacts<br>智能嗅探]
FormatContact[format_result<br>格式化输出]
IntentContact[parse_intent]
ListContacts[list_contacts]
AddContact[add_contact]
ListEmails[list_emails]
GenEmail[generate_email_draft]
HumanReview[human_review]
SendEmail[send_email]
SniffContact[sniff_contacts]
FormatContact[format_result]
EndContact[END]
StartContact --> IntentContact
IntentContact -->|list| ListContacts
IntentContact -->|add| AddContact
IntentContact -->|list_emails| ListEmails
IntentContact -->|generate_email| GenEmail
IntentContact -->|sniff| SniffContact
IntentContact --> ListContacts
IntentContact --> AddContact
IntentContact --> ListEmails
IntentContact --> GenEmail
IntentContact --> SniffContact
ListContacts --> FormatContact
AddContact --> FormatContact
ListEmails --> FormatContact
SniffContact --> FormatContact
GenEmail --> HumanReview
HumanReview -->|approve| SendEmail
HumanReview -->|reject| FormatContact
HumanReview --> SendEmail
HumanReview --> FormatContact
SendEmail --> FormatContact
FormatContact --> EndContact
end
subgraph "词典子图 DictionarySubgraph"
StartDict[START]
IntentDict[parse_intent<br>解析意图]
QueryWord[query_word<br>查询单词]
Translate[translate_text<br>翻译文本]
ExtractTerms[extract_terms<br>提取专业术语]
DailyWord[get_daily_word<br>每日一词]
LookupWord[lookup_word_book<br>查询生词本]
AddToWord[add_to_word_book<br>添加到生词本]
FormatDict[format_result<br>格式化输出]
IntentDict[parse_intent]
QueryWord[query_word]
Translate[translate_text]
ExtractTerms[extract_terms]
DailyWord[get_daily_word]
LookupWord[lookup_word_book]
AddToWord[add_to_word_book]
FormatDict[format_result]
EndDict[END]
StartDict --> IntentDict
IntentDict -->|query| QueryWord
IntentDict -->|translate| Translate
IntentDict -->|extract| ExtractTerms
IntentDict -->|daily| DailyWord
IntentDict -->|lookup| LookupWord
IntentDict -->|add| AddToWord
IntentDict --> QueryWord
IntentDict --> Translate
IntentDict --> ExtractTerms
IntentDict --> DailyWord
IntentDict --> LookupWord
IntentDict --> AddToWord
QueryWord --> FormatDict
Translate --> FormatDict
ExtractTerms --> FormatDict
@@ -249,19 +249,19 @@ graph TB
subgraph "资讯分析子图 NewsSubgraph"
StartNews[START]
IntentNews[parse_intent<br>解析意图]
QueryNews[query_news<br>查询资讯]
AnalyzeUrl[analyze_url<br>分析链接]
ExtractKeywords[extract_keywords<br>提取关键词]
GenReport[generate_report<br>生成报告]
FormatNews[format_result<br>格式化输出]
IntentNews[parse_intent]
QueryNews[query_news]
AnalyzeUrl[analyze_url]
ExtractKeywords[extract_keywords]
GenReport[generate_report]
FormatNews[format_result]
EndNews[END]
StartNews --> IntentNews
IntentNews -->|query| QueryNews
IntentNews -->|analyze| AnalyzeUrl
IntentNews -->|keywords| ExtractKeywords
IntentNews -->|report| GenReport
IntentNews --> QueryNews
IntentNews --> AnalyzeUrl
IntentNews --> ExtractKeywords
IntentNews --> GenReport
QueryNews --> FormatNews
AnalyzeUrl --> FormatNews
ExtractKeywords --> FormatNews
@@ -269,12 +269,13 @@ graph TB
FormatNews --> EndNews
end
ReactReason -.->|调用<br>状态传递| StartContact
ReactReason -.->|调用<br>状态传递| StartDict
ReactReason -.->|调用<br>状态传递| StartNews
ReactReason -.-> StartContact
ReactReason -.-> StartDict
ReactReason -.-> StartNews
style HybridRouter fill:#fff3e0,stroke:#ff9800,stroke-width:3px
style ReactReason fill:#e8eaf6
```
---
### 索引工作流(离线构建)
@@ -353,42 +354,34 @@ flowchart TB
```mermaid
flowchart TB
subgraph 查询输入
subgraph "查询输入"
Q1[用户查询]
Q2[Query: "公司报销流程是什么?"]
Q2[公司报销流程]
end
subgraph 查询处理
R1[查询改写 MultiQuery]
R2[rag_indexer/splitters.py]
R3[使用 chat_services 生成多角度查询]
subgraph "查询处理"
R1[查询改写]
R2[使用 chat_services]
end
subgraph 混合检索
subgraph "混合检索"
S1[并行检索]
S2[稠密向量检索<br/>Embedding → 向量相似度]
S3[稀疏 BM25 检索<br/>词频统计]
S4[rag_core/sparse_embedder.py]
S2[稠密向量检索]
S3[稀疏BM25检索]
end
subgraph 结果融合
subgraph "结果融合"
F1[RRF融合]
F2[rag_indexer/fusion.py]
F3[RRF(d) = Σ 1/(k + rank)]
F4[Qdrant Fusion API<br/>服务端融合]
end
subgraph 重排序
subgraph "重排序"
P1[Cross-Encoder重排]
P2[bge-reranker-v2-m3]
P3[rerank_services.py<br/>llama.cpp server:18002]
P4[Query-Document 交互编码]
P2[18002端口]
end
subgraph LLM 生成
subgraph "LLM生成"
G1[LLM生成回答]
G2[chat_services.py]
G3[Context + 生成回答]
G2[chat_services]
end
Q1 --> Q2
@@ -403,14 +396,13 @@ flowchart TB
P1 --> P2
P2 --> G1
G1 --> G2
G2 --> G3
style Q1 fill:#e3f2fd
style R1 fill:#fff3e0
style S1 fill:#f3e5f5
style F1 fill:#e8f5e9
style P1 fill:#ffebee
style G1 fill:#e1f5ff
style G1 fill:#fff3e0
```
**技术组件说明:**