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

116 lines
17 KiB
Plaintext
Raw Normal View History

2026-04-14 10:28:22 +08:00
Ë
êÞiU5ãóö—dZddlZddlZddlZddlZddlmZddlmZddl m
2026-04-14 10:28:22 +08:00
Z
ee «j«jZee«ej vr"ej j#dee««ej$ej&dd¬«ej(e«Zd efd
„Zd „Zd ed efd
2026-04-14 10:28:22 +08:00
„Zd„Zded eefd„Zddedeefd„Zd„Zddedefd„Zddefd„Zd„Z edk(re «yy)ud
Text2SQL 多智能体系统 - CLI 入�
用法:在项目根目录执行 python backend/main.py
éN)ÚPath)ÚOptional)Ú load_dotenvz1%(asctime)s [%(levelname)s] %(name)s: %(message)sz%Y-%m-%d %H:%M:%S)ÚlevelÚformatÚdatefmtÚreturncód—tt«j«jjS)uB仓库根目录(å�« data/ã€�.envã€�api_server.py 的目录)。)rÚ__file__ÚresolveÚparent©óúbackend/main.pyÚ
_repo_rootrs!€ä ”‹>× !Ñ !Ó #× *Ñ *× 1Ñ 1Ð1rcó0—tt«dz «y)u:加载项目根目录 .env,供å�Žç»­ os.getenv 使用。z.envN)rrrrrÚ_load_project_envr#s€ä”
“ ˜vÑ%Õ&rÚnamecóT—|xsdj«j«}|dvry|S)uTCLI / é…�置中的方言别å��统一为 sqlglot 方言å��(SQL Server -> tsqlï¼‰ã€‚Ú sqlserver)rÚmssqlÚtsql)ÚlowerÚstrip)rÚns rÚresolve_sql_dialectr(s/€à
Ò �×#Ñ#Ó%×+Ñ+Ó-€AØÐ "Ñ"ØØ €Hrcó—t«tjdd«j«}tjdd«j«}|xr%|j d«xs|j d« }|r�n|r:tjdd«j«sÝt
j
d«ytjd d«j«st
j
d
«ytjd «xstjd d«j«}|st
j
d
«ytjdd«j«st
j
d«ytjdd«}t|«}|j«sõddl }t|dd«r6t|d«r*t|j«|z }|j«r|}|j«stj«|z }|j«s6tt«j!«j"j"}||z }|j«s1t|dd«r$t|j$«j"} | |z }|j«s.t
j
d|›�«t
j'd«ytjdd«j«}
|
s+t
j
d«t
j'd«yt
j'd«t
j'd|›�«t
j'd|
2026-04-14 10:28:22 +08:00
rdnd›�«y )!u 环境检查ÚMODELSCOPE_API_KEYÚÚOPENAI_API_KEYzhttp://zhttps://ÚOPENAI_EMBEDDING_MODELu@未设置 OPENAI_EMBEDDING_MODEL(远程 Embedding 模型å��)FÚDASHSCOPE_API_KEYuZ未设置 MODELSCOPE_API_KEYã€�OPENAI_API_KEY+OPENAI_EMBEDDING_MODEL 或 DASHSCOPE_API_KEYÚDASHSCOPE_BASE_URLÚDASHSCOPE_base_urlu8未设置 DASHSCOPE_BASE_URL(或 DASHSCOPE_base_url)ÚDASHSCOPE_MODELu未设置 DASHSCOPE_MODELÚ SCHEMA_PATHú9./data/schemas/G3SB_MCDataDictionary_table_structure.jsonrNÚfrozenÚ_MEIPASSuSchema文件ä¸�存在: u7请将G3SB Schema文件放置在 ./data/schemas/ 目录ÚDEEPSEEK_API_KEYu'环境å�˜é‡� DEEPSEEK_API_KEY 未设置uB请在 .env 文件中é…�置,或 export DEEPSEEK_API_KEY=your_keyu[OK] 环境检查通过z - Schema: z
- API Key: u å·²é…�ç½®u 未é…�ç½®T)rÚosÚgetenvrÚ
startswithÚloggerÚwarningrÚ is_absoluteÚsysÚgetattrÚhasattrr)ÚexistsÚcwdr r r
2026-04-14 10:28:22 +08:00
Ú
executableÚinfo) Úms_keyÚoa_keyÚ oa_key_okÚbaseÚschema_path_strÚ schema_pathr1Úmeipass_schemaÚ
script_dirÚexe_dirÚapi_keys rÚsetup_environmentrB0sË€äÔÜ
�Y‰YÐ+¨RÓ
2026-04-14 10:28:22 +08:00
0×
6Ñ
6Ó
8€FÜ
2026-04-14 10:28:22 +08:00
�Y‰YÐ'¨Ó
,×
2Ñ
2Ó
2026-04-14 10:28:22 +08:00
4€FØòØ×ј)Ó$ÒE¨×(9Ñ(9¸*Ó(Eð€IñÙ Ù Ü�y‰yÐ1°2Ó6×<Ñ<Ô>Ü �N‰NÐ]Ô ^Øä�y‰yÐ,¨bÓ1×7Ñ7Ô9Ü �N‰NðNô
ðä �I‰IÐ*Ó +Ò R¬r¯y©yÐ9MÈrÓ/Rß
‰%‹'ð
ñÜ �N‰NÐUÔ VØÜ�y‰yÐ*¨BÓ/×5Ñ5Ô7Ü �N‰NÐ6Ô 7Øô—i‘i 
2026-04-14 10:28:22 +08:00
Ð/jÓk€OÜ�Ó'€Kð × "Ñ "Ô $ãÜ �3˜ %Ô (¬W°S¸*Ô-EÜ! #§,¡,Ó/°/ÑAˆNØ×$Ñ$Ô&Ø,� ð×!Ñ!Ô#ÜŸ(™(›* Ñ6ˆKð×!Ñ!Ô#Üœh›×/Ñ/Ó1×8Ñ8×?Ñ?ˆJØ$ Ñ6ˆKð×!Ñ!Ô#¬°°X¸uÔ(Eܘ3Ÿ>™>Ó*×1Ñ1ˆGØ! OÑ3ˆKà × Ñ Ô Ü�‰Ð0°°
Ð>Ô?Ü� ‰ ÐMÔNØô�i‰iÐ*¨BÓ/×5Ñ5Ó7€GÙ Ü�‰Ð@ÔAÜ� ‰ ÐXÔYØä
‡K�KÐ)Ô+Ü
‡K�K�,˜{˜mÐ,Ô-Ü
‡K�K�-©w¡ ¸KÐHÐIÔJà rÚstructure_pathcó—t|«}d|jvry|j|jjdd«z }|j «r t |«SdS)uM若存在与 table_structure å�Œå��çš„ table_meta 文件则返回其路径。Útable_structureNÚ
table_meta)rrr
ÚreplaceÚis_fileÚstr)rCÚpÚcands rÚ_default_g3sb_meta_pathrL}sP€ä ˆ^Ó€AØ §¡Ñ&ØØ �8‰8�a—f‘f—n‘nÐ%6¸ ÓEÑ E€DØŸ ™ œŒ3ˆt‹9Ð0¨DÐ0rr=Úschema_meta_pathc ó*—ddlm}|�|n
t|«}tj d|›�«|rtj d|›�«|j ||¬«}|j
«}tj d|d›d|d ›d
|d ›d �«|S)
uh加载 Schemaï¼›G3SB structure JSON 会自动å°�试é…�对 table_meta(å�¯ç”¨ --schema-meta 指定)。r)Ú
SchemaManageru加载Schema: u 表注释(meta): )Úg3sb_meta_pathu[OK] Schema加载完æˆ�: Údatabaseu, å…±Ú total_tablesu张表, Ú
total_columnsu 个字段)Úschema.managerrOrLr.r7Úload_from_jsonÚget_statistics)r=rMrOÚmetaÚ
schema_mgrÚstatss rÚ load_schemarZ†sº€å,ð Ð 'ñ ä
2026-04-14 10:28:22 +08:00
$ [Ó
1ð ô
2026-04-14 10:28:22 +08:00
 ‡K�K�.  
Ð.Ô/Ù Ü� ‰ Ð)¨$¨Ð0Ô1à×-Ñ-Ø Dð.ó€Jð
× %Ñ %Ó '€EÜ
‡K�KØ
# E¨*Ñ$5Ð#6ð7Ø�NÑ#Ð
$ H¨U°?Ñ-CÐ,DÀIð Oôð
Ðrc ór—ddlm}ddlm}t j
2026-04-14 10:28:22 +08:00
dd«j
«j«dv}t|dd«rd}|jxst j
d «xsd
j
«}|s td «‚t j
d «xsd
j
«}||||jxsd|j|j¬«}||||j|j|j |j" |j$|j&|¬« }|S)u创建编排器r)ÚText2SQLOrchestrator)ÚDeepSeekConfigÚTRANSLATE_EN_TO_ZHÚtrue)Ú0ÚfalseÚnoÚoffÚno_translate_enFr*ruh未é…�ç½® DeepSeek API Key:请在 .env 中设置 DEEPSEEK_API_KEY,或使用命令行å�‚æ•° --api-keyÚDEEPSEEK_BASE_URLzhttps://api.deepseek.comú
deepseek-chat)rAÚbase_urlÚ
model_nameÚ temperatureÚ
max_tokens) Úschema_managerÚdeepseek_configÚvector_db_pathÚ max_retryÚuse_vector_searchÚfewshot_enabledÚ
fewshot_top_kÚfewshot_min_ratingÚtranslate_english_to_zh)Úagents.orchestratorr\Úllm.deepseek_clientr]r+r,rrr2rAÚ
ValueErrorÚmodelrirjÚ vector_dbrnÚno_vector_searchÚ
no_fewshotrqrr) rXÚargsr\r]Ú translate_enrArgÚconfigÚ orchestrators rÚcreate_orchestratorr s$€å8Ý2ä—9‘9Ð1°6Ó:×@Ñ@ÓB×HÑHÓJðSð€Lô ˆtÐ&¨Ô.؈ à�|‰|ÒBœrŸy™yÐ);Ó<ÒBÀ×IÑIÓK€GÙ Üð
1ó
ð
2026-04-14 10:28:22 +08:00
ô— ‘ Ð-Ó.ÒLÐ2L×SÑSÓU€Há
ØØØ—:‘:Ò0 Ø×$Ñ$Ø—?‘?ô €Fñ(Ø!ØØ—~‘~Ø—.‘.Ø"×3Ñ3Ð3à ŸO™OÐ+Ø×(Ñ(Ø×2Ñ2Ø ,ô €Lð ÐrÚquestionÚdialectc
ón—ddl}ddlm}ddlm}m}t jd|›�«|||j¬«}|j|jk(r�|jxsd}t jd«td «td
«td «t|«td «|dd
gggdd|jji¬«S|j«} |j||d¬«}
|j«| z
} td «td«td «|
jr3td| d›d|
2026-04-14 10:28:22 +08:00
j ›d�«t|
j"«n8td|
j ›d�«|
j$D]} td| ›�«Œ|
2026-04-14 10:28:22 +08:00
j&r*td«|
j&D]}
td|
›�«Œ|
j(j+d«}|
2026-04-14 10:28:22 +08:00
jr|rtd«t|«td|
j,›�«|
S)u å�•次查询rN)ÚGenerationResult)Ú DialogIntentÚclassify_dialogu [Q] 问题: )Ú
llm_clientru/[Q] æ„�图: conversation(跳过 SQL 生æˆ�)ú=
============================================================u2对� / �查询输入(未触� SQL 生�)z<============================================================u
2026-04-14 10:28:22 +08:00
使用表: []FÚ
dialog_intent)ÚsqlÚvalidÚerrorsÚwarningsÚ tables_usedÚattemptsÚmetadataé)r€r�Útop_k_candidatesu