
    {hb                       d dl mZ d dlZd dlZd dlmZ d dlZddlmZm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZ d d	lmZmZmZmZ d d
lmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z%  edee ddf         Z& G d d      Z' G d de'      Z( G d d      Z) G d de)      Z*eejV                  jX                  f	 	 	 	 	 	 	 d"d       Z-eejV                  jX                  f	 	 	 	 	 	 	 d#d       Z-d$dZ.	 	 d$dZ/ejV                  jX                  f	 	 	 	 	 	 	 d%dZ-eejV                  jX                  f	 	 	 	 	 	 	 d&d       Z0eejV                  jX                  f	 	 	 	 	 	 	 d'd        Z0ejV                  jX                  f	 	 	 	 	 	 	 d(d!Z0y))    )annotationsN)partial   )Providerget_provider)ChatCompletionMessageParam)TypeVarCallableoverloadUnionLiteralAny
get_originget_args)AsyncRetryingRetrying)	GeneratorIterable	AwaitableAsyncGenerator)Self)	BaseModel)Partial)HooksHookNameTzIterable[Any]zPartial[Any])boundc                      e Zd Z	 	 ddZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 d	dZ	 d
	 	 	 	 	 	 	 ddZ	 d
	 	 	 	 	 	 	 ddZ	 d
	 	 	 	 	 	 	 ddZy)Responsec                    || _         y Nclientselfr#   s     R/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/instructor/client.py__init__zResponse.__init__"   s         Nc           
     t    t        |t              rd|dg} | j                  j                  d||||||d|S Nuserrolecontent)response_modelvalidation_contextcontextmax_retriesstrictmessages 
isinstancestrr#   creater%   inputr/   r2   r0   r1   r3   kwargss           r&   r9   zResponse.create(   s^     eS! #$E "t{{!! 
)1#
 
 	
r(   c                n    t        |t              rd|dg} | j                  j                  d|||d|S Nr+   r,   )r4   r/   r2   r5   r7   r8   r#   create_with_completionr%   r;   r/   r2   r<   s        r&   r@   zResponse.create_with_completionD   sU     eS! #$E 2t{{11 
)#
 	
 	
r(   c                n    t        |t              rd|dg} | j                  j                  d|||d|S r>   r7   r8   r#   create_iterablerA   s        r&   rD   zResponse.create_iterableZ   sU     eS! #$E +t{{** 
)#
 	
 	
r(   c                n    t        |t              rd|dg} | j                  j                  d|||d|S r>   )r7   r8   r#   create_partialrA   s        r&   rF   zResponse.create_partialp   sU     eS! #$E *t{{)) 
)#
 	
 	
r(   )r#   
InstructorN   NNT)r;   &str | list[ChatCompletionMessageParam]r/   type[T] | Noner2   int | Retryingr0   dict[str, Any] | Noner1   rM   r3   boolreturnT | AnyrI   )r;   rJ   r/   type[T]r2   rL   rO   tuple[T, Any])r;   rJ   r/   rR   r2   rL   rO   Generator[T, None, None])__name__
__module____qualname__r'   r9   r@   rD   rF   r5   r(   r&   r   r   !   s     *.&'48)-
5
 '
 $	

 2
 '
 
 

@ '(	
5
  
 $	
 

4 '(	
5
  
 $	
 
"
4 '(	
5
  
 $	
 
"
r(   r   c                  v    e Zd ZddZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 d		 	 	 	 	 	 	 d
dZ	 d		 	 	 	 	 	 	 ddZy)AsyncResponsec                    || _         y r!   r"   r$   s     r&   r'   zAsyncResponse.__init__   s	    r(   Nc           
        K   t        |t              rd|dg} | j                  j                  d||||||d| d {   S 7 wr*   r6   r:   s           r&   r9   zAsyncResponse.create   sl      eS! #$E (T[['' 
)1#
 
 
 	
 
s   =AA Ac                   K   t        |t              rd|dg} | j                  j                  d|||d| d {   S 7 wr>   r?   rA   s        r&   r@   z$AsyncResponse.create_with_completion   sc      eS! #$E 8T[[77 
)#
 	
 
 	
 
s   :AAAc                v   K   t        |t              rd|dg} | j                  j                  d|||d|S wr>   rC   rA   s        r&   rD   zAsyncResponse.create_iterable   sY      eS! #$E +t{{** 
)#
 	
 	
s   79)r#   AsyncInstructorrH   )r;   rJ   r/   rK   r2   int | AsyncRetryingr0   rM   r1   rM   r3   rN   rO   rP   rQ   )r;   rJ   r/   rR   r2   r_   rO   rS   )r;   rJ   r/   rR   r2   r_   rO   AsyncGenerator[T, None])rU   rV   rW   r'   r9   r@   rD   r5   r(   r&   rY   rY      s     *.+,48)-
5
 '
 )	

 2
 '
 
 

@ ,-	
5
  
 )	
 

4 ,-	
5
  
 )	
 
!
r(   rY   c                  \   e Zd ZU ded<   ded<   ded<   dZded	<   d
ed<   ded<   ej                  j                  ej                  df	 	 	 	 	 	 	 	 	 	 	 d%dZ
	 	 	 	 	 	 d&dZ	 	 	 	 	 	 d&dZ	 d'	 	 	 d(dZed)d       Zed)d       Zed)d       Ze	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+d       Ze	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d,d       Ze	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-d       Ze	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d.d       Z	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/dZe	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d0d       Ze	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d1d       Z	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d2dZe	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d3d       Ze	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d4d       Z	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d5dZe	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d6d        Ze	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d7d!       Z	 	 	 	 d*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d8d"Zd9d#Zd:d$Zy);rG   
Any | Noner#   Callable[..., Any]	create_fninstructor.ModemodeN
str | Nonedefault_modelr   providerr   hooksc                   || _         || _        || _        |t        j                  j
                  k(  rt        j                  j                          || _        || _        |xs
 t               | _
        |t        j                  j                  t        j                  j                  hv r>t        |t        j                  t        j                   f      sJ t#        |       | _        y y Nr"   )r#   rd   rf   
instructorMode	FUNCTIONSwarn_mode_functions_deprecationr<   ri   r   rj   RESPONSES_TOOLS"RESPONSES_TOOLS_WITH_INBUILT_TOOLSr7   openaiOpenAIAsyncOpenAIr   	responsesr%   r#   r9   rf   ri   rj   r<   s          r&   r'   zInstructor.__init__   s     	:??,,,OO;;= %eg
OO++OO>>
 
 fv}}f6H6H&IJJJ%T2DN
r(   c                <    | j                   j                  ||       y r!   )rj   onr%   	hook_namehandlers      r&   ry   zInstructor.on   s     	

i)r(   c                <    | j                   j                  ||       y r!   )rj   offrz   s      r&   r~   zInstructor.off  s     	

y'*r(   c                :    | j                   j                  |       y r!   )rj   clear)r%   r{   s     r&   r   zInstructor.clear  s     	

#r(   c                    | S r!   r5   r%   s    r&   chatzInstructor.chat&      r(   c                    | S r!   r5   r   s    r&   completionszInstructor.completions*  r   r(   c                    | S r!   r5   r   s    r&   r4   zInstructor.messages.  r   r(   c                     y r!   r5   r%   r/   r4   r2   r0   r1   r3   r<   s           r&   r9   zInstructor.create2  s     r(   c                     y r!   r5   r   s           r&   r9   zInstructor.create>  s     r(   c                     y r!   r5   r   s           r&   r9   zInstructor.createJ  s     r(   c                     y r!   r5   r   s           r&   r9   zInstructor.createV  s     r(   c                l    | j                  |      } | j                  d||||||| j                  d|S )N)r/   r4   r2   r0   r1   r3   rj   r5   )handle_kwargsrd   rj   r   s           r&   r9   zInstructor.createb  sO     ##F+t~~ 	
)#1**	
 	
 		
r(   c                     y r!   r5   r   s           r&   rF   zInstructor.create_partialy       #&r(   c                     y r!   r5   r   s           r&   rF   zInstructor.create_partial       $'r(   c                    d|d<   | j                  |      }t        j                  |   } | j                  d||||||| j                  d|S NTstreamr4   r/   r2   r0   r1   r3   rj   r5   )r   rm   r   rd   rj   r   s           r&   rF   zInstructor.create_partial  si      x##F+#++N;t~~ 	
)#1**	
 	
 		
r(   c                     y r!   r5   r%   r4   r/   r2   r0   r1   r3   r<   s           r&   rD   zInstructor.create_iterable  r   r(   c                     y r!   r5   r   s           r&   rD   zInstructor.create_iterable  r   r(   c                    d|d<   | j                  |      }t        |   } | j                  d||||||| j                  d|S r   )r   r   rd   rj   r   s           r&   rD   zInstructor.create_iterable  sc      x##F+!.1t~~ 	
)#1**	
 	
 		
r(   c                     y r!   r5   r   s           r&   r@   z!Instructor.create_with_completion  r   r(   c                     y r!   r5   r   s           r&   r@   z!Instructor.create_with_completion  s     r(   c                    | j                  |      } | j                  d||||||| j                  d|}||j                  fS )Nr   r5   r   rd   rj   _raw_response)	r%   r4   r/   r2   r0   r1   r3   r<   models	            r&   r@   z!Instructor.create_with_completion  s_     ##F+ 	
)#1**	
 	
 e))))r(   c                ^    | j                   j                         D ]  \  }}||vs|||<    |S )a  
        Handle and process keyword arguments for the API call.

        This method merges the provided kwargs with the default kwargs stored in the instance.
        It ensures that any kwargs passed to the method call take precedence over the default ones.
        )r<   items)r%   r<   keyvalues       r&   r   zInstructor.handle_kwargs  s<     ++++- 	$JC& #s	$ r(   c                N    |dvrt        | j                  |      S t        | |      S )N>   r   r9   r4   )getattrr#   )r%   attrs     r&   __getattr__zInstructor.__getattr__  s)    554;;--tT""r(   r#   rb   r9   rc   rf   re   ri   r   rj   zHooks | Noner<   r   )r{   z|HookName | Literal['completion:kwargs', 'completion:response', 'completion:error', 'completion:last_attempt', 'parse:error']r|   zCallable[[Any], None]rO   Noner!   )r{   zHookName | Literal['completion:kwargs', 'completion:response', 'completion:error', 'completion:last_attempt', 'parse:error'] | NonerO   r   )rO   r   rI   NNT)r%   r^   r/   rR   r4    list[ChatCompletionMessageParam]r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   zAwaitable[T])r%   r   r/   rR   r4   r   r2   rL   r0   rM   r1   rM   r3   rN   r<   r   rO   r   )r%   r^   r/   r   r4   r   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   zAwaitable[Any])r%   r   r/   r   r4   r   r2   rL   r0   rM   r1   rM   r3   rN   r<   r   rO   r   )r/   rK   r4   r   r2   int | Retrying | AsyncRetryingr0   rM   r1   rM   r3   rN   r<   r   rO   z'T | Any | Awaitable[T] | Awaitable[Any])r%   r^   r/   rR   r4   r   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   r`   )r%   r   r/   rR   r4   r   r2   rL   r0   rM   r1   rM   r3   rN   r<   r   rO   rT   )r/   rR   r4   r   r2   r   r0   rM   r1   rM   r3   rN   r<   r   rO   2Generator[T, None, None] | AsyncGenerator[T, None])r%   r^   r4   r   r/   rR   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   r`   )r%   r   r4   r   r/   rR   r2   rL   r0   rM   r1   rM   r3   rN   r<   r   rO   rT   )r4   r   r/   rR   r2   r   r0   rM   r1   rM   r3   rN   r<   r   rO   r   )r%   r^   r4   r   r/   rR   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   zAwaitable[tuple[T, Any]])r%   r   r4   r   r/   rR   r2   rL   r0   rM   r1   rM   r3   rN   r<   r   rO   rS   )r4   r   r/   rR   r2   r   r0   rM   r1   rM   r3   rN   r<   r   rO   z(tuple[T, Any] | Awaitable[tuple[T, Any]])r<   dict[str, Any]rO   r   )r   r8   rO   r   )rU   rV   rW   __annotations__rh   rm   rn   TOOLSr   OPENAIr'   ry   r~   r   propertyr   r   r4   r   r9   rF   rD   r@   r   r   r5   r(   r&   rG   rG      s_   !!
 $M:$L !+ 5 5%__"33 #3 	3
 3 3 34** '* 
* ++ '+ 
+8 $
$ 
$        
 ,-48)-			 3	 )		
 2	 '	 	 	 
	 	 
 '(48)-			 3	 $		
 2	 '	 	 	 
	 	 
 ,-48)-			 3	 )		
 2	 '	 	 	 
	 	 
 '(48)-			 3	 $		
 2	 '	 	 	 
	 	 7848)-
&
 3
 4	

 2
 '
 
 
 
1
. 
 ,-48)-	&	&	& 3	& )		&
 2	& '	& 	& 	& 
!	& 	& 
 '(48)-	'	'	' 3	' $		'
 2	' '	' 	' 	' 
"	' 	' 7848)-

 3
 4	

 2
 '
 
 
 
<
4 
 ,-48)-	&	&2	&  	& )		&
 2	& '	& 	& 	& 
!	& 	& 
 '(48)-	'	'2	'  	' $		'
 2	' '	' 	' 	' 
"	' 	' 7848)-
2
  
 4	

 2
 '
 
 
 
<
2 
 ,-48)-	'	'2	'  	' )		'
 2	' '	' 	' 	' 
"	' 	' 
 '(48)-		2	  	 $		
 2	 '	 	 	 
	 	 7848)-*2*  * 4	*
 2* '* * * 
2*.
#r(   rG   c                  p   e Zd ZU ded<   ded<   ded<   dZded	<   d
ed<   ded<   ej                  j                  ej                  df	 	 	 	 	 	 	 	 	 	 	 ddZ
	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)r^   rb   r#   rc   rd   re   rf   Nrg   rh   r   ri   r   rj   c                X   || _         || _        || _        || _        || _        |xs
 t               | _        |t        j                  j                  t        j                  j                  hv r>t        |t        j                  t        j                  f      sJ t        |       | _        y y rl   )r#   rd   rf   r<   ri   r   rj   rm   rn   rq   rr   r7   rs   rt   ru   rY   rv   rw   s          r&   r'   zAsyncInstructor.__init__&  s     	 %eg
OO++OO>>
 
 fv}}f6H6H&IJJJ*$7DN
r(   c                  K   | j                  |      }t        |      t        hv rt        |      rt        |      d   ~| j                  t
        j                  j                  t
        j                  j                  t
        j                  j                  hvr% | j                  d|t        |      d   ||||d|S  | j                  d||||||| j                  d| d {   S 7 w)Nr   )r4   r/   r2   r0   r1   r3   r/   r0   r1   r2   r4   r3   rj   r5   )r   r   r   r   rf   rm   rn   PARALLEL_TOOLSVERTEXAI_PARALLEL_TOOLSANTHROPIC_PARALLEL_TOOLSrD   rd   rj   r   s           r&   r9   zAsyncInstructor.create=  s     ##F+ ~&8*4((+7		..7788 (4'' !'7:'#5   $T^^ 	
)1#**	
 	
 	
 		
 	
s   C"C+$C)%C+c                  K   | j                  |      }d|d<    | j                  dt        j                  |   |||||| j                  d| d {   2 3 d {   }| 7 7 6 y wNTr   r   r5   )r   rd   rm   r   rj   )	r%   r/   r4   r2   r0   r1   r3   r<   items	            r&   rF   zAsyncInstructor.create_partialj  s      ##F+x . 	!
%--n=1#**	!
 	!
 	
 
	 
	$ J	
 
	 	
s6   AA+A%A+A)A'A)A+'A))A+c                  K   | j                  |      }d|d<    | j                  dt        |   |||||| j                  d| d {   2 3 d {   }| 7 7 6 y wr   )r   rd   r   rj   )	r%   r4   r/   r2   r0   r1   r3   r<   r   s	            r&   rD   zAsyncInstructor.create_iterable  s      ##F+x . 	!
#N31#**	!
 	!
 	
 
	 
	$ J	
 
	 	
s6   AA!AA!AAAA!AA!c                   K   | j                  |      } | j                  d||||||| j                  d| d {   }||j                  fS 7 w)Nr   r5   r   )	r%   r4   r/   r2   r0   r1   r3   r<   responses	            r&   r@   z&AsyncInstructor.create_with_completion  sm      ##F+' 	
)1#**	
 	
 	
 ////	
s   9AAAr   r   )r/   rK   r4   r   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   rP   )r/   rR   r4   r   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   r`   )r4   r   r/   rR   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   r`   )r4   r   r/   rR   r2   r_   r0   rM   r1   rM   r3   rN   r<   r   rO   rS   )rU   rV   rW   r   rh   rm   rn   r   r   r   r'   r9   rF   rD   r@   r5   r(   r&   r^   r^     s   !!
 $M:$L !+ 5 5%__"88 #8 	8
 8 8 86 ,-48)-+
&+
 3+
 )	+

 2+
 '+
 +
 +
 
+
b ,-48)- 3 )	
 2 '   
!8 ,-48)-2   )	
 2 '   
!8 ,-48)-020  0 )	0
 20 '0 0 0 
0r(   r^   c                     y r!   r5   r#   rf   r<   s      r&   from_openair          	r(   c                     y r!   r5   r   s      r&   r   r     r   r(   c                >     |j                   j                  |d| i|S Nr;   rv   r9   r4   r#   argsr<   s       r&   map_chat_completion_to_responser     s2    "6""	  r(   c                Z   K    |j                   j                  |d| i| d {   S 7 wr   r   r   s       r&   %async_map_chat_completion_to_responser     sB      )!!((	    s   "+)+c           
     ~   t        | d      rt        t        | j                              }nt        j
                  }t        | t        j                  t        j                  f      sdd l
}|j                  dd       |t        j                  hv rQ|t        j                  j                  t        j                  j                   t        j                  j"                  hv sJ |t        j$                  t        j&                  hv rj|t        j                  j                  t        j                  j"                  t        j                  j(                  t        j                  j*                  hv sJ |t        j
                  t        j,                  hv r|t        j                  j                  t        j                  j"                  t        j                  j.                  t        j                  j0                  t        j                  j*                  t        j                  j2                  t        j                  j4                  t        j                  j6                  t        j                  j8                  h	v sJ t        | t        j                        rt;        d	| t        j<                  |t        j                  j8                  t        j                  j6                  hvr | j>                  j@                  jB                  ntE        tF        |       |      ||d|S t        | t        j                        rtI        d	| t        j<                  |t        j                  j8                  t        j                  j6                  hvr | j>                  j@                  jB                  ntE        tJ        |       |      ||d|S y )
Nbase_urlr   z{Client should be an instance of openai.OpenAI or openai.AsyncOpenAI. Unexpected behavior may occur with other client types.   )
stacklevelr"   r9   rf   )r#   r9   rf   ri   r5   )&hasattrr   r8   r   r   r   r7   rs   rt   ru   warningswarn
OPENROUTERrm   rn   r   OPENROUTER_STRUCTURED_OUTPUTSJSONANYSCALETOGETHERJSON_SCHEMAMD_JSON
DATABRICKSro   r   TOOLS_STRICTJSON_O1rq   rr   rG   patchr   r   r9   r   r   r^   r   )r#   rf   r<   ri   r   s        r&   r   r     s   
 vz"FOO 45??fv}}f.@.@AB J 	 	

 H''((OO!!OO99OO  
 
 	
 
 H%%x'8'899OO!!OO  OO''OO##	
 
 	
 
 HOOX%8%899OO!!OO  OO%%OO**OO##OO((OO##OO++OO>>

 

 
	
 

 &&--( 
##OOFFOO33 {{..55 <VL	 
 
 	
" &&,,- 
##OOFFOO33 {{..55 B6R	 
 
 	
 .r(   c                     y r!   r5   
completionrf   r<   s      r&   from_litellmr   )  s    
 r(   c                     y r!   r5   r   s      r&   r   r   1  s    
 r(   c                    t        j                  |       }|s$t        dd t        j                  | |      |d|S t        dd t        j                  | |      |d|S )Nr   )r#   r9   rf   r5   )inspectiscoroutinefunctionrG   rm   r   r^   )r   rf   r<   is_asyncs       r&   r   r   9  s}    
 **:6H 
##:DA
 	
 	
  
##:DA
 	
 	
r(   )r#   zopenai.OpenAIrf   re   r<   r   rO   rG   )r#   zopenai.AsyncOpenAIrf   re   r<   r   rO   r^   )rO   r   )r#   z"openai.OpenAI | openai.AsyncOpenAIrf   re   r<   r   rO   Instructor | AsyncInstructor)r   zCallable[..., Awaitable[Any]]rf   re   r<   r   rO   r^   )r   rc   rf   re   r<   r   rO   rG   )r   z2Callable[..., Any] | Callable[..., Awaitable[Any]]rf   re   r<   r   rO   r   )1
__future__r   rs   r   	functoolsr   rm   utilsr   r   openai.types.chatr   typingr	   r
   r   r   r   r   r   r   tenacityr   r   collections.abcr   r   r   r   typing_extensionsr   pydanticr   instructor.dsl.partialr   instructor.hooksr   r   r   r   rY   rG   r^   rn   r   r   r   r   r   r5   r(   r&   <module>r      s9   "     ) 8	 	 	 K J "  * , CuYGHIc
 c
LJ
H J
ZG# G#T
Q0j Q0h 
 'OO11		
	 	 		 
	 
 'OO11		
	 	 		 
	 'OO11P
.P

P
 P
 "	P
f 
 'OO11-
  	 
 
 'OO11"
  	 
 'OO11
B


 
 "	
r(   