
    ^h                     :   S r  SSKrSSKrSSKrSSKJrJrJrJrJ	r	  SSK
Jr  \R                  S:  a	  SSKJrJr  OSSKJrJr  \R                   " \5      r\	" S\S9r\	" S	5      r " S
 S\\\4   5      r " S S5      rSSKr " S S5      rg! \ a    Sr  Nf = f)T    N)AnyDictListOptionalTypeVar)
trace_tree)      )LiteralProtocolK)boundVc                   `    \ rS rSr% \S   \S'   S\S\4S jr SS\S\	\   S\	\   4S	 jjr
S
rg)OpenAIResponse   )chat.completionedittext_completionobjectkeyreturnc                     g N )selfr   s     ]/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/weights_biases.py__getitem__OpenAIResponse.__getitem__   s    C    Ndefaultc                     g r   r   )r   r   r!   s      r   getOpenAIResponse.get   s    r    r   r   )__name__
__module____qualname____firstlineno__r   __annotations__r   r   r   r   r#   __static_attributes__r   r    r   r   r      sJ    DEE/1// 26		#+A;	a[	 	r    r   c                      \ rS rSrS\\\4   S\S\S\	\
R                     4S jr\S\\\4   S\S\\
R                     S\S\
R                  4
S j5       rS\\\4   S\S\S\
R                  4S	 jrS\\\4   S\S\S\
R                  4S
 jrS\\\4   S\S\S\
R                  4S jrS\\\4   S\S\S\\   S\S\
R                  4S jrSrg)OpenAIRequestResponseResolver   requestresponsetime_elapsedr   c                 >    US   S:X  a  U R                  XU5      $ US   S:X  a  U R                  XU5      $ US   S:X  a  U R                  XU5      $ [        R	                  SUS    35         g ! [
         a"  n[        R                  SU 35         S nAg S nAff = f)Nr   r   r   r   z Unknown OpenAI response object: z$Failed to resolve request/response: )_resolve_edit_resolve_completion_resolve_chat_completionloggerinfo	Exceptionwarning)r   r.   r/   r0   es        r   __call__&OpenAIRequestResponseResolver.__call__   s    KH%/--gNNh'+<<33G|TTh'+<<88<  KK"B8HCUBV WX   K!EaSIJJKs'   A0 A0 A0 A0 0
B:BBresultsc           	      d   [        [        US   S-  5      5      nU[        [        US-  5      5      -   n[        R                  " UR	                  SS5       SUS    SUR	                  S5       3[        U5      UU[        R                  R                  US9nXSS.n[        R                  " XgS	9$ )
a
  Converts the request, response, and results into a trace tree.

params:
    request: The request dictionary
    response: The response object
    results: A list of results object
    time_elapsed: The time elapsed in seconds
returns:
    A wandb trace tree object.
createdi  modelopenai_r   )name
attributesstart_time_msend_time_ms	span_kindr<   )r.   r/   _kind)	root_span
model_dict)	introundr   Spanr#   dictSpanKindLLMWBTraceTree)r.   r/   r<   r0   rD   rE   span	model_objs           r   results_to_trace_tree3OpenAIRequestResponseResolver.results_to_trace_tree4   s    "  hy&9D&@ ABM'#eL44G.H*IIK?? Wh78(8:L9MQx||\eOfNgh>+'$--11D %,HUI))DOOr    c                     SUS    SUS    S3nUS    Vs/ s H  nSUS    S3PM     nnU R                  UUUUUS	9$ s  snf )
z<Resolves the request and response objects for `openai.Edit`.z

**Instruction**: instructionz

**Input**: input
choicesz

**Edited**: textr.   r/   request_strrY   r0   !_request_response_result_to_tracer   r.   r/   r0   r\   choicerY   s          r   r2   +OpenAIRequestResponseResolver._resolve_editR   s     ((>'? @%g./r3 
 EMYDWDW&"6&>"2"5DW   99!') :  	s   ?c                 |    SUS    S3nUS    Vs/ s H  nSUS    S3PM     nnU R                  UUUUUS9$ s  snf )BResolves the request and response objects for `openai.Completion`.z

**Prompt**: promptrX   rY   z

**Completion**: rZ   r[   r]   r_   s          r   r3   1OpenAIRequestResponseResolver._resolve_completioni   s{     -WX->,?rBK 'y11F 'vf~&6b91  
 99!') :  s   9c                     [         R                  " 5       nUS    H!  nUR                  SUS    SUS    S35        M#     UR                  5       nUS    Vs/ s H  nSUS   S    SUS   S    S3PM     nnU R	                  UUUUUS	9$ s  snf )
rc   messagesz

**rolez**: contentrX   rY   messager[   )ioStringIOwritegetvaluer^   )	r   r.   r/   r0   rd   rj   r\   r`   rY   s	            r   r4   6OpenAIRequestResponseResolver._resolve_chat_completion~   s     [[]F":.vgfo%6d79;M:NbQR / //+K 'y11F 	*6234y8I)8T7UUWX1  
 99!') :  s   Br\   rY   c                     U Vs/ s H  n[         R                  " SU0SU0S9PM     nnU R                  XXu5      nU$ s  snf )rc   r.   r/   )inputsoutputs)r   ResultrS   )	r   r.   r/   r\   rY   r0   r`   r<   traces	            r   r^   ?OpenAIRequestResponseResolver._request_response_result_to_trace   sa     &
 &F	 !!%{3'0 &   ..w'XELs   #>r   N)r%   r&   r'   r(   r   strr   r   floatr   r   rP   r:   staticmethodr   rs   rS   r2   r3   r4   r^   r*   r   r    r   r,   r,      s   	#s(^	 %	  		
 j,,-	* 
	P#s(^	P$	P *++,	P  		P
 ##	P 
	P:	#s(^	 %	  		
 ##	.	#s(^	 %	  		
 ##	*	#s(^	 %	  		
 ##	2	#s(^	 %	 		
 #Y	  	 ##	r    r,   Fc                        \ rS rSrS rS rSrg)WeightsBiasesLogger   c                       [        SL a  [        S5      e[        5       U l        g ! [          a    [        S5      ef = f)NzP[91m wandb not installed, try running 'pip install wandb' to fix this error[0mF)r7   imported_openAIResponser,   resolver)r   s    r   __init__WeightsBiasesLogger.__init__   sQ    	
 #e+h  67  	h 	s   =c                 d   SS K n U" SU 35        UR                  5       nU" U5        U R                  XXC-
  R                  5       5      nUb  Ub  UR	                  SU05        Ub  UR                  5         U" SU 35        g g ! [         a!    U" S[        R                  " 5        35         g f = f)Nr   z0W&B Logging - Enters logging function for model rt   z-W&B Logging Logging - final response object: zW&B Logging Layer Error - )	wandbinitr~   total_secondslogfinishr7   	traceback
format_exc)	r   kwargsresponse_obj
start_timeend_timeprint_verboser   runrt   s	            r   	log_eventWeightsBiasesLogger.log_event   s    	LVHUV**,C,'MMx'<&K&K&ME  S_%()

CL>R 
  	6y7K7K7M6NOP	s   A<B (B/.B/)r~   N)r%   r&   r'   r(   r   r   r*   r   r    r   rz   rz      s    8r    rz   )r}   rk   loggingsystypingr   r   r   r   r   wandb.sdk.data_typesr   version_infor   r   typing_extensions	getLoggerr%   r5   rv   r   r   r   r,   r7   r   rz   r   r    r   <module>r      s    i$99/
6!,,7x(F3AA!Q$ J Jd & &  $#$s   A<B BB