feat: 优化 FAQ 处理和系统稳定性
- 添加本地 FAQ 库快速路径(问候语等社交响应) - 修复 Chatwoot 重启循环问题(PID 文件清理) - 添加 LLM 响应缓存(Redis 缓存,提升性能) - 添加智能推理模式(根据查询复杂度自动启用) - 添加订单卡片消息功能(Chatwoot 富媒体) - 增加 LLM 超时时间至 60 秒 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ from core.state import AgentState, ConversationState, add_tool_call, set_respons
|
||||
from core.llm import get_llm_client, Message
|
||||
from prompts import get_prompt
|
||||
from utils.logger import get_logger
|
||||
from utils.faq_library import get_faq_library
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
@@ -36,6 +37,32 @@ async def customer_service_agent(state: AgentState) -> AgentState:
|
||||
if state["tool_results"]:
|
||||
return await _generate_response_from_results(state)
|
||||
|
||||
# ========== FAST PATH: Check if FAQ was already matched at router ==========
|
||||
# Router already checked FAQ and stored response if found
|
||||
if "faq_response" in state and state["faq_response"]:
|
||||
logger.info(
|
||||
"Using FAQ response from router",
|
||||
conversation_id=state["conversation_id"],
|
||||
response_length=len(state["faq_response"])
|
||||
)
|
||||
return set_response(state, state["faq_response"])
|
||||
# =========================================================================
|
||||
|
||||
# ========== FAST PATH: Check local FAQ library first (backup) ==========
|
||||
# This provides instant response for common questions without API calls
|
||||
# This is a fallback in case FAQ wasn't matched at router level
|
||||
faq_library = get_faq_library()
|
||||
faq_response = faq_library.find_match(state["current_message"])
|
||||
|
||||
if faq_response:
|
||||
logger.info(
|
||||
"FAQ match found, returning instant response",
|
||||
conversation_id=state["conversation_id"],
|
||||
response_length=len(faq_response)
|
||||
)
|
||||
return set_response(state, faq_response)
|
||||
# ============================================================
|
||||
|
||||
# Get detected language
|
||||
locale = state.get("detected_language", "en")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user