
    h                     |    d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZ d	d
lmZ  G d dee      Zy)z
Translation from OpenAI's `/chat/completions` endpoint to IBM WatsonX's `/text/chat` endpoint.

Docs: https://cloud.ibm.com/apidocs/watsonx-ai#text-chat
    )ListOptionalTupleUnionget_secret_str)WatsonXAIEndpointWatsonXAPIParams   )_remove_additional_properties_remove_strict_from_schema   )OpenAIGPTConfig   )IBMWatsonXMixinc                        e Zd ZdedefdZdeeeef      de	fdZ
dededede	def
 fd	Zd
ee   dee   deee   ee   f   fdZ	 dd
ee   dee   dedededee	   defdZdededefdZ xZS )IBMWatsonXChatConfigmodelreturnc                 
    g dS )N)temperature
max_tokenstop_pfrequency_penaltystopseedstreamtoolstool_choicelogprobstop_logprobsnpresence_penaltyresponse_format )selfr   s     d/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/watsonx/chat/transformation.pyget_supported_openai_paramsz0IBMWatsonXChatConfig.get_supported_openai_params   s    
 	
    r   c                 2    |yt        |t              r|dv S y)NF)autononerequired)
isinstancestr)r&   r   s     r'   is_tool_choice_optionz*IBMWatsonXChatConfig.is_tool_choice_option$   s$    k3'">>>r)   non_default_paramsoptional_paramsdrop_paramsc                     |j                  dd       }|t        |      }t        |      }|||d<   |j                  dd       }| j                  |      r||d<   n|||d<   t        |   ||||      S )Nr   r   tool_choice_option)popr   r   r0   supermap_openai_params)r&   r1   r2   r   r3   _tools_tool_choice	__class__s          r'   r8   z&IBMWatsonXChatConfig.map_openai_params+   s     $''626:F/7F*0w' *--mTB%%l34@O01%-9OM*w(
 	
r)   api_baseapi_keyc                 N    |xs t        d      }|xs t        d      xs d}||fS )NHOSTED_VLLM_API_BASEHOSTED_VLLM_API_KEY r   )r&   r<   r=   dynamic_api_keys       r'   $_get_openai_compatible_provider_infoz9IBMWatsonXChatConfig._get_openai_compatible_provider_infoG   s9     E~.DEB~&;<B 	 ((r)   litellm_paramsr   c                    | j                  |      }|j                  d      rldj                  |j                  d      dd        }|rt        j
                  j                  nt        j                  j                  }	|	j                  |      }	n6|rt        j                  j                  nt        j                  j                  }	|j                  d      |	z   }| j                  ||j                  dd             }|S )N)r<   deployment//   )deployment_idapi_version)urlrJ   )_get_base_url
startswithjoinsplitr	   DEPLOYMENT_CHAT_STREAMvalueDEPLOYMENT_CHATformatCHAT_STREAMCHATrstrip_add_api_version_to_urlr6   )
r&   r<   r=   r   r2   rD   r   rK   rI   endpoints
             r'   get_complete_urlz%IBMWatsonXChatConfig.get_complete_urlP   s       ( 3M*HHU[[%5ab%9:M  "88>>&66<< 
  ]CH  "--33&++11 
 jjo( **!4!4]D!I + 
 
r)   
api_paramsc                 p    i }|j                  d      rdn||d<   |j                  d      rdn|d   |d<   |S )z
        Prepare payload for deployment models.
        Deployment models cannot have 'model_id' or 'model' in the request body.
        rF   Nmodel_id
project_id)rM   )r&   r   rZ   payloads       r'   _prepare_payloadz%IBMWatsonXChatConfig._prepare_payloadp   sJ    
 &+&6&6}&Ed5
$$]3DL9Q 	 r)   )N)__name__
__module____qualname__r/   r   r(   r   r   dictboolr0   r8   r   rC   rY   r
   r_   __classcell__)r;   s   @r'   r   r      s   
 
 
$%T	:J1K PT 
 
 
 	

 
 

8) )08)	x}hsm+	,)  "&3- # 	
    
@
c 
7G 
D 
r)   r   N)__doc__typingr   r   r   r   litellm.secret_managers.mainr   litellm.types.llms.watsonxr	   r
   utilsr   r   openai.chat.gpt_transformationr   common_utilsr   r   r%   r)   r'   <module>rm      s1    0 / 7 J O = *i?O ir)   