
    dh.                        S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
JrJr  S SKrS SKJrJr  S SKJrJrJr  S SKJrJrJrJrJrJrJrJrJr  S SKJ r J!r!J"r"  S SK#J$r$J%r%J&r&  S S	K'J(r(J)r)J*r*  \RV                  " \,5      r-S
r.Sr/S\S\04S jr1S\
\2\4   S\4S jr3S\
\2\4   S\\   S\4S jr4\S\S\2S\2S\S\4
S j5       r5 " S S\5      r6g)    N)asynccontextmanager)AnyAsyncIteratorDictIteratorListMappingOptionalType)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)BaseChatModelagenerate_from_streamgenerate_from_stream)		AIMessageAIMessageChunkBaseMessageBaseMessageChunkChatMessageChatMessageChunkHumanMessageHumanMessageChunkSystemMessage)ChatGenerationChatGenerationChunk
ChatResult)convert_to_secret_strget_from_dict_or_envget_pydantic_field_names)
ConfigDictField	SecretStrz/https://api.lingyiwanwu.com/v1/chat/completionsz%https://api.01.ai/v1/chat/completionsmessagereturnc                 b   [        U [        5      (       a  U R                  U R                  S.nU$ [        U [        5      (       a  SU R                  S.nU$ [        U [
        5      (       a  SU R                  S.nU$ [        U [        5      (       a  SU R                  S.nU$ [        SU  35      e)N)rolecontentuser	assistantzGot unknown type )
isinstancer   r&   r'   r   r   r   	TypeError)r#   message_dicts     Z/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/chat_models/yi.py_convert_message_to_dictr.   )   s    ';'' 'I  
G\	*	* &7??C  
GY	'	' +H  
G]	+	+ +H  +G9566    _dictc                     U S   nUS:X  a  [        U S   S9$ US:X  a"  [        U R                  SS5      =(       d    SS9$ US:X  a  [        U S   S9$ [        U S   US9$ )	Nr&   r(   r'   r'   r)    systemr'   r&   )r   r   getr   )r0   r&   s     r-   _convert_dict_to_messager7   9   so    =Dv~E)$455		9b!9!?R@@		y!1225#3$??r/   default_classc                     U S   nU R                  S5      =(       d    SnUS:X  d
  U[        :X  a	  [        US9$ US:X  d
  U[        :X  a	  [        US9$ U(       d
  U[        :X  a	  [        X2S9$ U" X2S9$ )	Nr&   r'   r3   r(   r2   r)   r5   )r'   type)r6   r   r   r   )r0   r8   r&   r'   s       r-   _convert_delta_to_message_chunkr;   E   su     fDii	"(bGv~*;; 11		 ?g..	"22;;W88r/   clientmethodurlkwargsc                   #    SSK Jn  U R                  " X40 UD6 IS h  vN nU" U5      7v   S S S 5      IS h  vN   g  N  N! , IS h  vN  (       d  f       g = f7f)Nr   )EventSource)	httpx_sserA   stream)r<   r=   r>   r?   rA   responses         r-   aconnect_httpx_sserE   U   s?      &}}V3F33x(## 433333sA   AAAAAAAAAAAAc                     ^  \ rS rSr% Sr\S\\\4   4S j5       r\S\	4S j5       r
\" \S9r\\S'   \" SS	9r\\S
'   \" SS9r\\S'   Sr\	\S'   \" SSS9r\\S'   Sr\\S'   \" SS9r\\   \S'   Sr\\S'   \" \S9r\\\4   \S'   \" SS9rS\SS4U 4S jjr\S\\\4   4S j5       r   S/S \!\"   S!\\!\      S"\\#   S\S\$4
S# jjr%  S/S \!\"   S!\\!\      S"\\#   S\S\&\'   4
S$ jjr(   S0S \!\"   S!\\!\      S"\\)   S%\\	   S\S\$4S& jjr*  S/S \!\"   S!\\!\      S"\\)   S\S\+\'   4
S' jjr,S \!\"   S\S\-R\                  4S( jr/S \!\"   S\S\\\4   4S) jr0S\S\\\4   4S* jr1S+\2\\4   S\$4S, jr3\S\4S- j5       r4S.r5U =r6$ )1ChatYi_   zYi chat models API.r$   c                 
    SS0$ )N
yi_api_key
YI_API_KEY selfs    r-   
lc_secretsChatYi.lc_secretsb   s     ,
 	
r/   c                     g)NTrL   rM   s    r-   lc_serializableChatYi.lc_serializableh   s    r/   )defaultyi_api_baseapi_key)aliasrJ   cnregionF	streaming<   timeout)rT   rW   request_timeoutzyi-largemodelffffff?temperaturetop_p)default_factorymodel_kwargsT)populate_by_namer?   Nc                 2  > [        [        USS/S5      5      US'   UR                  S5      c9  UR                  SS5      R                  5       nUS:X  a
  [        US'   O	[
        US'   [        U R                  5      nUR                  S0 5      n[        U5       H1  nXT;   a  [        S	U S
35      eXS;  d  M  UR                  U5      XE'   M3     UR                  UR                  5       5      nU(       a  [        SU S35      eXAS'   [        TU ]8  " S0 UD6  g )NrJ   rV   rK   rU   rY   rX   globalrc   zFound z supplied twice.zParameters za should be specified explicitly. Instead they were passed in as part of `model_kwargs` parameter.rL   )r   r   r6   lowerDEFAULT_API_BASE_GLOBALDEFAULT_API_BASE_CNr   	__class__list
ValueErrorpopintersectionkeyssuper__init__)rN   r?   rY   all_required_field_namesextra
field_nameinvalid_model_kwargsrj   s          r-   rq   ChatYi.__init__z   s%   4 y) 
| ::m$,ZZ$/557F!(?}%(;}%#;DNN#K 

>2.v,J" 6*5E!FGG9$*JJz$:!	 '  8DDUZZ\R23 4S T 
 "'~"6"r/   c                 `    U R                   U R                  U R                  U R                  S.$ )N)r^   r`   ra   rC   )r^   r`   ra   rZ   rM   s    r-   _default_paramsChatYi._default_params   s,     ZZ++ZZnn	
 	
r/   messagesstoprun_managerc                    U R                   (       a   U R                  " SXUS.UD6n[        U5      $ U R                  " U40 UD6nUR                  S:w  a  [        SU 35      eUR                  5       nU R                  U5      $ )N)rz   r{   r|      Error from Yi api response: rL   )rZ   _streamr   _chatstatus_coderl   json_create_chat_result)rN   rz   r{   r|   r?   stream_iterresrD   s           r-   	_generateChatYi._generate   s     >>,, !+IOK (44jj,V,??c!;C5ABB88:''11r/   c              +   \  #    U R                   " U4SS0UD6nUR                  S:w  a  [        SU 35      e[        nUR	                  5        H  nUR                  S5      R                  S5      nUR                  SS5      n[        U5      S:  a  US   OS nUc  MP  US	:X  a    g [        R                  " U5      n	U	R                  S
5       HX  n
[        U
R                  S5      U5      nUR                  n[        US9nU(       a  UR                  UR                   US9  Uv   MZ     M     g 7f)NrC   Tr~   r   zutf-8z
zdata:    z[DONE]choicesdeltar#   chunk)r   r   rl   r   
iter_linesdecodestripsplitlenr   loadsr6   r;   rj   r   on_llm_new_tokenr'   )rN   rz   r{   r|   r?   r   default_chunk_classr   partsrD   mcg_chunks               r-   r   ChatYi._stream   s     jj9$9&9??c!;C5ABB,^^%ELL)//7EKK!,E #E
QE!HDE} zz%(H\\),7EE'N$7 ',oo#.u=00h0O - &s   D*D,rC   c                 &  #    Ub  UOU R                   nU(       a(  U R                  " U4X#S.UD6n[        U5      I S h  vN $ U R                  " S0 UD6nU R                  " U40 UD6n	SS Kn
U
R                  XR                  S9 IS h  vN nUR                  U R                  U	S9I S h  vN nUR                  5         S S S 5      IS h  vN   U R                  WR                  5       5      $  N Ng NG N)! , IS h  vN  (       d  f       N>= f7f)N)r{   r|   r   headersr\   r   rL   )rZ   _astreamr   _create_headers_parameters_create_payload_parametershttpxAsyncClientr]   postrU   raise_for_statusr   r   )rN   rz   r{   r|   rC   r?   should_streamr   r   payloadr   r<   rD   s                r-   
_agenerateChatYi._agenerate   s     #)"4$..--#@FK /{;;;11;F;11(EfE$$%9%9 % 
 
#[[)9)9[HHH%%'	
 

 ''88 <
 I
 
 
 
sj   <DC/A
D	C1
DC7+C3,C7 DC5$D1D3C75D7D=D >D
Dc                *  #    U R                   " S0 UD6nU R                  " U4SS0UD6nSS KnUR                  XPR                  S9 IS h  vN n[        USU R                  US9 IS h  vN n	U	R                  5         S h  vN n
[        R                  " U
R                  5      n[        US   5      S:X  a  M=  US   S   n[        US   [        5      nUR                  S	S 5      nUb  S	U0OS n[        XS
9nU(       a"  UR!                  UR"                  US9I S h  vN   U7v   Uc  M    S S S 5      IS h  vN   S S S 5      IS h  vN   g  GN N N N7
 N, N ! , IS h  vN  (       d  f       N5= f N,! , IS h  vN  (       d  f       g = f7f)NrC   Tr   r   POSTr   r   r   finish_reason)r#   generation_infor   rL   )r   r   r   r   r]   rE   rU   	aiter_sser   r   datar   r;   r   r6   r   r   text)rN   rz   r{   r|   r?   r   r   r   r<   event_sourcesser   choicer   r   s                  r-   r   ChatYi._astream   s     11;F;11(R4R6R$$%9%9 % 
 
) 0 0w !-!7!7!9 # JJsxx0E5+,1 "9-a0F;wE %+JJ$EM )4 )-8! $
 0 %E #)::5::U:SSSK$03 
 
 
& T' ":   
 
 
 
s   A	FEFE9*E+E9.E?EE
EBEE
 
E.E/E9:E;E9?F
E7FE9EEEE9E4	#E&$E4	0E97F9F?F FFc                     U R                   " U40 UD6nU R                  nU R                  " S0 UD6n[        R                  " UU R
                  UUU R                  S9nU$ )N)r>   r\   r   r   rC   rL   )r   rU   r   requestsr   r]   rZ   )rN   rz   r?   r   r>   r   r   s          r-   r   ChatYi._chat  sc    11(EfE11;F;mm((>>
 
r/   c                     0 U R                   EUEnUR                  SS5      nUR                  SS5      nUR                  S5      nUR                  SS5      nUU Vs/ sH  n[        U5      PM     snUUUS.n	U	$ s  snf )Nr`   r_   ra   r^   rC   F)r^   rz   ra   r`   rC   )rx   rm   r.   )
rN   rz   r?   
parametersr`   ra   r^   rC   r   r   s
             r-   r   !ChatYi._create_payload_parameters'  s     8,,77
 nn]C8w,w'%0 >FGh1!4hG&
  Hs   A;c                     0 U R                   EUEnUR                  S0 5      nSnU R                  (       a  U R                  R                  5       nSSU 3S.UEnU$ )Nr   r3   zapplication/jsonzBearer )zContent-TypeAuthorization)rx   rm   rJ   get_secret_value)rN   r?   r   default_headersrV   r   s         r-   r   !ChatYi._create_headers_parameters9  sl    7,,77
$..B7??oo668G /&wi0
 

 r/   rD   c                     / nUS    H+  n[        US   5      n[        US9nUR                  U5        M-     US   nX`R                  S.n[	        X'S9$ )Nr   r#   r   usage)token_usager^   )generations
llm_output)r7   r   appendr^   r   )rN   rD   r   cr#   genr   r   s           r-   r   ChatYi._create_chat_resultG  s_    )$A.q|<G 1Cs# %
 w'%0::F
kIIr/   c                     g)Nzyi-chatrL   rM   s    r-   	_llm_typeChatYi._llm_typeR  s    r/   rL   )NN)NNN)7__name__
__module____qualname____firstlineno____doc__propertyr   strrO   boolrR   r!   ri   rU   __annotations__rJ   r"   rY   rZ   r]   intr^   r`   r
   floatra   dictrc   r   r    model_configrq   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   Responser   r   r   r	   r   r   __static_attributes____classcell__)rj   s   @r-   rG   rG   _   s   
DcN 
 

    %89K9!	2J	2%FC%It 9=OS=E3#(#5K%5E5#(#>L$sCx.>L# # #B 
c3h 
 
 %):>	2{#2 tCy!2 67	2
 2 
2, %):>	{# tCy! 67	
  
%	&B %)?C!%9{#9 tCy!9 ;<	9
 9 9 
9< %)?C	'{#' tCy!' ;<	'
 ' 
*	+'Rd;/ 3 8CTCT [)58	c3h$3 4S> 	JGCH,= 	J* 	J 3  r/   rG   )7r   logging
contextlibr   typingr   r   r   r   r   r	   r
   r   r   langchain_core.callbacksr   r   *langchain_core.language_models.chat_modelsr   r   r   langchain_core.messagesr   r   r   r   r   r   r   r   r   langchain_core.outputsr   r   r   langchain_core.utilsr   r   r   pydanticr    r!   r"   	getLoggerr   loggerri   rh   r   r.   r   r7   r;   rE   rG   rL   r/   r-   <module>r      s     * T T T  

 
 
 S R 
 2 1			8	$G A k d  	@GCH$5 	@+ 	@9389-12B-C99  $$$#&$25$$ $u] ur/   