
    6iQ                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 	 	 	 	 	 	 ddZ	 	 	 	 	 	 dd	Z	 	 	 	 	 	 dd
Z	 	 	 	 	 	 ddZej                  eedej                   eediZy)zMistral-specific utilities.

This module contains utilities specific to the Mistral provider,
including reask functions, response handlers, and message formatting.
    )annotations)Any   )Modegenerate_openai_schema)dump_messagec                    | j                         } d|j                  d   j                  j                  dg}|j	                  dd| dd       | d   j                  |       | S )z
    Handle reask for Mistral structured outputs mode when validation fails.

    Kwargs modifications:
    - Adds: "messages" (assistant content and user correction request)
    	assistantr   )rolecontentuserValidation Error found:
.
Recall the function correctly, fix the errorsmessages)copychoicesmessager   appendextend)kwargsresponse	exception
reask_msgss       m/root/.openclaw/workspace/visionaryfx/venv/lib/python3.12/site-packages/instructor/providers/mistral/utils.py reask_mistral_structured_outputsr      sy     [[]F  ''*22::	
J +I;6ef	
 :j)M    c           	     T   | j                         } t        |j                  d   j                        g}|j                  d   j                  j                  D ]:  }|j                  d|j                  |j                  j                  d| dd       < | d   j                  |       | S )z
    Handle reask for Mistral tools mode when validation fails.

    Kwargs modifications:
    - Adds: "messages" (tool response messages indicating validation errors)
    r   toolr   r   )r   tool_call_idnamer   r   )
r   r	   r   r   
tool_callsr   idfunctionr!   r   )r   r   r   r   	tool_calls        r   reask_mistral_toolsr&   .   s     [[]Fx//2::;<J%%a(00;; 

	 )!**///	{:ij		


 :j)Mr   c                8    dt        |       dg|d<   d|d<   | |fS )z
    Handle Mistral tools mode.

    Kwargs modifications:
    - Adds: "tools" (list with function schema)
    - Adds: "tool_choice" set to "any"
    r$   )typer$   toolsanytool_choicer   )response_model
new_kwargss     r   handle_mistral_toolsr.   J   s7     .~>	
Jw !&J}:%%r   c                t    ddl m}  ||       |d<   |j                  dd       |j                  dd       | |fS )z
    Handle Mistral structured outputs mode.

    Kwargs modifications:
    - Adds: "response_format" derived from the response model
    - Removes: "tools" and "response_model" from kwargs
    r   )#response_format_from_pydantic_modelresponse_formatr)   Nr,   )mistralai.extrar0   pop)r,   r-   r0   s      r   !handle_mistral_structured_outputsr4   ^   s@     D$G$WJ !NN7D!NN#T*:%%r   )reaskr   N)r   dict[str, Any]r   r   r   	Exception)r,   z	type[Any]r-   r6   returnz tuple[type[Any], dict[str, Any]])__doc__
__future__r   typingr   moder   processing.schemar   
utils.corer	   r   r&   r.   r4   MISTRAL_TOOLSMISTRAL_STRUCTURED_OUTPUTSMISTRAL_HANDLERS r   r   <module>rC      s    #   7 & < 8&&+9&%&(&&+9&%&( 	$( 	##15&	 r   