o
    c۷i                     @   s   U d dl mZ d dlmZmZmZmZmZ d dlm	Z	 de
eeee
eeeeeef B f  B f  de
e fddZde
eeef  de
e	 fd	d
Zdee dee ddfddZdedefddZh dZee ed< dS )    )Any)AssistantMessageChatMessageSystemMessageToolMessageUserMessage)Toolmessagesreturnc                 C   s   g }| D ];}| d}|dkrt|}n%|dkrt|}n|dkr)t|}n|dkr3t|}ntd| || q|S )zConvert OpenAI messages to Mistral messages.

    Args:
        messages: The OpenAI messages to convert.

    Returns:
        The Mistral messages.
    roleuser	assistanttoolsystemzUnknown message role: )getr   from_openair   r   r   
ValueErrorappend)r	   converted_messagesopenai_messagemessage_rolemessage r   a/home/ubuntu/vllm_env/lib/python3.10/site-packages/mistral_common/protocol/instruct/converters.pyconvert_openai_messages   s   
r   toolsc                 C   s   dd | D }|S )zConvert OpenAI tools to Mistral tools.

    Args:
        tools: The OpenAI tools to convert.

    Returns:
        The Mistral tools.
    c                 S   s   g | ]}t |qS r   )r   r   ).0openai_toolr   r   r   
<listcomp>5   s    z(convert_openai_tools.<locals>.<listcomp>r   )r   converted_toolsr   r   r   convert_openai_tools*   s   r    valid_fields_namesnamesNc                 C   s^   t  }t  }|D ]}|| v rq|tv r|| q|| q|s#|r-td| d| dS )a  Check if the names are valid field names.

    Names are valid if they are inside the `valid_fields_names` set or chat completion OpenAI fields. If the names are
    not valid field names, raise a ValueError.

    The error message will contain the invalid field names sorted by if they are openAI valid field names or not.

    Args:
        valid_fields_names: The valid field names.
        names: The names to check.

    Raises:
        ValueError: If the names are not valid field names.
    z~Invalid parameters passed to `ChatCompletionRequest.from_openai`:
OpenAI valid parameters but not in `ChatCompletionRequest`: z
Non valid parameters: N)set_OPENAI_COMPLETION_FIELDSaddr   )r!   r"   openai_valid_paramsnon_valid_paramsnamer   r   r   _check_openai_fields_names9   s"   r)   r(   c                 C   s   | t v S )N)r$   )r(   r   r   r   _is_openai_field_name\   s   r*   >#   nseedstopr   audiomodelstorer   top_pstreamtimeoutlogprobsr	   metadata	functions
extra_body
logit_bias
max_tokens
modalities
predictionextra_querytemperaturetool_choiceservice_tiertop_logprobsextra_headersfunction_callstream_optionsresponse_formatpresence_penaltyreasoning_effortfrequency_penaltyweb_search_optionsparallel_tool_callsmax_completion_tokensr$   )typingr   )mistral_common.protocol.instruct.messagesr   r   r   r   r   +mistral_common.protocol.instruct.tool_callsr   listdictstrr   r    r#   r)   boolr*   r$   __annotations__r   r   r   r   <module>   s     *

#