
    gT                         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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   )IBMWatsonXMixinWatsonXAIErrorc                        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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     ]/var/www/openai/venv/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_options)popr   r   r1   supermap_openai_params)r'   r2   r3   r   r4   _tools_tool_choice	__class__s          r(   r9   z&IBMWatsonXChatConfig.map_openai_params,   s     $''626:F/7F*0w' *--mTB%%l35AO12%-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_infoH   s9     E~.DEB~&;<B 	 ((r*   r   c                 :   | j                  |      }|j                  d      r|j                  d      t        dd      d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/space_idi  zError: space_id is required for models called using the 'deployment/' endpoint. Pass in the space_id as a parameter or set it in the WX_SPACE_ID environment variable.)status_codemessage/   )deployment_idapi_version)urlrM   )_get_base_url
startswithgetr   joinsplitr	   DEPLOYMENT_CHAT_STREAMvalueDEPLOYMENT_CHATformatCHAT_STREAMCHATrstrip_add_api_version_to_urlr7   )r'   r=   r   r3   r   rN   rL   endpoints           r(   get_complete_urlz%IBMWatsonXChatConfig.get_complete_urlQ   s      ( 3M*"":.6$ # E   HHU[[%5ab%9:M  "88>>&66<< 
  ]CH  "--33&++11 
 jjo( **!4!4]D!I + 
 
r*   
api_paramsc                 J    i }|j                  d      r|S ||d<   |d   |d<   |S )NrF   model_id
project_id)rP   )r'   r   r^   payloads       r(   _prepare_payloadz%IBMWatsonXChatConfig._prepare_payloadu   s8    M*N#
 *< 8r*   )N)__name__
__module____qualname__r0   r   r)   r   r   dictboolr1   r9   r   rD   r]   r
   rc   __classcell__)r<   s   @r(   r   r      s    
 
 
$%T	:J1K PT 
 
 
 	

 
 

8) )08)	x}hsm+	,) "&"" " 	"
 " 
"H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*   r(   <module>rq      s1    0 / 7 J O = :j?O jr*   