Ë
    µŒj„.  ã            
       ó  — 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"y)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                 ó€   — | j                  |d   «      }|D ]%  }||vr|d   |   ||<   Œ||xx   |d   |   z  cc<   Œ' y)zUpdate token usage.ÚusageN)Úintersection)r   r   r   Ú_keys_to_useÚ_keys        úk/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/anyscale.pyÚupdate_token_usager!      sY   € ð ×$Ñ$ X¨gÑ%6Ó7€LÛˆØ�{Ñ"Ø (¨Ñ 1°$Ñ 7ˆK˜Òà˜Ó ¨'Ñ!2°4Ñ!8Ñ8Ôñ	 ó    ÚchoicesÚpromptsÚ
model_namec                 óò   — g }t        |«      D ]V  \  }}| |   }|j                  t        |d   d   t        |j	                  d«      |j	                  d«      ¬«      ¬«      g«       ŒX ||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Ø!'§¡¨JÓ!7ô%ôðõ
	
ð #ð "-¸JÑG€JÜ ¸Ô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.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                  ó   — y)NF© )Úclss    r    Úis_lc_serializablezAnyscale.is_lc_serializable\   s   € àr"   Úvaluesc                 óŒ  — t        |ddt        ¬«      |d<   t        t        |dd«      «      |d<   t        |ddt        ¬«      |d<   	 dd	l}t        «       rz|d   j                  «       |d   d
œ}|j                  d«      s |j                  di |¤Žj                  |d<   |j                  d«      sM |j                  di |¤Žj                  |d<   n-|d   |d<   |d   j                  «       |d<   |j                  |d<   |d   r|d   dkD  rt        d«      ‚|d   r|d   dkD  rt        d«      ‚|S # t        $ r t        d«      ‚w xY w)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ó&
ˆÐ!Ñ"ô  4ØØØÜ!ô	 
ˆˆ|Ñð	ÛäŒ~à%Ð&8Ñ9×JÑJÓLØ &Ð':Ñ ;ñ
!�ð —z‘z (Ô+Ø'4 v§}¡}Ñ'E°}Ñ'E×'QÑ'Q�F˜8Ñ$Ø—z‘z .Ô1Ø-?¨V×-?Ñ-?ñ .Ø'ñ.ç!‘kð ˜>Ò*ð -3Ð3FÑ,G�Ð(Ñ)Ø+1Ð2DÑ+E×+VÑ+VÓ+X�Ð'Ñ(Ø#)×#4Ñ#4��xÑ ð �+Ò 6¨#¡;°¢?ÜÐ@ÓAÐAØ�+Ò 6¨)Ñ#4°qÒ#8ÜÐFÓGÐGàˆøô ò 	Üð?óð ð	ús   ÁB5D. Ä.Ec                 ó8   •— i d| j                   i¥t        ‰| �  ¥S )zGet the identifying parameters.r%   )r%   ÚsuperÚ_identifying_params)ÚselfÚ	__class__s    €r    ra   zAnyscale._identifying_params˜   s+   ø€ ð
Ø˜TŸ_™_Ð-ð
ä‰gÑ)ð
ð 	
r"   c                 ó¼   •— d| j                   i}t        «       s6|j                  | j                  j	                  «       | j
                  dœ«       i |¥t        ‰| �  ¥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    sa   ø€ ð �T—_‘_ð(
ˆô Œ~Ø×Ñà#×4Ñ4×EÑEÓGØ $× 6Ñ 6ñôð >�,Ð=¤%¡'Ñ"<Ð=Ð=r"   c                  ó   — y)zReturn type of llm.zAnyscale LLMrA   )rb   s    r    Ú	_llm_typezAnyscale._llm_type¯   s   € ð r"   r$   ÚstopÚrun_managerÚkwargsc                 óî  — | j                   }i |¥|¥}| j                  |||«      }g }i }h d£}	d}
|D �]+  }| j                  r´t        |«      dkD  rt	        d«      ‚d} | j
                  |d   ||fi |¤ŽD ]  }|€|}Œ||z  }Œ |€J ‚|j                  |j                  |j                  r|j                  j                  d«      nd|j                  r|j                  j                  d«      nddœ«       ŒÄt        | f|d   |d	œ|¤Ž}t        |t        «      s|j                  «       }|j                  |d
   «       t        |	||«       |
r�Œ|j                  d«      }
�Œ. | j                  |||||
¬«      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©rw   )rh   Úget_sub_promptsrO   Úlenr\   Ú_streamr0   r+   r,   r2   r   Ú
isinstancer1   Úextendr!   r6   ©rb   r$   rl   rm   rn   ÚparamsÚsub_promptsr#   r   Ú_keysrw   Ú_promptsÚ
generationÚchunkr   s                  r    Ú	_generatezAnyscale._generate´   s¸  € ð, ×(Ñ(ˆØ%�FÐ%˜fÐ%ˆØ×*Ñ*¨6°7¸DÓAˆØˆØ&(ˆò GˆØ,0ÐÜ#ˆHØ�~Š~Ü�x“= 1Ò$Ü$Ð%SÓTÐTà8<�
Ø)˜TŸ\™\¨(°1©+°t¸[ÑSÈFÔS�EØ!Ð)Ø%*™
à" eÑ+™
ð	 Tð
 "Ð-Ð-Ð-Ø—‘à *§¡à%×5Ò5ð *4×)CÑ)C×)GÑ)GÈÔ)Xà!à%×5Ò5ð %/×$>Ñ$>×$BÑ$BÀ:Ô$Nà!ñõ
ô 1àðð $ A™;Ø +ñ	ð
 ñ�ô " (¬DÔ1ð  (Ÿ}™}›�Hà—‘˜x¨	Ñ2Ô3Ü" 5¨(°KÔ@Û)Ø)1¯©Ð6JÓ)KÒ&ðO $ðP ×%Ñ%ØØØØØ1ð &ó 
ð 	
r"   c              ‹   óî  K  — | j                   }i |¥|¥}| j                  |||«      }g }i }h d£}	d}
|D ]°  }| j                  rGt        |«      dkD  rt	        d«      ‚d} | j
                  |d   ||fi |¤Ž2 3 d{  –—† }|€|}Œ||z  }Œt        | f|d   |d	œ|¤Žƒ d{  –—† }t        |t        «      s|j                  «       }|j                  |d
   «       t        |	||«       Œ² | j                  |||||
¬«      S 7 Œ‚6 |€J ‚|j                  |j                  |j                  r|j                  j                  d«      nd|j                  r|j                  j                  d«      nddœ«       �Œ?7 ŒÓ­w)z:Call out to OpenAI's endpoint async with k unique prompts.>   rp   rq   rr   NrQ   rs   r   r)   r*   rt   ru   r#   rx   )rh   ry   rO   rz   r\   Ú_astreamr0   r+   r,   r2   r   r|   r1   r}   r!   r6   r~   s                  r    Ú
_ageneratezAnyscale._agenerate  sÃ  è ø€ ð ×(Ñ(ˆØ%�FÐ%˜fÐ%ˆØ×*Ñ*¨6°7¸DÓAˆØˆØ&(ˆò GˆØ,0ÐÛ#ˆHØ�~Š~Ü�x“= 1Ò$Ü$Ð%SÓTÐTà8<�
Ø#0 4§=¡=Ø˜Q‘K  {ñ$Ø6<ò$÷ ,˜%ð "Ð)Ø%*™
à" eÑ+™
ô "8àð"ð $ A™;Ø +ñ	"ð
 ñ"÷ �ô " (¬DÔ1Ø'Ÿ}™}›�HØ—‘˜x¨	Ñ2Ô3Ü" 5¨(°KÕ@ðI $ðJ ×%Ñ%ØØØØØ1ð &ó 
ð 	
ð?,øð $ð "Ð-Ð-Ð-Ø—‘à *§¡à%×5Ò5ð *4×)CÑ)C×)GÑ)GÈÔ)Xà!à%×5Ò5ð %/×$>Ñ$>×$BÑ$BÀ:Ô$Nà!ñö
ðús8   ‚A4E5Á6C?Á:C=Á;C?Á>!E5ÂE3Â AE5Ã=C?Ã?A5E5)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   s•  ø… ñð& 3Ù"Ð+;Ô<Ð�sÓ<Ù"'±	¸"³Ô">Ð�iÓ>Ù MÔ2€J�Ó2á!°$Ô7€O�TÓ7àð 4ò ó ðð ð5¨$ð 5°4ò 5ó ð5ðn ð
 W¨S°#¨XÑ%6ô 
ó ð
ð ð> D¨¨c¨¡Nô >ó ð>ð ð˜3ò ó ðð %)Ø:>ñ	M
à�c‘ðM
ð �t˜C‘yÑ!ðM
ð Ð6Ñ7ð	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ß VÑ Vß %÷ñ õ
 :à:Ð Ø6€ð	9Ø
ˆc‰(ð	9Ø" 3¨ 8™nð	9Ø;?ÀÀSÀ¹>ð	9à	ó	9ðEØðEØ ™9ðEØ37¸¸S¸±>ðEØORðEàóEô,~
ˆzõ ~
r"   