
    dh                         S SK JrJrJrJr  S SKrS SKJr  S SKJ	r	  S SK
JrJrJr  S SKJrJrJrJrJr  S SKJr  Sr " S	 S
\5      r " S S\5      r " S S\\	5      rg)    )AnyDictListOptionalN)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDictField	SecretStrmodel_validator)enforce_stop_tokenszhttps://api.moonshot.cn/v1c                   F    \ rS rSr% Sr\\S'    \r\	\S'   S\
S\
4S jrSrg	)
_MoonshotClient   z0An API client that talks to the Moonshot server.api_keybase_urlrequestreturnc                 *   SSU R                   R                  5        30n[        R                  " U R                   S3UUS9nUR
                  (       d%  [        SUR                   SUR                   35      eUR                  5       S   S   S	   S
   $ )NAuthorizationzBearer z/chat/completions)headersjsonzHTTP z error: choicesr   messagecontent)
r   get_secret_valuerequestspostr   ok
ValueErrorstatus_codetextr   )selfr   r   responses       Y/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/moonshot.py
completion_MoonshotClient.completion   s    "gdll.K.K.M-N$OP==}}o./

 {{uX%9%9$:(8==/RSS}}y)!,Y7	BB     N)__name__
__module____qualname____firstlineno____doc__r   __annotations__MOONSHOT_SERVICE_URL_BASEr   strr   r*   __static_attributes__r-   r,   r)   r   r      s.    :0-Hc-	C# 	C# 	Cr,   r   c                   b   \ rS rSr% Sr\\S'   \r\	\S'   \
" SSS9r\\   \S'    \
" S	S
S9r\	\S'    Sr\\S'    Sr\\S'    \" SSS9r\S\4S j5       r\S\\	\4   4S j5       r\S\\	\4   4S j5       r\" SS9\S\\	\4   S\4S j5       5       r\S\S\4S j5       r\S\	4S j5       r Sr!g)MoonshotCommon'   z$Common parameters for Moonshot LLMs.clientr   Nr   )defaultaliasmoonshot_api_keyzmoonshot-v1-8kmodel
model_namei   
max_tokensg333333?temperatureTr-   )populate_by_nameprotected_namespacesr   c                 
    SS0$ )znA map of constructor argument names to secret ids.

For example,
    {"moonshot_api_key": "MOONSHOT_API_KEY"}
r=   MOONSHOT_API_KEYr-   r'   s    r)   
lc_secretsMoonshotCommon.lc_secrets7   s     #$677r,   c                 J    U R                   U R                  U R                  S.$ )z2Get the default parameters for calling OpenAI API.)r>   r@   rA   )r?   r@   rA   rF   s    r)   _default_paramsMoonshotCommon._default_params@   s%     __//++
 	
r,   c                 :    0 SU R                   0EU R                  E$ )Nr>   )r?   rJ   rF   s    r)   _invocation_params!MoonshotCommon._invocation_paramsI   s!    E7DOO,E0D0DEEr,   before)modevaluesc                     U$ )zkBuild extra parameters.
Override the superclass method, prevent the model parameter from being
overridden.
r-   clsrQ   s     r)   build_extraMoonshotCommon.build_extraM   s	     r,   c                 v    [        [        USS5      5      US'   [        US   SU;   a  US   O[        S9US'   U$ )z?Validate that api key and python package exists in environment.r=   rE   r   )r   r   r:   )r	   r
   r   r4   rS   s     r)   validate_environment#MoonshotCommon.validate_environmentV   sX     &; );=OP&
!" +-.V# J'*	
x r,   c                     g)zReturn type of llm.moonshotr-   rF   s    r)   	_llm_typeMoonshotCommon._llm_typee   s     r,   )"r.   r/   r0   r1   r2   r   r3   r4   r   r5   r   r=   r   r   r?   r@   intrA   floatr   model_configpropertydictrG   r   rJ   rM   r   classmethodrU   r   rX   r\   r6   r-   r,   r)   r8   r8   '   s?   .K-Hc-,1$i,Phy)PV$4GDJDXJ/KMt"ML8D 8 8 
c3h 
 
 FDcN F F (#c3h C   $ $ 4   3  r,   r8   c                   \    \ rS rSrSr\" SS9r  SS\S\\	\      S\\
   S	\S
\4
S jjrSrg)Moonshotk   aJ  Moonshot large language models.

To use, you should have the environment variable ``MOONSHOT_API_KEY`` set with your
API key. Referenced from https://platform.moonshot.cn/docs

Example:
    .. code-block:: python

        from langchain_community.llms.moonshot import Moonshot

        moonshot = Moonshot(model="moonshot-v1-8k")
T)rB   Npromptstoprun_managerkwargsr   c                     U R                   nSUS./US'   UR                  U5        U R                  R                  U5      nUb  [	        Xb5      nU$ )Nuser)roler   messages)rM   updater:   r*   r   )r'   rg   rh   ri   rj   r   r&   s          r)   _callMoonshot._call}   sX     ))(.6BC
v{{%%g. 't2Dr,   r-   )NN)r.   r/   r0   r1   r2   r   r`   r5   r   r   r   r   rp   r6   r-   r,   r)   re   re   k   sg     L %):>	 tCy! 67	
  
 r,   re   )typingr   r   r   r   r!   langchain_core.callbacksr   langchain_core.language_modelsr   langchain_core.utilsr	   r
   r   pydanticr   r   r   r   r   langchain_community.llms.utilsr   r4   r   r8   re   r-   r,   r)   <module>rx      sZ    , ,  = . V V  ?8 Ci C&AY AH"~s "r,   