
    NgV                        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ed	          Z G d
 de          ZdS )    )annotations)AnyDictListMappingOptional)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)	BaseModelc                  >    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        g/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/javelin_ai_gateway.pyr   r      sK         44K $D$$$$ $J$$$$$$r   r   allow)extrac                       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Z	e
dd            Ze
dd            Z	 	 d d!dZ	 	 d d"dZe
d#d            Z x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                   	 ddl m}m} n# t          $ r t          d          w xY w t	                      j        di | | j        r<	  || j        | j                  | _        d S # |$ r}t          d          |d }~ww xY wd S )Nr   )JavelinClientUnauthorizedErrorz^Could not import javelin_sdk python package. Please install it with `pip install javelin_sdk`.)base_urlapi_keyzJavelin: Incorrect API Key.r   )
javelin_sdkr(   r)   ImportErrorsuper__init__r#   r%   r"   
ValueError)selfr&   r(   r)   e	__class__s        r   r/   zJavelinAIGateway.__init__:   s   		          	 	 	D  	
 	""6""" 	GG+m!-t7K   % G G G !>??QFG	G 	Gs     &
A( (B-A==BreturnDict[str, Any]c                t    | 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)r1   r$   s     r   _default_paramsz JavelinAIGateway._default_paramsN   sL      +Z#3"
 "
 &*[8t{!!!b	"
 r   Mapping[str, Any]c                    | j         S )zGet the identifying parameters.)r8   r1   s    r   _identifying_paramsz$JavelinAIGateway._identifying_paramsY   s     ##r   promptr   r   run_manager"Optional[CallbackManagerForLLMRun]c                z   d|i| j         r| j                                         ni }|p| j         r| j         j        ndx}r||d<   | j        "| j                            | j        |          }nt          d          |                                }	 |d         d         d         d	         S # t          $ r Y d
S w xY w)z Call the Javelin AI Gateway API.r=   Nr   
query_body"Javelin client is not initialized.llm_responsechoicesr   text )r$   r7   r   r"   query_router!   r0   KeyError	r1   r=   r   r>   r&   datasresp	resp_dicts	            r   _callzJavelinAIGateway._call^   s     f 
%)[8t{!!!b 
 DdkC$+**tE1 	DL;";**4:$*GGDDABBBIIKK		^,Y7:6BB 	 	 	22	s   B, ,
B:9B:'Optional[AsyncCallbackManagerForLLMRun]c                  K   d|i| j         r| j                                         ni }|p| j         r| j         j        ndx}r||d<   | j        (| j                            | j        |           d{V }nt          d          |                                }	 |d         d         d         d	         S # t          $ r Y d
S w xY w)z&Call async the Javelin AI Gateway API.r=   Nr   rA   rC   rD   rE   r   rF   rG   )r$   r7   r   r"   aquery_router!   r0   rI   rJ   s	            r   _acallzJavelinAIGateway._acally   s       f 
%)[8t{!!!b 
 DdkC$+**tE1 	DL;"11$*1NNNNNNNNDDABBBIIKK		^,Y7:6BB 	 	 	22	s   B4 4
CCc                    dS )zReturn type of llm.zjavelin-ai-gatewayr   r;   s    r   	_llm_typezJavelinAIGateway._llm_type   s
     $#r   )r&   r   )r4   r5   )r4   r9   )NN)
r=   r    r   r   r>   r?   r&   r   r4   r    )
r=   r    r   r   r>   rP   r&   r   r4   r    )r4   r    )r   r   r   r   r   r"   r#   r$   r%   r/   propertyr8   r<   rO   rS   rU   __classcell__)r3   s   @r   r   r      sO         & JJJ: F    (!%K%%%%0#F####4%)O))))5G G G G G G(    X $ $ $ X$ %):>	    < %)?C	    6 $ $ $ X$ $ $ $ $r   r   N)
__future__r   typingr   r   r   r   r   langchain_core.callbacksr	   r
   #langchain_core.language_models.llmsr   pydanticr   r   r   r   r   r   <module>r]      s    " " " " " " 5 5 5 5 5 5 5 5 5 5 5 5 5 5        4 3 3 3 3 3      
% % % % %Yg % % % %@$ @$ @$ @$ @$s @$ @$ @$ @$ @$r   