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

104 lines
17 KiB
Plaintext
Raw Normal View History

2026-04-14 10:28:22 +08:00
Ë
BëÝiç3ãó—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 efd „Zd
2026-04-14 10:28:22 +08:00
ed efd„Zd„Zded eefd„Zddedeefd„Zd„Zddedefd„Zddefd„Z d„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Ñ%Õ&rcóJ—tjdd«j«S)uJä»… ``USE_LOCAL_EMBEDDING=true`` 时需è¦�;远程 Embedding å�¯ä¸ºç©ºã€‚ÚEMBEDDING_MODEL_PATHÚ)ÚosÚgetenvÚstriprrrÚ_embedding_model_pathr(s€ä
�9‰9Ð+¨RÓ 0× 6Ñ 6Ó 8Ð8rÚnamecóT—|xsdj«j«}|dvry|S)uTCLI / é…�置中的方言别å��统一为 sqlglot 方言å��(SQL Server -> tsqlï¼‰ã€‚Ú sqlserver)rÚmssqlÚtsql)Úlowerr)rÚns rÚresolve_sql_dialectr"-s/€à
Ò �×#Ñ#Ó%×+Ñ+Ó-€AØÐ "Ñ"ØØ €HrcóZ—t«tjdd«j«j «dv}|rjt «}|st jd«yt|«}|j«�s¤t jd|«t jd«ytjdd «j«}tjd
d «j«}|xr%|jd «xs|jd « }|r�n|r:tjd
2026-04-14 10:28:22 +08:00
d «j«sÝt jd«ytjdd «j«st jd«ytjd«xstjdd «j«}|st jd«ytjdd «j«st jd«ytd«}|j«s.t jd|›�«t jd«ytjd«s+t jd«t jd«yy)u 环境检查ÚUSE_LOCAL_EMBEDDINGÚfalse)Ú1ÚtrueÚyesÚonuRUSE_LOCAL_EMBEDDING=true 但未设置 EMBEDDING_MODEL_PATH(本地模型目录)Fu$本地 Embedding 目录ä¸�存在: %su�请设置正确的 EMBEDDING_MODEL_PATH,或改用 USE_LOCAL_EMBEDDING=false,并é…�ç½® OPENAI_* / MODELSCOPE_* / DASHSCOPE_* 远程 EmbeddingÚMODELSCOPE_API_KEYrÚOPENAI_API_KEYzhttp://zhttps://ÚOPENAI_EMBEDDING_MODELu=USE_LOCAL_EMBEDDING=false 但未设置 OPENAI_EMBEDDING_MODELÚDASHSCOPE_API_KEYuwUSE_LOCAL_EMBEDDING=false 但未设置 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ú9./data/schemas/G3SB_MCDataDictionary_table_structure.jsonuSchema文件ä¸�存在: u7请将G3SB Schema文件放置在 ./data/schemas/ 目录ÚDEEPSEEK_API_KEYu'环境å�˜é‡� DEEPSEEK_API_KEY 未设置uB请在 .env 文件中é…�置,或 export DEEPSEEK_API_KEY=your_keyT) rrrrr rÚloggerÚwarningrÚexistsÚinfoÚ
startswith)Ú
use_local_embÚmp_strÚ
2026-04-14 10:28:22 +08:00
model_pathÚms_keyÚoa_keyÚ oa_key_okÚbaseÚ schema_paths rÚsetup_environmentr@5s,€äÔÜ—I‘IÐ3°WÓ=×CÑCÓE×KÑKÓMðRð€MñÜ&Ó(ˆÙÜ �N‰NØdô
ðܘ&“\ˆ
Ø× Ñ Õ"Ü �N‰NÐAÀ:Ô NÜ �K‰KðSô
2026-04-14 10:28:22 +08:00
ðä—‘Ð/°Ó4×:Ñ:Ó<ˆÜ—‘Ð+¨RÓ0×6Ñ6Ó8ˆØò
Ø × Ñ ˜iÓ (Ò I¨F×,=Ñ,=¸jÓ,Ið
ˆ ñ Ù Ù
Ü—9‘9Ð5°rÓ:×@Ñ@ÔBÜ—‘Ð^Ô_Øä—9‘9Ð0°"Ó5×;Ñ;Ô=Ü—‘ðRôðä— ‘ Ð.Ó/ÒV´2·9±9Ð=QÐSUÓ3V߉e‹gð
ñÜ—‘ÐYÔZØÜ—9‘9Ð.°Ó3×9Ñ9Ô;Ü—‘Ð:Ô;ØôÐRÓS€KØ × Ñ Ô Ü�‰Ð0°°
Ð>Ô?Ü� ‰ ÐMÔNØô �9‰9Ð'Ô (Ü�‰Ð@ÔAÜ� ‰ ÐXÔYØà 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)rAÚpÚcands rÚ_default_g3sb_meta_pathrJwsP€ä ˆ^Ó€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
2026-04-14 10:28:22 +08:00
«}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.managerrMrJr3r6Úload_from_jsonÚget_statistics)r?rKrMÚmetaÚ
2026-04-14 10:28:22 +08:00
schema_mgrÚstatss rÚ load_schemarX€sº€å,ð Ð 'ñ ä
$ [Ó
1ð ô
 ‡K�K�.  
2026-04-14 10:28:22 +08:00
Ð.Ô/Ù Ü� ‰ Ð)¨$¨Ð0Ô1à×-Ñ-Ø Dð.ó€Jð
× %Ñ %Ó '€EÜ
‡K�KØ
# E¨*Ñ$5Ð#6ð7Ø�NÑ#Ð
$ H¨U°?Ñ-CÐ,DÀIð Oôð
Ðrc óˆ—ddlm}ddlm}t j
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&|j(|¬«
2026-04-14 10:28:22 +08:00
}|S)u创建编排器r)ÚText2SQLOrchestrator)ÚDeepSeekConfigÚTRANSLATE_EN_TO_ZHr')Ú0r%ÚnoÚoffÚno_translate_enFr2ruh未é…�ç½® DeepSeek API Key:请在 .env 中设置 DEEPSEEK_API_KEY,或使用命令行å�‚æ•° --api-keyÚDEEPSEEK_BASE_URLzhttps://api.deepseek.comú
deepseek-chat)Úapi_keyÚbase_urlÚ
2026-04-14 10:28:22 +08:00
model_nameÚ temperatureÚ
max_tokens)
Úschema_managerÚdeepseek_configÚembedding_model_pathÚvector_db_pathÚ max_retryÚuse_vector_searchÚfewshot_enabledÚ
fewshot_top_kÚfewshot_min_ratingÚtranslate_english_to_zh)Úagents.orchestratorrZÚllm.deepseek_clientr[rrrr ÚgetattrrcÚ
ValueErrorÚmodelrfrgÚembedding_modelÚ vector_dbrlÚno_vector_searchÚ
no_fewshotrorp) rVÚargsrZr[Ú translate_enrcrdÚ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ñ(Ø!ØØ!×1Ñ1Ø—~‘~Ø—.‘.Ø"×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|
j ›d�«t|
j"«n8td|
j ›d�«|
j$D]} td| ›�«Œ|
j&r*td«|
j&D]}
td|
2026-04-14 10:28:22 +08:00
›�«Œ|
j(j+d«}|
jr|rtd«t|«td|
j,›�«|
S)u å�•次查询rN)ÚGenerationResult)Ú DialogIntentÚclassify_dialogu [Q] 问题: )Ú
llm_clientru/[Q] æ„�图: conversation(跳过 SQL 生æˆ�)ú=
============================================================u2对� / �查询输入(未触� SQL 生�)z<============================================================u
使用表: []FÚ
2026-04-14 10:28:22 +08:00
dialog_intent)ÚsqlÚvalidÚerrorsÚwarningsÚ tables_usedÚattemptsÚmetadataé)r€r�Útop_k_candidatesu
生�结果:u[OK] SQL (耗时 z.2fu
s, �试 u 次):
u[FAIL] 生�失败 (�试 u 次)z - u
[WARN] 警告:Údb_empty_feedbacku'
[DB 探针 0 — 无数�行] 说明:u
使用表: )ÚtimerrrƒÚutils.dialog_classifierr„r…r3r6ÚdeepseekÚintentÚ CONVERSATIONÚreply_suggestionÚprintÚvalueÚgeneraterŠrŽr‰r‹rŒr�Úgetr�)r~r€r�r“rƒr„r…Ú
classifiedÚreplyÚstartÚresultÚelapsedÚerrÚwÚdbes rÚ single_queryr¥Ésí€ãå4ßEä
‡K�K�,˜x˜jÐ)Ô*á  °l×6KÑ6KÔL€JØ×јL×5Ñ5Ò5Ø×+Ñ+Ò1¨rˆÜ� ‰ ÐEÔFÜ
ˆoÔÜ
2026-04-14 10:28:22 +08:00
ÐBÔCÜ
ˆhŒÜ
ˆeŒ Ü
�Ô!ÙØØØØØØØ% |×'@Ñ'@×'FÑ'FÐGô
ð
2026-04-14 10:28:22 +08:00
ð
�I‰I‹K€EØ
×