
    :i                         % S SK Jr  S SKJrJrJrJrJr  S SKJ	r	  S\
\\\\
\\\\\\4   -  4      -  4      S\
\   4S jrS\
\\\4      S\
\	   4S jrS	\\   S
\\   SS4S jrS\S\4S jr1 Skr\\   \S'   g)    )Any)AssistantMessageChatMessageSystemMessageToolMessageUserMessage)Toolmessagesreturnc                 d   / nU  H  nUR                  S5      nUS:X  a  [        R                  " U5      nOeUS:X  a  [        R                  " U5      nOHUS:X  a  [        R                  " U5      nO+US:X  a  [
        R                  " U5      nO[        SU 35      eUR                  U5        M     U$ )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messages        e/home/james-whalen/.local/lib/python3.13/site-packages/mistral_common/protocol/instruct/converters.pyconvert_openai_messagesr      s     -/"%))&16!!--n=G[(&22>BGV#!--n=GX%#//?G5l^DEE!!'* #     toolsc                 \    U  Vs/ s H  n[         R                  " U5      PM     nnU$ s  snf )zwConvert OpenAI tools to Mistral tools.

Args:
    tools: The OpenAI tools to convert.

Returns:
    The Mistral tools.
)r	   r   )r   openai_toolconverted_toolss      r   convert_openai_toolsr!   *   s1     INNt''4ON Os    )valid_fields_namesnamesNc                     [        5       n[        5       nU H8  nX@;   a  M
  U[        ;   a  UR                  U5        M'  UR                  U5        M:     U(       d  U(       a  [        SU SU 35      eg)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names        r   _check_openai_fields_namesr+   9   s      %u%..##D)  &  .KK^J_ `%%5$68
 	
 /r   r*   c                     U [         ;   $ )N)r&   )r*   s    r   _is_openai_field_namer-   \   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   <module>rW      s      =4S4S#S#X2F-F(G#HHHIJ	+:S#X	$Z 
3s8  
CH  
QU  
F- - -$' 3s8 $r   