
    h                     <   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                   P    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     _/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/integrations/weights_biases.py__getitem__zOpenAIResponse.__getitem__           Ndefaultc                      y r   r   )r   r   r    s      r   getzOpenAIResponse.get   r   r   r   )
__name__
__module____qualname__r   __annotations__r   r   r   r   r"   r   r   r   r   r      sC    DEE	1 	 		1 	x{ 	hqk 	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_kindr6   )r)   r*   _kind)	root_span
model_dict)	introundr   Spanr"   dictSpanKindLLMWBTraceTree)r)   r*   r6   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_strrR   r+   !_request_response_result_to_tracer   r)   r*   r+   rU   choicerR   s          r   r-   z+OpenAIRequestResponseResolver._resolve_editR   s     ((>'? @%g./r3 
 EMYDW:@"6&>"2"5G  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**: promptrQ   rR   z

**Completion**: rS   rT   rV   rX   s          r   r.   z1OpenAIRequestResponseResolver._resolve_completioni   sx     -WX->,?rBK 'y1 'vf~&6b9G 
 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 )
r[   messagesz

**rolez**: contentrQ   rR   messagerT   )ioStringIOwritegetvaluerW   )	r   r)   r*   r+   r\   ra   rU   rY   rR   s	            r   r/   z6OpenAIRequestResponseResolver._resolve_chat_completion~   s     [[]F":.vgfo%6d79;M:NbQR / //+K 'y1 	*6234y8I)8T7UUWXG 
 99!') :  s   BrU   rR   c                     |D cg c]  }t        j                  d|id|i       }}| j                  ||||      }|S c c}w )r[   r)   r*   )inputsoutputs)r   ResultrM   )	r   r)   r*   rU   rR   r+   rY   r6   traces	            r   rW   z?OpenAIRequestResponseResolver._request_response_result_to_trace   s`     &
 	 !!%{3'0G  ..w'<XELs   "?N)r#   r$   r%   r   strr   r   floatr   r   rJ   r5   staticmethodr   ri   rM   r-   r.   r/   rW   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)r2   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 rj   z-W&B Logging Logging - final response object: zW&B Logging Layer Error - )	wandbinitrr   total_secondslogfinishr2   	traceback
format_exc)	r   kwargsresponse_obj
start_timeend_timeprint_verboseru   runrj   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%   rs   r   r   r   r   ro   ro      s    8r   ro   )rq   rb   loggingsystypingr   r   r   r   r   wandb.sdk.data_typesr   version_infor   r   typing_extensions	getLoggerr#   r0   rk   r   r   r   r(   r2   rz   ro   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