
    Ng                       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 ddlmZmZmZ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)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDictField	SecretStrmodel_validator)enforce_stop_tokensc                      e Zd ZU dZded<   ded<   ded<   ded<    ed	          edd                        ZddZdS )_MinimaxEndpointClientz(API client for the Minimax LLM endpoint.strhostgroup_idr   api_keyapi_urlbefore)modevaluesDict[str, Any]returnr   c                F    d|vr|d         }|d         }| d| }||d<   |S )Nr   r   r   z /v1/text/chatcompletion?GroupId= )clsr   r   r   r   s        \/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/minimax.pyset_api_urlz"_MinimaxEndpointClient.set_api_url"   sD     F""&>Dj)HIIxIIG 'F9    requestc                   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"   r0   z_MinimaxEndpointClient.post,   s    "$Odl.K.K.M.M$O$OP=wWMMM{ 	TRX%9RR8=RRSSS==??;'6::Hx}}{3MB H H#==??;7EH H   }}w''r$   N)r   r   r   r   )r%   r   r   r   )	__name__
__module____qualname____doc____annotations__r   classmethodr#   r0   r    r$   r"   r   r      s         22IIIMMMLLL_(###   [ $#( ( ( ( ( (r$   r   c                  $   e Zd ZU dZ e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    )protected_namespacesr   _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.rK   MINIMAX_API_KEYrJ   MINIMAX_GROUP_IDrI   MINIMAX_API_HOSTzhttps://api.minimax.chat)default)r   r   r   r?   )r
   r   r   )r!   r   s     r"   validate_environmentz"MinimaxCommon.validate_environmentN   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_generaterE   rF   )r@   rC   rE   rF   rH   r4   s    r"   _default_paramszMinimaxCommon._default_paramse   s5     Z"&/+Z	
 

 
 	
r$   c                &    i d| j         i| j        S )zGet the identifying parameters.r@   )r@   rU   rT   s    r"   _identifying_paramsz!MinimaxCommon._identifying_paramsp   s     A7DJ'@4+?@@r$   c                    dS )zReturn type of llm.minimaxr    rT   s    r"   	_llm_typezMinimaxCommon._llm_typeu   s	     yr$   )r   r   r   r   )r   r   )r   r   )r6   r7   r8   r9   r   model_configr:   r@   rC   rE   rF   r   dictrH   rI   rJ   rK   r   rQ   propertyrU   rW   rZ   r    r$   r"   r=   r=   :   sb        >>:2666L####EJAKQED#(5#>#>#>L>>>>V&*****&*****+/O////   X, 
 
 
 X
 A A A XA    X  r$   r=   c                       e Zd ZdZ	 	 dddZdS )Minimaxa  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_typer3   messages)rU   updater?   r0   r   )r4   r`   ra   rc   re   r%   r3   s          r"   _callzMinimax._call   sd      &/5vFFG
v|  )) 'tT22Dr$   )NN)
r`   r   ra   rb   rc   rd   re   r   r   r   )r6   r7   r8   r9   rk   r    r$   r"   r_   r_   {   s?        
 
 %):>	      r$   r_   ) r9   
__future__r   loggingtypingr   r   r   r   r/   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   r   r   r   langchain_community.llms.utilsr   	getLoggerr6   loggerr   r=   r_   r    r$   r"   <module>rv      s   " " " " " " " "                   4 3 3 3 3 3 V V V V V V V V V V M M M M M M M M M M M M M M > > > > > >		8	$	$( ( ( ( (Y ( ( (@> > > > >I > > >B& & & & &mS & & & & &r$   