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

126 lines
10 KiB
Plaintext
Raw Normal View History

2026-04-10 16:52:07 +08:00
Ë
E×i®#ãó¨—dZddlZddlZddlmZmZmZmZddlm Z ddl
m Z ddl m
Z
ddlmZddlmZmZej&e«ZGd „d
«Zy) uB
Validator Agent - SQL审核员
验�SQL的正确性和安全性
éN)ÚDictÚListÚTupleÚOptional)Ú ChatAgent)Ú ChatModel)ÚVALIDATOR_SYSTEM)Úfull_validation_pipeline)Úvalidate_sql_syntaxÚvalidate_schema_consistencyc óΗeZdZdZ ddedeefd„Z ddededed ed
e f
d „Z
deded ed
e fd „Z deded
e fd
„Z ded
e fd„Z
ded
eeeeffd„Zdedeeded
eefd„Zy)ÚValidatorAgentu»
Validator Agent
�责:
- 语法正确性验�
- Schema一致性检查
- 安全性检查(�止DML/DDL)
- 性能问题识别
- �供修正建议
NÚmodelÚsystem_messagecó’—||_|xst|_t|j|¬«|_t
j
d«y)uÄ
�始化Agent
Args:
model: CAMEL AI模型实例
system_message: 系统�示�
schema_manager: Schema管�器(程�验�用)
)rru!✅ ValidatorAgentåˆ�始化完æˆ�N)Úschema_managerr rrÚagentÚloggerÚinfo)Úselfrrrs úagents/validator.pyÚ__init__zValidatorAgent.__init__ sA€ð-ˆÔØ,Ò@Ô0@ˆÔÜØ×.Ñ.Øô
ˆŒ
ô � ‰ Ð7Õ8óÚsqlÚ
schema_strÚdialectÚcheck_dangerousÚreturncó—dgggdœ}|j|||«}|dj|jdg««|dj|jdg««|dj|jdg««|jdd«rd|d<|S |j||«}|dj|jdg««|dj|jdg««|dj|jdg««t|d«d k(|d<|S#t$rB}t
j
d |›�«|djd
t|«›�«Yd }~Œ\d }~wwxYw)
u¯
完整验��程(程� + LLM��验�)
Args:
sql: SQL语�
schema_str: Schema�述
dialect: SQL方言
check_dangerous: 是�检查�险�作
Returns:
验�结果字典 {
"valid": bool,
"errors": [...],
"warnings": [...],
"suggestions": [...]
}
T)ÚvalidÚerrorsÚwarningsÚ suggestionsr!r"r#ÚfatalFr u,LLM验è¯�失败,使用程åº�验è¯�结果: õLLM验è¯�异常: Nr)
Ú_program_validationÚextendÚgetÚ_llm_validationÚ ExceptionrÚwarningÚappendÚstrÚlen) rrrrrÚresultÚprogram_resultÚ
llm_resultÚes rÚvalidatezValidatorAgent.validate6s�€ð2ØØØñ 
ˆð×1Ñ1Ø �˜/ó
ˆð ˆxÑ×Ñ × 2Ñ 2°8¸RÓ @ÔA؈zÑ×!Ñ! .×"4Ñ"4°ZÀÓ"DÔE؈}Ñ×$Ñ$ ^×%7Ñ%7¸
ÀrÓ%JÔKð × Ñ ˜g uÔ -Ø#ˆF�7‰O؈Mð DØ×-Ñ-¨c°:Ó>ˆJØ �8Ñ × #Ñ # J§N¡N°8¸RÓ$@Ô AØ �:Ñ × %Ñ % j§n¡n°ZÀÓ&DÔ EØ �=Ñ !× (Ñ (¨¯©¸
ÀrÓ)JÔ Kô
˜f XÑ.Ó/°1Ñ4ˆˆw‰Øˆ
øô ò DÜ �N‰NÐIÈ!ÈÐMÔ NØ �:Ñ × %Ñ %Ð(9¼#¸a»&¸Ð&B× CÑ Cûð DúsÂ!A>D5Ä5 FÄ>8E;Å;Fcó`—g}g}g}d}t||«\}} |s|j| «d}||||dœS|jr/t||j|«\}
} |
s|j| «d}|r8ddlm} | |«\}
}|
s%|j
ddj|«›�«d}||||dœS)u�
程�验�(规则引擎)
Returns:
{"errors": [], "warnings": [], "suggestions": [], "fatal": bool}
FT)r!r"r#r$r©Úcheck_dangerous_operationsu包å�«å�±é™©æ“�作: ú, )r r'rr Úutils.validatorsr6r,Újoin)rrrrr!r"r#r$Ú syntax_okÚ
syntax_errorsÚ schema_okÚ
schema_errorsr6ÚsafeÚdangerss rr&z"ValidatorAgent._program_validationpsä€ðˆØˆØˆ ؈ô$7°s¸GÓ#DÑ ˆ �=ÙØ �M‰M˜-Ô (؈Eà ¨hØ*°Uñð
ð × Ò Ü'BØ�T×(Ñ(¨'ó(Ñ $ˆI�}ñØ—
‘
˜mÔ,à�ñ Ý CÙ6°sÓ;‰MˆD�'ÙØ—
‘
Ð 4°T·Y±Y¸wÓ5GÐ4HÐIÔJØ�ðØ Ø&Øñ 
ð
rcóÄ—ddlm}|j||¬«} |jj |«}|j
j j«}|j|«}|jdg«|jdg«|jdg«dœS#t$r5}tjd|›�«d t|«›�gggdœcYd
}~Sd
}~wwxYw) u›
LLM语义验�
Args:
sql: SQL语�
schema_str: Schema�述
Returns:
验�结果
r)ÚVALIDATOR_USER)rÚschemar!r"r#©r!r"r#r%uLLM验è¯�失败: N)Úconfig.promptsrAÚformatrÚstepÚmsgÚcontentÚstripÚ_parse_json_responser(r*rÚerrorr-) rrrrAÚpromptÚresponserHr/r2s rr)zValidatorAgent._llm_validation¤sÚ€õ 2à×&Ñ&¨3°zÐ&ÓBˆð Ø—z‘z—‘ vÓ.ˆHØ—l‘l×*Ñ*×0Ñ0Ó2ˆGð×.Ñ.¨wÓ7ˆFð!Ÿ*™* X¨rÓ2Ø"ŸJ™J z°2Ó6Ø%Ÿz™z¨-¸Ó<ñð
øô ò Ü �L‰LÐ,¨Q¨CÐ0Ô 1à.¬s°1«v¨hÐ7Ð8ØØ!ñõ
ûð ús›BB!Â! CÂ**CÃCÃCrHc ó<— d|vr>|jd«dz}|jd|«}|dk7r|||j«}tj|«S#tj$r/}t
j
d|›d|dd›�«d gggd
œcYd}~Sd}~wwxYw) uè§£æž�JSONå“�应z```jsonéz```éÿÿÿÿuJSONè§£æž�失败: z
, content=NéÈu验è¯�结果解æž�失败rC)ÚfindrIÚjsonÚloadsÚJSONDecodeErrorrr+)rrHÚstartÚendr2s rrJz#ValidatorAgent._parse_json_responseÉs§€ð _à˜GÑ#ØŸ ™  YÓ/°!Ñ3�Ø—l‘l 5¨%Ó0�ؘ"’9Ø% e¨CÐ0×6Ñ6Ó8�Gä—:‘:˜gÓ&Ð &øÜ×#Ñ#ò _Ü �N‰NÐ/°¨s°*¸WÀTÀc¸]¸OÐLÔ MØ9Ð:ÈÐ[]Ñ^Õ ^ûð _ús‚AAÁBÁ,$BÂBÂBcóÌ—g}t|«\}}|s|j|«d|fSddlm}||«\}}|s'|j ddj |«›�«d|fSdgfS)uw
快速检查(仅语法和�险�作)
Returns:
(是�通过, 错误列表)
Frr5uå�±é™©æ“�作: r7T)r r'r8r6r,r9)rrr!r:r;r6r>r?s rÚ quick_checkzValidatorAgent.quick_checkØsz€ðˆô$7°sÓ#;Ñ ˆ �=ÙØ �M‰M˜-Ô (ؘ&�=Ð õ @Ù2°3Ó7‰
ˆˆgÙØ �M‰M˜N¨4¯9©9°WÓ+=Ð*>Ð?Ô @ؘ&�=Ð à�Rˆxˆrr!có°—g}|D]s}|j«}d|vsd|vr|jd«d|vsd|vr|jd«d|vsd|vr|jd «d
|vsŒc|jd «Œut|«t|«krŽ d |›d
|›d|dd›d�}|jj |«}|j
j j«jd«} |j| D�
cgc]}
|
j«sŒ|
‘Œc}
«|ddScc}
w#t$r"} tjd| ›�«Yd} ~ Œ0d} ~ wwxYw)uÑ
根�错误建议修�方案
Args:
sql: 原始SQL
errors: 错误列表
schema_str: Schema�述