§
    šŠtjŒ.  ã            
       ó2  — d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZmZmZ ddlmZmZmZ ddlmZmZ ddlmZmZmZ ddlmZ d	Zd
Zdee         deeef         deeef         ddfd„Zdedee         deee f         dedef
d„Z! G d„ de¦  «        Z"dS )z Wrapper around Anyscale Endpointé    )ÚAnyÚDictÚListÚMappingÚOptionalÚSet)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)Ú
GenerationÚGenerationChunkÚ	LLMResult)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)ÚFieldÚ	SecretStr)Ú
BaseOpenAIÚacompletion_with_retryÚcompletion_with_retry)Úis_openai_v1z%https://api.endpoints.anyscale.com/v1z$mistralai/Mixtral-8x7B-Instruct-v0.1ÚkeysÚresponseÚtoken_usageÚreturnNc                 óª   — |                       |d         ¦  «        }|D ]4}||vr|d         |         ||<   Œ||xx         |d         |         z  cc<   Œ5dS )zUpdate token usage.ÚusageN)Úintersection)r   r   r   Ú_keys_to_useÚ_keys        ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/anyscale.pyÚupdate_token_usager!      s€   € ð ×$Ò$ X¨gÔ%6Ñ7Ô7€LØð 9ð 9ˆØ�{Ð"Ð"Ø (¨Ô 1°$Ô 7ˆK˜ÑÐà˜ÐÐÔ ¨'Ô!2°4Ô!8Ñ8ÐÐÑÐð	9ð 9ó    ÚchoicesÚpromptsÚ
model_namec                 ó8  — g }t          |¦  «        D ]s\  }}| |         }|                     t          |d         d         t          |                     d¦  «        |                     d¦  «        ¬¦  «        ¬¦  «        g¦  «         Œt||dœ}t          ||¬¦  «        S )	z2Create the LLMResult from the choices and prompts.ÚmessageÚcontentÚfinish_reasonÚlogprobs)r)   r*   )ÚtextÚgeneration_info)r   r%   )ÚgenerationsÚ
llm_output)Ú	enumerateÚappendr   ÚdictÚgetr   )	r#   r$   r   r%   r-   ÚiÚ_Úchoicer.   s	            r    Úcreate_llm_resultr6   +   sÀ   € ð €KÝ˜'Ñ"Ô"ð 
ð 
‰ˆˆ1Ø˜”ˆØ×ÒåØ 	Ô*¨9Ô5Ý$(Ø&,§j¢j°Ñ&AÔ&AØ!'§¢¨JÑ!7Ô!7ð%ñ %ô %ðñ ô ðñ
	
ô 
	
ð 
	
ð 
	
ð "-¸JÐGÐG€JÝ ¸ÐDÑDÔDÐDr"   c                   ó  ‡ — e Zd ZU dZ	  ee¬¦  «        Zeed<    e e	d¦  «        ¬¦  «        Z
e	ed<    ee¬¦  «        Zeed<    ee¬¦  «        Zeed<   ed	efd
„¦   «         Zeded	efd„¦   «         Zed	eeef         fˆ fd„¦   «         Zed	eeef         fˆ fd„¦   «         Zed	efd„¦   «         Z	 	 ddee         deee                  dee         ded	ef
d„Z	 	 ddee         deee                  dee          ded	ef
d„Z!ˆ xZ"S )ÚAnyscalea  Anyscale large language models.

    To use, you should have the environment variable ``ANYSCALE_API_KEY``set with your
    Anyscale Endpoint, or pass it as a named parameter to the constructor.
    To use with Anyscale Private Endpoint, please also set ``ANYSCALE_BASE_URL``.

    Example:
        .. code-block:: python
            from langchain_classic.llms import Anyscale
            anyscalellm = Anyscale(anyscale_api_key="ANYSCALE_API_KEY")
            # To leverage Ray for parallel processing
            @ray.remote(num_cpus=1)
            def send_query(llm, text):
                resp = llm.invoke(text)
                return resp
            futures = [send_query.remote(anyscalellm, text) for text in texts]
            results = ray.get(futures)
    ©ÚdefaultÚanyscale_api_baseÚ Úanyscale_api_keyr%   )Údefault_factoryÚprefix_messagesr   c                 ó   — dS )NF© )Úclss    r    Úis_lc_serializablezAnyscale.is_lc_serializable\   s   € àˆur"   Úvaluesc                 óö  — t          |ddt          ¬¦  «        |d<   t          t          |dd¦  «        ¦  «        |d<   t          |ddt          ¬¦  «        |d<   	 dd	l}t          ¦   «         rx|d                              ¦   «         |d         d
œ}|                     d¦  «        s |j        di |¤Žj	        |d<   |                     d¦  «        s |j
        di |¤Žj	        |d<   n2|d         |d<   |d                              ¦   «         |d<   |j        |d<   n# t          $ r t          d¦  «        ‚w xY w|d         r|d         dk    rt          d¦  «        ‚|d         r|d         dk    rt          d¦  «        ‚|S )z?Validate that api key and python package exists in environment.r;   ÚANYSCALE_API_BASEr9   r=   ÚANYSCALE_API_KEYr%   Ú
MODEL_NAMEr   N)Úapi_keyÚbase_urlÚclientÚasync_clientÚopenai_api_baseÚopenai_api_keyzTCould not import openai python package. Please install it with `pip install openai`.Ú	streamingÚné   z!Cannot stream results when n > 1.Úbest_ofz'Cannot stream results when best_of > 1.rA   )r   ÚDEFAULT_BASE_URLr   ÚDEFAULT_MODELÚopenair   Úget_secret_valuer2   ÚOpenAIÚcompletionsÚAsyncOpenAIÚ
CompletionÚImportErrorÚ
ValueError)rB   rD   rU   Úclient_paramss       r    Úvalidate_environmentzAnyscale.validate_environment`   s   € õ ';ØØØÝ$ð	'
ñ '
ô '
ˆÐ"Ñ#õ &;Ý  Ð);Ð=OÑPÔPñ&
ô &
ˆÐ!Ñ"õ  4ØØØÝ!ð	 
ñ  
ô  
ˆˆ|Ñð	ØˆMˆMˆMå‰~Œ~ð 5à%Ð&8Ô9×JÒJÑLÔLØ &Ð':Ô ;ð
!ð 
!�ð —z’z (Ñ+Ô+ð RØ'4 v¤}Ð'EÐ'E°}Ð'EÐ'EÔ'Q�F˜8Ñ$Ø—z’z .Ñ1Ô1ð "Ø-?¨VÔ-?ð .ð .Ø'ð.ð .ä!ð ˜>Ñ*øð -3Ð3FÔ,G�Ð(Ñ)Ø+1Ð2DÔ+E×+VÒ+VÑ+XÔ+X�Ð'Ñ(Ø#)Ô#4��xÑ øøÝð 	ð 	ð 	Ýð?ñô ð ð	øøøð
 �+Ôð 	B 6¨#¤;°¢? ?ÝÐ@ÑAÔAÐAØ�+Ôð 	H 6¨)Ô#4°qÒ#8Ð#8ÝÐFÑGÔGÐGàˆs   ÁB<D ÄD0c                 ó@   •— i d| j         i¥t          ¦   «         j        ¥S )zGet the identifying parameters.r%   )r%   ÚsuperÚ_identifying_params)ÚselfÚ	__class__s    €r    ra   zAnyscale._identifying_params˜   s+   ø€ ð
Ø˜Tœ_Ð-ð
å‰gŒgÔ)ð
ð 	
r"   c                 óÈ   •— d| j         i}t          ¦   «         s4|                     | j                             ¦   «         | j        dœ¦  «         i |¥t          ¦   «         j        ¥S )z,Get the parameters used to invoke the model.Úmodel)rI   Úapi_base)r%   r   Úupdater=   rV   r;   r`   Ú_invocation_params)rb   Úopenai_credsrc   s     €r    rh   zAnyscale._invocation_params    st   ø€ ð �T”_ð(
ˆõ ‰~Œ~ð 	Ø×Òà#Ô4×EÒEÑGÔGØ $Ô 6ðð ñô ð ð >�,Ð=¥%¡'¤'Ô"<Ð=Ð=r"   c                 ó   — dS )zReturn type of llm.zAnyscale LLMrA   )rb   s    r    Ú	_llm_typezAnyscale._llm_type¯   s	   € ð ˆ~r"   Nr$   ÚstopÚrun_managerÚkwargsc                 ó
  — | j         }i |¥|¥}|                      |||¦  «        }g }i }h d£}	d}
|D �]8}| j        r¬t          |¦  «        dk    rt	          d¦  «        ‚d} | j        |d         ||fi |¤ŽD ]}|€|}Œ||z  }Œ|€J ‚|                     |j        |j        r|j         	                    d¦  «        nd|j        r|j         	                    d¦  «        nddœ¦  «         Œ¶t          | f|d         |d	œ|¤Ž}t          |t          ¦  «        s|                     ¦   «         }|                     |d
         ¦  «         t          |	||¦  «         |
s| 	                    d¦  «        }
�Œ:|                      |||||
¬¦  «        S )at  Call out to OpenAI's endpoint with k unique prompts.

        Args:
            prompts: The prompts to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The full LLM output.

        Example:
            .. code-block:: python

                response = openai.generate(["Tell me a joke."])
        ¾   Útotal_tokensÚprompt_tokensÚcompletion_tokensNrQ   ú,Cannot stream results with multiple prompts.r   r)   r*   ©r+   r)   r*   ©Úpromptrm   r#   Úsystem_fingerprint©rx   )rh   Úget_sub_promptsrO   Úlenr\   Ú_streamr0   r+   r,   r2   r   Ú
isinstancer1   Úextendr!   r6   ©rb   r$   rl   rm   rn   ÚparamsÚsub_promptsr#   r   Ú_keysrx   Ú_promptsÚ
generationÚchunkr   s                  r    Ú	_generatezAnyscale._generate´   s  € ð, Ô(ˆØ%�FÐ%˜fÐ%ˆØ×*Ò*¨6°7¸DÑAÔAˆØˆØ&(ˆð GÐFÐFˆØ,0ÐØ#ð '	Lñ '	LˆHØŒ~ð &LÝ�x‘=”= 1Ò$Ð$Ý$Ð%SÑTÔTÐTà8<�
Ø)˜Tœ\¨(°1¬+°t¸[ÐSÐSÈFÐSÐSð ,ð ,�EØ!Ð)Ø%*˜
˜
à" eÑ+˜
˜
Ø!Ð-Ð-Ð-Ø—’à *¤à%Ô5ð*"¨Ô)C×)GÒ)GÈÑ)XÔ)XÐ)Xà!à%Ô5ð%" JÔ$>×$BÒ$BÀ:Ñ$NÔ$NÐ$Nà!ðð ñ
ô 
ð 
ð 
õ 1àðð $ Aœ;Ø +ð	ð ð
 ðð �õ " (­DÑ1Ô1ð /ð  (Ÿ}š}™œ�Hà—’˜x¨	Ô2Ñ3Ô3Ð3Ý" 5¨(°KÑ@Ô@Ð@Ø)ð LØ)1¯ªÐ6JÑ)KÔ)KÐ&ùØ×%Ò%ØØØØØ1ð &ñ 
ô 
ð 	
r"   c              ‹   óø  K  — | j         }i |¥|¥}|                      |||¦  «        }g }i }h d£}	d}
|D �]-}| j        r²t          |¦  «        dk    rt	          d¦  «        ‚d} | j        |d         ||fi |¤Ž2 3 d{V —†}|€|}Œ||z  }Œ6 |€J ‚|                     |j        |j        r|j         	                    d¦  «        nd|j        r|j         	                    d¦  «        nddœ¦  «         Œ¼t          | f|d         |d	œ|¤Žƒ d{V —†}t          |t          ¦  «        s|                     ¦   «         }|                     |d
         ¦  «         t          |	||¦  «         �Œ/|                      |||||
¬¦  «        S )z:Call out to OpenAI's endpoint async with k unique prompts.rp   NrQ   rt   r   r)   r*   ru   rv   r#   ry   )rh   rz   rO   r{   r\   Ú_astreamr0   r+   r,   r2   r   r}   r1   r~   r!   r6   r   s                  r    Ú
_ageneratezAnyscale._agenerate  sN  è è € ð Ô(ˆØ%�FÐ%˜fÐ%ˆØ×*Ò*¨6°7¸DÑAÔAˆØˆØ&(ˆð GÐFÐFˆØ,0ÐØ#ð $	Añ $	AˆHØŒ~ð #AÝ�x‘=”= 1Ò$Ð$Ý$Ð%SÑTÔTÐTà8<�
Ø#0 4¤=Ø˜Q”K  {ð$ð $Ø6<ð$ð $ð ,ð ,ð ,ð ,ð ,ð ,ð ,˜%ð "Ð)Ø%*˜
˜
à" eÑ+˜
˜
ð$ð "Ð-Ð-Ð-Ø—’à *¤à%Ô5ð*"¨Ô)C×)GÒ)GÈÑ)XÔ)XÐ)Xà!à%Ô5ð%" JÔ$>×$BÒ$BÀ:Ñ$NÔ$NÐ$Nà!ðð ñ
ô 
ð 
ð 
õ "8àð"ð $ Aœ;Ø +ð	"ð "ð
 ð"ð "ð ð ð ð ð ð �õ " (­DÑ1Ô1ð /Ø'Ÿ}š}™œ�HØ—’˜x¨	Ô2Ñ3Ô3Ð3Ý" 5¨(°KÑ@Ô@Ð@Ñ@Ø×%Ò%ØØØØØ1ð &ñ 
ô 
ð 	
s   Á7B	)NN)#Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rS   r;   ÚstrÚ__annotations__r   r=   rT   r%   Úlistr?   r   ÚclassmethodÚboolrC   r   r   r^   Úpropertyr   r   ra   rh   rk   r   r
   r   r†   r	   r‰   Ú__classcell__)rc   s   @r    r8   r8   A   sp  ø€ € € € € € ðð ð& 3Ø"˜UÐ+;Ð<Ñ<Ô<Ð�sÐ<Ð<Ñ<Ø"' %°	°	¸"±´Ð">Ñ">Ô">Ð�iÐ>Ð>Ñ>Ø�e MÐ2Ñ2Ô2€J�Ð2Ð2Ñ2à!˜E°$Ð7Ñ7Ô7€O�TÐ7Ð7Ñ7àð 4ð ð ð ñ „[ðð ð5¨$ð 5°4ð 5ð 5ð 5ñ „Xð5ðn ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ð 
ð 
ñ „Xð
ð ð> D¨¨c¨¤Nð >ð >ð >ð >ð >ñ „Xð>ð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	M
ð M
à�c”ðM
ð �t˜C”yÔ!ðM
ð Ð6Ô7ð	M
ð
 ðM
ð 
ðM
ð M
ð M
ð M
ðd %)Ø?Cð	<
ð <
à�c”ð<
ð �t˜C”yÔ!ð<
ð Ð;Ô<ð	<
ð
 ð<
ð 
ð<
ð <
ð <
ð <
ð <
ð <
ð <
ð <
r"   r8   )#r�   Útypingr   r   r   r   r   r   Úlangchain_core.callbacksr	   r
   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   r   r   Úpydanticr   r   Úlangchain_community.llms.openair   r   r   Ú langchain_community.utils.openair   rS   rT   rŽ   r!   Úintr6   r8   rA   r"   r    ú<module>r�      s  ðØ &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð
 :Ð 9Ð 9Ð 9Ð 9Ð 9à:Ð Ø6€ð	9Ø
ˆcŒ(ð	9Ø" 3¨ 8œnð	9Ø;?ÀÀSÀ¼>ð	9à	ð	9ð 	9ð 	9ð 	9ðEØðEØ œ9ðEØ37¸¸S¸´>ðEØORðEàðEð Eð Eð Eð,~
ð ~
ð ~
ð ~
ð ~
ˆzñ ~
ô ~
ð ~
ð ~
ð ~
r"   