feat:修改投顾agent和nl2sql的功能
This commit is contained in:
@@ -3,7 +3,13 @@ from __future__ import annotations
|
||||
|
||||
import re
|
||||
|
||||
from common.common_const import AGENT_INTENT_DATA_QUERY
|
||||
from common.common_const import (
|
||||
AGENT_INTENT_DATA_QUERY,
|
||||
AGENT_INTENT_DIALOGUE_SCRIPT,
|
||||
AGENT_INTENT_FUND_ANALYSIS,
|
||||
AGENT_INTENT_REBALANCE,
|
||||
AGENT_INTENT_RECOMMEND,
|
||||
)
|
||||
|
||||
|
||||
_QUERY_ACTIONS = (
|
||||
@@ -30,7 +36,14 @@ _DATA_TERMS = (
|
||||
"客户数据",
|
||||
"账户",
|
||||
)
|
||||
_NON_QUERY_INTENTS = ("推荐", "调仓", "再平衡", "话术", "沟通")
|
||||
_REBALANCE_TERMS = ("调仓", "再平衡", "组合调整", "配置偏离", "偏离目标", "降低仓位", "增加仓位")
|
||||
_FUND_ANALYSIS_TERMS = ("基金分析", "分析基金", "基金表现", "净值走势", "最大回撤", "夏普比率", "年化波动")
|
||||
_DIALOGUE_TERMS = ("话术", "沟通", "怎么跟客户说", "如何向客户解释", "安抚客户", "投诉处理")
|
||||
_RECOMMEND_TERMS = ("推荐", "组合建议", "配置建议", "买什么", "适合配置", "筛选基金", "投资方案")
|
||||
|
||||
|
||||
def _contains_any(text: str, terms: tuple[str, ...]) -> bool:
|
||||
return any(term in text for term in terms)
|
||||
|
||||
|
||||
def recognize_advisor_intent(query: str | None, explicit_intent: str | None = None) -> str | None:
|
||||
@@ -42,12 +55,23 @@ def recognize_advisor_intent(query: str | None, explicit_intent: str | None = No
|
||||
if explicit_intent:
|
||||
return explicit_intent
|
||||
text = re.sub(r"\s+", "", query or "")
|
||||
if not text or any(term in text for term in _NON_QUERY_INTENTS):
|
||||
if not text:
|
||||
return None
|
||||
|
||||
# 先处理最明确的任务词,避免“查询基金收益”被误判成普通数据查询。
|
||||
if _contains_any(text, _REBALANCE_TERMS):
|
||||
return AGENT_INTENT_REBALANCE
|
||||
if _contains_any(text, _FUND_ANALYSIS_TERMS):
|
||||
return AGENT_INTENT_FUND_ANALYSIS
|
||||
if _contains_any(text, _DIALOGUE_TERMS):
|
||||
return AGENT_INTENT_DIALOGUE_SCRIPT
|
||||
|
||||
has_action = any(term in text for term in _QUERY_ACTIONS)
|
||||
has_data = any(term in text for term in _DATA_TERMS)
|
||||
if has_data and (has_action or "客户" in text or "近一年" in text or "本月" in text):
|
||||
return AGENT_INTENT_DATA_QUERY
|
||||
if _contains_any(text, _RECOMMEND_TERMS):
|
||||
return AGENT_INTENT_RECOMMEND
|
||||
return None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user