§
    šŠtjX  ã                   ó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 )
ÚAviaryBackendz“Aviary 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/CA-Chatbot/venv/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ˆzå”y °Ñ4Ô4ˆà-9ÐAÐ)˜<Ð)Ð)Ð)¸rˆØ ×!4Ò!4°SÑ!9Ô!9ÐA�c�c¸rÑAˆ
àˆs�:˜vÑ&Ô&Ð&r   )r   N)r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   Úclassmethodr)   © r   r   r   r      sk   € € € € € € ðð ð ÐÐÑØ€K€K�Kð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ÐN¨aÀDÈAÀIÀIˆ�Š�#‰Œ×	Ò	˜t SÑ	)Ô	)ÀIÀIÀIr   )r   r)   r   ÚrequestsÚgetr   ÚTIMEOUTÚjsonÚJSONDecodeErrorÚRuntimeErrorÚtextÚsortedÚkeys)ÚbackendÚrequest_urlÚresponseÚresultÚes        r   Ú
get_modelsrL   ,   sÉ   € å×$Ò$Ñ&Ô&€GØÔ%¨
Ñ2€KÝŒ|˜K°´ÍÐQÑQÔQ€HðØ—’‘”ˆˆøÝÔ#ð ð ð ÝØU¨ÐUÐUÀhÄmÐUÐUñ
ô 
àð	øøøøðøøøõ ØNÐN°6·;²;±=´=Ð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Ø
Ô
 §¢¨c°4Ñ 8Ô 8Ñ
8¸3Ñ
>ÀÑ
HÈ7Ñ
R€CÝŒ}ØØ”ØÐ5FÐGÐGÝð	ñ ô €HðØ�}Š}‰ŒÐøÝÔ#ð ð ð ÝØM¨ÐMÐM¸h¼mÐ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ˆ
Ý+¨F°NÀNÑSÔSˆð $.�Œ
�<Ñ Ø%1�Œ
�>Ñ"ð	 Ý&™LœLˆMˆMøÝÔ"Ô3ð 	 ð 	 ð 	 Ý˜Q‘-”-Ðøøøøð	 øøøð —
’
˜7Ñ#Ô#ˆØð 	X�U -Ð/Ð/Ý 
ÐVÐVÀFÈ7ÄOÐ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Ô'=Ð>ˆØŒ<ð 	-Ø $¤ˆF�9Ñå ð 
Ø”*Øð
ð 
ð ð
ð 
ˆõ •C˜Ð 0Ô1Ñ2Ô2ˆØð 	3Ý& t¨TÑ2Ô2ˆDàˆ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•  € € € € € € ðð ð> #€Eˆ3Ð"Ð"Ñ"Ø $€J�˜”Ð$Ð$Ñ$Ø"&€L�(˜3”-Ð&Ð&Ñ&à"Ð�tÐ"Ð"Ñ"à!€GˆX�cŒ]Ð!Ð!Ñ!à�:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð¨$ð °3ð ð ð ñ „[ñ $Ô#ðð( ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð ð8˜3ð 8ð 8ð 8ñ „Xð8ð %)Ø:>ð	!ð !àð!ð �t˜C”yÔ!ð!ð Ð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ð ð ð ð ð( #Øð	ð Øðàðð ðð ð	ð
 
ˆ#ˆu�S˜% �_Ô%Ð
%Ô&ðð ð ð ð0pð pð pð pð pˆSñ pô pð pð pð pr   