
    7|h                         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y)
    )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y)!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                 8    t        t        |dd            |d<   |S )z,Validate that api key exists in environment.r   FOREFRONTAI_API_KEYr
   )clsr#   s     c/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/forefrontai.pyvalidate_environmentz ForefrontAI.validate_environment5   s)     )> )>@UV)
$%     c                 v    | 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>   s5      ++kkZZZZ"&"9"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#45N9M9MNNr*   c                      y)zReturn type of llm.forefrontai r-   s    r(   	_llm_typezForefrontAI._llm_typeN   s     r*   promptstoprun_managerkwargsc                     d| j                   j                          }t        j                  | j                  |ddd|i| j
                  |      }|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    * t77HHJKL
==!!!+ 2 &CD$8$8CFC
 !X&q),7 'tT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E3O!  ;"""Hhsm"?L (#$ 3   $ 
c!2 
 
 OWS#X%6 O O 3   %):>	$$ 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  = 3 L ; ; >k# kr*   