feat:投顾agent接入nl2sql能力
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""投顾聊天入口的轻量意图识别。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
|
||||
from common.common_const import AGENT_INTENT_DATA_QUERY
|
||||
|
||||
|
||||
_QUERY_ACTIONS = (
|
||||
"查询",
|
||||
"查一下",
|
||||
"查看",
|
||||
"统计",
|
||||
"列出",
|
||||
"显示",
|
||||
"多少",
|
||||
"有哪些",
|
||||
"明细",
|
||||
)
|
||||
_DATA_TERMS = (
|
||||
"持仓",
|
||||
"资产",
|
||||
"收益",
|
||||
"交易记录",
|
||||
"申购",
|
||||
"赎回",
|
||||
"余额",
|
||||
"市值",
|
||||
"份额",
|
||||
"客户数据",
|
||||
"账户",
|
||||
)
|
||||
_NON_QUERY_INTENTS = ("推荐", "调仓", "再平衡", "话术", "沟通")
|
||||
|
||||
|
||||
def recognize_advisor_intent(query: str | None, explicit_intent: str | None = None) -> str | None:
|
||||
"""返回当前投顾聊天应使用的意图;无法判断时返回 ``None``。
|
||||
|
||||
数据查询采用保守规则:必须命中查询动作或客户数据表达,且不能明显是
|
||||
推荐、调仓或话术请求,避免把生成类请求送入 NL2SQL。
|
||||
"""
|
||||
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):
|
||||
return None
|
||||
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
|
||||
return None
|
||||
|
||||
|
||||
__all__ = ["recognize_advisor_intent"]
|
||||
Reference in New Issue
Block a user