
    Ng                         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mZ d dlmZ  G d d	e
          ZdS )
    )AnyDictListMappingOptionalN)CallbackManagerForLLMRun)LLMconvert_to_secret_strget_from_dict_or_env)
ConfigDict	SecretStrmodel_validator)enforce_stop_tokensc                      e Zd ZU dZdZeed<   	 dZeed<   	 dZ	e
ed<   	 dZeed	<   	 d
Ze
ed<   	 dZe
ed<   	 eed<   dZee         ed<   	  ed          Z ed          ededefd                        Zedeeef         fd            Zedeeef         fd            Zedefd            Z	 	 d dedeee                  dee         dedef
dZdS )!ForefrontAIa2  ForefrontAI large language models.

    To use, you should have the environment variable ``FOREFRONTAI_API_KEY``
    set with your API key.

    Example:
        .. code-block:: python

            from langchain_community.llms import ForefrontAI
            forefrontai = ForefrontAI(endpoint_url="")
     endpoint_urlgffffff?temperature   lengthg      ?top_p(   top_k   repetition_penaltyforefrontai_api_keyNbase_urlforbid)extrabefore)modevaluesreturnc                 H    t          t          |dd                    |d<   |S )z,Validate that api key exists in environment.r   FOREFRONTAI_API_KEYr
   )clsr#   s     `/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/forefrontai.pyvalidate_environmentz ForefrontAI.validate_environment5   s1     )> )>@UVV)
 )
$%     c                 D    | j         | j        | j        | j        | j        dS )z7Get the default parameters for calling ForefrontAI API.r   r   r   r   r   r,   selfs    r(   _default_paramszForefrontAI._default_params>   s.      +kZZ"&"9
 
 	
r*   c                 &    i d| j         i| j        S )zGet the identifying parameters.r   )r   r/   r-   s    r(   _identifying_paramszForefrontAI._identifying_paramsI   s      O>4#45N9MNNr*   c                     dS )zReturn type of llm.forefrontai r-   s    r(   	_llm_typezForefrontAI._llm_typeN   s	     }r*   promptstoprun_managerkwargsc                    d| j                                          }t          j        | j        |ddd|i| j        |          }|                                }|d         d         d         }|t          ||          }|S )	ar  Call out to ForefrontAI's complete endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = ForefrontAI("Tell me a joke.")
        zBearer zapplication/json)AuthorizationzContent-Typetext)urlheadersjsonresultr   
completion)r   get_secret_valuerequestspostr   r/   r?   r   )	r.   r6   r7   r8   r9   
auth_valueresponseresponse_jsonr<   s	            r(   _callzForefrontAI._callS   s    * Mt7HHJJLL
=!!+ 2  &CD$8CFC
 
 
 !X&q),7 'tT22Dr*   )NN) __name__
__module____qualname____doc__r   str__annotations__r   floatr   intr   r   r   r   r   r   r   model_configr   classmethodr   r   r)   propertyr   r/   r1   r5   r   r   rH   r4   r*   r(   r   r      s        
 
 L#K+FCEE5DE3OOO!  ;"""""Hhsm"""?:  L _(###$ 3    [ $# 
c!2 
 
 
 X
 OWS#X%6 O O O XO 3    X %):>	$ $$ tCy!$ 67	$
 $ 
$ $ $ $ $ $r*   r   )typingr   r   r   r   r   rC   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr   r   pydanticr   r   r   langchain_community.llms.utilsr   r   r4   r*   r(   <module>rZ      s    5 5 5 5 5 5 5 5 5 5 5 5 5 5  = = = = = = 3 3 3 3 3 3 L L L L L L L L ; ; ; ; ; ; ; ; ; ; > > > > > >k k k k k# k k k k kr*   