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

172 lines
17 KiB
Plaintext
Raw Normal View History

2026-04-14 10:28:22 +08:00
Ë
+Qài.7ãóô—dZddlZddlZddlZddlmZmZmZmZm Z m
Z
ddl m Z m
Z
2026-04-14 10:28:22 +08:00
ddlmZmZddlmZmZej(e«Ze Gd„d««ZGd „d
«ZGd „d «Z dd
e edefd„Zy)uL
2026-04-14 10:28:22 +08:00
DeepSeek API 客户端�装
支��步/异步调用,与CAMEL AI兼容
éN)ÚAnyÚDictÚIteratorÚListÚOptionalÚ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
2026-04-14 10:28:22 +08:00
deepseek-chatÚ
model_nameg333333Ó?Ú temperatureiÚ
max_tokensgÍÌÌÌÌÌì?Útop_pçÚfrequency_penaltyÚpresence_penaltygN@ÚtimeoutNÚ
extra_headers)Ú__name__Ú
2026-04-14 10:28:22 +08:00
__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
2026-04-14 10:28:22 +08:00
óP—eZdZdZdefd„Zdeeeefde fd„Z
deeeefde de efd„Z
deeeefdeee ffd „Z dd
ed ed edefd
„Zded edeee ffd„Zddœdeded edede def d„Zddœdededede 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ØŸ™Ð(ð
2026-04-14 10:28:22 +08:00
*õ
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属性)
2026-04-14 10:28:22 +08:00
rrrrrr)Úmodelr2rrrrrrrru$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)r0r2ÚkwargsÚparamsÚresponser;r<Úes r&r7zDeepSeekClient.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"rCc +ó¨K—|jj||jd|jj«|jd|jj«|jd|jj
«|jd|jj «|jd|jj«d|jd|jj«dœ }|jjr|jj|d < |jjjjdi|¤Ž}|D]G}|jsŒ|jd
j}|sŒ,t!|d d «sŒ:|j"–—ŒIy #t$$r}t&j)d
|›�«‚d }~wwxYw­w)uu
2026-04-14 10:28:22 +08:00
���天:按 completion 增�产出文本片段(与 chat ��,固定 stream=True)。
rrrrrTr) r5r2rrrrrÚstreamrrrÚcontentNu DeepSeek APIæµ�å¼�调用失败: r$)r)rr6rrrrrrrr,r7r8r9r:ÚdeltaÚgetattrrIrAr-rB)r0r2rCrDrHÚchunkrJrFs r&Ú chat_streamzDeepSeekClient.chat_streamksqèø€ð—[‘[×+Ñ+Ø Ø!Ÿ:™: m°T·[±[×5LÑ5LÓMØ Ÿ*™* \°4·;±;×3IÑ3IÓJØ—Z‘Z ¨¯©×):Ñ):Ó;Ø!'§¡Ø# T§[¡[×%BÑ%Bó"ð!'§
¡
Ø" D§K¡K×$@Ñ$@ó!ðØ—z‘z )¨T¯[©[×-@Ñ-@ÓAñ"
ˆð �;‰;× $Ò $Ø&*§k¡k×&?Ñ&?ˆF�?Ñ #ð
Ø8�T—[‘[×%Ñ%×1Ñ1×8Ñ8ÑB¸6ÑBˆFÛ�Ø—}’}ØØŸ
™
 aÑ(×.Ñ.�ÚœW U¨I°tÕ<ØŸ-™-Ó'ñ  øô ò Ü �L‰LÐ;¸A¸3Ð?Ô @Ø ûð üs7‚D(GÄ+AF(Æ
F(ÆF(Æ'GÆ( GÆ1G
Ç
GÇGc óø—|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字典
2026-04-14 10:28:22 +08:00
z```jsonéú```éu'JSONè§£æž�失败,返回原始内容: T)Ú_json_decode_failedÚ raw_contentN) r7rIÚstripÚfindÚjsonÚloadsÚJSONDecodeErrorr-Úwarning)r0r2rCr;rIÚstartÚendrFs r&Úchat_with_jsonzDeepSeekClient.chat_with_json�s÷€ð�$—)‘)˜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
2026-04-14 10:28:22 +08:00
|fi|¤Ž}|j j«} d | vr;| jd «d z}
| jd
|
«} | |
| j«} | Sd
| vr9| jd
«dz}
| jd
|
«} | |
| j«} | S)u
便�方法:生�SQL
2026-04-14 10:28:22 +08:00
Args:
prompt: 用户问题
schema: Schema�述
dialect: SQL方言(默认 T-SQL / SQL Server)
**kwargs: �外�数
2026-04-14 10:28:22 +08:00
Returns:
SQL字符串
r)ÚSQL_GENERATOR_SYSTEMÚSQL_GENERATOR_USERÚsystem©ÚrolerIÚuser)r^Úquestionr_rrrçð?z```sqlérPrQ) Úconfig.promptsrarbÚformatÚ
setdefaultr7rIrTrU) r0r]r^r_rCrarbr2rErIrZr[s r&Ú generate_sqlzDeepSeekClient.generate_sqlµs€÷& LðÐ*>Ñ ?àØ-×4Ñ4Ø!Ø#Ø#ð5óñ
ð

ˆð ×ј-¨Ô-Ø×ј' 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
2026-04-14 10:28:22 +08:00
Args:
sql: SQL语�
schema: Schema�述
**kwargs: �外�数
Returns:
验�结果字典
r)ÚVALIDATOR_SYSTEMÚVALIDATOR_USERrcrdrf)rnr^rrrrh)rjrprqrkrlr\)r0rnr^rCrprqr2s r&Ú validate_sqlzDeepSeekClient.validate_sqlèso€÷" DðÐ*:Ñ ;àØ)×0Ñ0°SÀÐ0ÓHñ
ð
ˆð ×ј-¨Ô-Ø×ј' 3Ô'Ø"ˆt×"Ñ" 8Ñ6¨vÑ6Ð6r%i@)Úmax_schema_charsrgrsc óЗ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ÚNrcrdrfõ(æ— ))rgrnr^gš™™™™™Ù?é)rr)rjrurvrkr7rIrT) r0rgrnr^rsrCrurvÚ schema_snipr2ÚmsgÚtexts r&Úempty_result_user_feedbackz)DeepSeekClient.empty_result_user_feedbacks�€÷ \à’| Ð%6Ð&6Ð7ˆ àÐ*FÑ GàØ5×<Ñ<Ø%Ò0¨ØØ&ð=óñ
ð

ˆðˆd�i‰i˜ÐL¨c¸cÑLÀVÑLˆØ— ‘ Ò!˜r×(Ñ(Ó*ˆØˆ r%i )Ú
max_sql_charsr~c ó¼—ddlm}m}|xsdj«xsd}|xsdj«}t |«|kDr|d|dz
j «dz}d|d œd
|j
||¬ «d œg} |jd d
2026-04-14 10:28:22 +08:00
«|jdd«|jdd«|j| fi|¤Ž}
|
jxsdj«S)uw
库探针为 1(执行�功且至少一行数�)时,生���用户的简短交付说明。
2026-04-14 10:28:22 +08:00
r)Ú!SQL_PROBE_SUCCESS_DELIVERY_SYSTEMÚSQL_PROBE_SUCCESS_DELIVERY_USERrwrxNéu
-- …(已截断)rcrdrf)rgrnrgš™™™™™É?rrhri@)
rjr€r�rTÚlenÚrstriprkrlr7rI) r0rgrnr~rCr€r�ÚqÚsr2r{s r&Ú"sql_probe_success_delivery_messagez1DeepSeekClient.sql_probe_success_delivery_message%sò€÷
ð
Š^˜× "Ñ "Ó $Ò /¨ˆØ
ŠY�B× Ñ Ó ˆÜ ˆq‹6�MÒ !ØÐ&�M BÑ&Ð'×.Ñ.Ó0Ð3HÑHˆAðÐ*KÑ LàØ:×AÑAØØðBóñ
ð 
2026-04-14 10:28:22 +08:00
ˆð ×ј-¨Ô-Ø×ј' 3Ô'Ø×ј,¨Ô,؈d�i‰i˜Ñ+ FÑ+ˆØ— ‘ Ò!˜r×(Ñ(Ó*Ð*r%Ú
table_listc ó¶—ddlm}m}d|dœd|j||¬«dœg}|j dd«|j d d
2026-04-14 10:28:22 +08:00
«|j
|fi|¤ŽS) uÿ
便�方法:选择相关表
Args:
question: 用户问题
table_list: �用表列表字符串
**kwargs: �外�数
2026-04-14 10:28:22 +08:00
Returns:
包�relevant_tables和reasoning的字典
2026-04-14 10:28:22 +08:00
r)ÚSCHEMA_LINKER_SYSTEMÚSCHEMA_LINKER_USERrcrdrf)rgrˆrrrrh)rjrŠr‹rkrlr\)r0rgrˆrCrŠr‹r2s r&Ú
select_tableszDeepSeekClient.select_tablesJsu€÷" LðÐ*>Ñ ?àØ-×4Ñ4Ø%Ø)ð5óñ
ð 
ˆð ×ј-¨Ô-Ø×ј' 3Ô'Ø"ˆt×"Ñ" 8Ñ6¨vÑ6Ð6r%cóF—ddlm}m}|xsdj«}|syd|dœd|j |¬«dœg}|j |dd d
¬ «}|j xsdj«}|r!|j«dj«nd}|jd «S)
u³
将中文/英文问�归一为**一�**标准中文(temperature=0),使�一语义的中英表述
走�一套��检索与 SQL 生�路径。
r)Ú#CANONICALIZE_NL_FOR_TEXT2SQL_SYSTEMÚ!CANONICALIZE_NL_FOR_TEXT2SQL_USERrwrcrdrf)rgrrhry)rrru「ã€�"'“â€�)rjrŽr�rTrkr7rIÚ
splitlines) r0rgrŽr�r…r2r{r|Úlines r&Ú"normalize_nl_question_for_text2sqlz1DeepSeekClient.normalize_nl_question_for_text2sqlms¦€÷

2026-04-14 10:28:22 +08:00
ð
Š^˜× "Ñ "Ó $ˆÙØàÐ*MÑ NØÐ(I×(PÑ(PÐZ[Ð(PÓ(\Ñ ]ð