
    h<                        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y)    )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	<   y)
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        i/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/llms/javelin_ai_gateway.pyr   r      s$    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_keyc                    	 ddl m}m} t	        |   di | | j                  r%	  || j                  | j                        | _        y y # t        $ r t        d      w xY w# |$ r}t        d      |d }~ww xY w)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)selfkwargsr'   r(   e	__class__s        r   r.   zJavelinAIGateway.__init__:   s    		 	"6"G+!--t7K7K   	D 	 % G !>?QFGs"   A #A$ A!$A:)A55A:c                    | j                   | j                  | j                  d| j                  r| j                  j	                         }|S i }|S )z>Get the default parameters for calling Javelin AI Gateway API.)r#   r!   r%   )r#   r!   r%   r$   dict)r0   r$   s     r   _default_paramsz JavelinAIGateway._default_paramsN   s[      ++ZZ#33"
 &*[[t{{!	"
  79	"
 r   c                    | j                   S )zGet the identifying parameters.)r6   r0   s    r   _identifying_paramsz$JavelinAIGateway._identifying_paramsY   s     ###r   c                   d|i| j                   r| j                   j                         ni }|xs$ | j                   r| j                   j                  ndx}r||d<   | j                  (| j                  j	                  | j
                  |      }nt        d      |j                         }	 |d   d   d   d	   S # t        $ r Y y
w xY w)z Call the Javelin AI Gateway API.promptNr   
query_body"Javelin client is not initialized.llm_responsechoicesr   text )r$   r5   r   r"   query_router!   r/   KeyError	r0   r;   r   run_managerr1   datasresp	resp_dicts	            r   _callzJavelinAIGateway._call^   s     f 
%)[[t{{!b 
 Ddkk$++**tE1EDL;;";;**4::$*GDABBIIK		^,Y7:6BB 		s   ,B: :	CCc                  K   d|i| j                   r| j                   j                         ni }|xs$ | j                   r| j                   j                  ndx}r||d<   | j                  0| j                  j	                  | j
                  |       d{   }nt        d      |j                         }	 |d   d   d   d	   S 7 /# t        $ r Y y
w xY ww)z&Call async the Javelin AI Gateway API.r;   Nr   r<   r>   r?   r@   r   rA   rB   )r$   r5   r   r"   aquery_router!   r/   rD   rE   s	            r   _acallzJavelinAIGateway._acally   s      f 
%)[[t{{!b 
 Ddkk$++**tE1EDL;;"11$**1NNDABBIIK		^,Y7:6BB O  		s6   BCC C6C C	CCCCc                     y)zReturn type of llm.zjavelin-ai-gatewayr   r8   s    r   	_llm_typezJavelinAIGateway._llm_type   s     $r   )r1   r   )returnzDict[str, Any])rQ   zMapping[str, Any])NN)
r;   r    r   r   rF   z"Optional[CallbackManagerForLLMRun]r1   r   rQ   r    )
r;   r    r   r   rF   z'Optional[AsyncCallbackManagerForLLMRun]r1   r   rQ   r    )rQ   r    )r   r   r   r   r   r"   r#   r$   r%   r.   propertyr6   r9   rK   rN   rP   __classcell__)r3   s   @r   r   r      s   & J: FM (!%K%0#F#4%)O])5G(   $ $ %):>	 " 8	
  
< %)?C	 " =	
  
6 $ $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>rY      s7    " 5 5 4 
%Yg %@$s @$r   