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

162 lines
15 KiB
Plaintext
Raw Normal View History

2026-04-14 10:28:22 +08:00
Ë
OÿÞiV1ãóð—dZddlZddlZddlZddlmZmZmZmZm Z ddl
2026-04-14 10:28:22 +08:00
m Z m Z ddl
mZmZddlmZmZej&e«Ze Gd„d««ZGd „d
«ZGd „d «Z dd
eedefd„Zy)uL
DeepSeek API 客户端�装
支��步/异步调用,与CAMEL AI兼容
éN)ÚDictÚListÚOptionalÚAnyÚUnion)Ú dataclassÚfield)ÚOpenAIÚ AsyncOpenAI)ÚChatCompletionÚChatCompletionMessagecóª—eZdZUdZeed<dZeed<dZeed<dZe ed<d Z
e ed
<d Z e ed <d
Z
e ed<d
Ze ed<dZe ed<dZeeeefed<y)ÚDeepSeekConfiguDeepSeek APIé…�ç½®Úapi_keyzhttps://api.deepseek.comÚbase_urlz
deepseek-chatÚ
2026-04-14 10:28:22 +08:00
model_nameg333333Ó?Ú temperatureiÚ
max_tokensgÍÌÌÌÌÌì?Útop_pçÚfrequency_penaltyÚpresence_penaltygN@ÚtimeoutNÚ
extra_headers)Ú__name__Ú
__module__Ú __qualname__Ú__doc__ÚstrÚ__annotations__rrrÚfloatrÚintrrrrrrr©óúbackend\llm\deepseek_client.pyrrss…áØ
ƒLØ.€HˆcÓ.Ø%€J�Ó%Ø€K�ÓØ€J�ÓØ€Eˆ5ÓØ"Ð�uÓ"Ø!Ð�eÓ!Ø€GˆUÓØ.2€M�8˜D  c ™NÑ+Ô2r$rc
ó&—eZdZdZdefd„Zdeeeefde fd„Z
deeeefdeee ffd„Z dded ed
edefd „Z
d ed edeee ffd
„Zddœded ed edede def d„Zddœded edede def
d„Zdededeee ffd„Zdedefd„Zdedefd„Zy)ÚDeepSeekClientub
DeepSeek API 客户端(�步)
使用 OpenAI 兼容接�调用 DeepSeek 模型
ÚconfigcóÒ—||_t|j|j|j¬«|_t jd|j›d|j›�«y)N©rrru$[OK] DeepSeekClientåˆ�始化: model=z , base_url=) r(r
rrrÚclientÚloggerÚinfor©Úselfr(s r%Ú__init__zDeepSeekClient.__init__'s]€ØˆŒ ôØ—N‘NØ—_‘_Ø—N‘Nô
ˆŒ ô � ‰ Ø2°6×3DÑ3DÐ2EðFØŸ™Ð(ð
*õ
r$ÚmessagesÚreturnc óÊ—|jj||jd|jj«|jd|jj«|jd|jj
«|jd|jj «|jd|jj«|jd|jj«dœ}|jjr|jj|d< |jjjjdi|¤Ž}|jd j}|j }t"j%d
|j&›d |j(›d |j*›�«|S#t,$r}t"j/d
|›�«‚d}~wwxYw)u 
���天请求
Args:
messages: 消�列表,格�为 [{"role": "user", "content": "..."}, ...]
**kwargs: 覆盖默认�数的�外�数
Returns:
ChatCompletionMessage对象(包�.role和.content属性)
rrrrrr)Úmodelr1rrrrrrrru$DeepSeek调用完æˆ�: prompt_tokens=z, completion_tokens=z, total_tokens=uDeepSeek API调用失败: Nr#)r(rÚgetrrrrrrrr+ÚchatÚ completionsÚcreateÚchoicesÚmessageÚusager,ÚdebugÚ
prompt_tokensÚcompletion_tokensÚ total_tokensÚ ExceptionÚerror)r/r1ÚkwargsÚparamsÚresponser:r;Úes r%r6zDeepSeekClient.chat6s•€ð"—[‘[×+Ñ+Ø Ø!Ÿ:™: m°T·[±[×5LÑ5LÓMØ Ÿ*™* \°4·;±;×3IÑ3IÓJØ—Z‘Z ¨¯©×):Ñ):Ó;Ø!'§¡Ø# T§[¡[×%BÑ%Bó"ð!'§
¡
Ø" D§K¡K×$@Ñ$@ó!ð—z‘z )¨T¯[©[×-@Ñ-@ÓAñ

ˆð �;‰;× $Ò $Ø&*§k¡k×&?Ñ&?ˆF�?Ñ #ð Ø'J t§{¡{×'7Ñ'7×'CÑ'C×'JÑ'JÑ'TÈVÑ'TˆHØ×&Ñ& qÑ)×1Ñ1ˆGð—N‘NˆEÜ �L‰Lð!Ø!&×!4Ñ!4Ð 5ð6%Ø%*×%<Ñ%<Ð$=ð> Ø %× 2Ñ 2Ð3ð5ô
ðˆNøäò Ü �L‰LÐ5°a°SÐ9Ô :Ø ûð úsÄ(BF;Æ; G"ÇGÇG"c óø—|j|fi|¤Ž}|jj«} d|vr:|jd«dz}|jd|«}|||j«}n=d|vr9|jd«dz}|jd|«}|||j«}t j
|«S#tj $r'}tjd|›�«d|dœcYd}~Sd}~wwxYw) uÇ
���天请求并期望JSON格�返回
Args:
messages: 消�列表
**kwargs: �外�数
Returns:
解��的JSON字典
z```jsonéú```éu'JSONè§£æž�失败,返回原始内容: T)Ú_json_decode_failedÚ raw_contentN) r6ÚcontentÚstripÚfindÚjsonÚloadsÚJSONDecodeErrorr,Úwarning)r/r1rBr:rLÚstartÚendrEs r%Úchat_with_jsonzDeepSeekClient.chat_with_jsonks÷€ð�$—)‘)˜HÑ/¨Ñ/ˆØ—/‘/×'Ñ'Ó)ˆð Ià˜GÑ#àŸ ™  YÓ/°!Ñ3�Ø—l‘l 5¨%Ó0�Ø! %¨Ð,×2Ñ2Ó4‘ؘ'Ñ!àŸ ™  UÓ+¨aÑ/�Ø—l‘l 5¨%Ó0�Ø! %¨Ð,×2Ñ2Ó4�ä—:‘:˜gÓ&Ð &øÜ×#Ñ#ò IÜ �N‰NÐDÀQÀCÐHÔ Ià+/ÀÑHÕ Hûð Iús¯BB?Â?C9ÃC4Ã.C9Ã4C9ÚpromptÚschemaÚdialectc óè—ddlm}m}d|dœd|j|||¬«dœg}|j dd«|j d d
«|j
|fi|¤Ž}|j j«} d | vr;| jd «d z}
| jd
|
«} | |
| j«} | Sd
| vr9| jd
«dz}
| jd
|
«} | |
| j«} | S)u
便�方法:生�SQL
Args:
prompt: 用户问题
schema: Schema�述
dialect: SQL方言(默认 T-SQL / SQL Server)
**kwargs: �外�数
Returns:
SQL字符串
r)ÚSQL_GENERATOR_SYSTEMÚSQL_GENERATOR_USERÚsystem©ÚrolerLÚuser)rWÚquestionrXrrrçð?z```sqlérHrI) Úconfig.promptsrZr[ÚformatÚ
setdefaultr6rLrMrN) r/rVrWrXrBrZr[r1rDrLrSrTs r%Ú generate_sqlzDeepSeekClient.generate_sql�s€÷& LðÐ*>Ñ ?àØ-×4Ñ4Ø!Ø#Ø#ð5óñ
ð
2026-04-14 10:28:22 +08:00

ˆð ×ј-¨Ô-Ø×ј' 3Ô'Ø�4—9‘9˜XÑ0¨Ñ0ˆØ×"Ñ"×(Ñ(Ó*ˆð �wÑ Ø—L‘L Ó*¨QÑ.ˆEØ—,‘,˜u eÓ,ˆCؘe CÐ(×.Ñ.Ó0ˆGðˆð
�gÑ
à—L‘L Ó'¨!Ñ+ˆEØ—,‘,˜u eÓ,ˆCؘe CÐ(×.Ñ.Ó0ˆGàˆr$Úsqlc ó¶—ddlm}m}d|dœd|j||¬«dœg}|j dd«|j d d
«|j
|fi|¤ŽS) uÉ
便�方法:验�SQL
Args:
sql: SQL语�
schema: Schema�述
**kwargs: �外�数
2026-04-14 10:28:22 +08:00
Returns:
验�结果字典
r)ÚVALIDATOR_SYSTEMÚVALIDATOR_USERr\r]r_)rgrWrrrra)rcrirjrdrerU)r/rgrWrBrirjr1s r%Ú validate_sqlzDeepSeekClient.validate_sqlÃso€÷" DðÐ*:Ñ ;àØ)×0Ñ0°SÀÐ0ÓHñ
ð
ˆð ×ј-¨Ô-Ø×ј' 3Ô'Ø"ˆt×"Ñ" 8Ñ6¨vÑ6Ð6r$i@)Úmax_schema_charsr`rlrBc óЗddlm}m}|xsdd|}d|dœd|j|xsd||¬ «dœg} |j| fd
d d œ|¤Ž}
|
j
xsdj
«} | S)
u‘
库探针为 0(执行�功但结果行数为 0)时,生���用户的中文补充说明,引导用户完善问题。
r)ÚEMPTY_RESULT_FEEDBACK_SYSTEMÚEMPTY_RESULT_FEEDBACK_USERÚNr\r]r_õ(æ— ))r`rgrWgš™™™™™Ù?é)rr)rcrnrordr6rLrM) r/r`rgrWrlrBrnroÚ schema_snipr1ÚmsgÚtexts r%Úempty_result_user_feedbackz)DeepSeekClient.empty_result_user_feedbackâs�€÷ \à’| Ð%6Ð&6Ð7ˆ àÐ*FÑ GàØ5×<Ñ<Ø%Ò0¨ØØ&ð=óñ
2026-04-14 10:28:22 +08:00
ð

ˆðˆd�i‰i˜ÐL¨c¸cÑLÀVÑLˆØ— ‘ Ò!˜r×(Ñ(Ó*ˆØˆ r$i )Ú
max_sql_charsrwc ó¼—ddlm}m}|xsdj«xsd}|xsdj«}t |«|kDr|d|dz
j «dz}d|d œd
|j
||¬ «d œg} |jd d
«|jdd«|jdd«|j| fi|¤Ž}
|
jxsdj«S)uw
库探针为 1(执行�功且至少一行数�)时,生���用户的简短交付说明。
r)Ú!SQL_PROBE_SUCCESS_DELIVERY_SYSTEMÚSQL_PROBE_SUCCESS_DELIVERY_USERrprqNéu
2026-04-14 10:28:22 +08:00
-- …(已截断)r\r]r_)r`rgrgš™™™™™É?rrari@)
rcryrzrMÚlenÚrstriprdrer6rL) r/r`rgrwrBryrzÚqÚsr1rts r%Ú"sql_probe_success_delivery_messagez1DeepSeekClient.sql_probe_success_delivery_messagesò€÷
ð
Š^˜× "Ñ "Ó $Ò /¨ˆØ
ŠY�B× Ñ Ó ˆÜ ˆq‹6�MÒ !ØÐ&�M BÑ&Ð'×.Ñ.Ó0Ð3HÑHˆAðÐ*KÑ LàØ:×AÑAØØðBóñ
ð 
ˆð ×ј-¨Ô-Ø×ј' 3Ô'Ø×ј,¨Ô,؈d�i‰i˜Ñ+ FÑ+ˆØ— ‘ Ò!˜r×(Ñ(Ó*Ð*r$Ú
table_listc ó¶—ddlm}m}d|dœd|j||¬«dœg}|j dd«|j d d
«|j
|fi|¤ŽS) uÿ
2026-04-14 10:28:22 +08:00
便�方法:选择相关表
2026-04-14 10:28:22 +08:00
Args:
question: 用户问题
table_list: �用表列表字符串
**kwargs: �外�数
Returns:
2026-04-14 10:28:22 +08:00
包�relevant_tables和reasoning的字典
r)ÚSCHEMA_LINKER_SYSTEMÚSCHEMA_LINKER_USERr\r]r_)r`r�rrrra)rcrƒr„rdrerU)r/r`r�rBrƒr„r1s r%Ú
select_tableszDeepSeekClient.select_tables%su€÷" LðÐ*>Ñ ?àØ-×4Ñ4Ø%Ø)ð5óñ
2026-04-14 10:28:22 +08:00
ð 
ˆð ×ј-¨Ô-Ø×ј' 3Ô'Ø"ˆt×"Ñ" 8Ñ6¨vÑ6Ð6r$cóF—ddlm}m}|xsdj«}|syd|dœd|j |¬«dœg}|j |dd d
2026-04-14 10:28:22 +08:00
¬ «}|j xsdj«}|r!|j«dj«nd}|jd «S)
u³
将中文/英文问�归一为**一�**标准中文(temperature=0),使�一语义的中英表述
走�一套��检索与 SQL 生�路径。
r)Ú#CANONICALIZE_NL_FOR_TEXT2SQL_SYSTEMÚ!CANONICALIZE_NL_FOR_TEXT2SQL_USERrpr\r]r_)r`rrarr)rrru「ã€�"'“â€�)rcr‡rˆrMrdr6rLÚ
splitlines) r/r`r‡rˆr~r1rtruÚlines r%Ú"normalize_nl_question_for_text2sqlz1DeepSeekClient.normalize_nl_question_for_text2sqlHs¦€÷

ð
Š^˜× "Ñ "Ó $ˆÙØàÐ*MÑ NØÐ(I×(PÑ(PÐZ[Ð(PÓ(\Ñ ]ð
ˆð�i‰i˜¨c¸ÈˆiÓMˆØ— ‘ Ò!˜r×(Ñ(Ó*ˆÙ/3ˆt�‰Ó  Ñ#×)Ñ)Ô+¸ˆØ�z‰zÐ+Ó,Ð,r$có$—|j|«S)uq
兼容旧�:与 :meth:`normalize_nl_question_for_text2sql` 相�(��仅�英文)。
2026-04-14 10:28:22 +08:00
)r‹)r/r`s r%Útranslate_nl_question_to_zhz*DeepSeekClient.translate_nl_question_to_zh^s€ð×6Ñ6°xÓ@Ð@r$N)Útsql)rrrrrr0rrrr
r6rrUrfrkr"rvr€r…r‹r�r#r$r%r'r' s–„ñð