Ë
    µŒjG  ã                   ó¶   — d dl Z d dlZd dl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  ej*                  e«      Z G d„ d	e«      Zy)
é    N)ÚAnyÚDictÚIteratorÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)Úget_from_dict_or_envÚpre_init)Úenforce_stop_tokensc                   ó  — e Zd ZU dZ	 eed<   	 eed<   	 dZee   ed<   dZ	ee
   ed<   dZee
   ed	<   d
Zee   ed<   dZeee      ed<   	 dZeed<   	 dZee   ed<   dZee   ed<   ededefd„«       Zedefd„«       Zedeeef   fd„«       Zedeeef   fd„«       Zdeee      dedefd„Zededeee      dee   defd„«       Z	 	 d%dedeee      dee    dedef
d „Z!d!i fded"edefd#„Z"	 	 d%dedeee      dee    dede#e$   f
d$„Z%y)&ÚPaiEasEndpointam  Langchain LLM class to help to access eass llm service.

        To use this endpoint, must have a deployed eas chat llm service on PAI AliCloud.
    One can set the environment variable ``eas_service_url`` and ``eas_service_token``.
    The environment variables can set with your eas service url and service token.

    Example:
        .. code-block:: python

            from langchain_community.llms.pai_eas_endpoint import PaiEasEndpoint
            eas_chat_endpoint = PaiEasChatEndpoint(
                eas_service_url="your_service_url",
                eas_service_token="your_service_token"
            )
    Úeas_service_urlÚeas_service_tokeni   Úmax_new_tokensgffffffî?Útemperaturegš™™™™™¹?Útop_pr   Útop_kNÚstop_sequencesFÚ	streamingÚmodel_kwargsz2.0ÚversionÚvaluesÚreturnc                 óF   — t        |dd«      |d<   t        |dd«      |d<   |S )z?Validate that api key and python package exists in environment.r   ÚEAS_SERVICE_URLr   ÚEAS_SERVICE_TOKEN)r   )Úclsr   s     ús/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/pai_eas_endpoint.pyÚvalidate_environmentz#PaiEasEndpoint.validate_environment6   s?   € ô %9ØÐ%Ð'8ó%
ˆÐ Ñ!ô ';ØÐ'Ð)<ó'
ˆÐ"Ñ#ð ˆó    c                  ó   — y)zReturn type of llm.Úpai_eas_endpoint© ©Úselfs    r!   Ú	_llm_typezPaiEasEndpoint._llm_typeB   s   € ð "r#   c                 ób   — | j                   | j                  | j                  | j                  g dœS )z2Get the default parameters for calling Cohere API.)r   r   r   r   r   )r   r   r   r   r'   s    r!   Ú_default_paramszPaiEasEndpoint._default_paramsG   s1   € ð #×1Ñ1Ø×+Ñ+Ø—Z‘ZØ—Z‘ZØ ñ
ð 	
r#   c                 óX   — | j                   xs i }| j                  | j                  dœ|¥S )zGet the identifying parameters.)r   r   )r   r   r   )r(   Ú_model_kwargss     r!   Ú_identifying_paramsz"PaiEasEndpoint._identifying_paramsR   s:   € ð ×)Ñ)Ò/¨Rˆà#×3Ñ3Ø!%×!7Ñ!7ñ
ð ð
ð 	
r#   Úkwargsc                 óè   — | j                   }| j                  �|�t        d«      ‚| j                  �| j                  |d<   n||d<   | j                  r|j	                  | j                  «       i |¥|¥S )Nz2`stop` found in both the input and default params.Ústop)r+   r   Ú
ValueErrorr   Úupdate)r(   r   r/   Úparamss       r!   Ú_invocation_paramsz!PaiEasEndpoint._invocation_params\   s{   € ð ×%Ñ%ˆØ×ÑÐ*¨~Ð/IÜÐQÓRÐRØ× Ñ Ð,Ø!×0Ñ0ˆF�6ŠNà+ˆF�6‰NØ×ÒØ�M‰M˜$×+Ñ+Ô,Ø#�&Ð#˜FÐ#Ð#r#   Úresponser1   c                 óZ   — |dk(  r| }n| d   }|rt        ||«      }dj                  |«      S )Nú1.0r6   Ú )r   Újoin)r6   r1   r   Útexts       r!   Ú_process_responsez PaiEasEndpoint._process_responsej   s8   € ð �eÒØ‰Dà˜JÑ'ˆDáÜ& t¨TÓ2ˆDØ�w‰w�t‹}Ðr#   ÚpromptÚrun_managerc                 ó~  —  | j                   |fi |¤Ž}|j                  «       }d }	 | j                  r-d} | j                  |||fi |¤ŽD ]  }||j                  z  }Œ |S | j                  ||«      }|j                  d«      }	| j                  ||	| j                  «      S # t        $ r}
t        d|
› �«      ‚d }
~
ww xY w)Nr9   r1   zError raised by the service: )r5   Ústripr   Ú_streamr;   Ú	_call_easÚgetr<   r   Ú	Exceptionr2   )r(   r=   r1   r>   r/   r4   r6   Ú
completionÚchunkÚ_stopÚerrors              r!   Ú_callzPaiEasEndpoint._callw   sÌ   € ð )�×(Ñ(¨Ñ8°Ñ8ˆØ—‘“ˆØˆð	FØ�~Š~Ø�
Ø)˜TŸ\™\¨&°$¸ÑNÀvÔN�EØ %§*¡*Ñ,‘Jð Oà!Ð!àŸ>™>¨&°&Ó9�ØŸ
™
 6Ó*�Ø×-Ñ-¨h¸¸t¿|¹|ÓLÐLøÜò 	FÜÐ<¸U¸GÐDÓEÐEûð	Fús   §8B  Á ?B  Â 	B<Â)B7Â7B<r9   r4   c                 ó  — d| j                   › dœ}| j                  dk(  rd|› i}nd|› i}|j                  «       D ]
  \  }}|||<   Œ t        j                  | j
                  ||¬«      }|j                  dk7  r%t        d|j                  › d	|j                  › �«      ‚	 t        j                  |j                  «      S # t        $ r<}t        |t        j                  j                  «      r|j                  cY d
}~S |‚d
}~ww xY w)z#Generate text from the eas service.zapplication/json)zContent-TypeÚAuthorizationr8   Ú	input_idsr=   )ÚheadersÚjsonéÈ   z Request failed with status code z and message N)r   r   ÚitemsÚrequestsÚpostr   Ústatus_coderD   r;   rN   ÚloadsÚ
isinstanceÚdecoderÚJSONDecodeError)	r(   r=   r4   rM   ÚbodyÚkeyÚvaluer6   Úes	            r!   rB   zPaiEasEndpoint._call_easŽ   s  € ð /Ø $× 6Ñ 6Ð7ñ
ˆð �<‰<˜5Ò à ˜xð‰Dð
 ˜V˜HðˆDð
 !Ÿ,™,ž.‰JˆC�ØˆD�ŠIð )ô —=‘= ×!5Ñ!5¸wÈTÔRˆà×Ñ 3Ò&ÜØ2°8×3GÑ3GÐ2HØ §¡˜ð0óð ð
	Ü—:‘:˜hŸm™mÓ,Ð,øÜò 	Ü˜!œTŸ\™\×9Ñ9Ô:Ø—}‘}Õ$ØˆGûð	ús$   ÂB> Â>	DÃ/C>Ã6DÃ<C>Ã>Dc              +   óÒ  K  —  | j                   |fi |¤Ž}d| j                  › dœ}| j                  dk(  rad|i|¥}t        j                  | j
                  ||d¬«      }t        |j                  ¬«      }	|r|j                  |	j                  «       |	–— y |dd	œ|¥}t        j                  | j
                  ||d¬«      }|j                  d
dd¬«      D ]�  }
|
sŒt        j                  |
j                  d«      «      }|d   }d }|d   D ]	  }||v sŒ|}Œ d }|r|d |j                  |«       }n|}|r-t        |¬«      }	|r|j                  |	j                  «       |	–— |sŒ� y  y ­w)NzTest Client)z
User-AgentrK   r8   rL   T)rM   rN   Ústream)r;   ÚTrue)r=   Úuse_stream_chati    Fó    )Ú
chunk_sizeÚdecode_unicodeÚ	delimiterzutf-8r6   r1   )r5   r   r   rQ   rR   r   r   r;   Úon_llm_new_tokenÚ
iter_linesrN   rT   ÚdecodeÚindex)r(   r=   r1   r>   r/   Úinvocation_paramsrM   Úploadr6   ÚresrF   ÚdataÚoutputÚstop_seq_foundÚstop_seqr;   s                   r!   rA   zPaiEasEndpoint._stream±   sŒ  è ø€ ð 4˜D×3Ñ3°DÑC¸FÑCÐð (Ø $× 6Ñ 6Ð7ñ
ˆð
 �<‰<˜5Ò Ø  &Ð>Ð,=Ð>ˆEÜ—}‘}Ø×$Ñ$¨g¸EÈ$ôˆHô " x§}¡}Ô5ˆCáØ×,Ñ,¨S¯X©XÔ6ð ‹Ià%¸&ÑVÐDUÐVˆEä—}‘}Ø×$Ñ$¨g¸EÈ$ôˆHð "×,Ñ,Ø°Àð -ö �ò ÜŸ:™: e§l¡l°7Ó&;Ó<�DØ! *Ñ-�Fà48�NØ$5°fÔ$=˜Ø# vÒ-Ø-5™Nð %>ð
 +/�DÙ%Ø%Ð&D¨¯©°^Ó(DÐE™à%˜ñ Ü-°4Ô8˜Ù&Ø'×8Ñ8¸¿¹ÔBØ!š	ò &Ùñ9ùs   ‚CE'Ã7E'ÄAE'Å#E')NN)&Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r   Úintr   Úfloatr   r   r   r   r   Úboolr   Údictr   r   r   r"   Úpropertyr)   r   r+   r   r.   r5   Ústaticmethodr<   r	   rI   rB   r   r   rA   r&   r#   r!   r   r      sC  … ñð  ØÓàØÓà&Ø$'€N�H˜S‘MÓ'Ø#'€K�˜%‘Ó'Ø €Eˆ8�E‰?Ó Ø€Eˆ8�C‰=ÓØ*.€N�H˜T #™YÑ'Ó.à"Ø€IˆtÓàKØ#'€L�(˜4‘.Ó'à"€GˆX�c‰]Ó"àð	¨$ð 	°4ò 	ó ð	ð ð"˜3ò "ó ð"ð ð
  c¨3 h¡ò 
ó ð
ð ð
 W¨S°#¨XÑ%6ò 
ó ð
ð$Ø& t¨C¡yÑ1ð$Ø=@ð$à	ó$ð ð
Øð
Ø% d¨3¡iÑ0ð
Ø;CÀC¹=ð
à	ò
ó ð
ð %)Ø:>ñ	FàðFð �t˜C‘yÑ!ðFð Ð6Ñ7ð	Fð
 ðFð 
óFð. ')¸ñ ! ð !°$ð !Àó !ðL %)Ø:>ñ	>àð>ð �t˜C‘yÑ!ð>ð Ð6Ñ7ð	>ð
 ð>ð 
�/Ñ	"ô>r#   r   )rN   ÚloggingÚtypingr   r   r   r   r   r   rQ   Úlangchain_core.callbacksr	   Ú#langchain_core.language_models.llmsr
   Úlangchain_core.outputsr   Úlangchain_core.utilsr   r   Úlangchain_community.llms.utilsr   Ú	getLoggerro   Úloggerr   r&   r#   r!   Ú<module>r„      sC   ðÛ Û ß ?× ?ã Ý =Ý 3Ý 2ß ?å >à	ˆ×	Ñ	˜8Ó	$€ô_�Sõ _r#   