
    g                     <   d Z 	 ddlZddlZddlZddlmZmZmZmZm	Z	 ddl
mZ ej                  dk\  r	ddlmZmZ nddlmZmZ  ej                   e      Z e	de      Z e	d	      Z G d
 deeef         Z G d d      ZddlZ G d d      Zy# e$ r dZ Y w xY w)T    N)AnyDictListOptionalTypeVar)
trace_tree)      )LiteralProtocolK)boundVc                   R    e Zd ZU ed   ed<   dedefdZ	 d	dedee   dee   fdZ	y)
OpenAIResponse)chat.completionedittext_completionobjectkeyreturnc                      y N )selfr   s     X/var/www/openai/venv/lib/python3.12/site-packages/litellm/integrations/weights_biases.py__getitem__zOpenAIResponse.__getitem__   s    C    Ndefaultc                      y r   r   )r   r   r   s      r   getzOpenAIResponse.get   s    r   r   )
__name__
__module____qualname__r   __annotations__r   r   r   r   r!   r   r   r   r   r      sE    DEE/1// 26		#+A;	a[	r   r   c                      e Zd Zdeeef   dededee	j                     fdZedeeef   dedee	j                     dede	j                  f
d       Zdeeef   dedede	j                  fdZdeeef   dedede	j                  fd	Zdeeef   dedede	j                  fd
Zdeeef   dededee   dede	j                  fdZy)OpenAIRequestResponseResolverrequestresponsetime_elapsedr   c                 <   	 |d   dk(  r| j                  |||      S |d   dk(  r| j                  |||      S |d   dk(  r| j                  |||      S t        j	                  d|d           	 y # t
        $ r"}t        j                  d|        Y d }~y d }~ww xY w)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)   r*   es        r   __call__z&OpenAIRequestResponseResolver.__call__   s    KH%/--gxNNh'+<<33GX|TTh'+<<88<  KK"B8HCUBV WX   K!EaSIJJKs'   A0 A0 A0 A0 0	B9BBresultsc           	      p   t        t        |d   dz              }|t        t        |dz              z   }t        j                  |j	                  dd       d|d    d|j	                  d       t        |      ||t        j                  j                  |      }| |dd}t        j                  ||	      S )
aj  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_kindr5   )r(   r)   _kind)	root_span
model_dict)	introundr   Spanr!   dictSpanKindLLMWBTraceTree)r(   r)   r5   r*   r=   r>   span	model_objs           r   results_to_trace_treez3OpenAIRequestResponseResolver.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))DYOOr   c                     d|d    d|d    d}|d   D cg c]  }d|d    d }}| j                  |||||	      S c c}w )
z<Resolves the request and response objects for `openai.Edit`.z

**Instruction**: instructionz

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

**Edited**: textr(   r)   request_strrQ   r*   !_request_response_result_to_tracer   r(   r)   r*   rT   choicerQ   s          r   r,   z+OpenAIRequestResponseResolver._resolve_editR   s     ((>'? @%g./r3 
 EMYDWDW&"6&>"2"5DW   99!') :  	s   ?c                 |    d|d    d}|d   D cg c]  }d|d    d }}| j                  |||||      S c c}w )BResolves the request and response objects for `openai.Completion`.z

**Prompt**: promptrP   rQ   z

**Completion**: rR   rS   rU   rW   s          r   r-   z1OpenAIRequestResponseResolver._resolve_completioni   s{     -WX->,?rBK 'y11F 'vf~&6b91  
 99!') :  s   9c                    t        j                         }|d   D ]   }|j                  d|d    d|d    d       " |j                         }|d   D cg c]  }d|d   d    d|d   d    d }}| j	                  |||||	      S c c}w )
rZ   messagesz

**rolez**: contentrP   rQ   messagerS   )ioStringIOwritegetvaluerV   )	r   r(   r)   r*   r[   r`   rT   rX   rQ   s	            r   r.   z6OpenAIRequestResponseResolver._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rT   rQ   c                     |D cg c]  }t        j                  d|id|i       }}| j                  ||||      }|S c c}w )rZ   r(   r)   )inputsoutputs)r   ResultrL   )	r   r(   r)   rT   rQ   r*   rX   r5   traces	            r   rV   z?OpenAIRequestResponseResolver._request_response_result_to_trace   se     &
 &F	 !!%{3'0 &   ..w'<XELs   "?N)r"   r#   r$   r   strr   r   floatr   r   rI   r4   staticmethodr   rh   rL   r,   r-   r.   rV   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                       e Zd Zd Zd Zy)WeightsBiasesLoggerc                 |    	 	 t        du rt        d      t               | _        y # t         $ r t        d      w xY w)NzP[91m wandb not installed, try running 'pip install wandb' to fix this error[0mF)r1   imported_openAIResponser'   resolver)r   s    r   __init__zWeightsBiasesLogger.__init__   sQ    	
 #e+h  67  	h 	s   ;c                 ^   dd l }	  |d|        |j                         } ||       | j                  ||||z
  j                               }|||j	                  d|i       ||j                           |d|        y y # t        $ r   |dt        j                                 Y y w xY w)Nr   z0W&B Logging - Enters logging function for model ri   z-W&B Logging Logging - final response object: zW&B Logging Layer Error - )	wandbinitrq   total_secondslogfinishr1   	traceback
format_exc)	r   kwargsresponse_obj
start_timeend_timeprint_verbosert   runri   s	            r   	log_eventz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,N)r"   r#   r$   rr   r   r   r   r   rn   rn      s    8r   rn   )rp   ra   loggingsystypingr   r   r   r   r   wandb.sdk.data_typesr   version_infor   r   typing_extensions	getLoggerr"   r/   rj   r   r   r   r'   r1   ry   rn   r   r   r   <module>r      s    i$99/
6!,,7Wx(F3AA!Q$ J Jd & &  $#$s   A>B BB