Ë
    uPêjU6  ã                   óÞ   — d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlZd dl	m
Z d dlmZ d dlmZmZ d dlmZmZ d d	lmZ d d
lmZmZ  G d„ de«      Zdedededededefd„Z G d„ d«      Zy)é    N)ÚCallable)Úpartial)ÚFinal)ÚLogging)Útrack_llm_api_timing)Úcustom_promptÚprompt_factory)ÚAsyncHTTPHandlerÚget_async_httpx_client)ÚTextChoices)ÚCustomStreamWrapperÚTextCompletionResponsec                   ób   ‡ — e Zd Z	 	 ddej                  dz  dej
                  dz  fˆ fd„Zˆ xZS )ÚTextCompletionCodestralErrorNÚrequestÚresponsec                 ó   •— || _         || _        |�|| _        nt        j                  dd¬«      | _        |�|| _        n&t        j                  || j                  ¬«      | _        t        ‰| �!  | j                  «       y )NÚPOSTz8https://docs.codestral.com/user-guide/inference/rest_api)ÚmethodÚurl)Ústatus_coder   )	r   Úmessager   ÚhttpxÚRequestr   ÚResponseÚsuperÚ__init__)Úselfr   r   r   r   Ú	__class__s        €ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/codestral/completion/handler.pyr   z%TextCompletionCodestralError.__init__   sm   ø€ ð 'ˆÔØˆŒØÐØ"ˆD�Lä Ÿ=™=ØØNôˆDŒLð ÐØ$ˆD�Mä!ŸN™N°{ÈDÏLÉLÔYˆDŒMÜ‰Ñ˜Ÿ™Õ&ó    )NN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Ú__classcell__©r   s   @r    r   r      s;   ø„ ð
 )-Ø*.ñ'ð —‘ Ñ%ð	'ð
 —.‘. 4Ñ'÷'ñ 'r!   r   ÚclientÚapi_baseÚheadersÚdataÚmodelÚmessagesc              ƒ   óú   K  — | j                  |||d¬«      ƒ d {  –—† }|j                  dk7  r!t        |j                  |j                  ¬«      ‚|j	                  «       }|j                  |d|d|i¬«       |S 7 Œ]­w)NT©r)   r*   ÚstreaméÈ   ©r   r   Ú Úcomplete_input_dict©ÚinputÚapi_keyÚoriginal_responseÚadditional_args)Úpostr   r   ÚtextÚaiter_linesÚ	post_call)	r'   r(   r)   r*   r+   r,   Úlogging_objr   Úcompletion_streams	            r    Ú	make_callr?   2   s‹   è ø€ ð #ŸK™K¨¸'ÈÐUY˜KÓZ×Z€Hà×Ñ˜sÒ"Ü*°x×7KÑ7KÐU]×UbÑUbÔcÐcà'×3Ñ3Ó5Ðà×ÑØØØ+Ø.°Ð5ð	 ô ð Ðð [ús   ‚A;›A9œAA;c                   ó¾  ‡ — e Zd Zdˆ fd„Zdedz  dedefd„Zdefd„Zd	ed
ej                  de
dededededeez  dede
fd„Zdddi fd	edededede
dededededeej"                  z  dede
ez  fd„Z e«       ddi fd	ededede
dedededeej"                  z  de
fd„«       Z e«       dddi fd	ededede
dedededeej"                  z  defd„«       Zd„ Zˆ xZS )ÚCodestralTextCompletionÚreturnNc                 ó"   •— t         ‰| �  «        y ©N)r   r   )r   r   s    €r    r   z CodestralTextCompletion.__init__M   s   ø€ Ü‰ÑÕr!   r6   Úuser_headersc                 ó`   — |€t        d«      ‚dd|› �dœ}|�t        |t        «      ri |¥|¥}|S )NzVMissing CODESTRAL_API_Key - Please add CODESTRAL_API_Key to your environment variableszapplication/jsonzBearer )zcontent-typeÚAuthorization)Ú
ValueErrorÚ
isinstanceÚdict)r   r6   rE   r)   s       r    Ú_validate_environmentz-CodestralTextCompletion._validate_environmentP   sN   € ð
 ˆ?ÜÐuÓvÐvà.Ø& w iÐ0ñ
ˆð Ð#¬
°<ÄÔ(FØ1˜Ð1 LÐ1ˆGØˆr!   Úgenerated_textc                 óî   — g d¢}|D ]k  }|j                  «       j                  |«      r|j                  |dd«      }|j                  |«      sŒG|ddd…   j                  |ddd…   dd«      ddd…   }Œm |S )zÜ
        Parse the output text to remove any special characters. In our current approach we just check for ChatML tokens.

        Initial issue that prompted this - https://github.com/BerriAI/litellm/issues/763
        )z<|assistant|>z
<|system|>z<|user|>z<s>z</s>r2   é   Néÿÿÿÿ)ÚstripÚ
startswithÚreplaceÚendswith)r   rL   Úchat_template_tokensÚtokens       r    Úoutput_parserz%CodestralTextCompletion.output_parser_   s�   € ò'
Ðð *ò 	XˆEØ×#Ñ#Ó%×0Ñ0°Ô7Ø!/×!7Ñ!7¸¸rÀ1Ó!E�Ø×&Ñ& uÕ-Ø!/±°"°Ñ!5×!=Ñ!=¸eÁDÀbÀD¹kÈ2ÈqÓ!QÑRVÐTVÐRVÑ!W‘ð		Xð
 Ðr!   r+   r   Úmodel_responser/   r=   Úoptional_paramsr*   r,   c                 óf  — |j                  |	||j                  d|i¬«        |
d|j                  › �«       |j                  dk7  r*t        t	        |j                  «      |j                  ¬«      ‚	 |j                  «       }|j                  dg «      }g }|D ]Œ  }d }d}d }d }|j                  d	i «      }t        j                  j                  |j                  d
«      |j                  d«      |j                  d«      |j                  d«      ¬«      }|j                  |«       ŒŽ t        j                  |j                  d«      ||j                  d«      |j                  d«      |j                  d«      d|j                  d«      ¬«      }|S # t        $ r t        |j                  d¬«      ‚w xY w)Nr3   r4   z#codestral api: raw model_response: r0   )r   r   i¦  Úchoicesr   r   Úfinish_reasonÚindexÚcontentÚlogprobs)r[   r\   r:   r^   ÚidÚcreatedr+   ÚusageFÚobject)r_   rZ   r`   r+   ra   r/   rb   )r<   r:   r   r   ÚstrÚjsonÚ	ExceptionÚgetÚlitellmÚutilsr   Úappendr   )r   r+   r   rW   r/   r=   rX   r6   r*   r,   Úprint_verboseÚencodingÚcompletion_responseÚ_original_choicesÚ_choicesÚchoiceÚ_finish_reasonÚ_indexÚ_textÚ	_logprobsÚ_choice_messageÚ_choiceÚ	_responses                          r    Ú process_text_completion_responsez8CodestralTextCompletion.process_text_completion_responses   s¸  € ð 	×ÑØØØ&Ÿm™mØ2°DÐ9ð	 	ô 	
ñ 	Ð;¸H¿M¹M¸?ÐKÔLà×Ñ 3Ò&Ü.Ü˜HŸM™MÓ*Ø$×0Ñ0ôð ð	WØ)1¯©«Ðð $7×#:Ñ#:¸9ÀbÓ#IÐØ-/ˆØ'ò 	%ˆFð "ˆNØˆFØˆEØˆIà$Ÿj™j¨°BÓ7ˆOÜ—m‘m×/Ñ/Ø$Ÿj™j¨Ó9Ø—j‘j Ó)Ø$×(Ñ(¨Ó3ØŸ™ JÓ/ð	 0ó ˆGð �O‰O˜GÕ$ð3	%ô6 #×9Ñ9Ø"×&Ñ& tÓ,ØØ'×+Ñ+¨IÓ6Ø%×)Ñ)¨'Ó2Ø%×)Ñ)¨'Ó2ØØ&×*Ñ*¨8Ó4ô
ˆ	ð ÐøôS ò 	WÜ.°x·}±}ÐRUÔVÐVð	Wús   Á1F Æ!F0r(   Úcustom_prompt_dictrj   Útimeoutr)   c                 ó¨  — | j                  ||«      }|
j                  dd «      du r|}n|xs d}||v r||   }t        |d   |d   |d   |¬«      }nt        ||¬«      }t        j
                  j                  «       }|j                  «       D ]  \  }}||
vsŒ||
|<   Œ |
j                  d	d
«      }||dœ|
¥}|}|	j                  ||||||dœ¬«       |du rC|du r| j                  |||||||||	|
||||¬«      S | j                  |||||||||	|
d
||||¬«      S |du rUt        j                  j                  ||t        j                  |«      |¬«      }t        |j!                  «       |d|	¬«      }|S t        j                  j                  ||t        j                  |«      ¬«      }| j#                  ||||
j%                  d	d
«      |	|
|||||¬«      S )NÚcustom_endpointTz/https://codestral.mistral.ai/v1/fim/completionsÚrolesÚinitial_prompt_valueÚfinal_prompt_value)Ú	role_dictr}   r~   r,   )r+   r,   r/   F)r+   Úprompt)r3   r)   r(   Úacompletion)r5   r6   r8   )r+   r,   r*   r(   rW   rj   rk   r6   r=   rX   Úlitellm_paramsÚ	logger_fnr)   ry   )r+   r,   r*   r(   rW   rj   rk   r6   r=   rX   r/   r‚   rƒ   r)   ry   r.   Ú	codestral)Úcustom_llm_providerr=   )r   r)   r*   )r+   r   rW   r/   r=   rX   r6   r*   r,   rj   rk   )rK   Úpopr   r	   rg   ÚCodestralTextCompletionConfigÚ
get_configÚitemsÚpre_callÚasync_streamingÚasync_completionÚmodule_level_clientr9   rd   Údumpsr   Ú
iter_linesrw   rf   )r   r+   r,   r(   rx   rW   rj   rk   r6   r=   rX   ry   r�   r‚   rƒ   r)   Úcompletion_urlÚmodel_prompt_detailsr€   ÚconfigÚkÚvr/   r*   Ú
input_textr   rv   s                              r    Ú
completionz"CodestralTextCompletion.completion¼   s—  € ð$ ×,Ñ,¨W°gÓ>ˆà×ÑÐ0°$Ó7¸4Ñ?Ø%‰Nà%ÒZÐ)ZˆNàÐ&Ñ&à*<¸UÑ*CÐ Ü"Ø.¨wÑ7Ø%9Ð:PÑ%QØ#7Ð8LÑ#MØ!ô	‰Fô $¨%¸(ÔCˆFô  ×=Ñ=×HÑHÓJˆØ—L‘L“Nò 	'‰DˆAˆqà˜Ò(à%&� Ò"ð		'ð (×+Ñ+¨H°eÓ<ˆð Øñ
ð ð
ˆð
 #ˆ
à×ÑØØà'+Ø"Ø*Ø*ñ	ð 	ô 		
ð ˜$Ñà˜‰~Ø×+Ñ+ØØ%ØØ+Ø#1Ø"/Ø%Ø#Ø +Ø$3Ø#1Ø'Ø#Ø#ð ,ó ð ð$ ×,Ñ,ØØ%ØØ+Ø#1Ø"/Ø%Ø#Ø +Ø$3Ø Ø#1Ø'Ø#Ø#ð -ó ð ð& �T‰>Ü×2Ñ2×7Ñ7ØØÜ—Z‘Z Ó%Øð	 8ó ˆHô  3Ø×#Ñ#Ó%ØØ$/Ø'ô	 ˆIð Ðô ×2Ñ2×7Ñ7Ø"ØÜ—Z‘Z Ó%ð 8ó ˆHð
 ×4Ñ4ØØØ)Ø"×&Ñ& x°Ó7Ø#Ø+ØØØØ'Øð 5ó 
ð 	
r!   c              ƒ   óÎ  K  — t        t        j                  j                  d|i¬«      }	 |j	                  ||t        j                  |
«      ¬«      ƒ d {  –—† }| j                  ||||	|||
||||¬«      S 7 Œ # t        j                  $ r=}t        |j                  j                  d|j                  j                  › �¬«      ‚d }~wt        $ r}t        d|› ¬«      ‚d }~ww xY w­w)Nry   )Úllm_providerÚparams)r)   r*   zHTTPStatusError - r1   iô  )r+   r   rW   r/   r=   r6   r*   r,   rj   rX   rk   )r   rg   ÚLlmProvidersÚTEXT_COMPLETION_CODESTRALr9   rd   rŽ   r   ÚHTTPStatusErrorr   r   r   r:   re   rw   )r   r+   r,   r(   rW   rj   rk   r6   r=   r/   r*   rX   ry   r‚   rƒ   r)   Úasync_handlerr   Úes                      r    rŒ   z(CodestralTextCompletion.async_completionH  s÷   è ø€ ô&  6Ü ×-Ñ-×GÑGØ˜wÐ'ô 
ˆð
	Ø$1×$6Ñ$6°xÈÔW[×WaÑWaÐbfÓWgÐ$6Ó$h×hˆHð ×4Ñ4ØØØ)ØØ#ØØØØ'Ø+Øð 5ó 
ð 	
ð iùÜ×$Ñ$ò 	Ü.ØŸJ™J×2Ñ2Ø,¨Q¯Z©Z¯_©_Ð,=Ð>ôð ûô ò 	Ü.Ø¨A¨3ôð ûð	üsF   ‚(C%«*A8 ÁA6ÁA8 ÁC%Á6A8 Á8C"Â8CÃC"ÃCÃC"Ã"C%c              ƒ   ó†   K  — d|	d<   t        d t        t        ||t        j                  |	«      |||¬«      |d|¬«      }|S ­w)NTr/   )r(   r)   r*   r+   r,   r=   ztext-completion-codestral)r>   r?   r+   r…   r=   )r   r   r?   rd   rŽ   )r   r+   r,   r(   rW   rj   rk   r6   r=   r*   ry   rX   r‚   rƒ   r)   Ústreamwrappers                   r    r‹   z'CodestralTextCompletion.async_streamingx  sW   è ø€ ð$ ˆˆX‰ä2Ø"ÜÜØ!ØÜ—Z‘Z Ó%ØØ!Ø'ôð Ø ;Ø#ô 
ˆð Ðùs   ‚?Ac                  ó   — y rD   © )r   ÚargsÚkwargss      r    Ú	embeddingz!CodestralTextCompletion.embedding�  s   € Ør!   )rB   N)r"   r#   r$   r   rc   rJ   rK   rV   r   r   r   ÚboolÚLiteLLMLoggingÚlistrw   r   ÚfloatÚTimeoutr   r–   r   rŒ   r‹   r¥   r%   r&   s   @r    rA   rA   L   sj  ø„ õðà�t‘ðð ðð 
ó	ð¨Có ð(GàðGð —.‘.ðGð /ð	Gð
 ðGð $ðGð ðGð ðGð �S‰jðGð ðGð 
 óGðl ØØØñ!J
àðJ
ð ðJ
ð ð	J
ð
 !ðJ
ð /ðJ
ð  ðJ
ð ðJ
ð $ðJ
ð ðJ
ð ˜Ÿ™Ñ&ðJ
ð  ð!J
ð" 
 Ð"5Ñ	5ó#J
ñX Óð ØØñ!-
àð-
ð ð-
ð ð	-
ð
 /ð-
ð  ð-
ð ð-
ð ð-
ð ˜Ÿ™Ñ&ð-
ð" 
 ò#-
ó ð-
ñ^ Óð ØØØñ"àð"ð ð"ð ð	"ð
 /ð"ð  ð"ð $ð"ð ð"ð ˜Ÿ™Ñ&ð"ð  
ò!"ó ð"öHr!   rA   ) rd   Úcollections.abcr   Ú	functoolsr   Útypingr   r   rg   Ú*litellm.litellm_core_utils.litellm_loggingr   r§   Ú(litellm.litellm_core_utils.logging_utilsr   Ú3litellm.litellm_core_utils.prompt_templates.factoryr   r	   Ú&litellm.llms.custom_httpx.http_handlerr
   r   Úlitellm.types.utilsr   Úlitellm.utilsr   r   re   r   rc   rJ   r¨   r?   rA   r¢   r!   r    ú<module>r´      s†   ðó Ý $Ý Ý ã ã Ý PÝ I÷÷õ ,ß Eô' 9ô 'ð0Øðàðð ðð ð	ð
 ðð ó÷4Rò Rr!   