
    ^hg                     r    S r SSKJrJrJrJr  SSKJr  SSKJ	r	  SSK
JrJrJrJr  SSKJr   " S S	\5      rg
)zQ
Translate from OpenAI's `/v1/chat/completions` to Groq's `/v1/chat/completions`
    )ListOptionalTupleUnion)	BaseModelget_secret_str)AllMessageValuesChatCompletionAssistantMessageChatCompletionToolParam$ChatCompletionToolParamFunctionChunk   )OpenAIGPTConfigc                     ^  \ rS rSr% Sr\\   \S'   Sr\\	\
\4      \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S	'   Sr\\	\
\4      \S
'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\	\
\4      \S'                S!S\\   S\\	\
\4      S\\   S\\   S\\   S\\   S	\\   S
\\	\
\4      S\\   S\\   S\\   S\\   S\\	\
\4      SS4S jjr\U 4S j5       rS\\   S\
S\4S jrS\\
   S\\
   S\\\
   \\
   4   4S jrS\S\ 4S jr!S\4S jr" S"S\S\S\
S\ S\4
U 4S jjjr#S r$U =r%$ )#GroqChatConfig   Nfrequency_penaltyfunction_call	functions
logit_bias
max_tokensnpresence_penaltystoptemperaturetop_presponse_formattoolstool_choicereturnc                     [        5       R                  5       nUR                  5        H*  u  nnUS:w  d  M  Uc  M  [        U R                  UU5        M,     g )Nself)localscopyitemssetattr	__class__)r"   r   r   r   r   r   r   r   r   r   r   r   r   r   locals_keyvalues                    _/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/groq/chat/transformation.py__init__GroqChatConfig.__init__$   sA      (--/!--/JCf}!2U3 *    c                     > [         TU ]  5       $ )N)super
get_config)clsr'   s    r+   r1   GroqChatConfig.get_config9   s    w!##r.   messagesmodelc                    [        U5       Hz  u  p4 [        U[        5      (       a  UR                  5       nOUnUR	                  S5      S:H  nU(       d  MK  [        SS9nUR                  5        H  u  pU	c  M
  XU'   M     XqU'   M|     U$ )Nrole	assistant)r7   )	enumerate
isinstancer   
model_dumpgetr   r%   )
r"   r4   r5   idxmessage_messageassistant_messagenew_messagekvs
             r+   _transform_messages"GroqChatConfig._transform_messages=   s    %h/LC '9--"--/" (V 4 C  <+N$NN,DA})*A - !, 0  r.   api_baseapi_keyc                 j    U=(       d    [        S5      =(       d    SnU=(       d    [        S5      nX4$ )NGROQ_API_BASEzhttps://api.groq.com/openai/v1GROQ_API_KEYr   )r"   rF   rG   dynamic_api_keys       r+   $_get_openai_compatible_provider_info3GroqChatConfig._get_openai_compatible_provider_infoP   s;    
  0o.0/ 	
 "C^N%C((r.   optional_paramsc                 *    UR                  S5      b  gg)z8
Groq doesn't support 'response_format' while streaming
r   TF)r<   )r"   rN   s     r+   _should_fake_stream"GroqChatConfig._should_fake_stream\   s     01=r.   json_schemac                 &    [        S[        SUS9S9$ )a  
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typerT   )r   r   )r"   rR   s     r+   *_create_json_tool_call_for_response_format9GroqChatConfig._create_json_tool_call_for_response_formate   s"     '9%&
 	
r.   non_default_paramsdrop_paramsc                 $  > UR                  S5      nUbl  [        U[        5      (       aW  S nSU;   a  US   nOSU;   a  US   S   n Ub%  SSS0S.nU R                  US	9nU/US
'   XrS'   SUS'   UR	                  SS 5        [
        T	U ]  XX45      $ )Nr   response_schemarR   schemarT   rV   rU   rX   )rR   r   r   T	json_mode)r<   r:   dictrZ   popr0   map_openai_params)
r"   r\   rN   r5   r]   _response_formatrR   _tool_choice_toolr'   s
            r+   rd    GroqChatConfig.map_openai_paramsz   s     .112CD'J7G,N,N*.K $44./@A"22.}=hG &&!')9 :  GG + H  -27(1=./3,""#4d;w(
 	
r.    )NNNNNNNNNNNNN)F)&__name__
__module____qualname____firstlineno__r   r   int__annotations__r   r   strrb   r   listr   r   r   r   r   r   r   r   r   r   r,   classmethodr1   r   r
   rD   r   rL   boolrP   rZ   rd   __static_attributes____classcell__)r'   s   @r+   r   r      s   '+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* $ $D1A,B 3 SW &
) 
)08
)	x}hsm+	,
)4 D 

4 ""
 "
 "
 	"

 "
 
"
 "
r.   r   N)__doc__typingr   r   r   r   pydanticr   litellm.secret_managers.mainr	   litellm.types.llms.openair
   r   r   r   openai.chat.gpt_transformationr   r   ri   r.   r+   <module>r|      s5    0 /  7  >H
_ H
r.   