§
    æ˜ºh†)  ã            
       ó.  — d Z ddlmZmZmZmZ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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ÚAsyncIteratorÚDictÚIteratorÚListÚMappingÚOptionalÚSetÚTupleÚcast)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)Ú
GenerationÚGenerationChunkÚ	LLMResult)ÚFieldÚ	SecretStrÚroot_validator)Úconvert_to_secret_strÚget_from_dict_or_env)Ú
BaseOpenAIÚacompletion_with_retryÚcompletion_with_retryÚ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        úi/var/www/html/services/rag-service/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(   r0   ÚiÚ_Úchoicer1   s	            r#   Úcreate_llm_resultr9   *   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	 dZee         ed<   dZe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fd„Z	 	 ddedeee                  dee         dedee         f
d„Z	 	 ddedeee                  dee          dede!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 )ÚAnyscaleaa  Anyscale large language models.

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

    Example:
        .. code-block:: python
            from langchain_community.llms import Anyscale
            anyscalellm = Anyscale(anyscale_api_base="ANYSCALE_API_BASE",
                                   anyscale_api_key="ANYSCALE_API_KEY",
                                   model_name="meta-llama/Llama-2-7b-chat-hf")
            # To leverage Ray for parallel processing
            @ray.remote(num_cpus=1)
            def send_query(llm, text):
                resp = llm(text)
                return resp
            futures = [send_query.remote(anyscalellm, text) for text in texts]
            results = ray.get(futures)
    NÚanyscale_api_baseÚanyscale_api_key)Údefault_factoryÚprefix_messagesr   c                 ó   — dS )NF© )Úclss    r#   Úis_lc_serializablezAnyscale.is_lc_serializable\   s   € àˆur%   Úvaluesc                 óV  — t          |dd¦  «        |d<   t          t          |dd¦  «        ¦  «        |d<   	 ddl}|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_BASEr=   ÚANYSCALE_API_KEYr   NÚclientzTCould 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.)r   r   ÚopenaiÚChatCompletionÚImportErrorÚ
ValueError)rB   rD   rM   s      r#   Úvalidate_environmentzAnyscale.validate_environment`   sø   € õ ';ØÐ'Ð)<ñ'
ô '
ˆÐ"Ñ#õ &;Ý  Ð);Ð=OÑPÔPñ&
ô &
ˆÐ!Ñ"ð		ØˆMˆMˆMð  &Ô4ˆF�8ÑÐøÝð 	ð 	ð 	Ýð?ñô ð ð	øøøð
 �+Ôð 	B 6¨#¤;°¢? ?ÝÐ@ÑAÔAÐAØ�+Ôð 	H 6¨)Ô#4°qÒ#8Ð#8ÝÐFÑGÔGÐGàˆs   ·A ÁA c                 ó@   •— i d| j         i¥t          ¦   «         j        ¥S )zGet the identifying parameters.r(   )r(   ÚsuperÚ_identifying_params)ÚselfÚ	__class__s    €r#   rT   zAnyscale._identifying_params{   s+   ø€ ð
Ø˜Tœ_Ð-ð
å‰gŒgÔ)ð
ð 	
r%   c                 ó¬   •— t          t          | j        ¦  «                             ¦   «         | j        dœ}i |¥d| j        i¥t          ¦   «         j        ¥S )z,Get the parameters used to invoke the model.)Úapi_keyÚapi_baseÚmodel)r   r   r=   Úget_secret_valuer<   r(   rS   Ú_default_params)rU   Úopenai_credsrV   s     €r#   Ú_invocation_paramszAnyscale._invocation_paramsƒ   sY   ø€ õ �I tÔ'<Ñ=Ô=×NÒNÑPÔPØÔ.ð(
ð (
ˆð Y�,ÐX 7¨D¬OÐ"<ÐXÅÁÄÔ@WÐXÐXr%   c                 ó   — dS )zReturn type of llm.zAnyscale LLMrA   )rU   s    r#   Ú	_llm_typezAnyscale._llm_typeŒ   s	   € ð ˆ~r%   r'   Ústopc                 óö   — t          |¦  «        dk    rt          d|› �¦  «        ‚| j        d|d         dœgz   }| j        }|�d|v rt          d¦  «        ‚||d<   |                     d¦  «        d	k    r|d= ||fS )
NrK   z4Anyscale currently only supports single prompt, got Úuserr   ©Úroler+   ra   z2`stop` found in both the input and default params.Ú
max_tokenséÿÿÿÿ)ÚlenrP   r?   r^   r5   )rU   r'   ra   ÚmessagesÚparamss        r#   Ú_get_chat_messageszAnyscale._get_chat_messages‘   s«   € õ ˆw‰<Œ<˜!ÒÐÝØPÀwÐPÐPñô ð ð Ô'°FÀwÈqÄzÐ+RÐ+RÐ*SÑSˆØ!%Ô!8ˆØÐØ˜ÐÐÝ Ð!UÑVÔVÐVØ!ˆF�6‰NØ�:Š:�lÑ#Ô# rÒ)Ð)à�|Ð$Ø˜ÐÐr%   ÚpromptÚrun_managerÚkwargsc              +   ó"  K  — |                       |g|¦  «        \  }}i |¥|¥ddi¥}t          | f||dœ|¤ŽD ]W}|d         d         d                              dd¦  «        }t          |¬	¦  «        }	|	V — |r|                     ||	¬
¦  «         ŒXd S ©NÚstreamT©ri   rm   r&   r   Údeltar+   Ú )r.   )Úchunk)rk   r   r5   r   Úon_llm_new_token©
rU   rl   ra   rm   rn   ri   rj   Ústream_respÚtokenru   s
             r#   Ú_streamzAnyscale._stream£   sà   è è € ð  ×2Ò2°F°8¸TÑBÔBÑˆ�&Ø5�FÐ5˜fÐ5 h°Ð5Ð5ˆÝ0Øð
Ø#°ð
ð 
Ø@Fð
ð 
ð 	Að 	AˆKð   	Ô*¨1Ô-¨gÔ6×:Ò:¸9ÀbÑIÔIˆEÝ#¨Ð/Ñ/Ô/ˆEØˆKˆKˆKØð AØ×,Ò,¨U¸%Ð,Ñ@Ô@Ð@øð	Að 	Ar%   c                óH  K  — |                       |g|¦  «        \  }}i |¥|¥ddi¥}t          | f||dœ|¤Žƒ d {V —†2 3 d {V —†}|d         d         d                              dd¦  «        }t          |¬	¦  «        }	|	W V — |r|                     ||	¬
¦  «        ƒ d {V —† Œd6 d S rp   )rk   r   r5   r   rv   rw   s
             r#   Ú_astreamzAnyscale._astreamµ   s3  è è € ð  ×2Ò2°F°8¸TÑBÔBÑˆ�&Ø5�FÐ5˜fÐ5 h°Ð5Ð5ˆÝ'=Øð(
Ø#°ð(
ð (
Ø@Fð(
ð (
ð "
ð "
ð "
ð "
ð "
ð "
ð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	G�+ð   	Ô*¨1Ô-¨gÔ6×:Ò:¸9ÀbÑIÔIˆEÝ#¨Ð/Ñ/Ô/ˆEØˆKˆKˆKˆKØð GØ!×2Ò2°5ÀÐ2ÑFÔFÐFÐFÐFÐFÐFÐFÐFøð"
ð "
ð "
s   ½B!c                 ó  — g }i }h d£}|D ]ë}| j         r†d }	 | j        |||fi |¤ŽD ]}
|	€|
}	Œ|	|
z  }	Œ|	€J ‚|                     d|	j        i|	j        r|	j                             d¦  «        nd |	j        r|	j                             d¦  «        nd dœ¦  «         Œ�|                      |g|¦  «        \  }}i |¥|¥}t          | f||dœ|¤Ž}|                     |d         ¦  «         t          |||¦  «         Œìt          |||| j        ¦  «        S )N¾   Útotal_tokensÚprompt_tokensÚcompletion_tokensr+   r,   r-   ©r*   r,   r-   rr   r&   )rI   rz   r3   r.   r/   r5   rk   r   Úextendr$   r9   r(   )rU   r'   ra   rm   rn   r&   r   Ú_keysrl   Ú
generationru   ri   rj   r   s                 r#   Ú	_generatezAnyscale._generateÇ   s—  € ð ˆØ&(ˆØFÐFÐFˆØð 	Að 	AˆFØŒ~ð AØ8<�
Ø)˜Tœ\¨&°$¸ÐNÐNÀvÐNÐNð ,ð ,�EØ!Ð)Ø%*˜
˜
à" eÑ+˜
˜
Ø!Ð-Ð-Ð-Ø—’à$-¨z¬Ð#?à%Ô5ð*"¨Ô)C×)GÒ)GÈÑ)XÔ)XÐ)Xà!à%Ô5ð%" JÔ$>×$BÒ$BÀ:Ñ$NÔ$NÐ$Nà!ðð ñ
ô 
ð 
ð 
ð $(×#:Ò#:¸F¸8ÀTÑ#JÔ#JÑ �˜&Ø-˜FÐ- fÐ-�Ý0ØðØ#+¸ðð ØHNðð �ð —’˜x¨	Ô2Ñ3Ô3Ð3Ý" 5¨(°KÑ@Ô@Ð@Ð@Ý  ¨'°;ÀÄÑPÔPÐPr%   c              ‹   óX  K  — g }i }h d£}|D �]}| j         d|dœgz   }	| j        rŒd }
 | j        |||fi |¤Ž2 3 d {V —†}|
€|}
Œ|
|z  }
Œ6 |
€J ‚|                     d|
j        i|
j        r|
j                             d¦  «        nd |
j        r|
j                             d¦  «        nd dœ¦  «         Œ¤|                      |g|¦  «        \  }	}i |¥|¥}t          | f|	|dœ|¤Žƒ d {V —†}| 	                    |d	         ¦  «         t          |||¦  «         �Œt          |||| j        ¦  «        S )
Nr~   rc   rd   r+   r,   r-   r‚   rr   r&   )r?   rI   r|   r3   r.   r/   r5   rk   r   rƒ   r$   r9   r(   )rU   r'   ra   rm   rn   r&   r   r„   rl   ri   r…   ru   rj   r   s                 r#   Ú
_ageneratezAnyscale._agenerateð   sò  è è € ð ˆØ&(ˆØFÐFÐFˆØð 	Añ 	AˆFØÔ+¸È6Ð/RÐ/RÐ.SÑSˆHØŒ~ð AØ8<�
Ø#0 4¤=°¸¸{Ð#UÐ#UÈfÐ#UÐ#Uð ,ð ,ð ,ð ,ð ,ð ,ð ,˜%Ø!Ð)Ø%*˜
˜
à" eÑ+˜
˜
ð	 $Vð
 "Ð-Ð-Ð-Ø—’à$-¨z¬Ð#?à%Ô5ð*"¨Ô)C×)GÒ)GÈÑ)XÔ)XÐ)Xà!à%Ô5ð%" JÔ$>×$BÒ$BÀ:Ñ$NÔ$NÐ$Nà!ðð ñ
ô 
ð 
ð 
ð $(×#:Ò#:¸F¸8ÀTÑ#JÔ#JÑ �˜&Ø-˜FÐ- fÐ-�Ý!7Øð"Ø#+¸ð"ð "ØHNð"ð "ð ð ð ð ð ð �ð —’˜x¨	Ô2Ñ3Ô3Ð3Ý" 5¨(°KÑ@Ô@Ð@Ñ@Ý  ¨'°;ÀÄÑPÔPÐPs   ·A	)N)NN)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   r	   ÚstrÚ__annotations__r=   r   r   Úlistr?   r   ÚclassmethodÚboolrC   r   r   rQ   Úpropertyr   r   rT   r^   r`   r   rk   r   r   r   rz   r   r   r|   r   r†   rˆ   Ú__classcell__)rV   s   @r#   r;   r;   @   sx  ø€ € € € € € ðð ð* 3Ø'+Ð�x ”}Ð+Ð+Ñ+Ø,0Ð�h˜yÔ)Ð0Ð0Ñ0à!˜E°$Ð7Ñ7Ô7€O�TÐ7Ð7Ñ7àð 4ð ð ð ñ „[ðð €^ÑÔð¨$ð °4ð ð ð ñ Ôðð4 ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ð 
ð 
ñ „Xð
ð ðY D¨¨c¨¤Nð Yð Yð Yð Yð Yñ „XðYð ð˜3ð ð ð ñ „Xðð
 ?Cð ð  Ø˜C”yð Ø(0°°c´Ô(;ð à	ð ð  ð  ð  ð* %)Ø:>ð	Að AàðAð �t˜C”yÔ!ðAð Ð6Ô7ð	Að
 ðAð 
�/Ô	"ðAð Að Að Að* %)Ø?Cð	Gð GàðGð �t˜C”yÔ!ðGð Ð;Ô<ð	Gð
 ðGð 
�Ô	'ðGð Gð Gð Gð* %)Ø:>ð	'Qð 'Qà�c”ð'Qð �t˜C”yÔ!ð'Qð Ð6Ô7ð	'Qð
 ð'Qð 
ð'Qð 'Qð 'Qð 'QðX %)Ø?Cð	'Qð 'Qà�c”ð'Qð �t˜C”yÔ!ð'Qð Ð;Ô<ð	'Qð
 ð'Qð 
ð'Qð 'Qð 'Qð 'Qð 'Qð 'Qð 'Qð 'Qr%   r;   )#rŒ   Útypingr   r   r   r   r   r   r	   r
   r   r   Úlangchain_core.callbacksr   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.pydantic_v1r   r   r   Úlangchain_core.utilsr   r   Úlangchain_community.llms.openair   r   r   r�   r$   Úintr9   r;   rA   r%   r#   ú<module>r›      s  ðØ &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Lðð ð ð ð ð ð ð ð ð ð	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ð,WQð WQð WQð WQð WQˆzñ WQô WQð WQð WQð WQr%   