
    {h                       d dl mZ d dlmZmZ d dlmZ d dlZd dlm	Z	 d dlm
Z
mZ e
rd dlmZ d dlmZ d dlmZ n	 d dlmZ d dlmZ d dlmZ dd	Zeej*                  j,                  f	 	 	 	 	 	 	 dd
       Zeej*                  j,                  f	 	 	 	 	 	 	 dd       Zej*                  j,                  f	 	 	 	 	 	 	 ddZy# e$ r	 dZdZdZY w xY w)    )annotations)Anyoverload)	BaseModelN)_validate_model_from_json)TYPE_CHECKINGr   )Client)chatc                   g }| D ]  }|d   }|j                  dd      }t        |t              rt        j                  |      }nt        d      |dk(  r%|j                  t        j                  |             u|dk(  r%|j                  t        j                  |             |dk(  r%|j                  t        j                  |             |dk(  r%|j                  t        j                  |             t        d	|        |S )
Nrolecontent z.Only string content supported for xAI provideruser	assistantsystemtoolzUnsupported role: )get
isinstancestrxchattext
ValueErrorappendr   r   r   tool_result)messages	convertedmr   r   cs         V/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/instructor/client_xai.py_convert_messagesr       s    I :y%%	2&gs#

7#AMNN6>UZZ]+[ U__Q/0XU\\!_-V^U..w781$899!:"     c                     y N clientmodekwargss      r   from_xair)   1   s    
  r!   c                     y r#   r$   r%   s      r   r)   r)   9   s    
 "%r!   c           
     ~    t         j                  j                  t         j                  j                  h}|vr1ddlm}  |t              d|D cg c]  }t        |       c}      t         t        t        f      s$ddlm
}  |dt               j                         	 d
	 	 	 	 	 	 	 d fd}	 d
	 	 	 	 	 	 	 d fd}t         t              r2t        j                  d |t         j                  j                  d	|S t        j                   d |t         j                  j                  d	|S c c}w )Nr   )	ModeErrorxAI)r'   providervalid_modes)ClientErrorz\Client must be an instance of xai_sdk.sync.client.Client or xai_sdk.aio.client.Client. Got: c                  K   t        |      }|j                  d      }|j                  dd        |j                  dd        |j                  dd        |j                  dd         j                  j                  d
||d|}| |j	                          d {   }|S t
        j                  j                  k(  r|j                  |        d {   \  }}	|	S t        j                  | j                  | j                  xs d| j                               }
|j                  j                  j!                  |
       t        j"                  j$                  j&                  |j                  j(                  _        |j	                          d {   }|j,                  d	   j.                  j0                  }t3        | |d |      S 7 +7 7 :wNmodelmax_retriesvalidation_contextcontexthooks)r3   r   r   )namedescription
parametersr   r$   r    popr
   createsample
instructorModeJSONparser   r   __name____doc__model_json_schemaprototoolsr   chat_pb2ToolModeTOOL_MODE_AUTOtool_choicer'   
tool_callsfunction	argumentsr   response_modelr   strictcall_kwargs
x_messagesr3   r
   resp_parsedr   argsr&   r'   s               r   acreatezfrom_xai.<locals>.acreateW   sv     'x0
(t,,d3	4(&!v{{!!R
RkR!&DK:??'''"jj88IAvM::#,,*228b);;=D
 JJ##D)*/..*A*A*P*PDJJ""'&D??1%..88D,^T4PP ' 9 's7   BGG7GG
B<GG6G
GGc                Z   t        |      }|j                  d      }|j                  dd        |j                  dd        |j                  dd        |j                  dd         j                  j                  d
||d|}| |j	                         }|S t
        j                  j                  k(  r|j                  |       \  }}	|	S t        j                  | j                  | j                  xs d| j                               }
|j                  j                  j!                  |
       t        j"                  j$                  j&                  |j                  j(                  _        |j	                         }|j,                  d	   j.                  j0                  }t3        | |d |      S r2   r;   rO   s               r   r=   zfrom_xai.<locals>.createy   sX    'x0
(t,,d3	4(&!v{{!!R
RkR!;;=DK:??'''

>2IAvM::#,,*228b);;=D
 JJ##D)*/..*A*A*P*PDJJ""';;=D??1%..88D,^T4PPr!   )r&   r=   r.   r'   )T)rP   ztype[BaseModel] | Noner   list[dict[str, Any]]rQ   boolrR   r   r$   )r?   r@   rA   TOOLSinstructor.exceptionsr,   r   r   
SyncClientAsyncClientr0   typerC   AsyncInstructorProviderXAI
Instructor)	r&   r'   r(   r/   r,   r   r0   rX   r=   s	   ``       r   r)   r)   A   s   
 ??'')>)>?K;3TU8UAQ8U
 	
 fz;785L))*,
 	
  Q. Q& Q  Q 	 QJ  Q. Q& Q  Q 	 QD &+&)) 
((,,	

 
 	
 $$ 
((,,	

 
 	
q 9Vs   D:)r   rZ   )r&   r^   r'   instructor.Moder(   r   returnzinstructor.Instructor)r&   r_   r'   re   r(   r   rf   zinstructor.AsyncInstructor)r&   zSyncClient | AsyncClientr'   re   r(   r   rf   z2instructor.Instructor | instructor.AsyncInstructor)
__future__r   typingr   r   pydanticr   r?   instructor.function_callsr   r   xai_sdk.sync.clientr	   r^   xai_sdk.aio.clientr_   xai_sdkr
   r   ImportErrorr    r@   rA   r)   r$   r!   r   <module>ro      s"   "     ? %88%<<), 
 'OO00  
    	  
  
 'OO00%%
% %  	% 
% 'OO00i
$i

i
 i
 8	i
Y  
s   C CC