o
    #1 i                     @   s   U d dl mZmZmZmZ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eef f f  f 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DictListSetUnion)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.
    ZroleuserZ	assistantZtoolsystemzUnknown message role: )getr   from_openair   r
   r	   
ValueErrorappend)r   Zconverted_messagesZopenai_messageZmessage_rolemessage r   w/home/app/PaddleOCR-VL-test/.venv_paddleocr/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   ).0Zopenai_toolr   r   r   
<listcomp>5   s    z(convert_openai_tools.<locals>.<listcomp>r   )r   Z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   Zopenai_valid_paramsZ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$   >#   streamZ
max_tokensZmax_completion_tokensZtemperaturenZ
modalitiesZtool_choicestopZ
logit_biasstorer   Zfunction_callZlogprobsZpresence_penaltyseedZservice_tierZresponse_formatextra_headersZ
extra_bodyr   Zreasoning_effortmetadataZstream_optionsZ	functionsr   Zparallel_tool_callsZfrequency_penaltyZextra_queryZ
predictionZtop_pZweb_search_optionsmodeltimeoutZtop_logprobsZaudior    )typingr   r   r   r   r   Z)mistral_common.protocol.instruct.messagesr   r   r	   r
   r   Z+mistral_common.protocol.instruct.tool_callsr   strr   r   r#   boolr$   r    __annotations__r   r   r   r   <module>   s     2

#