Ë
    uPêjº/  ã                   óÂ   — d dl Z d dlmZ d dlmZ d dlmZmZ d dlZd dl	m
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mZ d d
lmZ ddlmZmZ ddlmZ  G d„ de«      Zy)é    N)ÚCallable)ÚFinal)ÚAsyncOpenAIÚOpenAI)ÚLogging)ÚCustomStreamWrapper)ÚBaseLLM)ÚAllMessageValuesÚOpenAITextCompletionUserMessage)ÚLlmProvidersÚModelResponseÚTextCompletionResponse)ÚProviderConfigManageré   )ÚBaseOpenAILLMÚOpenAIErroré   )ÚOpenAITextCompletionConfigc                   óV  ‡ — e Zd Z e«       Zdˆ fd„Zd„ Z	 	 	 	 	 	 	 	 ddededede	e
   e	e   z  ded	ed
edededz  dedz  dededz  dedz  fd„Z	 	 ddedededededededededz  fd„Z	 	 	 	 dd
ededededededededz  fd„Z	 	 	 dd
edededededededededz  fd„Zˆ xZS )ÚOpenAITextCompletionNc                 ó"   •— t         ‰| �  «        y )N)ÚsuperÚ__init__)ÚselfÚ	__class__s    €úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openai/completion/handler.pyr   zOpenAITextCompletion.__init__   s   ø€ Ü‰ÑÕó    c                 ó"   — ddi}|rd|› �|d<   |S )Nzcontent-typezapplication/jsonzBearer ÚAuthorization© )r   Úapi_keyÚheaderss      r   Úvalidate_environmentz)OpenAITextCompletion.validate_environment   s*   € àÐ.ð
ˆñ Ø)0°°	Ð':ˆG�OÑ$Øˆr   Úmodel_responser!   ÚmodelÚmessagesÚtimeoutÚcustom_llm_providerÚlogging_objÚoptional_paramsÚprint_verboseÚapi_baseÚacompletionÚorganizationr"   c                 ó
  — 	 |ri |¥d|i¥}|€| j                  |¬«      }|�|€t        dd¬«      ‚t        j                  |t	        |«      ¬«      }|j                  ||||¬«      }|j                  dd	«      }|j                  ||||
|d
œ¬«       |du rJ|j                  dd«      r| j                  ||
|||||||||¬«      S | j                  |
||||||||||¬«      S |j                  dd«      r| j                  ||
|||||||||¬«      S |€ t        ||
t        j                  |||¬«      }n|} |j                  j                   j"                  di |¤Ž}|j%                  «       }|j'                  «       }|j)                  ||||
dœ¬«       t+        di |¤ŽS # t,        $ ra}t/        |dd«      }t/        |dd «      }t/        |dt1        |«      «      }t/        |dd «      }|€|rt/        |dd «      }t        |||¬«      ‚d }~ww xY w)NÚextra_headers)r!   i¦  zMissing model or messages)Ústatus_codeÚmessage)r%   Úprovider)r%   r&   r*   r"   Úmax_retriesr   )r"   r,   Úcomplete_input_dict)Úinputr!   Úadditional_argsTÚstreamF)r)   r,   r!   Údatar"   r$   r%   r'   r4   Úclientr.   )r,   r9   r"   r$   r!   r)   r%   r'   r4   r.   r:   ©r!   Úbase_urlÚhttp_clientr'   r4   r.   ©r"   r,   ©r!   Úoriginal_responser7   r1   éô  r"   ÚtextÚresponse©r1   r2   r"   r    )r#   r   r   Ú#get_provider_text_completion_configr   Ú!transform_text_completion_requestÚpopÚpre_callÚgetÚasync_streamingr-   Ú	streamingr   ÚlitellmÚclient_sessionÚcompletionsÚwith_raw_responseÚcreateÚparseÚ
model_dumpÚ	post_callr   Ú	ExceptionÚgetattrÚstr)r   r$   r!   r%   r&   r'   r(   r)   r*   r+   r,   r-   Úlitellm_paramsÚ	logger_fnr:   r.   r"   Úprovider_configr9   r4   Úopenai_clientÚraw_responserC   Úresponse_jsonÚer1   Úerror_headersÚ
error_textÚerror_responses                                r   Ú
completionzOpenAITextCompletion.completion!   s·  € ð&o	bÙØ"O _Ð"O°oÀwÑ"O�ØˆØ×3Ñ3¸GÐ3ÓD�Øˆ} Ð 0Ü!¨cÐ;VÔWÐWô &;×%^Ñ%^ØÜ%Ð&9Ó:ô&ˆOð
 *×KÑKØØ!Ø /Øð	 Ló ˆDð "&§¡¨-¸Ó!;ˆKà× Ñ ØØà&Ø (Ø+/ñ!ð !ô ð ˜dÑ"Ø"×&Ñ& x°Ô7Ø×/Ñ/Ø$/Ø!)Ø 'Ø!Ø 'Ø'5Ø#Ø 'Ø$/Ø%Ø%1ð 0ó ð ð  ×+Ñ+Ø!)Ø!Ø 'Ø'5Ø 'Ø$/Ø#Ø 'Ø$/Ø%1Ø%ð ,ó ð ð !×$Ñ$ X¨uÔ5Ø—~‘~Ø +Ø%Ø#ØØ#Ø#1ØØ#Ø +Ø!Ø!-ð &ó ð ð �>Ü$*Ø 'Ø!)Ü$+×$:Ñ$:Ø 'Ø$/Ø%1ô%‘Mð %+�Mà&X m×&?Ñ&?×&QÑ&Q×&XÑ&XÑ&`Ð[_Ñ&`�Ø".×"4Ñ"4Ó"6�Ø'/×':Ñ':Ó'<�ð ×%Ñ%Ø#Ø&3à#*Ø$,ñ%ð &ô ô .Ñ>°Ñ>Ð>øÜò 	bÜ!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ '¨¨6´3°q³6Ó :ˆJÜ$+¨A¨z¸4Ó$@ˆNØÐ$©Ü '¨¸	À4Ó H�Ü¨+¸zÐS`ÔaÐaûð	bús,   ‚B?F ÃF Ã-F ÄBF Æ	HÆ!AG=Ç=Hr9   r4   c              ƒ   óf  K  — 	 |€$t        ||t        j                  «       ||	|
¬«      }n|} |j                  j                  j
                  d
i |¤Žƒ d {  –—† }|j                  «       }|j                  «       }|j                  ||||dœ¬«       t        d
i |¤Ž}t        j                  |«      |j                  _        |S 7 Œl# t        $ ra}t        |dd«      }t        |dd «      }t        |dt!        |«      «      }t        |dd «      }|€|rt        |dd «      }t#        |||¬	«      ‚d }~ww xY w­w)Nr;   r>   r?   r1   rA   r"   rB   rC   rD   r    )r   r   Ú_get_async_http_clientrN   rO   rP   rQ   rR   rS   r   ÚjsonÚdumpsÚ_hidden_paramsr@   rT   rU   rV   r   )r   r)   r,   r9   r"   r$   r!   r%   r'   r4   r.   r:   Úopenai_aclientr[   rC   r\   Úresponse_objr]   r1   r^   r_   r`   s                         r   r-   z OpenAITextCompletion.acompletion¥   sK  è ø€ ð%	bØˆ~Ü!,Ø#Ø%Ü -× DÑ DÓ FØ#Ø +Ø!-ô"‘ð "(�à([¨×(BÑ(B×(TÑ(T×([Ñ([Ñ(cÐ^bÑ(c×"cˆLØ*×0Ñ0Ó2ˆHØ#+×#6Ñ#6Ó#8ˆMð ×!Ñ!ØØ"*à&Ø (ñ!ð "ô ô #9Ñ"I¸=Ñ"IˆLÜ<@¿J¹JÀ}Ó<UˆL×'Ñ'Ô9ØÐð! #dùô" ò 	bÜ!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ '¨¨6´3°q³6Ó :ˆJÜ$+¨A¨z¸4Ó$@ˆNØÐ$©Ü '¨¸	À4Ó H�Ü¨+¸zÐS`ÔaÐaûð	büs=   ‚D1„AC ÁCÁA+C ÃD1ÃC Ã	D.ÃAD)Ä)D.Ä.D1c           
   #   óÎ  K  — |
€ t        ||t        j                  ||	|¬«      }n|
}	  |j                  j                  j
                  di |¤Ž}|j                  «       }t        ||d||j                  d	d «      ¬
«      }	 |D ]  }|–— Œ y # t        $ ra}t        |dd«      }t        |dd «      }t        |dt        |«      «      }t        |dd «      }|€|rt        |dd «      }t        |||¬«      ‚d }~ww xY w# t        $ ra}t        |dd«      }t        |dd «      }t        |dt        |«      «      }t        |dd «      }|€|rt        |dd «      }t        |||¬«      ‚d }~ww xY w­w)Nr;   r1   rA   r"   rB   rC   rD   útext-completion-openaiÚstream_options©Úcompletion_streamr%   r(   r)   rk   r    )r   rL   rM   rN   rO   rP   rQ   rT   rU   rV   r   r   rI   )r   r)   r!   r9   r"   r$   r%   r'   r,   r4   r:   r.   rZ   r[   rC   r]   r1   r^   r_   r`   ÚstreamwrapperÚchunks                         r   rK   zOpenAITextCompletion.streamingÚ   s—  è ø€ ð ˆ>Ü"ØØ!Ü#×2Ñ2ØØ'Ø)ô‰Mð #ˆMð
	bØ"T -×";Ñ";×"MÑ"M×"TÑ"TÑ"\ÐW[Ñ"\ˆLØ*×0Ñ0Ó2ˆHô  3Ø&ØØ 8Ø#ØŸ8™8Ð$4°dÓ;ô 
ˆð
	bØ&ò �Ø“ñøô# ò 	bÜ! ! ]°CÓ8ˆKÜ# A y°$Ó7ˆMÜ   F¬C°«FÓ3ˆJÜ$ Q¨
°DÓ9ˆNØÐ$©Ü '¨¸	À4Ó H�Ü¨+¸zÐS`ÔaÐaûð	bûô& ò 	bÜ! ! ]°CÓ8ˆKÜ# A y°$Ó7ˆMÜ   F¬C°«FÓ3ˆJÜ$ Q¨
°DÓ9ˆNØÐ$©Ü '¨¸	À4Ó H�Ü¨+¸zÐS`ÔaÐaûð	büsN   ‚%E%¨6B Á E%Á?C8 Â
E%Â	C5ÂAC0Ã0C5Ã5E%Ã8	E"ÄAEÅE"Å"E%c           
     ó  K  — |
€ t        ||	t        j                  |||¬«      }n|
} |j                  j                  j
                  di |¤Žƒ d {  –—† }|j                  «       }t        ||d||j                  dd «      ¬«      }	 |2 3 d {  –—† }|­–— Œ7 ŒF7 Œ6 y # t        $ ra}t        |dd«      }t        |dd «      }t        |dt        |«      «      }t        |d	d «      }|€|rt        |dd «      }t        |||¬
«      ‚d }~ww xY w­w)Nr;   rj   rk   rl   r1   rA   r"   rB   rC   rD   r    )r   rL   Úaclient_sessionrN   rO   rP   rQ   r   rI   rT   rU   rV   r   )r   r)   r!   r9   r"   r$   r%   r'   r4   r,   r:   r.   rZ   r[   rC   rn   Útransformed_chunkr]   r1   r^   r_   r`   s                         r   rJ   z$OpenAITextCompletion.async_streaming  s,  è ø€ ð ˆ>Ü'ØØ!Ü#×3Ñ3ØØ'Ø)ô‰Mð #ˆMà$V M×$=Ñ$=×$OÑ$O×$VÑ$VÑ$^ÐY]Ñ$^×^ˆØ&×,Ñ,Ó.ˆÜ2Ø&ØØ 8Ø#ØŸ8™8Ð$4°dÓ;ô 
ˆð
	bØ+8÷ (ð (Ð'Ø'Ô'ð _øð(ø©=øäò 	bÜ!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ '¨¨6´3°q³6Ó :ˆJÜ$+¨A¨z¸4Ó$@ˆNØÐ$©Ü '¨¸	À4Ó H�Ü¨+¸zÐS`ÔaÐaûð	büsa   ‚AD
ÁBÁ4D
ÂB ÂBÂBÂBÂB ÂD
ÂBÂB ÂD
Â	DÂ&ADÄDÄD
)ÚreturnN)NNFNNNNN)NN)NNNN)NNN)Ú__name__Ú
__module__Ú__qualname__r   Ú$openai_text_completion_global_configr   r#   r   rV   Úlistr
   r   ÚfloatÚLiteLLMLoggingObjÚdictr   Úboolra   Úintr-   rK   rJ   Ú__classcell__)r   s   @r   r   r      sN  ø„ Ù+EÓ+GÐ(õòð$ *.Ø#Ø!ØØØØ#'Ø#ñ#Bbà%ðBbð ðBbð ð	Bbð
 Ð'Ñ(¨4Ð0OÑ+PÑPðBbð ðBbð !ðBbð 'ðBbð ðBbð   $‘ðBbð ˜‘*ðBbð ðBbð  ˜D‘jð!Bbð" ˜‘ó#Bbð^ $(Øñ3bð ð3bð ð	3bð
 ð3bð &ð3bð ð3bð ð3bð ð3bð ð3bð ˜D‘jó3bð|  $ØØØñ7bà&ð7bð ð7bð ð	7bð
 ð7bð &ð7bð ð7bð ð7bð ˜‘*ó7bðF  $ØØñ.bà&ð.bð ð.bð ð	.bð
 ð.bð &ð.bð ð.bð ð.bð ð.bð ˜‘*÷.br   r   )rd   Úcollections.abcr   Útypingr   Úopenair   r   rL   Ú*litellm.litellm_core_utils.litellm_loggingr   rz   Ú,litellm.litellm_core_utils.streaming_handlerr   Úlitellm.llms.baser	   Úlitellm.types.llms.openair
   r   Úlitellm.types.utilsr   r   r   Úlitellm.utilsr   Úcommon_utilsr   r   Útransformationr   r   r    r   r   ú<module>rŠ      s?   ðÛ Ý $Ý ç &ã Ý SÝ LÝ %ß Wß SÑ SÝ /ç 5Ý 6ônb˜7õ nbr   