o
    ZhV                     @  sx   d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ G dd dedd	ZG d
d deZdS )    )annotations)AnyDictListMappingOptional)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)	BaseModelc                   @  s6   e Zd ZU dZdZded< dZded< dZded	< dS )
Paramsz*Parameters for the Javelin AI Gateway LLM.g        floattemperatureNOptional[List[str]]stopzOptional[int]
max_tokens)__name__
__module____qualname____doc__r   __annotations__r   r    r   r   b/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/llms/javelin_ai_gateway.pyr      s
   
 r   Zallow)extrac                      s   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< 	 d# fddZ	e
d$ddZe
d%ddZ		d&d'ddZ		d&d(dd Ze
d)d!d"Z  ZS )*JavelinAIGatewaya   Javelin AI Gateway LLMs.

    To use, you should have the ``javelin_sdk`` python package installed.
    For more information, see https://docs.getjavelin.io

    Example:
        .. code-block:: python

            from langchain_community.llms import JavelinAIGateway

            completions = JavelinAIGateway(
                gateway_uri="<your-javelin-ai-gateway-uri>",
                route="<your-javelin-ai-gateway-completions-route>",
                params={
                    "temperature": 0.1
                }
            )
    strrouteNzOptional[Any]clientzOptional[str]gateway_urizOptional[Params]paramsjavelin_api_keykwargsr   c              
     s   z
ddl m}m} W n ty   tdw t jdi | | jr@z|| j| jd| _W d S  |y? } zt	d|d }~ww d S )Nr   )JavelinClientUnauthorizedErrorz^Could not import javelin_sdk python package. Please install it with `pip install javelin_sdk`.)base_urlZapi_keyzJavelin: Incorrect API Key.r   )
Zjavelin_sdkr"   r#   ImportErrorsuper__init__r   r    r   
ValueError)selfr!   r"   r#   e	__class__r   r   r'   :   s$   
zJavelinAIGateway.__init__returnDict[str, Any]c                 C  s0   | j | j| jd| jr| j }|S i }|S )z>Get the default parameters for calling Javelin AI Gateway API.)r   r   r    )r   r   r    r   dict)r)   r   r   r   r   _default_paramsN   s   z JavelinAIGateway._default_paramsMapping[str, Any]c                 C  s   | j S )zGet the identifying parameters.)r0   r)   r   r   r   _identifying_paramsY   s   z$JavelinAIGateway._identifying_paramspromptr   r   run_manager"Optional[CallbackManagerForLLMRun]c           	      K  s   d|i| j r| j  ni }|p| j r| j jnd }r||d< | jdur.| jj| j|d}ntd| }z|d d d d	 W S  tyK   Y d
S w )z Call the Javelin AI Gateway API.r4   Nr   Z
query_body"Javelin client is not initialized.llm_responsechoicesr   text )r   r/   r   r   Zquery_router   r(   KeyError	r)   r4   r   r5   r!   datasrespZ	resp_dictr   r   r   _call^   s   	
zJavelinAIGateway._call'Optional[AsyncCallbackManagerForLLMRun]c           	        s   d|i| j r| j  ni }|p| j r| j jnd }r ||d< | jdur2| jj| j|dI dH }ntd| }z|d d d d	 W S  tyO   Y d
S w )z&Call async the Javelin AI Gateway API.r4   Nr   r7   r8   r9   r:   r   r;   r<   )r   r/   r   r   Zaquery_router   r(   r=   r>   r   r   r   _acally   s    	
zJavelinAIGateway._acallc                 C  s   dS )zReturn type of llm.zjavelin-ai-gatewayr   r2   r   r   r   	_llm_type   s   zJavelinAIGateway._llm_type)r!   r   )r-   r.   )r-   r1   )NN)
r4   r   r   r   r5   r6   r!   r   r-   r   )
r4   r   r   r   r5   rC   r!   r   r-   r   )r-   r   )r   r   r   r   r   r   r   r   r    r'   propertyr0   r3   rB   rD   rE   __classcell__r   r   r+   r   r      s2   
 
r   N)
__future__r   typingr   r   r   r   r   Zlangchain_core.callbacksr   r	   Z#langchain_core.language_models.llmsr
   Zpydanticr   r   r   r   r   r   r   <module>   s    