Ë
    uPêjå%  ã                   ó|   — d Z ddlmZ ddl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
é    )ÚFinal)Úverbose_logger©Úget_secret_str)ÚWatsonXAIEndpointÚWatsonXModelPatterné   )Ú_remove_additional_propertiesÚ_remove_strict_from_schemaé   )ÚOpenAIGPTConfigé   )ÚIBMWatsonXMixinc                   ól  ‡ — e Zd Zdedefd„Zdeez  dz  defd„Zdededed	edef
ˆ fd
„Z	dedz  dedz  de
edz  edz  f   fd„Z	 ddedz  dedz  dededededz  defd„Zededeeeef      dedz  fd„«       Zededeeeef      dedz  fd„«       Zededeeeef      dedz  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Úreasoning_effort© )Úselfr   s     úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/watsonx/chat/transformation.pyÚget_supported_openai_paramsz0IBMWatsonXChatConfig.get_supported_openai_params   s   € ò
ð 	
ó    r   Nc                 ó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$   € ØÐØÜ�k¤3Ô'ØÐ">Ð>Ð>Ø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   r/   ÚsuperÚmap_openai_params)r%   r0   r1   r   r2   Ú_toolsÚ_tool_choiceÚ	__class__s          €r&   r7   z&IBMWatsonXChatConfig.map_openai_params0   s—   ø€ ð $×'Ñ'¨°Ó6ˆØÐä2°6Ó:ˆFä/°Ó7ˆFØÐØ*0Ð˜wÑ'ð 1×4Ñ4°]ÀDÓIˆØ×%Ñ% lÔ3Ø4@ˆOÐ0Ò1ØÐ%Ø-9ˆO˜MÑ*Ü‰wÑ(Ð);¸_ÈeÐU`ÓaÐar(   Ú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_infoJ   s4   € ð ÒEœ~Ð.DÓEˆØ!ÒP¤^Ð4IÓ%JÒPÈ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;   zdeployment/ú/é   )Údeployment_idÚapi_version)ÚurlrH   )Ú_get_base_urlÚ
startswithÚjoinÚsplitr   ÚDEPLOYMENT_CHAT_STREAMÚvalueÚDEPLOYMENT_CHATÚformatÚCHAT_STREAMÚCHATÚrstripÚ_add_api_version_to_urlr5   )
r%   r;   r<   r   r1   rC   r   rI   rG   Úendpoints
             r&   Úget_complete_urlz%IBMWatsonXChatConfig.get_complete_urlQ   sÛ   € ð × Ñ ¨(Ð Ó3ˆØ×Ñ˜MÔ*Ø#&§8¡8¨E¯K©K¸Ó,<¸Q¸RÐ,@Ó#AˆMáBHÔ!×8Ñ8×>Ò>ÔN_×NoÑNo×NuÑNuð ð  —‘°]�ÓC‰Há>DÔ(×4Ñ4×:Ò:ÔJ[×J`ÑJ`×JfÑJfˆHØ�j‰j˜‹o Ñ(ˆð ×*Ñ*¨sÀ×@SÑ@SÐTaÐcgÓ@hÐ*ÓiˆØˆ
r(   Úmessagesc                 óö  — ddl m}m}m} t        j
                  j                  | v r	 ||¬«      S t        j                  j                  | v r	 ||¬«      S t        j                  j                  | v rEd| v r| j                  d«      d   }nd| v r| j                  d«      d   }n| }	  |||¬«      }|r|S 	 yt        j                  j                  | v r |dd	d
œdd	d
œdd	d
œdœ|dd¬«      S y# t        $ r Y yw xY w)z(Core logic for applying prompt templatesr   )Úcustom_promptÚibm_granite_ptÚmistral_instruct_pt©rX   úwatsonx/éÿÿÿÿúwatsonx_text/©r   rX   ú+<|start_header_id|>system<|end_header_id|>
ú
<|eot_id|>©Úpre_messageÚpost_messageú)<|start_header_id|>user<|end_header_id|>
ú.<|start_header_id|>assistant<|end_header_id|>
©ÚsystemÚuserÚ	assistantú<|begin_of_text|>©Ú	role_dictrX   Úinitial_prompt_valueÚfinal_prompt_valueN)Ú3litellm.litellm_core_utils.prompt_templates.factoryrZ   r[   r\   r   ÚGRANITE_CHATrO   ÚIBM_MISTRALÚGPT_OSSrM   Ú	ExceptionÚLLAMA3_INSTRUCT)r   rX   Úhf_template_fnrZ   r[   r\   Úhf_modelÚresults           r&   Ú_apply_prompt_template_corez0IBMWatsonXChatConfig._apply_prompt_template_corei   s;  € ÷	
ñ 	
ô ×+Ñ+×1Ñ1°UÑ:Ù!¨8Ô4Ð4Ü ×,Ñ,×2Ñ2°eÑ;Ù&°Ô9Ð9Ü ×(Ñ(×.Ñ.°%Ñ7à˜UÑ"Ø Ÿ;™; zÓ2°2Ñ6‘Ø  EÑ)Ø Ÿ;™; Ó7¸Ñ;‘à �ðÙ .°XÈÔ Q�ñ Ø!�Mð ð2 ô) !×0Ñ0×6Ñ6¸%Ñ?Ù ð (VØ(4ñð
 (TØ(4ñð
 (YØ(4ñ"ñð "Ø%8Ø#Tô#ð ð& øô/ ò àð* ð/ús   Â&C, Ã,	C8Ã7C8c              ƒ   ó²  K  — ddl }ddlm}m}m}m}m} t        j                  j                  | v r	 ||¬«      S t        j                  j                  | v r	 ||¬«      S t        j                  j                  | v rfd| v r| j                  d«      d   }nd| v r| j                  d«      d   }n| }	 ||j                  v r |||¬«      }	n |||¬«      ƒ d{  –—† }	|	r|	S 	 yt        j"                  j                  | v r |d
ddœdddœdddœdœ|dd¬«      S y7 Œ@# t        $ r2}
	 t        j                   d	||
«       n# t        $ r Y nw xY wY d}
~
yd}
~
ww xY w­w)z%Apply prompt template (async version)r   N)Úahf_chat_templaterZ   Úhf_chat_templater[   r\   r]   r^   r_   r`   ra   z5Failed to apply HuggingFace template for model %s: %srb   rc   rd   rg   rh   ri   rm   rn   )Úlitellmrr   r}   rZ   r~   r[   r\   r   rs   rO   rt   ru   rM   Úknown_tokenizer_configrv   r   Údebugrw   )r   rX   r   r}   rZ   r~   r[   r\   ry   rz   Úes              r&   Úaapply_prompt_templatez+IBMWatsonXChatConfig.aapply_prompt_template�   s‘  è ø€ ó 	÷	
õ 	
ô ×+Ñ+×1Ñ1°UÑ:Ù!¨8Ô4Ð4Ü ×,Ñ,×2Ñ2°eÑ;Ù&°Ô9Ð9Ü ×(Ñ(×.Ñ.°%Ñ7à˜UÑ"Ø Ÿ;™; zÓ2°2Ñ6‘Ø  EÑ)Ø Ÿ;™; Ó7¸Ñ;‘à �ðà˜w×=Ñ=Ñ=Ù-°HÀxÔP‘Fá#4¸8ÈhÔ#W×W�Fñ Ø!�Mð ð< ô) !×0Ñ0×6Ñ6¸%Ñ?Ù ð (VØ(4ñð
 (TØ(4ñð
 (YØ(4ñ"ñð "Ø%8Ø#Tô#ð ð& ðC Xùô
 ò ðÜ"×(Ñ(Ð)`ÐbjÐlmÕnøÜ ò áðþð. ûð9üsf   ‚B-EÂ0&D ÃDÃD ÃEÃ 7EÄD Ä	EÄ#D;Ä:EÄ;	EÅEÅEÅEÅ
EÅEÅEc                 ó>   — ddl m} t        j                  | ||¬«      S )z$Apply prompt template (sync version)r   )r~   )r   rX   rx   )rr   r~   r   r{   )r   rX   r~   s      r&   Úapply_prompt_templatez*IBMWatsonXChatConfig.apply_prompt_templateÝ   s*   € õ	
ô $×?Ñ?Ø (Ð;Kð @ó 
ð 	
r(   )N)Ú__name__Ú
__module__Ú__qualname__r.   Úlistr'   ÚdictÚboolr/   r7   ÚtuplerB   rW   Ústaticmethodr{   rƒ   r…   Ú__classcell__)r:   s   @r&   r   r      sµ  ø„ ð
°ð 
¸ó 
ð&°°t±¸dÑ1Bð Àtó ðbà ðbð ðbð ð	bð
 ðbð 
õbð4)Ø˜d™
ð)Ø-0°4©Zð)à	ˆs�T‰z˜3 ™:Ð%Ñ	&ó)ð #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óð0 ð1¨3ð 1¸$¸tÀCÈÀH¹~Ñ:Nð 1ÐcfÐimÑcmò 1ó ð1ðf ð=¨Cð =¸4ÀÀSÈ#ÀXÁÑ;Oð =ÐTWÐZ^ÑT^ò =ó ð=ð~ ð
 Sð 
°D¸¸cÀ3¸h¹Ñ4Hð 
ÈSÐSWÉZò 
ó ô
r(   r   N)Ú__doc__Útypingr   r   r   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.watsonxr   r   Úutilsr
   r   Úopenai.chat.gpt_transformationr   Úcommon_utilsr   r   r$   r(   r&   ú<module>r–      s6   ðñõ å "Ý 7÷÷
 PÝ =Ý *ôQ
˜?¨Oõ Q
r(   