a
    bgV                     @  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   y/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/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d fddZ	e
ddddZe
ddddZd!ddddddddZd"ddddddddZe
d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_keyr   )kwargsc              
     s   zddl m}m} W n ty.   tdY n0 t jf i | | jrz|| j| jd| _W n. |y } zt	d|W Y d }~n
d }~0 0 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.)
Zjavelin_sdkr"   r#   ImportErrorsuper__init__r   r    r   
ValueError)selfr!   r"   r#   e	__class__r   r   r'   :   s    
zJavelinAIGateway.__init__zDict[str, Any])returnc                 C  s*   | j | j| jd| jr | j n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_paramszMapping[str, Any]c                 C  s   | j S )zGet the identifying parameters.)r/   r)   r   r   r   _identifying_paramsY   s    z$JavelinAIGateway._identifying_paramsr   z"Optional[CallbackManagerForLLMRun])promptr   run_managerr!   r-   c           	      K  s   d|i| j r| j  ni }|p0| 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y   Y d
S 0 dS )z Call the Javelin AI Gateway API.r2   Nr   Z
query_body"Javelin client is not initialized.llm_responsechoicesr   text )r   r.   r   r   Zquery_router   r(   KeyError	r)   r2   r   r3   r!   datasrespZ	resp_dictr   r   r   _call^   s    	
zJavelinAIGateway._callz'Optional[AsyncCallbackManagerForLLMRun]c           	        s   d|i| j r| j  ni }|p0| j r.| j jnd }r>||d< | jdurb| jj| j|dI dH }ntd| }z|d d d d	 W S  ty   Y d
S 0 dS )z&Call async the Javelin AI Gateway API.r2   Nr   r4   r5   r6   r7   r   r8   r9   )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   r0   r   r   r   	_llm_type   s    zJavelinAIGateway._llm_type)NN)NN)r   r   r   r   r   r   r   r   r    r'   propertyr/   r1   r?   r@   rA   __classcell__r   r   r+   r   r      s&   

    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   