
    7|h                        d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	 d dl
Z
d dlmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ  ej.                  e      Z G d	 d
e      Zy)    )annotationsN)AnyDictListLiteralOptional)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_env)Field	SecretStr)enforce_stop_tokensc                       e Zd ZU dZdZded<   dZded<   dZded	<   d
Zded<    e	e
      Zded<   dZded<   dZded<   dZded<   dZded<   d fdZed d       Zd!dZ	 	 d"	 	 	 	 	 	 	 	 	 d#dZed$d       Z xZS )%YiLLMzYi large language models.zyi-largestrmodelg333333?floattemperaturegffffff?top_p<   inttimeout)default_factoryDict[str, Any]model_kwargsNzOptional[SecretStr]
yi_api_keyautoz,Literal['auto', 'domestic', 'international']regionz/https://api.lingyiwanwu.com/v1/chat/completionsyi_api_url_domesticz%https://api.01.ai/v1/chat/completionsyi_api_url_internationalc                V    t        t        |dd            |d<   t        |   di | y )Nr   
YI_API_KEY )r   r   super__init__)selfkwargs	__class__s     Z/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/yi.pyr&   zYiLLM.__init__    s0    4 |D 
| 	"6"    c                b    | j                   | j                  | j                  d| j                  S )N)r   r   r   )r   r   r   r   r'   s    r*   _default_paramszYiLLM._default_params&   s5     ZZ++ZZ
 	
 	
r+   c                   dd| j                   j                          d}g }| j                  dk(  r| j                  g}n5| j                  dk(  r| j                  g}n| j                  | j                  g}|D ]  }	 t        j                  |||| j                        }|j                  dk(  r/t        j                  |j                        }|d   d	   d
   d   c S |j                  dk7  r|j                           t        d      # t
        j                  $ r9}||d   k(  rt        d|       t        j!                  d| d       Y d }~d }~ww xY w)Nzapplication/jsonzBearer )zContent-TypeAuthorizationdomesticinternational)headersjsonr      choicesr   messagecontenti  zAn error has occurred: zFailed to connect to z, trying next URLz'Failed to connect to all available URLs)r   get_secret_valuer   r    r!   requestspostr   status_coder4   loadstextraise_for_statusRequestException
ValueErrorloggerwarning)r'   requestr3   urlsurlresponseparsed_jsones           r*   _postzYiLLM._post/   s\   .&t'G'G'I&JK

 ;;*$,,-D[[O+112D,,d.K.KLD 	C#==#  LL	 ''3."&**X]]";K&y1!4Y?	JJ((C/--/	. BCC ,, $r(?$'>qc%BCCNN%:3%?P#QRs   ;ADDE/EEc                    | j                   }d|dg|d<   |j                  |       | j                  |      }|t        ||      }|S )Nuser)roler8   messages)r.   updaterK   r   )r'   promptstoprun_managerr(   rE   r?   s          r*   _callzYiLLM._callV   sR     &&(.6BC
vzz'"&tT2Dr+   c                     y)zReturn type of chat_model.zyi-llmr$   r-   s    r*   	_llm_typezYiLLM._llm_typee   s     r+   )r(   r   )returnr   )rE   r   rW   r   )NN)
rQ   r   rR   zOptional[List[str]]rS   z"Optional[CallbackManagerForLLMRun]r(   r   rW   r   )rW   r   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   dictr   r   r   r    r!   r&   propertyr.   rK   rT   rV   __classcell__)r)   s   @r*   r   r      s    #E3KE5GS#(#>L.>&*J#*;AF8APP$KcK# 
 
%DT %):>	 " 8	
  
  r+   r   )
__future__r   r4   loggingtypingr   r   r   r   r   r;   langchain_core.callbacksr	   #langchain_core.language_models.llmsr
   langchain_core.utilsr   r   pydanticr   r   langchain_community.llms.utilsr   	getLoggerrX   rC   r   r$   r+   r*   <module>ri      sF    "   5 5  = 3 L % >			8	$VC Vr+   