
    h#                         d Z ddlmZmZmZmZmZmZmZ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mZmZ ddlmZ d	d
lmZ  G d de      Zy)zQ
Translate from OpenAI's `/v1/chat/completions` to Groq's `/v1/chat/completions`
    )	Any	CoroutineListLiteralOptionalTupleUnioncastoverloadN)	BaseModel)Loggingget_secret_str)AllMessageValuesChatCompletionAssistantMessageChatCompletionToolParam$ChatCompletionToolParamFunctionChunk)ModelResponse   )OpenAILikeChatConfigc                       e Zd ZU dZee   ed<   dZeee	e
f      ed<   dZee   ed<   dZee
   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZeee	ef      ed	<   dZee   ed
<   dZee   ed<   dZee
   ed<   dZee   ed<   dZeee	e
f      ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 d1dee   deee	e
f      dee   dee
   dee   dee   dee   d	eee	ef      d
ee   dee   dee
   dee   deee	e
f      ddfdZe fd       Zde	def fdZedee   de	ded   dee e ee   f   fd       Z!e	 d2dee   de	ded   dee   fd       Z!	 d2dee   de	de"deee   ee e ee   f   f   f fdZ!dee	   dee	   de#ee	   ee	   f   fdZ$de
de"fdZ%d e
fd!Z&	 	 d3d"e
de
de	d#e"d$e"de
f fd%Z'	 	 d4de	d&e(jR                  d'e*d(e+d)e
dee   de
d*e
d+e dee	   d,ee"   de*f fd-Z,d.ee	   ded/   fd0Z- xZ.S )5GroqChatConfigNfrequency_penaltyfunction_call	functions
logit_bias
max_tokensnpresence_penaltystoptemperaturetop_presponse_formattoolstool_choicereturnc                     t               j                         }|j                         D ]%  \  }}|dk7  s|t        | j                  ||       ' y )Nself)localscopyitemssetattr	__class__)r(   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   locals_keyvalues                    a/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/groq/chat/transformation.py__init__zGroqChatConfig.__init__%   sA      (--/!--/JCf}!2U3 *    c                      t         |          S N)super
get_config)clsr-   s    r1   r7   zGroqChatConfig.get_config:   s    w!##r3   modelc                 j    t         |   |      }	 |j                  d       |S # t        $ r Y |S w xY w)Nmax_retries)r6   get_supported_openai_paramsremove
ValueError)r(   r9   base_paramsr-   s      r1   r<   z*GroqChatConfig.get_supported_openai_params>   sG    g9%@	}-   		s   % 	22messagesis_asyncTc                      y r5    r(   r@   r9   rA   s       r1   _transform_messagesz"GroqChatConfig._transform_messagesF   s     	r3   Fc                      y r5   rC   rD   s       r1   rE   z"GroqChatConfig._transform_messagesL   s     	r3   c                 N   t        |      D ]q  \  }}	 t        |t              r|j                         }n|}|j	                  d      dk(  }|sAt        d      }|j                         D ]  \  }	}
|
	|
||	<    |||<   s |rt        | !  ||d      S t        | !  ||d      S )Nrole	assistant)rH   T)r@   r9   rA   F)		enumerate
isinstancer   
model_dumpgetr   r+   r6   rE   )r(   r@   r9   rA   idxmessage_messageassistant_messagenew_messagekvr-   s              r1   rE   z"GroqChatConfig._transform_messagesU   s     &h/LC '9-"--/" (V 4 C <+N$NN,DAq})*A - !, 0  7.! /   7.! /  r3   api_baseapi_keyc                 N    |xs t        d      xs d}|xs t        d      }||fS )NGROQ_API_BASEzhttps://api.groq.com/openai/v1GROQ_API_KEYr   )r(   rU   rV   dynamic_api_keys       r1   $_get_openai_compatible_provider_infoz3GroqChatConfig._get_openai_compatible_provider_infoq   s=    
  0o.0/ 	
 "C^N%C((r3   optional_paramsc                 (    |j                  d      yy)zH
        Groq doesn't support 'response_format' while streaming
        r#   TF)rM   )r(   r\   s     r1   _should_fake_streamz"GroqChatConfig._should_fake_stream}   s     01=r3   json_schemac                 2    t        dt        d|            S )a3  
        Handles creating a tool call for getting responses in JSON format.

        Args:
            json_schema (Optional[dict]): The JSON schema the response should be in

        Returns:
            AnthropicMessagesTool: The tool call to send to Anthropic API to get responses in JSON format
        functionjson_tool_call)name
parameterstypera   )r   r   )r(   r_   s     r1   *_create_json_tool_call_for_response_formatz9GroqChatConfig._create_json_tool_call_for_response_format   s"     '9%&
 	
r3   non_default_paramsdrop_params-replace_max_completion_tokens_with_max_tokensc                 J   |j                  d      }| j                  |      rd|d<   |ft        |t              rVd }d|v r|d   }nd|v r|d   d   }	 |;ddd	id
}| j	                  |      }	|	g|d<   ||d<   d|d<   |j                  dd        t        
|   ||||      }|S )Nr#   Tfake_streamresponse_schemar_   schemara   rc   rb   re   )r_   r$   r%   	json_mode)rM   r^   rK   dictrg   popr6   map_openai_params)r(   rh   r\   r9   ri   rj   _response_formatr_   _tool_choice_toolr-   s             r1   rr   z GroqChatConfig.map_openai_params   s    .112CD##$67-1OM*'J7G,N*.K $44./@A"22.}=hG &&!')9 :  GG + H  -27(1=./3,"&&%t  '3
 r3   raw_responsemodel_responselogging_objrequest_datalitellm_paramsencodingro   c                     t         |   |||||||||	|
|      }| j                  t        |d            }t	        |d|       |S )N)r9   rv   rw   rx   ry   r@   r\   rz   r{   rV   ro   service_tier)original_service_tier)r6   transform_response_map_groq_service_tiergetattrr,   )r(   r9   rv   rw   rx   ry   r@   r\   rz   r{   rV   ro   mapped_service_tierr-   s                r1   r   z!GroqChatConfig.transform_response   s     3%)#%+) 4 
 CGB]B]t{  }K  M[  u\B]  C]0CDr3   r~   autodefaultflexc                 8    |y|dvryt        t        d   |      S )z@
        Ensure groq service tier is OpenAI compatible.
        r   r   )r
   r   )r(   r~   s     r1   r   z%GroqChatConfig._map_groq_service_tier   s-     !( (CCG568MNNr3   )NNNNNNNNNNNNN)F)FF)NN)/__name__
__module____qualname__r   r   int__annotations__r   r	   strrp   r   listr   r   r   r   r    r!   r"   r#   r$   r%   r2   classmethodr7   r<   r   r   r   r   r   r   rE   boolr   r[   r^   rg   rr   httpxResponser   LiteLLMLoggingObjr   r   __classcell__)r-   s   @r1   r   r      sR   '+x}+04M8E#t),-4 $Ix~$!%J% $J$Ax}&*hsm*'+D(5d#
$+!%K#%E8C=&*OXd^* E8D> .2K%T	*+2 ,048$(%)$(*.+/%)#*. $264#C=4  c4i 014 D>	4
 TN4 SM4 C=4 #3-4 uS$Y'(4 c]4 }4 "$4 ~4 eCI./4 
4* $ $   -.7:FMdm	3T"233	4 
 
 $)	'(  %.	
 
	  NS-.7:FJ	t$%yc4@P;Q1Q'RR	S8
) 
)08
)	x}hsm+	,
)4 D 

4 ">C) ) ) 	)
 ) 8<) 
)n "&$( nn &	
 '  '(    # D> 
B	OHSM 	OgVoNp 	Or3   r   )__doc__typingr   r   r   r   r   r   r	   r
   r   r   pydanticr   *litellm.litellm_core_utils.litellm_loggingr   r   litellm.secret_managers.mainr   litellm.types.llms.openair   r   r   r   litellm.types.utilsr   openai_like.chat.transformationr   r   rC   r3   r1   <module>r      sE    Y X X   S 7  . C[O) [Or3   