§
    æ˜ºh^  ã                  ó   — d Z ddlmZ ddlZddl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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 G d„ de¦  «        Z G d„ dee¦  «        ZdS )zWrapper around Minimax APIs.é    )ÚannotationsN)ÚAnyÚDictÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)Ú	BaseModelÚFieldÚ	SecretStrÚroot_validator)Úconvert_to_secret_strÚget_from_dict_or_env)Úenforce_stop_tokensc                  ór   — e Zd ZU dZded<   ded<   ded<   ded<    edd¬	¦  «        dd„¦   «         Zdd„ZdS )Ú_MinimaxEndpointClientz3An API client that talks to a Minimax llm endpoint.ÚstrÚhostÚgroup_idr   Úapi_keyÚapi_urlT)ÚpreÚallow_reuseÚvaluesúDict[str, Any]Úreturnc                óF   — d|vr|d         }|d         }|› d|› �}||d<   |S )Nr   r   r   z /v1/text/chatcompletion?GroupId=© )Úclsr   r   r   r   s        úh/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/minimax.pyÚset_api_urlz"_MinimaxEndpointClient.set_api_url!   sB   € à˜FÐ"Ð"Ø˜&”>ˆDØ˜jÔ)ˆHØÐIÐI¸xÐIÐIˆGØ 'ˆF�9ÑØˆó    Úrequestr   c                óà  — dd| j                              ¦   «         › �i}t          j        | j        ||¬¦  «        }|j        st          d|j        › d|j        › �¦  «        ‚| 	                    ¦   «         d         d         dk    rQt          d	| 	                    ¦   «         d         d         › d| 	                    ¦   «         d         d
         › �¦  «        ‚| 	                    ¦   «         d         S )NÚAuthorizationzBearer )ÚheadersÚjsonzHTTP z error: Ú	base_respÚstatus_coder   zAPI Ú
status_msgÚreply)
r   Úget_secret_valueÚrequestsÚpostr   ÚokÚ
ValueErrorr)   Útextr'   )Úselfr#   r&   Úresponses       r    r.   z_MinimaxEndpointClient.post*   sõ   € Ø"Ð$O¨d¬l×.KÒ.KÑ.MÔ.MÐ$OÐ$OÐPˆÝ”= ¤°wÀWÐMÑMÔMˆàŒ{ð 	TÝÐR XÔ%9ÐRÐRÀ8Ä=ÐRÐRÑSÔSÐSØ�=Š=‰?Œ?˜;Ô'¨Ô6¸Ò:Ð:ÝðH�x—}’}‘” {Ô3°MÔBð Hð HØ#Ÿ=š=™?œ?¨;Ô7¸ÔEðHð Hñô ð ð �}Š}‰Œ˜wÔ'Ð'r"   N)r   r   r   r   )r#   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r!   r.   r   r"   r    r   r      s…   € € € € € € Ø=Ð=à€I€I�IØ€M€M�MØÐÐÑØ€L€L�Là€^˜¨$Ð/Ñ/Ô/ðð ð ñ 0Ô/ðð(ð (ð (ð (ð (ð (r"   r   c                  ó  — e Zd ZU dZded<   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<    e¦   «         dd„¦   «         Zed d„¦   «         Zed d„¦   «         Zed!d„¦   «         ZdS )"ÚMinimaxCommonz4Common parameters for Minimax large language models.r   Ú_clientzabab5.5-chatr   Úmodelé   ÚintÚ
max_tokensgffffffæ?ÚfloatÚtemperaturegffffffî?Útop_p)Údefault_factoryr   Úmodel_kwargsNzOptional[str]Úminimax_api_hostÚminimax_group_idzOptional[SecretStr]Úminimax_api_keyr   r   r   c                óê   — t          t          |dd¦  «        ¦  «        |d<   t          |dd¦  «        |d<   t          |ddd¬¦  «        |d<   t          |d         |d         |d         ¬	¦  «        |d
<   |S )z?Validate that api key and python package exists in environment.rG   ÚMINIMAX_API_KEYrF   ÚMINIMAX_GROUP_IDrE   ÚMINIMAX_API_HOSTzhttps://api.minimax.chat)Údefault)r   r   r   r;   )r   r   r   )r   r   s     r    Úvalidate_environmentz"MinimaxCommon.validate_environmentJ   s¯   € õ %:Ý  Ð):Ð<MÑNÔNñ%
ô %
ˆÐ Ñ!õ &:ØÐ&Ð(:ñ&
ô &
ˆÐ!Ñ"õ &:ØØØØ.ð	&
ñ &
ô &
ˆÐ!Ñ"õ 3ØÐ*Ô+ØÐ,Ô-ØÐ.Ô/ð
ñ 
ô 
ˆˆyÑð
 ˆr"   c                óF   — | j         | j        | j        | j        dœ| j        ¥S )z2Get the default parameters for calling OpenAI API.)r<   Útokens_to_generaterA   rB   )r<   r?   rA   rB   rD   ©r2   s    r    Ú_default_paramszMinimaxCommon._default_paramsa   s5   € ð ”ZØ"&¤/ØÔ+Ø”Zð	
ð 
ð
 Ôð
ð 	
r"   c                ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r<   )r<   rQ   rP   s    r    Ú_identifying_paramsz!MinimaxCommon._identifying_paramsl   s   € ð A�7˜DœJÐ'Ð@¨4Ô+?Ð@Ð@r"   c                ó   — dS )zReturn type of llm.Úminimaxr   rP   s    r    Ú	_llm_typezMinimaxCommon._llm_typeq   s	   € ð ˆyr"   )r   r   r   r   )r   r   )r   r   )r4   r5   r6   r7   r8   r<   r?   rA   rB   r   ÚdictrD   rE   rF   rG   r   rM   ÚpropertyrQ   rS   rV   r   r"   r    r:   r:   8   sY  € € € € € € Ø>Ð>à#Ð#Ð#Ñ#Ø€EÐÐÐÑØØ€JÐÐÐÑØAØ€KÐÐÐÑØQØ€EÐÐÐÑØDØ#( 5¸Ð#>Ñ#>Ô#>€LÐ>Ð>Ð>Ñ>ØVØ&*ÐÐ*Ð*Ð*Ñ*Ø&*ÐÐ*Ð*Ð*Ñ*Ø+/€OÐ/Ð/Ð/Ñ/à€^ÑÔðð ð ñ Ôðð, ð
ð 
ð 
ñ „Xð
ð ðAð Að Añ „XðAð ðð ð ñ „Xðð ð r"   r:   c                  ó    — e Zd ZdZ	 	 ddd„ZdS )ÚMinimaxaÈ  Wrapper around Minimax large language models.
    To use, you should have the environment variable
    ``MINIMAX_API_KEY`` and ``MINIMAX_GROUP_ID`` set with your API key,
    or pass them as a named parameter to the constructor.
    Example:
     . code-block:: python
         from langchain_community.llms.minimax import Minimax
         minimax = Minimax(model="<model_name>", minimax_api_key="my-api-key",
          minimax_group_id="my-group-id")
    NÚpromptr   ÚstopúOptional[List[str]]Úrun_managerú"Optional[CallbackManagerForLLMRun]Úkwargsr   r   c                ó¨   — | j         }d|dœg|d<   |                     |¦  «         | j                             |¦  «        }|�t	          ||¦  «        }|S )a)  Call out to Minimax's completion endpoint to chat
        Args:
            prompt: The prompt to pass into the model.
        Returns:
            The string generated by the model.
        Example:
            .. code-block:: python
                response = minimax("Tell me a joke.")
        ÚUSER)Úsender_typer1   Úmessages)rQ   Úupdater;   r.   r   )r2   r[   r\   r^   r`   r#   r1   s          r    Ú_callzMinimax._callƒ   sd   € ð  Ô&ˆØ/5¸vÐFÐFÐGˆ�
ÑØ�Š�vÑÔÐØŒ|× Ò  Ñ)Ô)ˆØÐõ ' t¨TÑ2Ô2ˆDàˆr"   )NN)
r[   r   r\   r]   r^   r_   r`   r   r   r   )r4   r5   r6   r7   rf   r   r"   r    rZ   rZ   w   s?   € € € € € ð	ð 	ð %)Ø:>ð	ð ð ð ð ð ð r"   rZ   )r7   Ú
__future__r   ÚloggingÚtypingr   r   r   r   r-   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   r   r   Úlangchain_core.utilsr   r   Úlangchain_community.llms.utilsr   Ú	getLoggerr4   Úloggerr   r:   rZ   r   r"   r    ú<module>rq      sŠ  ðØ "Ð "Ø "Ð "Ð "Ð "Ð "Ð "à €€€ðð ð ð ð ð ð ð ð ð ð ð ð €€€ðð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ð(ð (ð (ð (ð (˜Yñ (ô (ð (ð><ð <ð <ð <ð <�Iñ <ô <ð <ð~%ð %ð %ð %ð %ˆm˜Sñ %ô %ð %ð %ð %r"   