feat: 完善联网搜索功能集成到React模式
All checks were successful
构建并部署 AI Agent 服务 / deploy (push) Successful in 6m3s
All checks were successful
构建并部署 AI Agent 服务 / deploy (push) Successful in 6m3s
This commit is contained in:
@@ -88,7 +88,61 @@ def react_reason_node(state: MainGraphState) -> MainGraphState:
|
||||
return state
|
||||
|
||||
|
||||
# ========== 2. 错误处理节点 ==========
|
||||
# ========== 2. 联网搜索节点 ==========
|
||||
|
||||
def web_search_node(state: MainGraphState) -> MainGraphState:
|
||||
"""
|
||||
联网搜索节点:执行搜索并将结果保存到状态
|
||||
"""
|
||||
state.current_phase = "web_searching"
|
||||
|
||||
# 获取搜索查询
|
||||
reasoning_result = state.debug_info.get("reasoning_result")
|
||||
search_query = reasoning_result.metadata.get("search_query", state.user_query) if reasoning_result else state.user_query
|
||||
|
||||
try:
|
||||
from app.core import web_search
|
||||
|
||||
print(f"[WebSearch] 搜索: {search_query}")
|
||||
search_result = web_search(search_query, max_results=5)
|
||||
|
||||
# 保存搜索结果到状态
|
||||
if not hasattr(state, "web_search_results"):
|
||||
state.web_search_results = []
|
||||
state.web_search_results.append(search_result)
|
||||
|
||||
# 将搜索结果添加到 rag_context,供 LLM 使用
|
||||
if state.rag_context:
|
||||
state.rag_context = f"{state.rag_context}\n\n---\n\n## 🌐 联网搜索结果:\n{search_result}"
|
||||
else:
|
||||
state.rag_context = f"## 🌐 联网搜索结果:\n{search_result}"
|
||||
|
||||
state.success = True
|
||||
print(f"[WebSearch] 搜索完成")
|
||||
|
||||
except Exception as e:
|
||||
from app.main_graph.state import ErrorRecord, ErrorSeverity
|
||||
from datetime import datetime
|
||||
|
||||
error_record = ErrorRecord(
|
||||
error_type="WebSearchError",
|
||||
error_message=str(e),
|
||||
severity=ErrorSeverity.WARNING,
|
||||
source="web_search_node",
|
||||
timestamp=datetime.now().isoformat(),
|
||||
retry_count=0,
|
||||
max_retries=2,
|
||||
context={"search_query": search_query}
|
||||
)
|
||||
state.errors.append(error_record)
|
||||
state.current_error = error_record
|
||||
state.current_phase = "error_handling"
|
||||
state.success = False
|
||||
|
||||
return state
|
||||
|
||||
|
||||
# ========== 3. 错误处理节点 ==========
|
||||
|
||||
def error_handling_node(state: MainGraphState) -> MainGraphState:
|
||||
"""
|
||||
@@ -276,6 +330,7 @@ def route_by_reasoning(state: MainGraphState) -> str:
|
||||
"direct_response": "final_response",
|
||||
"retrieve_rag": "rag_retrieve",
|
||||
"re_retrieve_rag": "rag_retrieve",
|
||||
"web_search": "web_search", # ⭐ 新增:联网搜索
|
||||
"clarify": "final_response",
|
||||
"call_tool": "final_response", # 暂时映射到 final_response,后续可以扩展
|
||||
"contact": "contact_subgraph",
|
||||
@@ -291,6 +346,7 @@ def route_by_reasoning(state: MainGraphState) -> str:
|
||||
__all__ = [
|
||||
"init_state_node",
|
||||
"react_reason_node",
|
||||
"web_search_node", # ⭐ 新增
|
||||
"error_handling_node",
|
||||
"final_response_node",
|
||||
"route_by_reasoning"
|
||||
|
||||
Reference in New Issue
Block a user