Files
ai-g3sb-backman2.0/backend/agents/__pycache__/orchestrator.cpython-312.pyc
T

304 lines
31 KiB
Plaintext
Raw Normal View History

2026-04-14 10:28:22 +08:00
Ë
bÿÞi×}ãóÊ—dZddlZddlZddlmZmZmZmZddlm Z m
2026-04-14 10:28:22 +08:00
Z
ddl m Z ddl
mZddlmZmZddlmZej(e«Ze Gd „d
««ZGd „d «Zy)
u]
Text2SQL 多智能体编排器
�调 Schema Linker�SQL Generator�Validator 三个Agent
éN)ÚDictÚListÚOptionalÚTuple)Ú dataclassÚfield)Ú
SchemaManager)Ú
SchemaIndexer)ÚDeepSeekClientÚDeepSeekConfig)ÚFewShotSelectorcóÔ—eZdZUdZeed<eed<ee¬«Z e
eed<ee¬«Z e
eed<ee¬«Z e
eed<dZ
eed <d
2026-04-14 10:28:22 +08:00
Zeeed <ee¬«Zeeefed <y
)
ÚGenerationResultuSQL生æˆ�结果ÚsqlÚvalid)Údefault_factoryÚerrorsÚwarningsÚ tables_usedéÚattemptsNÚ reasoningÚmetadata)Ú__name__Ú
__module__Ú __qualname__Ú__doc__ÚstrÚ__annotations__ÚboolrÚlistrrrrrÚintrrÚdictrrÚany©óúbackend\agents\orchestrator.pyrrsw…áØ ƒHØ ƒKÙ¨dÔ3€FˆD�‰IÓ3Ù°Ô5€Hˆd�3‰iÓ5Ù"°4Ô8€K��c‘Ó8Ø€HˆcÓØ#€Iˆx˜‰}Ó#Ù$°TÔ:€Hˆd�3˜�8‰nÔ:r&rcó—eZdZdZ d,dedeedeededede d e d
eed ed ed
e fd„Z
e dedededefd„«Z de
fd„Z d-dededeefd„Z d.dedeededeeeeffd„ZdZdede fd„Z d.dedeededeefd„Zdeedeefd„Z d/ded ed!ed"eedeedef d#„Z d0d$ed ed!ededeedee eeeeeeeeff d%„Z d1ded!ed&ed'e deedef d(„Zd2d)e de fd*„Zdefd+„Zy)3ÚText2SQLOrchestratoruã
Text2SQL 多智能体编排器
2026-04-14 10:28:22 +08:00
工作�程:
1. 粗筛候选表
2. Schema Linker:LLM 精筛表
2026-04-14 10:28:22 +08:00
3. 外键扩展 → 拼 Schema �集
4. SQL Generator:生� SQL
5. Validator:验� SQL
NÚschema_managerÚdeepseek_api_keyÚdeepseek_configÚvector_db_pathÚ max_retryÚuse_vector_searchÚfewshot_enabledÚfewshot_samples_pathÚ
fewshot_top_kÚfewshot_min_ratingÚtranslate_english_to_zhc ó6—||_||_||_| |_|rt |«|_nt t
|¬««|_d|_||_||_ | |_
|
|_ d|_ |jr  tjdd«j«dv} |�t!|«j#«}
n.tjd«}|�|j#«}
n| rdnd}
t%|
xsd«|_ t&j)d | ›d
|
›�«t&j)d|›d|›�|jrdndz|jr dz«ydz«y#t*$r*}t&j-d |›d �«d
|_ Yd}~Œsd}~wwxYw)u7
�始化编排器
Args:
schema_manager: Schema管�器实例
deepseek_api_key: DeepSeek API密钥(也�通过环境��DEEPSEEK_API_KEY)
deepseek_config: DeepSeek�置对象(优先于api_key)
vector_db_path: ��数�库路径
max_retry: 最大�试次数(包�首次生�)
use_vector_search: 是�使用��检索粗筛
translate_english_to_zh: 为 True 时(默认)对**所有**�空问��一次 LLM 归一(temperature=0),
输出一�标准中文供检索与生�;使�一语义的中英文表述对�,从而 SQL 一致。为 False 时
2026-04-14 10:28:22 +08:00
��归一(原样英文/中文)。环境�� ``TRANSLATE_EN_TO_ZH=false`` �关闭。
)Úapi_keyNÚFEWSHOT_USE_CHROMAÚfalse)Ú1ÚtrueÚyesÚFEWSHOT_DATA_PATHÚz$./data/experiences/all_samples.jsonluFew-shotå·²å�¯ç”¨: top_k=z
, min_rating=uFew-shot加载失败: u,将使用标准生æˆ�Fu4[OK] Text2SQLOrchestratoråˆ�始化完æˆ�: max_retry=z, use_vector_search=z , fewshot=onu, nl→zh_norm=onu, nl→zh_norm=off)r*r.r/r4r Údeepseekr Ú
_vector_indexÚ_vector_db_pathr0r2r3Úfewshot_selectorÚosÚgetenvÚlowerrÚstripr
ÚloggerÚinfoÚ ExceptionÚwarning)Úselfr*r+r,r-r.r/r0r1r2r3r4Ú
use_chromaÚpathÚenv_pÚes r'Ú__init__zText2SQLOrchestrator.__init__,sÀ€ð:-ˆÔØ"ˆŒØ!2ˆÔØ'>ˆÔ$ñ Ü*¨?Ó;ˆD�Mä*ÜÐ'7Ô8óˆDŒMð
7;ˆÔØ-ˆÔð /ˆÔØ*ˆÔØ"4ˆÔØ $ˆÔà × Ò ð
-ÜŸY™YÐ';¸WÓE×KÑKÓMðRð�
ð
(Ð3ÜÐ3Ó4×:Ñ:Ó<‘DäŸI™IÐ&9Ó:�EØÐ(Ø$Ÿ{™{›}™ñ&0™rÐ5[˜Ü(7¸º ÀÓ(E�Ô%Ü— ‘ Ø/°
¨ð?"Ø"4Ð!5ð7ôô � ‰ ðØ"˜ Ð#7Ð8IÐ7Jð
Là"&×"6Ò"6‘¸Bñ
2026-04-14 10:28:22 +08:00
@ð'+×&BÒ&BÐ"ñ
^õ
ðI]ñ
^õ
øô ò
-Ü—‘Ð!7¸°sÐ:RÐSÔTØ',�×$Ñ$ûð
-úsÂBE%Å% FÅ. FÆFÚdialog_contextÚquestionÚmax_lenÚreturncó—|xsdj«}|xsdj«}|s|Sd|z}t|«t|«z|kr||zS|t|«z
}|dkr|| dS|d|j«|zS)uN拼接上文与当å‰�é—®å�¥ï¼ŒæŽ§åˆ¶æ€»é•¿ï¼Œä¼˜å…ˆä¿�留当å‰�é—®å�¥å®Œæ•´ã€‚r=õ
�当�用户问题】
éPN)rEÚlenÚrstrip)rPrQrRÚdcÚqÚtailÚrooms r'Ú_merge_dialog_for_modelz,Text2SQLOrchestrator._merge_dialog_for_model€s—€ð
Ò" ×
)Ñ
)Ó
+ˆØ
Š^˜× "Ñ "Ó $ˆÙ؈HØ/°!Ñ3ˆÜ ˆr‹7”S˜“YÑ  'Ò )ؘ‘9Ð Øœ˜T›Ñ"ˆØ �"Š9ؘ˜˜ �?Ð "Ø�%�4ˆy×ÑÓ! DÑ(Ð(r&có„—|j€)ddlm}|«}t||j¬«|_|jS)u*获å�–或创建å�‘é‡�索引(懒加载)r)Ú get_embedder)ÚembedderÚ persist_dir)r?Úutils.embeddingr_r
r@)rJr_r`s r'Ú_get_vector_indexz&Text2SQLOrchestrator._get_vector_index‘s?€à × Ñ Ð %Ý 4á#“~ˆHÜ!.Ø!Ø ×0Ñ0ô"ˆDÔ ð×!Ñ!Ð!r&Útop_kcó–—|js/tjd«|jj «S |j «}|j
|j«tjd|dd›d�«|j||d¬«}|D�cgc]}|d‘Œ }}tjd |dd
›d t|«›d �«|Scc}w#t$rf}tjd
|›d�d¬«ddl }tj|j««|jj «cYd}~Sd}~wwxYw)uÁ
阶段1:粗筛(��检索)
2026-04-14 10:28:22 +08:00
Args:
question: 用户问题
top_k: 返回�K个候选表
2026-04-14 10:28:22 +08:00
Returns:
候选表�列表
2026-04-14 10:28:22 +08:00
u6[Orchestrator] å�‘é‡�æ�œç´¢å·²ç¦�用,使用所有表u*[Orchestrator] 开始å�‘é‡�检索: query='Né2z...'gš™™™™™¹?)ÚqueryrdÚscore_thresholdÚ
table_nameu粗筛候选表:é
u ...(共u个)u#[Orchestrator] å�‘é‡�检索失败: u,é™�级为使用所有表T)Úexc_infor)r/rFrGr*Ú list_tablesrcÚensure_index_for_schemaÚsearchÚdebugrWrHÚerrorÚ tracebackÚ
format_exc) rJrQrdÚindexerÚresultsÚrÚcandidate_tablesrNrqs r'Ú_coarse_filterz#Text2SQLOrchestrator._coarse_filter�sA€ð×%Ò%ä �K‰KÐPÔ QØ×&Ñ&×2Ñ2Ó4Ð 4ð 5Ø×,Ñ,Ó.ˆGØ × +Ñ +¨D×,?Ñ,?Ô @ô
�K‰KÐDÀXÈcÈrÀ]ÀOÐSWÐXÔ YØ—n‘nØØØ #ð%óˆGñ :AÓA¹°A  ,£¸Ð ÐAÜ �L‰LÐ-Ð.>¸sÀÐ.CÐ-DÀIÌcÐRbÓNcÐMdÐdjÐkÔ lØ#Ð #ùò Bøôò 5Ü �L‰LÐ>¸q¸cÐA\Ð]ÐhlˆLÔ mÛ Ü �L‰L˜×-Ñ-Ó/Ô 0à×&Ñ&×2Ñ2Ó4Õ 4ûð  5ús1½AC CÂ(+CÃCà EÃ"AEÄ=EÅErvÚ
max_tablescó„—g}|D]G}|jj|«}|sŒ!|jxsd}|jd|›d|›�«ŒIdj |«}|j
j
||¬«} | jdg«}
| jdd«} |
d |}
2026-04-14 10:28:22 +08:00
tjd
|
›�«|
| fS) u

阶段2:LLM精筛(Schema Linker Agent)
2026-04-14 10:28:22 +08:00
Args:
question: 用户问题
candidate_tables: 候选表列表
max_tables: 最多选择的表数
Returns:
(相关表列表, 推��由)
u æ— æ��è¿°ú- z: Ú
)rQÚ
table_listÚrelevant_tablesrr=NuLLM精筛选中表:)
2026-04-14 10:28:22 +08:00
r*Ú get_tableÚcommentÚappendÚjoinr>Ú
select_tablesÚgetrFrG) rJrQrvrxÚ table_infosÚtbl_nameÚtablerÚtable_list_strÚresponser}rs r'Ú_llm_select_tablesz'Text2SQLOrchestrator._llm_select_tablesÈs×€ð$ˆ Û(ˆHØ×'Ñ'×1Ñ1°(Ó;ˆEÚØŸ-™-Ò6¨;�Ø×"Ñ" R¨ z°°G°9Ð#=Õ>ð )ð Ÿ™ ;Ó/ˆð—=‘=×.Ñ.ØØ%ð/ó
ˆð
#Ÿ,™,Ð'8¸"Ó=ˆØ—L‘L ¨bÓ1ˆ ð*¨+¨:Ð6ˆä� ‰ Ð+¨OÐ+<Ð=Ô>Ø  Ð)Ð)r&)u 对手方u ç»�纪商u券商u å°�手方cól‡—‰sytˆfd„|jD««ryd‰j«vS)NFc3ó&•K—|]}|‰v–—Œ
y­w)Nr%)Ú.0ÚkrQs €r'Ú <genexpr>zJText2SQLOrchestrator._question_implies_broker_dimension.<locals>.<genexpr>÷søèø€Ð?Ñ&> ˆq�HŒ}Ñ&>ùsƒTÚbroker)r$Ú_BROKER_KEYWORDS_CNrD)rJrQs `r'Ú"_question_implies_broker_dimensionz7Text2SQLOrchestrator._question_implies_broker_dimensionôs2ø€ÙØÜ Ó? d×&>Ò&>Ó?Ô ?ØØ˜8Ÿ>™>Ó+Ð+Ð+r&r}có—|j|«s|d|Sddg}|D�cgc] }|jj|«sŒ|‘Œ"}}|s|d|St«}g}|D])}||vsŒ|j |«|j |«Œ+|D]U}t
2026-04-14 10:28:22 +08:00
|«|k\rnE||vsŒ|jj|«sŒ4|j |«|j |«ŒWtjd||«|d|Scc}w)uò
问题涉�对手方/�纪商时,优先纳入 TSBBrokerContract 与 MCBroker(若 Schema 中存在),
��仅选中 VSBHK 报表视图�无 BrokerID,模型�照抄黄金范例列�导致校验失败。
NÚTSBBrokerContractÚMCBrokeruB对手方/ç»�纪商问题:优先纳入 %s,调整å�Žé€‰è¡¨ï¼š%s) r‘r*r~Úsetr€ÚaddrWrFrG) rJrQr}rxÚpriorityÚtÚpresentÚseenÚmergeds r'Ú_prioritize_broker_tablesz.Text2SQLOrchestrator._prioritize_broker_tablesûs€ð×6Ñ6°xÔ@Ø" ; JÐ/Ð /à'¨Ð4ˆÙ&ÓK™h˜¨$×*=Ñ*=×*GÑ*GÈÕ*J’1˜hˆÐKÙØ" ; JÐ/Ð /ä‹uˆØˆÛˆAؘŠ}Ø—
‘
˜aÔ Ø—‘˜• ðó!ˆAÜ�6‹{˜jÒ(ÙØ˜Š} ×!4Ñ!4×!>Ñ!>¸qÕ!AØ—
‘
˜aÔ Ø—‘˜• ð !ô � ‰ ÐXÐZaÐciÔjØ�k�zÐ"Ð"ùò#Ls Ÿ C=ÁC=Ú table_namescó¶—t|«}|D�]
}|jj|«}|sŒ"|jD]N}|j|vsŒ|j |j«t jd|j›�«ŒP|jj«D]o}|jD]^}|j|k(sŒ|j|vsŒ"|j |j«t jd|j›�«Œ`Œq�Œ
t|«}t|«t|«kDrt jd|›d|›�«|S)u®
外键扩展:自动添加关�表
Args:
2026-04-14 10:28:22 +08:00
table_names: 已选中的表�列表
Returns:
扩展�的表�列表
u外键扩展:添加关�表 u外键扩展:添加引用表 u外键扩展:u → )
r•r*r~Ú foreign_keysÚ ref_tabler–rFroÚ
get_tablesÚnamer!rWrG)rJr�Úresultr…r†ÚfkÚotherÚexpandeds r'Ú_expand_relationsz&Text2SQLOrchestrator._expand_relationss€ô�[Ó!ˆä#ˆHØ×'Ñ'×1Ñ1°(Ó;ˆEÙØð×(Ô(�Ø—<‘< vÒ-Ø—J‘J˜rŸ|™|Ô,Ü—L‘LÐ#BÀ2Ç<Á<À.Ð!QÕRð)ð ×,Ñ,×7Ñ7Ö9�Ø×,Ô,�BØ—|‘| xÓ/°E·J±JÀfÒ4LØŸ
™
 5§:¡:Ô.ÜŸ ™ Ð'FÀuÇzÁzÀlÐ%SÕTñ-ò:ð$ô$˜“<ˆÜ ˆx‹=œ3˜{Ó+Ò +Ü �K‰K˜/¨+¨°e¸H¸:ÐFÔ Gàˆr&Ú
2026-04-14 10:28:22 +08:00
schema_strÚdialectÚvalidation_feedbackc ó—ddlm}m}ddlm}|xsdj «} |}
| r| ›d|›�}
|j rÒ|jrÆ |jj|
|j|j¬«} | r‘djt| «D� �
cgc]'\} }
d| d z›d
|
j›d |
j›�‘Œ)c}
} «}d |›d
|›�}tj!dt#| «›d| D�
cgc]}
|
2026-04-14 10:28:22 +08:00
j$‘Œc}
›�«|}|dk(rd}d}| rd| ›d�}||j+|||¬«z}|dk(r|dz
}|r|d|›�z
}d|dœd|dœg}|j,j/|dd¬«}|j0j «}d|vrH||j3d«dz|j3d |j3d«dz«j «}nKd |vrG||j3d «d!z|j3d |j3d «d!z«j «}|||«}tj!d"|dd#›d$�«|Scc}
} wcc}
w#t&$r#}tj)d|›�«Yd}~�Œpd}~wwxYw)%uª
SQL生�(SQL Generator Agent)
2026-04-14 10:28:22 +08:00
Args:
question: 用户问题
schema_str: Schema�述字符串
dialect: SQL方言
validation_feedback: �空时附加到用户�示(�试时传入上次校验错误)
2026-04-14 10:28:22 +08:00
dialog_context: �几轮对�摘�;与 ``question`` 一并供指代消解与续问。
Returns:
2026-04-14 10:28:22 +08:00
SQL语�
r)ÚSQL_GENERATOR_SYSTEMÚSQL_GENERATOR_USER)Únormalize_sql_for_dialectr=u
ã€�当å‰�问】)rQrdÚ
min_ratingz
u示例 ru
2026-04-14 10:28:22 +08:00
:
问题:u
SQL:
2026-04-14 10:28:22 +08:00
u/�考以下相似示例的SQL编写风格:
u
2026-04-14 10:28:22 +08:00
�当�Schema】
u
已注入 u 个few-shot示例: uFew-shot检索失败: NÚtsqlzMicrosoft SQL Server (T-SQL)u–ã€�对è¯�上文】(用于ç�†è§£ã€Œè¿™/é‚£/å�Œæ ·/上é�¢/刚æ‰�ã€�等指代å�Šç»­é—®æ�¡ä»¶ï¼›è¯·ç»“å�ˆä¸‹æ–‡ã€Œå½“å‰�用户问题ã€�生æˆ� SQL。)
)ÚschemarQr©u 
�硬性�求】目标库为 SQL Server(T-SQL):�止使用 MySQL �引� `;标识符如需引用请使用方括�,例如 [TableName]�[ColumnName]。字符串连接使用 `+`(与系统�示中的标准版�范例一致)。「今日�「当天�等与日期列比较时,使用 `CAST(GETDATE() AS DATE)`,**�止** `CURDATE()`�`NOW()`�`CURRENT_DATE`(MySQL)。�件请使用 T-SQL 惯用写法(例如 IS NOT NULL)。排版�须�守:关键字大写�SELECT �列一行缩进�WHERE 续行以 AND 开头�PascalCase 英文别�。
**ç¦�æ­¢**在å�•引å�·å­—符串字é�¢é‡�或 `N'…'` 中出现任何中日韩文字;业务中文须映射为 Schema 注释中的代ç �或通过维表 JOIN,勿写 `= '过户费'` 这类比对。uµ
�上次校验未通过】请根�下列错误修正 SQL,并输出完整�执行查询;表��列�必须与「当�Schema�中完全一致,��臆造字段�。
Úsystem)ÚroleÚcontentÚuserggð?)Ú temperatureÚtop_pz```sqléz```éu生æˆ�çš„SQL:éÈú...)Úconfig.promptsr¬r­Úutils.sql_parserr®rEr0rAÚselectr2r3r�Ú enumerateÚ question_zhrrFrorWÚqidrHrIÚformatr>Úchatr´Úfind)rJrQr¨r©rªrPr¬r­r®rYÚfewshot_questionÚexamplesÚiÚexÚexamples_promptrNÚ
dialect_labelÚprefixÚ user_contentÚmessagesrˆrs r'Ú
_generate_sqlz"Text2SQLOrchestrator._generate_sql=sý€÷, LÝ>àÒ" ×
)Ñ
)Ó
+ˆØ#ÐÙ
Ø"$ Ð%8¸¸
ÐCÐ ð × Ò  D×$9Ò$9ð
=Ø×0Ñ0×7Ñ7Ø-Ø×,Ñ,Ø#×6Ñ6ð8ó�ñ
Ø&,§k¡kä%.¨xÔ%8ô3á%8™E˜A˜rð" ! A¡#  n°R·^±^Ð4DÀJÈrÏvÉvÈhÒWØ%8ò3ó'�Oð$UÐUdÐTeÐe}ðIð~Jð"K�JÜ—L‘L :¬c°(«m¨_Ð<PÑckÓQlÑckÐ]_ÐRT×RXÓRXÐckÑQlÐPmÐ!nÔoð ˆ
Ø �fÒ Ø:ˆMàˆÙ
ðLà�$�dðð
ð Ð 2× 9Ñ 9ØØØ!ð!:ó!
ñ
ˆ ð
�fÒ Ø ðBñ
ˆLñ Ø ðià&Ð'ð)ñ
ˆLðÐ*>Ñ ?ب Ñ 5ð
ˆð —=‘=×%Ñ% h¸CÀsÐ%ÓKˆØ×Ñ×$Ñ$Ó&ˆð �s‰?Ø�c—h‘h˜xÓ(¨1Ñ,¨S¯X©X°e¸S¿X¹XÀhÓ=OÐRSÑ=SÓ-TÐU×[Ñ[Ó]‰CØ
�c‰\Ø�c—h‘h˜u“o¨Ñ)¨#¯(©(°5¸#¿(¹(À5»/ÈAÑ:MÓ*NÐO×UÑUÓWˆCá'¨¨WÓ5ˆä� ‰ � s¨4¨C y k°Ð5Ô6؈
ùóA3ùò
RmøÜò
=Ü—‘Ð!7¸°sÐ;×<Ò<ûð
=ús7ÁA
IÂ,I
2026-04-14 10:28:22 +08:00
Ã0IÃ0IÄ IÉ
IÉ JÉI<É<Jrcó˜—g}g}d}d} ddlm}
m} |
||¬«\} }
| s|j|
«| ||j|¬«\}}|s|j|«ddlm}m}||«\}}|s|j|«|dk(r||«\}}|s|j|«t|«dk(rGddl m
}||«\}}|dk(rd }|r|d
|›�z
2026-04-14 10:28:22 +08:00
}|j|«n|€|jd «|d v}|sì |jj||¬
«}t|jdg««}|rA|D�cgc]6}t!|t"«r$|j%d«s|j%d«s|‘Œ8}}|jdd«s|j|«|j|jdg««|jdg«}|rt&j)d|›�«|dk(r`t|«dk(rRd}|}|xsdj/«} | r| ›d|›�} |jj1|||¬«}!|›d|!›�} d}"| xs||"z} t|«dk(}#|#|||| fScc}w#t*$r"}t&j-d|›�«Yd}~Œ¥d}~wwxYw#t*$r'}t&j-d|›�«|›d�} Yd}~Œ~d}~wwxYw)u±
SQL验�(程�验� + 库探针 + 按探针分支的 LLM)
Args:
sql: SQL语�
schema_str: Schema�述
dialect: 与生�一致的 SQL 方言(sqlglot �,默认 tsql)
2026-04-14 10:28:22 +08:00
question: 用户自然语言(探针为 0 时用于生�补充说明)
dialog_context: 会�上文;探针 0 时与 question 一并传入说明模型
2026-04-14 10:28:22 +08:00
Returns:
(是�通过, 错误列表, 警告列表, 库执行探针状�, 无数�时的用户说明)
2026-04-14 10:28:22 +08:00
探针:``1`` 至少一行数�;``0`` 执行�功但行数为 0;``-1`` 执行失败;``None`` 未�置库或未跑探针
Nr)Úvalidate_sql_syntaxÚvalidate_schema_consistency©r©)Úcheck_dangerous_operationsÚ#check_no_cjk_in_sql_string_literalsr°)Úprobe_sql_execution_status_exéÿÿÿÿu™ã€�库探针结果:-1 执行失败】SQL 在目标库执行报错,系统将ä¾�æ�®ä¸‹åˆ—错误**自动é‡�新生æˆ�** SQL(请等待é‡�试结果)。u
æ•°æ�®åº“返回:u7未é…�ç½® database_url,已跳过数æ�®åº“执行探针)rÖrr)rr±rzunknown_table:zunknown_column:rTrÚ suggestionsu优化建议:u/LLM验è¯�失败(é™�级为仅程åº�验è¯�): u½ã€�库探针结果:0 行】该 SQL 已在数æ�®åº“æˆ�功执行,但**返回数æ�®è¡Œæ•°ä¸º 0**(未查到匹é…�记录)。下方已附带完整 SQL 与原因分æž�,请一并阅读。r=rU)rQrr±u
�问题分�】
u无数�说明生�失败: u{
�问题分�】
2026-04-14 10:28:22 +08:00
未能自动生æˆ�详细分æž�。请补充时间范围ã€�筛选æ�¡ä»¶æˆ–业务对象å�Žé‡�æ–°æ��问。u‹
2026-04-14 10:28:22 +08:00
�追问 — 请补充��次�问以�新生� SQL】
1. 请根�上述分�,尽�具体地补充或修正:**时间范围**�**业务对象**(账户/�约/代�等)�**筛选�径** 或 **您认为 SQL 中���的�件**。
2. 补充说明å�Žè¯·**é‡�æ–°å�‘起一次自然语言æ��é—®**(无需粘贴 SQL),系统会结å�ˆæ‚¨çš„æ–°æ��è¿°**é‡�新生æˆ�**查询。)r½rÐrÑÚextendr*Úutils.validatorsrÓrÔrWÚdb.dbhub_toolsrÕr€r>Ú validate_sqlr!rƒÚ
isinstancerÚ
startswithrFrorHrIrEÚempty_result_user_feedback)$rJrr¨r©rQrPrrÚdb_execution_statusÚempty_feedbackrÐrÑÚ syntax_okÚ
syntax_errorsÚ schema_okÚ
schema_errorsrÓrÔÚ danger_okÚ
2026-04-14 10:28:22 +08:00
danger_errorsÚcjk_okÚ
cjk_errorsrÕÚ db_probe_errÚmsgÚskip_validator_llmÚ
llm_resultÚ
llm_errorsrNr×rËÚfb_qrYÚllm_fbÚfollowÚis_valids$ r'Ú
_validate_sqlz"Text2SQLOrchestrator._validate_sql¦sC€ð,ˆØˆØ-1ÐØ(,ˆ÷ Vñ$7°sÀGÔ#LÑ ˆ �=ÙØ �M‰M˜-Ô (ñ$?Ø �×$Ñ$¨gô$
Ñ ˆ �=ñØ �M‰M˜-Ô (÷ eÙ#=¸cÓ#BÑ ˆ �=ÙØ �M‰M˜-Ô (ð �fÒ Ù!DÀSÓ!IÑ ˆF�JÙØ—
‘
˜jÔ)ô ˆv‹;˜!Ò Ý Dá0MÈcÓ0RÑ -Ð  Ø" bÒ(ðjðñ ØÐ1°,°Ð@Ñ@�CØ—
‘
˜cÕ"Ø$Ð,Ø—‘ØMôð1°JÐ>Ðñ"ð
2026-04-14 10:28:22 +08:00
VØ!Ÿ]™]×7Ñ7¸CÈ
Ð7ÓS�
ä! *§.¡.°¸2Ó">Ó?�
2026-04-14 10:28:22 +08:00
áñ",ó"á!+˜AÜ% a¬Ô-àŸL™LÐ)9Ô:Ø Ÿ|™|Ð,=Ô>ò Ø!+ðð"ð"—~‘~ g¨tÔ4Ø—M‘M *Ô-à—‘ 
§¡¨z¸2Ó >Ô?Ø(Ÿn™n¨]¸BÓ?� ÙÜ—L‘L ?°;°-Ð!@ÔAð  !Ò #¬¨F« °qÒ(8ðQð
ðˆDØ Ò& B×-Ñ-Ó/ˆBÙØ˜Ð;¸H¸:ÐF�ð
ØŸ™×AÑAØ!ØØ%ðBó�ð
%+ 8Ð+CÀFÀ8Ð!L�ð`ð
ð -Ò6°¸&Ñ@ˆNä�v“; !Ñ#ˆØ˜ Ð+>ÀÐNÐNùòm"øô$ò
VÜ—‘Ð!PÐQRÐPSÐT×UÑUûð
Vûô(ò
Ü—‘Ð!>¸q¸cÐBÔCà�hð}ð}õûð
2026-04-14 10:28:22 +08:00
úsCÄ>I+Ä?;I&Å:A2I+È!%JÉ&I+É+ JÉ4JÊJÊ K Ê"KËK Útop_k_candidatesÚinclude_schema_in_resultc
ó@ —|xsdj«}i}|}|jrŠ|rˆ |jj|«j«} | rGt | «dk\r9| }||d<| |d<t
j
d| ddt | «dkDrdndz«nt
jd «|}|xsdj«} |j| |d «} |j| |d «}
t
2026-04-14 10:28:22 +08:00
j
d
|dd›d�«d}d}g}d}d}g}||jk�r”t
j
d|dz›�«|dk(r‡|j| |¬«}|j|
|«\}}|j|
|«}|j|«}|}|jj!|dd¬«}t
j
2026-04-14 10:28:22 +08:00
d|›d|›�«nÊt