o
    PL
j
                     @   s`   d Z ddlZddlmZ ddlmZ ddlmZ G dd deZedd	d
ddddZ	ee	 dS )zQwen Portal provider profile.    N)Any)register_provider)ProviderProfilec                   @   s   e Zd ZdZdeeeef  deeeef  fddZdddedB deeef fd	d
Z	ddddedB dedB de
eeef eeef f fddZdS )QwenProfileuN   Qwen Portal — message normalization, vl_high_resolution, metadata top-level.messagesreturnc                 C   s  t |}|s	|S |D ]E}t|tsq|d}t|tr&d|dg|d< qt|trPg }|D ]}t|tr?|d|d q/t|trI|| q/|rP||d< q|D ],}t|tr|ddkr|d}t|tr||r|t|d tr|ddi|d d	<  |S qS|S )
zNormalize content to list-of-dicts format.

        Inject cache_control on system message.

        Matches the behavior of run_agent.py:_qwen_prepare_chat_messages().
        contenttext)typer	   rolesystemr
   	ephemeralcache_control)copydeepcopy
isinstancedictgetstrlistappend)selfr   preparedmsgr   normalized_partspart r   O/home/kuhnn/.hermes/hermes-agent/plugins/model-providers/qwen-oauth/__init__.pyprepare_messages   sD   








 zQwenProfile.prepare_messagesN)
session_idr    c                K   s   ddiS )Nvl_high_resolution_imagesTr   )r   r    contextr   r   r   build_extra_body6   s   zQwenProfile.build_extra_body)reasoning_configqwen_session_metadatar$   r%   c                K   s   i }|r||d< i |fS )z;Qwen metadata goes to top-level api_kwargs, not extra_body.metadatar   )r   r$   r%   r"   	top_levelr   r   r   build_api_kwargs_extras;   s   z#QwenProfile.build_api_kwargs_extras)__name__
__module____qualname____doc__r   r   r   r   r   r#   tupler(   r   r   r   r   r   
   s$    **

r   z
qwen-oauth)qwenzqwen-portalzqwen-cli)QWEN_API_KEYzhttps://portal.qwen.ai/v1oauth_externali   )namealiasesenv_varsbase_url	auth_typedefault_max_tokens)
r,   r   typingr   	providersr   providers.baser   r   r.   r   r   r   r   <module>   s    ?	