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

110 lines
6.9 KiB
Plaintext
Raw Normal View History

2026-04-10 16:52:07 +08:00
Ë
øD×ißãóŒ—dZddlZddlZddlZddlmZmZddlmZddl m
Z
ddl m Z eje«ZGd„d«Zy) uO
SQL Generator Agent - SQL生�专家
根�Schema和问题生�高质�SQL
éN)ÚDictÚOptional)Ú ChatAgent)Ú ChatModel)ÚSQL_GENERATOR_SYSTEMc óº—eZdZdZ ddedeedefd„Z ddeded eee deed
ef
d „Z
d ed
efd
„Z ded ee d
efd„Z ddededeed
e
eeffd„Zy)ÚSQLGeneratorAgentuÎ
SQL Generator Agent
�责:
- �解用户问题和Schema结构
- 生�准确的SQL语�
- 处���的JOIN�����查询
- �循金�/�券业务特殊规则
NÚmodelÚsystem_messageÚdialectcóš—||_|xst|_t|j|¬«|_t
j
d|›d�«y)u¢
�始化Agent
Args:
model: CAMEL AI模型实例
system_message: 系统�示�
dialect: SQL方言
)r r
u.✅ SQLGeneratorAgentåˆ�始化完æˆ� (dialect=Ú)N)r rr rÚagentÚloggerÚinfo)Úselfr
r r s úagents/sql_generator.pyÚ__init__zSQLGeneratorAgent.__init__sI€ðˆŒ Ø,ÒDÔ0DˆÔÜØ×.Ñ.Øô
ˆŒ
ô � ‰ ÐDÀWÀIÈQÐOÕPóÚquestionÚ
schema_strÚexamplesÚreturncó�—ddlm}|xs |j}|j|||¬«}|r|j ||«} |j
j
|«}|j|jj«}tjd|dd›d�«|S#t$r} tjd| ›�«‚d} ~ wwxYw) u
生�SQL
Args:
question: 用户问题
schema_str: Schema�述字符串
examples: Few-shot示例列表
dialect: 覆盖默认dialect
Returns:
SQL语�字符串
r©ÚSQL_GENERATOR_USER©Úschemarr u生æˆ�çš„SQL: NéÈz...uSQL生æˆ�失败: )Úconfig.promptsrr ÚformatÚ_inject_examplesrÚstepÚ _extract_sqlÚmsgÚcontentrÚdebugÚ ExceptionÚerror)
rrrrr rÚpromptÚresponseÚsqlÚes
rÚgeneratezSQLGeneratorAgent.generate3s€õ& 6àÒ)˜TŸ\™\ˆØ#×*Ñ*ØØØð+ó
ˆñ Ø×*Ñ*¨6°8Ó<ˆFð Ø—z‘z—‘ vÓ.ˆHØ×#Ñ# H§L¡L×$8Ñ$8Ó9ˆCä �L‰L˜>¨#¨d¨s¨)¨°CÐ8Ô 9؈Jøäò Ü �L‰LÐ,¨Q¨CÐ0Ô 1Ø ûð úsÁAB CÂ'CÃCr&có¢—|j«}d|vr>|jd«dz}|jd|«}|dk7r|||j«Sd|vr>|jd«dz}|jd|«}|dk7r|||j«S tj|«}d|vr|dS |S#tj$rY|SwxYw)u­
从Agent�应中��SQL语�
处�:
- Markdown代�� (```sql ... ```)
- 纯SQL文本
- JSON格� {"sql": "..."}
z```sqléú```éÿÿÿÿér,)ÚstripÚfindÚjsonÚloadsÚJSONDecodeError)rr&ÚstartÚendÚdatas rr$zSQLGeneratorAgent._extract_sql^sô€ð—-‘-“/ˆð �wÑ Ø—L‘L Ó*¨QÑ.ˆEØ—,‘,˜u eÓ,ˆCØ�bŠyؘu SÐ)×/Ñ/Ó1Ð1ð �GÑ Ø—L‘L Ó'¨!Ñ+ˆEØ—,‘,˜u eÓ,ˆCØ�bŠyؘu SÐ)×/Ñ/Ó1Ð1ð Ü—:‘:˜gÓ&ˆDؘ‰}ؘE‘{Ð"ðð ˆøô ×#Ñ#ò Ø ðˆð  úsÂB7Â7CÃ
Cr*c
ó˜—g}|ddD](}|jd|d›d|ddd›d|d ›�«Œ*d
j|«}|›d |›d �S)
uû
注入few-shot示例到�示�
Args:
prompt: 原始�示�
examples: 示例列表,�项为 {"question": "...", "schema": "...", "sql": "..."}
Returns:
增强�的�示�
Nr3u示例:
问题:rz
Schema: rrz ...
SQL: r,z
u
�考示例:
u
请生æˆ�SQL:)ÚappendÚjoin)rr*rÚ
examples_textÚexÚexamples_blocks rr"z"SQLGeneratorAgent._inject_examples‚s„€ðˆ
ؘ2˜A“,ˆBØ × Ñ Ø& r¨*¡~Ð&6ð7ؘh™<¨¨Ð-Ð.ð/ؘ5™ �{ð$õ
ðð Ÿ™ ]Ó3ˆð�Ð.¨~Ð.>Ð>QÐRÐRrcóŒ—ddlm}|xs |j}dtj |||¬«›d�} |j
j
|«}|jjj«} d|vr9|jd«dz}|jd|«} ||| j«}tj|«}
|
jd d
«|
jd d
«fS#tjtf$r|j!|«d
fcYSwxYw#t"$r} t$j'd | ›�«‚d
} ~ wwxYw)uÒ
生�SQL并返回解释
Args:
question: 用户问题
schema_str: Schema�述
dialect: SQL方言
Returns:
(SQL语�, 解释)
rrÚ
ruu
请�时输出SQL和简�解释(JSON格�):
{
"sql": "SELECT ...",