
    gK                         d Z ddl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 er	dd	lmZ eZneZ G d
 de      Zy)z,
OpenAI-like chat completion transformation
    )TYPE_CHECKINGAnyListOptionalTupleUnionNget_secret_str)ChatCompletionAssistantMessage)ModelResponse   )OpenAIGPTConfig)Loggingc                       e Zd Z	 ddee   dee   dee   deee   ee   f   fdZedede	defd       Z
eded	ej                  d
ede	dededee   deeef   dede	dedee   defd       Z	 ddededede	de	def fdZ xZS )OpenAILikeChatConfigapi_baseapi_keymodelreturnc                 N    |xs t        d      }|xs t        d      xs d}||fS )NOPENAI_LIKE_API_BASEOPENAI_LIKE_API_KEY r	   )selfr   r   r   dynamic_api_keys        a/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/openai_like/chat/transformation.py$_get_openai_compatible_provider_infoz9OpenAILikeChatConfig._get_openai_compatible_provider_info   s9     E~.DEB~&;<B 	 ((    message	json_modec                     |s| S | j                  d      }|t        |      dk7  r| S |d   d   j                  d      xs d| d<   d| d<   | S )	a  
        if json_mode is true, convert the returned tool call response to a content with json str

        e.g. input:

        {"role": "assistant", "tool_calls": [{"id": "call_5ms4", "type": "function", "function": {"name": "json_tool_call", "arguments": "{"key": "question", "value": "What is the capital of France?"}"}}]}

        output:

        {"role": "assistant", "content": "{"key": "question", "value": "What is the capital of France?"}"}
        
tool_callsN   r   function	argumentsr   content)getlen)r   r    _tool_callss      r   !_convert_tool_response_to_messagez6OpenAILikeChatConfig._convert_tool_response_to_message$   sc     Nkk,/#k"2a"7N(^J7;;KHNB	 $r   responsemodel_responsestreamlogging_objoptional_paramsdatamessagescustom_llm_provider
base_modelc                 .   |j                         }|j                  |d|d|i       |r4|d   D ],  }t        j                  |j	                  d      |      }||d<   . t        di |}|dz   |j                  xs dz   |_        |||j                  d<   |S )	Nr   complete_input_dict)inputr   original_responseadditional_argschoicesr   /r    )json	post_callr   r*   r'   r   r   _hidden_params)r   r+   r,   r-   r.   r/   r   r0   r1   print_verboseencodingr    r2   r3   response_jsonchoicer   returned_responses                     r   _transform_responsez(OpenAILikeChatConfig._transform_response@   s    " !+2D9	 	 	
 '	2.PPJJy)9 %,y!	 3 *:M:  #%):)@)@)FBG 	 !8B,,W5  r   non_default_paramsdrop_params-replace_max_completion_tokens_with_max_tokensc                 l    t         |   ||||      }d|v r|r|d   |d<   |j                  dd        |S )Nmax_completion_tokens
max_tokens)supermap_openai_paramspop)r   rE   r/   r   rF   rG   mapped_params	__class__s          r   rL   z&OpenAILikeChatConfig.map_openai_paramsj   sV     1
 $'99=*<'+M,' 5t<r   )N)T)__name__
__module____qualname__r   strr   r   staticmethodr   boolr*   httpxResponser   LiteLLMLoggingObjdictr   r   rD   rL   __classcell__)rO   s   @r   r   r      so   
  $	
)3-
) #
) }	
)
 
x}hsm+	,
) /<@	' 6 '!'!..'! &'! 	'!
 ''! '! #'! D#I'! '! '! !'! SM'! 
'! '!^ ?C   	
  8< 
 r   r   )__doc__typingr   r   r   r   r   r   rV   litellm.secret_managers.mainr
   litellm.types.llms.openair   litellm.types.utilsr   openai.chat.gpt_transformationr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjrX   r   r;   r   r   <module>rc      sB    D C  7 D - =X*g? gr   