
    ^hn-                         S SK r S SKJrJrJrJr  S SKJrJr  S SK	r	S SK
Jr  S SKJr  S SKJr  S SKJrJr  S SKJrJr  S	S
KJr  SSKJr   " S S\5      rg)    N)CallableListOptionalUnion)AsyncOpenAIOpenAI)Logging)CustomStreamWrapper)BaseLLM)AllMessageValuesOpenAITextCompletionUserMessage)ModelResponseTextCompletionResponse   )OpenAIError   )OpenAITextCompletionConfigc                   n  ^  \ rS rSr\" 5       rSU 4S jjrS r        SS\S\	S\	S\
\\   \\   4   S\S	\S
\S\\   S\\	   S\S\\	   S\\   4S jjr  SS\	S\S\S\S\	S\	S\	S\S\S\\	   4S jjr    SS\	S\S\S\S\	S\S\\	   4S jjr   SS\	S\S\S\S\	S\S\S\\	   4S jjrSrU =r$ )OpenAITextCompletion   c                 "   > [         TU ]  5         g )N)super__init__)self	__class__s    `/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/openai/completion/handler.pyr   OpenAITextCompletion.__init__   s        c                 ,    SS0nU(       a  SU 3US'   U$ )Nzcontent-typezapplication/jsonzBearer Authorization )r   api_keyheaderss      r   validate_environment)OpenAITextCompletion.validate_environment   s*    .
 )0	':GO$r   model_responser"   modelmessagestimeoutlogging_objoptional_paramsprint_verboseapi_baseacompletionorganizationr#   c                     Uc  U R                  US9nUb  Uc
  [        SSS9eU R                  R                  U5      nUUS.UEnUR	                  SS5      nUR                  UUUU	US.S	9  U
S
L aF  UR                  SS5      (       a  U R                  UU	UUUUUUUUUS9$ U R                  U	UXUX&X5UXS9$ UR                  SS5      (       a  U R                  UU	UUUUUUUUUS9$ Uc  [        UU	[        R                  UUUS9nOUnUR                  R                  R                  " S0 UD6nUR!                  5       nUR#                  5       nUR%                  UUUUU	S.S9  ['        S0 UD6$ ! [(         ad  n[+        USS5      n[+        USS 5      n[+        US[-        U5      5      n[+        USS 5      nUc  U(       a  [+        USS 5      n[        UUUS9eS nAff = f)N)r"   i  zMissing model or messages)status_codemessage)r'   promptmax_retriesr   )r#   r-   complete_input_dict)inputr"   additional_argsTstreamF)r*   r-   r"   datar#   r&   r'   r)   r4   clientr/   )r-   r9   r#   r&   r3   r"   r*   r'   r)   r4   r/   r:   r"   base_urlhttp_clientr)   r4   r/   r#   r-   r6   r"   original_responser7   r1     r#   textresponser1   r2   r#   r!   )r$   r   $openai_text_completion_global_config_transform_prompt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.   litellm_params	logger_fnr:   r/   r#   r3   r9   r4   openai_clientraw_responserC   response_jsoner1   error_headers
error_texterror_responses                               r   
completionOpenAITextCompletion.completion   s   $^	33G3D} 0!c;VWW >>PPF #fHHD((=!4K  & (+/! !  d""&&x77//$/!) '! ''5# '$/%%1 0    ++XDRY  BH  RY  z  ^i  xD+  T  T $$Xu55~~ +%###1# +!!- &   >$* '!)$+$:$: '$/%1%M %+M,88JJQQYTXY'--/ ( 3 3 5 %% #&3#*$,%	 &  .>>> 		!!]C8K#Ay$7M FCF3J$Q
D9N$ '	4 H'] 		s,   BE0 "E0 8/E0 (BE0 0
G:AGGr9   r3   r4   c           	      `  #     Uc  [        UU[        R                  U	U
US9nOUnUR                  R                  R
                  " S
0 UD6I S h  vN nUR                  5       nUR                  5       nUR                  UUUUUS.S9  [        S
0 UD6n[        R                  " U5      UR                  l        U$  Nk! [         ad  n[        USS5      n[        USS 5      n[        US[!        U5      5      n[        USS 5      nUc  U(       a  [        USS 5      n[#        UUUS	9eS nAff = f7f)Nr;   r>   r?   r1   rA   r#   rB   rC   rD   r!   )r   rL   aclient_sessionrN   rO   rP   rQ   rR   rS   r   jsondumps_hidden_paramsr@   rT   rU   rV   r   )r   r*   r-   r9   r#   r&   r3   r"   r'   r)   r4   r/   r:   openai_aclientrZ   rC   r[   response_objr\   r1   r]   r^   r_   s                          r   r.    OpenAITextCompletion.acompletion   sP    *	~!,#% ' 7 7# +!-" "(!/!;!;!M!M!T!T "" L $))+H$//1M !!"*& (!	 "  2BMBL<@JJ}<UL''9'(  		!!]C8K#Ay$7M FCF3J$Q
D9N$ '	4 H'] 		s=   D.AB= B;A*B= :D.;B= =
D+AD&&D++D.c           
   #     #    U
c  [        UU[        R                  UU	US9nOU
n UR                  R                  R
                  " S0 UD6nUR                  5       n[        UUSUUR                  S	S 5      S
9n U H  nUv   M	     g ! [         ad  n[        USS5      n[        USS 5      n[        US[        U5      5      n[        USS 5      nUc  U(       a  [        USS 5      n[        UUUS9eS nAff = f! [         ad  n[        USS5      n[        USS 5      n[        US[        U5      5      n[        USS 5      nUc  U(       a  [        USS 5      n[        UUUS9eS nAff = f7f)Nr;   r1   rA   r#   rB   rC   rD   text-completion-openaistream_optionscompletion_streamr'   custom_llm_providerr*   rl   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/   rY   rZ   rC   r\   r1   r]   r^   r_   streamwrapperchunks                         r   rK   OpenAITextCompletion.streaming   s     >"!#22')M #M	(44FFMMUPTUL#))+H ,& 8#88$4d;
	& ''  		!!]C8K#Ay$7M FCF3J$Q
D9N$ '	4 H'] 		*  		!!]C8K#Ay$7M FCF3J$Q
D9N$ '	4 H'] 		sN   #E*6B E*:C9 E*
C6AC11C66E*9
E'AE""E''E*c           
       #    U
c  [        UU	[        R                  UUUS9nOU
nUR                  R                  R
                  " S0 UD6I S h  vN nUR                  5       n[        UUSUUR                  SS 5      S9n U  S h  vN nU7v   M   ND N
 g ! [         ad  n[        USS5      n[        USS 5      n[        US[        U5      5      n[        US	S 5      nUc  U(       a  [        USS 5      n[        UUUS
9eS nAff = f7f)Nr;   rk   rl   rm   r1   rA   r#   rB   rC   rD   r!   )r   rL   rc   rN   rO   rP   rQ   r
   rI   rT   rU   rV   r   )r   r*   r"   r9   r#   r&   r'   r)   r4   r-   r:   r/   rY   rZ   rC   rp   transformed_chunkr\   r1   r]   r^   r_   s                         r   rJ   $OpenAITextCompletion.async_streaming
  s#     >'!#33')M #M*66HHOOWRVWW%%'+& 8#88$4d;
	+8 (''' X(= 		!!]C8K#Ay$7M FCF3J$Q
D9N$ '	4 H'] 		sa   AD
B1D
B BBBB D
BB D

D#ADDD
r!   )returnN)NNFNNNNN)NN)NNNN)NNN)__name__
__module____qualname____firstlineno__r   rE   r   r$   r   rV   r   r   r   r   floatLiteLLMLoggingObjdictr   r   boolr`   intr.   rK   rJ   __static_attributes____classcell__)r   s   @r   r   r      s   +E+G(" -1"&!&*"&!p%p p 	p
 -.5T0UUVp p 'p p  )p 3-p p smp  $!p| '+9 9 	9
 9 &9 9 9 9 9 9 sm9H #'< < 	<
 < &< < < 3-<P #'0 0 	0
 0 &0 0 0 0 3-0 0r   r   )rd   typingr   r   r   r   openair   r   rL   *litellm.litellm_core_utils.litellm_loggingr	   r|   ,litellm.litellm_core_utils.streaming_handlerr
   litellm.llms.baser   litellm.types.llms.openair   r   litellm.types.utilsr   r   common_utilsr   transformationr   r   r!   r   r   <module>r      s7     2 2 &  S L % W E & 6i7 ir   