Files
ai-g3sb-backman2.0/backend/utils/__pycache__/dialog_classifier.cpython-312.pyc
T

96 lines
11 KiB
Plaintext
Raw Normal View History

2026-04-14 10:28:22 +08:00
Ë
2026-04-16 10:53:10 +08:00
ÛGài %ãóØ—dZddlmZddlZddlZddlZddlZddlmZddl m
2026-04-14 10:28:22 +08:00
Z
m Z m Z e
rddl
mZeje«ZdZGd„d ee«ZGd
2026-04-14 10:28:22 +08:00
„d e «Zd Zd
Zej0dej2«Zehd£«Zed„eD««Zej0dej2«Zdd„Zdd„Z dd„Z!ddœ dd„Z" dd„Z#ddddœ d d„Z$y)!u‘
用户输入�图分类:区分「自然语言查数 / Text2SQL�与「寒暄�致谢�元问题�等�适�直接生� SQL 的对�。
支�环境�� ``DIALOG_INTENT_CLASSIFIER``:
- ``rules``:仅用关键�与短语规则(无 LLM 调用)。
- ``hybrid``(默认):明显查数�/寒暄/元问题走规则;其余交 LLM 判断(需调用方传入 ``llm_client``)。
2026-04-16 10:53:10 +08:00
é)Ú annotationsN)ÚEnum)Ú
TYPE_CHECKINGÚ
NamedTupleÚOptional)ÚDeepSeekClientÚDIALOG_INTENT_CLASSIFIERcó—eZdZdZdZy)Ú DialogIntentÚtext2sqlÚ conversationN)Ú__name__Ú
__module__Ú __qualname__ÚTEXT2SQLÚ CONVERSATION©óú"backend/utils/dialog_classifier.pyr r s „Ø€HØ!�Lrr có(—eZdZUded< dZded<y)ÚDialogClassifyResultr ÚintentNú
Optional[str]Úreply_suggestion)rrrÚ__annotations__rrrrrrs…Ø ÓØ[Ø&*Ð�mÔ*rruØæ‚¨å¥½ï¼Œæˆ‘是业务库 Text2SQL 助手。
请用自然语言�述�查询或统计的内容(例如:查询�账户�用余��按�纪商汇总未结算交易笔数)。
2026-04-16 10:53:10 +08:00
输入 quit 或 exit å�¯é€€å‡ºã€‚u?请输入具体的业务查询问题,或输入 quit 退出。uX(查|查询|查出|检索|统计|列出|汇总|求和|å¹³å�‡|分组|排åº�|排å��|显示|导出|筛选|过滤|多少|几个|几张|哪些|å� æ¯”|å�Œæ¯”|环比|ä½™é¢�|交易|账户|æŒ�仓|报表|结算|å�ˆçº¦|订å�•|æµ�æ°´|ç»�纪商|对手方|è¯�券|资金|query|select|list|show|count|sum|avg|how\s+many|statistics|\bfrom\b|\bwhere\b|\btable\b)>#õå—¨õå—¯õ好õ行õ👋õ😀õ你好õå†�è§�õ哈哈õ哈喽õ嗯嗯õ在å�—õ多谢õ好的õ您好õ感谢õ拜拜õ收到õ谢谢õ 下å�ˆå¥½õ 哈哈哈õ 在ä¸�在õ 早上好õ 晚上好õ 哈哈谢谢ú thank youÚhiÚokÚbyeÚheyÚthxÚokayÚhelloÚthanksÚgoodbyec#ó<K—|]}|j«–—Œy­w)N)Úcasefold)Ú.0Úps rÚ <genexpr>rC^sèø€ÐCÑ1B¨A˜1Ÿ:™:Ÿ<Ñ1Bùs‚u„(你是è°�|你是什么|你能(å�š|å¹²)什么|你会什么|怎么用|如何使用|使用说明|帮助|help\b|什么功能|干啥的)có„—tjd|xsd«j«}tjdd|«}|S)NÚNFKCÚz\s+Ú )Ú unicodedataÚ normalizeÚstripÚreÚsub)ÚtextÚts rÚ
_normalizerOgs8€Ü×јf d¢j¨bÓ1×7Ñ7Ó9€AÜ
�‰ˆv�s˜AÓ€AØ €HrcóL—tjdd|«j«S)Nu#[ï¼�!。.??,,;ï¼›:~~…ã€�]+$rF)rKrLrJ)rNs rÚ_strip_trailing_punctrQms€Ü
�6‰6Ð8¸"¸aÓ @× FÑ FÓ HÐHrcó®—tjt«xsdj«j «}|dvrt
2026-04-16 10:53:10 +08:00
j
2026-04-14 10:28:22 +08:00
d|«y|S)NÚhybrid)ÚrulesrSz8[dialog] unknown DIALOG_INTENT_CLASSIFIER=%r, use hybrid)ÚosÚgetenvÚ_INTENT_CLASSIFIER_ENVrJÚlowerÚloggerÚwarning)Úms rÚ_intent_classifier_moder\qsL€Ü �‰Ô)Ó *Ò 6¨h×=Ñ=Ó?×EÑEÓG€AØÐ#Ñ#Ü�‰Ø FÈô
2026-04-16 10:53:10 +08:00
ðØ €HrF©Úlast_turn_was_data_querycó—t|«}|sttjt¬«St
2026-04-14 10:28:22 +08:00
j
2026-04-16 10:53:10 +08:00
|«r3tjd|dd«ttjd«St|«}|j«tvr5tjd|«ttjt¬«Stj
2026-04-14 10:28:22 +08:00
|«r8tjd|dd«ttjt¬«S|r3tjd|dd«ttjd«Stjd|dd«ttjd«S) u½
规则分类(与历�行为一致):优先查数关键�;寒暄/元问题为 conversation;
2026-04-16 10:53:10 +08:00
若上一轮为数�查询且�寒暄/元问题,则倾� text2sql。
©rz9[dialog] intent=text2sql (query/business hint) preview=%rNéxz6[dialog] intent=conversation (chitchat phrase) core=%rz7[dialog] intent=conversation (meta question) preview=%rz@[dialog] intent=text2sql (follow-up after data query) preview=%rz3[dialog] intent=text2sql (default rules) preview=%r)rOrr rÚ_EMPTY_INPUT_REPLYÚ_SQL_OR_QUERY_HINT_REÚsearchrYÚinforrQr@Ú_CHITCHAT_KEYSÚDEFAULT_CONVERSATION_REPLYÚ_META_QUESTION_RE)Ú user_textr^rNÚcores rÚ_classify_dialog_rulesrk{sA€ô �9Ó€AÙ Ü#Ü × %Ñ %Ô8Jô
ð
ô×#Ñ# AÔ&Ü� ‰ ÐOÐQZÐ[_Ð\_ÐQ`ÔaÜ#¤L×$9Ñ$9¸4Ó@Ð@ä  Ó #€DØ ‡}�}ƒœ.Ñ(Ü� ‰ ÐLÈdÔSÜ#Ü × %Ñ %Ô8Rô
2026-04-16 10:53:10 +08:00
ð
ô×Ñ Ô"Ü� ‰ ÐMÈyÐY]ÐZ]ÈÔ_Ü#Ü × %Ñ %Ü7ô
2026-04-16 10:53:10 +08:00
ð
ñ
 Ü� ‰ ÐVÐXaÐbfÐcfÐXgÔhÜ#¤L×$9Ñ$9¸4Ó@Ð@ä
‡K�KÐEÀyÐQUÐRUÀÔWÜ ¤ × 5Ñ 5°tÓ <Ð<rc ó&—ddlm}m}|rdnd}|xsdj«}t |«dkDr|ddj «dz}|sd}|j
d |d
œd |j||t|«¬ «d
2026-04-16 10:53:10 +08:00
œgd
dd¬«}|jd«r td«‚|jd«xsdj«j«} |jd«xsdj«}
| dk(rU|
sd}
tjdt |
«|
ddt |
«dkDrdndz«ttj |
¬«S| dk(r3tjd|dd«ttj"d«Std| ›�«‚)Nr)ÚDIALOG_INTENT_CLASSIFIER_SYSTEMÚDIALOG_INTENT_CLASSIFIER_USERu是uå�¦rFi` u
…(已截断)u(æ— )Úsystem)ÚroleÚcontentÚuser)Úlast_turn_labelÚ context_snipÚ user_messagegégð?)Ú temperatureÚ
max_tokensÚtop_pÚ_json_decode_failedzintent JSON decode failedrÚreply_zhr
u“若上一版 SQL 或结果ä¸�符å�ˆé¢„期,请具体说明:希望增加/修改哪些æ�¡ä»¶ã€�时间范围或统计维度,以便é‡�新生æˆ�。zB[dialog] intent=conversation (LLM) reply_chars=%s reply_preview=%ri,u…r`r z.[dialog] intent=text2sql (LLM) user_preview=%réÈzunexpected intent field: )Úconfig.promptsrmrnrJÚlenÚrstripÚchat_with_jsonÚformatrOÚgetÚ
2026-04-16 10:53:10 +08:00
ValueErrorrXrYrerr rr) Úclientrir^Údialog_contextrmrnÚ
last_labelÚctxÚrawÚintent_sÚreplys rÚ_classify_dialog_llmr‹¤sª€÷ñ
3‘¸€JØ Ò ˜R×
&Ñ
2026-04-16 10:53:10 +08:00
&Ó
(€CÜ
ˆ3ƒx�$‚Ø�%�4ˆj×ÑÓ!Ð$6Ñ6ˆÙ ؈à
×
Ñ
àÐ*IÑ JàØ8×?Ñ?Ø$.Ø!$Ü!+¨IÓ!6ð@óñ
ð
ðØØð ó €Cð  ‡w�wÐ$Ô%ÜÐ4Ó5Ð5à—‘˜Ó!Ò' R×.Ñ.Ó0×6Ñ6Ó8€HØ
�W‰W�ZÓ
Ò
& B× -Ñ -Ó /€Eà�>Ò!ÙðFð
ô � ‰ Ø PÜ �‹JØ �$�3ˆK¤C¨£J°Ò$4™5¸"Ñ =ô
ô
$¤L×$=Ñ$=ÐPUÔVÐVà�:ÒÜ� ‰ ÐDÀiÐPTÐQTÀoÔVÜ#¤L×$9Ñ$9¸4Ó@Ð@ä
Ð0°° Ð=Ó
>Ð>r)r^r…Ú
llm_clientcóþ—t«}|dk(r
2026-04-16 10:53:10 +08:00
t||¬«St|«}|sttj
t ¬«Stj|«r3tjd|dd«ttjd«St|«}|j«tvr5tjd|«ttj
2026-04-14 10:28:22 +08:00
t¬«St j|«r8tjd|dd«ttj
t¬«S|� t#||||¬ «St||¬«S#t$$r }tj'd
|«Yd}~Œ1d}~wwxYw) u4
2026-04-16 10:53:10 +08:00
对用户一轮输入�分类。
2026-04-16 10:53:10 +08:00
``DIALOG_INTENT_CLASSIFIER``:
- ``rules``:仅规则。
- ``hybrid``:规则快速命中查数�/寒暄/元问题�返回;�则在有 ``llm_client`` 时用 LLM,
2026-04-16 10:53:10 +08:00
失败或无客户端时回退规则。
Args:
user_text: 用户输入。
last_turn_was_data_query: 上一轮助手是�为数�查询(供规则与 LLM �考)。
2026-04-14 10:28:22 +08:00
dialog_context: 会�摘�,供 LLM �考(�选)。
llm_client: DeepSeek 客户端;hybrid 下 LLM 分支需�。
2026-04-16 10:53:10 +08:00
rTr]r`z=[dialog] intent=text2sql (hybrid fast: query hint) preview=%rNraz<[dialog] intent=conversation (hybrid fast: chitchat) core=%rz;[dialog] intent=conversation (hybrid fast: meta) preview=%r)r^r…z.[dialog] LLM intent failed, fallback rules: %s)r\rkrOrr rrbrcrdrYrerrQr@rfrgrhr‹Ú ExceptionrZ)rir^r…rŒÚmoderNrjÚes rÚclassify_dialogr‘áso€ô* #Ó $€Dà ˆw‚Ü%Ø Ð0Hô
ð
ô