
    NgX                     2   d dl Z d dlZd dlmZmZ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 d dlmZmZ d dlmZ dZe j         G d	 d
                      Zdee         fdZ	 	 ddededededeeeeeef         f         f
dZ G d de          ZdS )    N)AnyDictListMappingOptionalUnioncast)CallbackManagerForLLMRun)LLM)get_from_dict_or_env)
ConfigDictmodel_validator)enforce_stop_tokens<   c                   H    e Zd ZU dZeed<   eed<   ddZed	d            ZdS )
AviaryBackendzAviary backend.

    Attributes:
        backend_url: The URL for the Aviary backend.
        bearer: The bearer token for the Aviary backend.
    backend_urlbearerreturnNc                 "    d| j         i| _        d S )NAuthorization)r   headerselfs    [/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/aviary.py__post_init__zAviaryBackend.__post_init__   s    &4    c                     t          j        d          }|s
J d            t          j        dd          }|rd| nd}||                    d          sdndz  } | ||          S )N
AVIARY_URLzAVIARY_URL must be setAVIARY_TOKEN zBearer /)osgetenvendswith)cls
aviary_urlaviary_tokenr   s       r   from_envzAviaryBackend.from_env   s    Y|,,
333333y44-9A)<)))r!4!4S!9!9AccrA
s:v&&&r   )r   N)r   r   )	__name__
__module____qualname____doc__str__annotations__r   classmethodr)    r   r   r   r      sk           KKK5 5 5 5 	' 	' 	' [	' 	' 	'r   r   r   c                  t   t                                           } | j        dz   }t          j        || j        t                    }	 |                                }n2# t          j        $ r }t          d| d|j
                   |d}~ww xY wt          d |                                D                       }|S )zList available modelsz-/routes)headerstimeoutError decoding JSON from . Text response: Nc                 h    g | ]/}d |v |                     d                              d d          0S )--r"   )lstripreplace).0ks     r   
<listcomp>zget_models.<locals>.<listcomp>8   s7    NNNaDAII#		tS	)	)IIIr   )r   r)   r   requestsgetr   TIMEOUTjsonJSONDecodeErrorRuntimeErrortextsortedkeys)backendrequest_urlresponseresultes        r   
get_modelsrL   ,   s    $$&&G%
2K|KQQQH#   UUUhmUU
 
	 NN6;;==NNN F Ms   A B
*BB
Tr!   modelpromptuse_prompt_formatversionc                 Z   t                                           }|j        |                     dd          z   dz   |z   dz   }t	          j        ||j        ||dt                    }	 |                                S # t          j	        $ r }t          d| d|j                   |d}~ww xY w)	z#Get completions from Aviary models.r"   r8   query)rN   rO   )r3   rA   r4   r5   r6   N)r   r)   r   r:   r>   postr   r@   rA   rB   rC   rD   )rM   rN   rO   rP   rG   urlrI   rK   s           r   get_completionsrU   =   s     $$&&G

c4 8 8
83
>
H7
RC}5FGG	  H}}#   MMMhmMM
 
	s   'A; ;B*
B%%B*c                   h   e Zd ZU dZdZeed<   dZee         ed<   dZ	ee         ed<   dZ
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fd            Z	 	 ddedeee                  dee         dedef
dZdS )Aviaryab  Aviary hosted models.

    Aviary is a backend for hosted models. You can
    find out more about aviary at
    http://github.com/ray-project/aviary

    To get a list of the models supported on an
    aviary, follow the instructions on the website to
    install the aviary CLI and then use:
    `aviary models`

    AVIARY_URL and AVIARY_TOKEN environment variables must be set.

    Attributes:
        model: The name of the model to use. Defaults to "amazon/LightGPT".
        aviary_url: The URL for the Aviary backend. Defaults to None.
        aviary_token: The bearer token for the Aviary backend. Defaults to None.
        use_prompt_format: If True, the prompt template for the model will be ignored.
            Defaults to True.
        version: API version to use for Aviary. Defaults to None.

    Example:
        .. code-block:: python

            from langchain_community.llms import Aviary
            os.environ["AVIARY_URL"] = "<URL>"
            os.environ["AVIARY_TOKEN"] = "<TOKEN>"
            light = Aviary(model='amazon/LightGPT')
            output = light('How do you make fried rice?')
    zamazon/LightGPTrM   Nr'   r(   TrO   rP   forbid)extrabefore)modevaluesr   c                 h   t          |dd          }t          |dd          }|t          j        d<   |t          j        d<   	 t                      }n+# t          j        j        $ r}t          |          d}~ww xY w|                    d          }|r||vrt          | d|d          d          |S )	z?Validate that api key and python package exists in environment.r'   r   r(   r    NrM   z does not support model .)	r   r#   environrL   r>   
exceptionsRequestException
ValueErrorr?   )r&   r\   r'   r(   aviary_modelsrK   rM   s          r   validate_environmentzAviary.validate_environment   s     *&,MM
+FNNSS $.
< %1
>"	 &LLMM"3 	  	  	 Q--	  

7## 	XU-//
VVF7OVVVWWWs   A A9%A44A9c                      | j         | j        dS )zGet the identifying parameters.)
model_namer'   )rM   r'   r   s    r   _identifying_paramszAviary._identifying_params   s     */
 
 	
r   c                 >    d| j                             dd           S )zReturn type of llm.zaviary-r"   -)rM   r:   r   s    r   	_llm_typezAviary._llm_type   s$     8++C55777r   rN   stoprun_managerkwargsc                     d| j         i}| j        r
| j        |d<   t          d| j        |d|}t	          t
          |d                   }|rt          ||          }|S )a  Call out to Aviary
        Args:
            prompt: The prompt to pass into the model.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = aviary("Tell me a joke.")
        rO   rP   )rM   rN   generated_textr1   )rO   rP   rU   rM   r	   r.   r   )r   rN   rk   rl   rm   outputrD   s          r   _callzAviary._call   s    & &t'=>< 	- $F9  
*
 
 
 
 C 0122 	3&tT22Dr   )NN)r*   r+   r,   r-   rM   r.   r/   r'   r   r(   rO   boolrP   r   model_configr   r0   r   r   rd   propertyr   rg   rj   r   r
   rq   r1   r   r   rW   rW   U   s         > #E3""" $J$$$"&L(3-&&&"t"""!GXc]!!!:  L _(###$ 3    [ $#( 
WS#X%6 
 
 
 X
 83 8 8 8 X8 %):>	! !! tCy!! 67	!
 ! 
! ! ! ! ! !r   rW   )Tr!   ) dataclassesr#   typingr   r   r   r   r   r   r	   r>   langchain_core.callbacksr
   #langchain_core.language_models.llmsr   langchain_core.utilsr   pydanticr   r   langchain_community.llms.utilsr   r@   	dataclassr   r.   rL   rr   floatintrU   rW   r1   r   r   <module>r      s       				 B B B B B B B B B B B B B B B B B B  = = = = = = 3 3 3 3 3 3 5 5 5 5 5 5 0 0 0 0 0 0 0 0 > > > > > >
 ' ' ' ' ' ' ' '6DI    ( #	   	
 
#uS%_%
%&   0p p p p pS p p p p pr   