Ë
    µŒjc8  ã                   óä   — d dl Z d dlZd dlm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Zd dlmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ  G d„ de«      Z  G d„ de«      Z!y)é    N)ÚThreadPoolExecutor)ÚAnyÚDictÚListÚMappingÚOptionalÚSequenceÚ	TypedDict)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLM)Ú
GenerationÚ	LLMResult©Úget_from_dict_or_env)Ú
ConfigDictÚFieldÚmodel_validator)ÚSelf)Úenforce_stop_tokensc                   ó   — e Zd ZU dZeed<   y)ÚTrainResultzTrain result.ÚlossN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚfloatÚ__annotations__© ó    ún/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/gradient_ai.pyr   r      s
   … Ùà
„Kr!   r   c                   ó´  — e Zd ZU dZ edd¬«      Z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d<   	 dZe	ej                      ed<   	  edd¬«      Z ed¬«      ededefd„«       «       Z ed¬«      defd„«       Zedeeef   fd„«       Zedefd„«       Zdee   deeef   deeef   fd„Zdedeeef   deeef   fd„Z 	 	 d'dede	e!e      de	e"   dedef
d „Z#	 	 d'd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'	 	 d'd"e!e   de	e!e      de	e$   dede&f
d$„Z(dee   dede)fd%„Z*dee   dede)fd&„Z+y)(ÚGradientLLMa›  Gradient.ai LLM Endpoints.

    GradientLLM is a class to interact with LLMs on gradient.ai

    To use, set the environment variable ``GRADIENT_ACCESS_TOKEN`` with your
    API token and ``GRADIENT_WORKSPACE_ID`` for your gradient workspace,
    or alternatively provide them as keywords to the constructor of this class.

    Example:
        .. code-block:: python

            from langchain_community.llms import GradientLLM
            GradientLLM(
                model="99148c6d-c2a0-4fbe-a4a7-e7c05bdb8a09_base_ml_model",
                model_kwargs={
                    "max_generated_token_count": 128,
                    "temperature": 0.75,
                    "top_p": 0.95,
                    "top_k": 20,
                    "stop": [],
                },
                gradient_workspace_id="12345614fc0_workspace",
                gradient_access_token="gradientai-access_token",
            )

    Úmodelé   )ÚaliasÚ
min_lengthÚmodel_idNÚgradient_workspace_idÚgradient_access_tokenÚmodel_kwargszhttps://api.gradient.ai/apiÚgradient_api_urlÚ
aiosessionTÚforbid)Úpopulate_by_nameÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 óf   — t        |dd«      |d<   t        |dd«      |d<   t        |dd«      |d<   |S )z?Validate that api key and python package exists in environment.r+   ÚGRADIENT_ACCESS_TOKENr*   ÚGRADIENT_WORKSPACE_IDr-   ÚGRADIENT_API_URLr   )Úclsr4   s     r"   Úvalidate_environmentz GradientLLM.validate_environmentR   sZ   € ô
 +?ØÐ+Ð-Dó+
ˆÐ&Ñ'ô +?ØÐ+Ð-Dó+
ˆÐ&Ñ'ô &:ØÐ&Ð(:ó&
ˆÐ!Ñ"ð ˆr!   Úafterc                 ó¤  — 	 ddl }| j
                  �t        | j
                  «      dk  rt        d«      ‚| j                  �t        | j
                  «      dk  rt        d«      ‚| j                  r°| j                  }d|j                  dd	«      cxk  rd
k  st        d«      ‚ t        d«      ‚d|j                  dd	«      cxk  rd
k  st        d«      ‚ t        d«      ‚d|j                  dd	«      k\  rt        d«      ‚d|j                  dd
«      k\  rt        d«      ‚| S # t        $ r t        j                  d«       Y �Œ=t        $ r Y �ŒHw xY w)zPost init validation.r   NzdDeprecationWarning: `GradientLLM` will use `pip install gradientai` in future releases of langchain.é
   z0env variable `GRADIENT_ACCESS_TOKEN` must be seté   z0env variable `GRADIENT_WORKSPACE_ID` must be setÚtemperatureg      à?é   z-`temperature` must be in the range [0.0, 1.0]Útop_pz'`top_p` must be in the range [0.0, 1.0]Útop_kz`top_k` must be positiveÚmax_generated_token_countz,`max_generated_token_count` must be positive)Ú
gradientaiÚImportErrorÚloggingÚwarningÚ	Exceptionr+   ÚlenÚ
ValueErrorr*   r,   Úget)ÚselfrE   Úkws      r"   Ú	post_initzGradientLLM.post_initc   sT  € ð	Ûð ×%Ñ%Ð-´°T×5OÑ5OÓ1PÐSUÒ1UÜÐOÓPÐPà×%Ñ%Ð-´°T×5OÑ5OÓ1PÐSTÒ1TÜÐOÓPÐPà×ÒØ×"Ñ"ˆBØ˜Ÿ™˜}¨cÓ2Ô7°aÒ7Ü Ð!PÓQÐQð 8Ü Ð!PÓQÐQà˜Ÿ™˜w¨Ó,Ô1°Ò1Ü Ð!JÓKÐKð 2Ü Ð!JÓKÐKà�B—F‘F˜7 CÓ(Ò(Ü Ð!;Ó<Ð<à�B—F‘FÐ6¸Ó:Ò:Ü Ð!OÓPÐPàˆøô; ò 	Ü�O‰OðL÷ô ò 	Úð	ús   ‚D" Ä"EÅEÅEc                 óJ   — | j                   xs i }i d| j                  i¥d|i¥S )zGet the identifying parameters.r-   r,   )r,   r-   )rM   Ú_model_kwargss     r"   Ú_identifying_paramszGradientLLM._identifying_paramsˆ   s>   € ð ×)Ñ)Ò/¨Rˆð
Ø! 4×#8Ñ#8Ð9ð
à˜}Ð-ð
ð 	
r!   c                  ó   — y)zReturn type of llm.Úgradientr    )rM   s    r"   Ú	_llm_typezGradientLLM._llm_type‘   s   € ð r!   ÚinputsÚkwargsc                 óL  — | j                   xs i }i |¥|¥}|j                  dd«      }t        | j                  › d| j                  › d�d| j
                  › �| j                  › dddœt        |€t        d„ |D «       «      nt        d	„ t        ||«      D «       «      ¬
«      ¬«      S )úõBuild the kwargs for the Post request, used by sync

        Args:
            prompt (str): prompt used in query
            kwargs (dict): model kwargs in payload

        Returns:
            Dict[str, Union[str,dict]]: _description_
        ÚmultipliersNú/models/z
/fine-tuneúBearer úapplication/json©Úauthorizationzx-gradient-workspace-idÚacceptzcontent-typec              3   ó$   K  — | ]  }d |i–— Œ
 y­w)rV   Nr    )Ú.0Úinputs     r"   Ú	<genexpr>z=GradientLLM._kwargs_post_fine_tune_request.<locals>.<genexpr>±   s#   è ø€ ð ñ &,˜Eð % eôñ &,ùs   ‚c              3   ó0   K  — | ]  \  }}|d |idœ–— Œ y­w)Ú
multiplier)rV   ÚfineTuningParametersNr    )rb   rc   rf   s      r"   rd   z=GradientLLM._kwargs_post_fine_tune_request.<locals>.<genexpr>¸   s2   è ø€ ð ñ 2JÑ-˜E :ð ',à ,¨jð5õñ 2Jùs   ‚)Úsamples©ÚurlÚheadersÚjson)	r,   rL   Údictr-   r)   r+   r*   ÚtupleÚzip)rM   rV   rW   rQ   Ú_paramsrZ   s         r"   Ú_kwargs_post_fine_tune_requestz*GradientLLM._kwargs_post_fine_tune_request–   sÎ   € ð ×)Ñ)Ò/¨RˆØ-�]Ð- fÐ-ˆà—k‘k -°Ó6ˆäØ×(Ñ(Ð)¨°$·-±-°À
ÐKà#*¨4×+EÑ+EÐ*FÐ!GØ.2×.HÑ.HÐ-IØ,Ø 2ñ	ô ð #Ð*ô ñ ñ &,ó	ô ô ñ ô 25°V¸[Ô1Ióó ôô
ð 	
r!   Úpromptc                 óT  — | j                   xs i }i |¥|¥}t        | j                  › d| j                  › d�d| j                  › �| j
                  › dddœt        ||j                  dd«      |j                  dd«      |j                  d	d«      |j                  d
d«      ¬«      ¬«      S )rY   r[   z	/completer\   r]   r^   rD   Nr@   rC   rB   )ÚqueryÚmaxGeneratedTokenCountr@   ÚtopKÚtopPri   )r,   rm   r-   r)   r+   r*   rL   )rM   rr   rW   rQ   rp   s        r"   Ú_kwargs_post_requestz GradientLLM._kwargs_post_requestÅ   sº   € ð ×)Ñ)Ò/¨RˆØ-�]Ð- fÐ-ˆäØ×(Ñ(Ð)¨°$·-±-°À	ÐJà#*¨4×+EÑ+EÐ*FÐ!GØ.2×.HÑ.HÐ-IØ,Ø 2ñ	ô ØØ'.§{¡{Ð3NÐPTÓ'UØ#ŸK™K¨°tÓ<Ø—[‘[ ¨$Ó/Ø—[‘[ ¨$Ó/ôô
ð 	
r!   ÚstopÚrun_managerc                 ód  — 	 t        j                  di | j                  ||«      ¤Ž}|j                  dk7  r%t	        d|j                  › d|j
                  › �«      ‚	 |j                  «       d   }|�t        ||«      }|S # t         j                  j                  $ r}t	        d|› �«      ‚d}~ww xY w)a  Call to Gradients API `model/{id}/complete`.

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

        Returns:
            The string generated by the model.
        éÈ   ú5Gradient returned an unexpected response with status ú: ú2RequestException while calling Gradient Endpoint: NÚgeneratedOutputr    )
ÚrequestsÚpostrx   Ústatus_coderI   ÚtextÚ
exceptionsÚRequestExceptionrl   r   )rM   rr   ry   rz   rW   ÚresponseÚer„   s           r"   Ú_callzGradientLLM._callå   sÃ   € ð 	VÜ—}‘}ÑQ t×'@Ñ'@ÀÈÓ'PÑQˆHØ×#Ñ# sÒ*ÜØKØ×+Ñ+Ð,¨B¨x¯}©}¨oð?óð ð +ð �}‰}‹Ð0Ñ1ˆàÐä& t¨TÓ2ˆDàˆøô ×"Ñ"×3Ñ3ò 	VÜÐPÐQRÐPSÐTÓUÐUûð	Vús   ‚AA? Á?B/ÂB*Â*B/c           	   ‹   ó€  K  — | j                   s¹t        j                  «       4 ƒd{  –—† } |j                  di | j	                  ||¬«      ¤Ž4 ƒd{  –—† }|j
                  dk7  r%t        d|j
                  › d|j                  › �«      ‚|j                  «       ƒ d{  –—† d   }ddd«      ƒd{  –—†  ddd«      ƒd{  –—†  n• | j                   j                  di | j	                  ||¬«      ¤Ž4 ƒd{  –—† }|j
                  dk7  r%t        d|j
                  › d|j                  › �«      ‚|j                  «       ƒ d{  –—† d   }ddd«      ƒd{  –—†  |�t        |«      }S 7 �ŒF7 �Œ7 ŒÓ7 ŒÂ# 1 ƒd{  –—†7  sw Y   ŒÒxY w7 ŒÉ# 1 ƒd{  –—†7  sw Y   ŒCxY w7 Œ©7 Œ_7 ŒN# 1 ƒd{  –—†7  sw Y   Œ^xY w­w)a  Async Call to Gradients API `model/{id}/complete`.

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

        Returns:
            The string generated by the model.
        N)rr   rW   r|   r}   r~   r€   r    )
r.   ÚaiohttpÚClientSessionr‚   rx   ÚstatusrI   r„   rl   r   )rM   rr   ry   rz   rW   Úsessionr‡   r„   s           r"   Ú_acallzGradientLLM._acall  s¬  è ø€ ð  �ŠÜ×,Ñ,×.Ô.°'Ø'˜7Ÿ<™<ñ Ø×/Ñ/°vÀfÐ/ÓM÷ò àØ—‘¨#Ò-Ü'ØSØ'Ÿ™Ð/¨r°(·-±-°ðBóð ð #+§-¡-£/×1Ð3DÑE�D÷÷ ÷ /×.Ð.ð ,�t—‘×+Ñ+ñ Ø×+Ñ+°6À&Ð+ÓI÷ò àØ—?‘? cÒ)Ü#ØOØ#Ÿ?™?Ð+¨2¨h¯m©m¨_ð>óð ð 'Ÿm™m›o×-Ð/@ÑA�÷÷ ð Ðä& t¨TÓ2ˆDàˆð3 /ùðùð 2øðø÷ ÷ ñ úð /ø×.×.Ñ.úðøð .øðø÷ ÷ ñ üsô   ‚%F>§E-¨F>«(FÁE0ÁFÁAE7ÂE3Â E7Â'FÂ2E5Â3FÂ7F>ÃFÃ6F>Ã9F#Ã:F>Ã=AF)ÅF%ÅF)ÅF>ÅF'ÅF>Å0FÅ3E7Å5FÅ7F		Å=F Å>F		ÆFÆF>ÆF ÆFÆF ÆF>Æ%F)Æ'F>Æ)F;Æ/F2Æ0F;Æ7F>Úpromptsc                 ó>  ‡ ‡‡‡— dt         dt        t           fˆˆˆ ˆfd„}t        |«      dk  rt	        t        ||«      «      }nBt        t        dt        |«      «      «      5 }t	        |j                  ||«      «      }ddd«       t        ¬«      S # 1 sw Y   ŒxY w)ú*Run the LLM on the given prompt and input.rr   r5   c           	      óF   •— t         ‰j                  d| ‰‰dœ‰¤Ž¬«      gS )N)rr   ry   rz   ©r„   r    )r   r‰   )rr   rW   rz   rM   ry   s    €€€€r"   Ú_inner_generatez.GradientLLM._generate.<locals>._inner_generate=  s7   ø€ äØ#˜Ÿ™ð Ø%¨D¸kñØMSñôðð r!   rA   é   N©Úgenerations)	Ústrr   r   rJ   ÚlistÚmapr   Úminr   )rM   r�   ry   rz   rW   r•   r˜   Úps   ` ```   r"   Ú	_generatezGradientLLM._generate3  s„   û€ ð	¤Cð 	¬D´Ñ,<÷ 	ð 	ô ˆw‹<˜1ÒÜœs ?°GÓ<Ó=‰Kä#¤C¨¬3¨w«<Ó$8Ô9¸QÜ" 1§5¡5¨¸'Ó#BÓC�÷ :ô  [Ô1Ð1÷ :Ð9ús   Á#BÂBc              ‹   óî   K  — g }t        j                  |D �cg c]  } | j                  |f||dœ|¤Ž‘Œ c}Ž ƒ d{  –—† D ]  }|j                  t	        |¬«      g«       Œ  t        |¬«      S c c}w 7 Œ6­w)r’   )ry   rz   Nr”   r—   )ÚasyncioÚgatherr�   Úappendr   r   )rM   r�   ry   rz   rW   r˜   rr   Ú
generations           r"   Ú
_ageneratezGradientLLM._agenerateN  s�   è ø€ ð ˆÜ '§¡ñ &óá%�Fð �—‘˜FÐQ¨¸;ÑQÈ&ÓQØ%ñð!
÷ 
ò 
ˆJð ×Ñ¤
°
Ô ;Ð<Õ=ð
ô  [Ô1Ð1ùòð
ús   ‚A5˜A.µA5¼A3½7A5c                 ól  — 	 t        j                  di | j                  ||«      ¤Ž}|j                  dk7  r%t	        d|j                  › d|j
                  › �«      ‚	 |j                  «       }|d   |d   z  }t        |¬«      S # t         j                  j                  $ r}t	        d|› �«      ‚d }~ww xY w)	Nr|   r}   r~   r   ÚsumLossÚnumberOfTrainableTokens©r   r    )
r�   r‚   rq   rƒ   rI   r„   r…   r†   rl   r   )rM   rV   rW   r‡   rˆ   Úresponse_jsonr   s          r"   Útrain_unsupervisedzGradientLLM.train_unsupervised`  sÍ   € ð

	VÜ—}‘}ñ Ø×5Ñ5°f¸fÓEñˆHð ×#Ñ# sÒ*ÜØKØ×+Ñ+Ð,¨B¨x¯}©}¨oð?óð ð +ð !Ÿ™›ˆØ˜YÑ'¨-Ð8QÑ*RÑRˆÜ Ô%Ð%øô ×"Ñ"×3Ñ3ò 	VÜÐPÐQRÐPSÐTÓUÐUûð	Vús   ‚AB ÂB3Â B.Â.B3c           	   ‹   ó”  K  — | j                   sÀt        j                  «       4 ƒd {  –—† } |j                  di | j	                  ||«      ¤Ž4 ƒd {  –—† }|j
                  dk7  r%t        d|j
                  › d|j                  › �«      ‚|j                  «       ƒ d {  –—† }|d   |d   z  }d d d «      ƒd {  –—†  d d d «      ƒd {  –—†  nœ | j                   j                  di | j	                  ||«      ¤Ž4 ƒd {  –—† }|j
                  dk7  r%t        d|j
                  › d|j                  › �«      ‚|j                  «       ƒ d {  –—† }|d   |d   z  }d d d «      ƒd {  –—†  t        ¬«      S 7 �ŒP7 �Œ(7 ŒÞ7 ŒÅ# 1 ƒd {  –—†7  sw Y   ŒÕxY w7 ŒÌ# 1 ƒd {  –—†7  sw Y   Œ?xY w7 Œ­7 Œc7 ŒJ# 1 ƒd {  –—†7  sw Y   ŒZxY w­w)Nr|   r}   r~   r¦   r§   r¨   r    )
r.   r‹   rŒ   r‚   rq   r�   rI   r„   rl   r   )rM   rV   rW   rŽ   r‡   r©   r   s          r"   Úatrain_unsupervisedzGradientLLM.atrain_unsupervisedu  sÂ  è ø€ ð
 �ŠÜ×,Ñ,×.Ô.°'Ø'˜7Ÿ<™<ñ Ø×9Ñ9¸&À&ÓI÷ò àØ—‘¨#Ò-Ü'ØSØ'Ÿ™Ð/¨r°(·-±-°ðBóð ð +3¯-©-«/×$9�Mà% iÑ0Ø'Ð(AÑBñCð ÷÷ ÷ /×.Ð.ð ,�t—‘×+Ñ+ñ Ø×5Ñ5°f¸fÓE÷ò àØ—?‘? cÒ)Ü#ØOØ#Ÿ?™?Ð+¨2¨h¯m©m¨_ð>óð ð '/§m¡m£o× 5�à! )Ñ,¨}Ð=VÑ/WÑWð ÷÷ ô  Ô%Ð%ð9 /ùðùð %:øðø÷ ÷ ñ úð /ø×.×.Ñ.úðøð !6øðø÷ ÷ ñ üsô   ‚%G§E7¨G«'FÁE:ÁFÁAFÂE=ÂFÂ.FÂ9E?Â:FÂ>GÃ	FÃ
5GÃ?F-Ä GÄAF3ÅF/ÅF3ÅGÅ&F1Å'GÅ:FÅ=FÅ?FÆF	ÆF
ÆF	ÆFÆGÆF*ÆF!ÆF*Æ&GÆ/F3Æ1GÆ3GÆ9F<Æ:GÇG)NN),r   r   r   r   r   r)   r™   r   r*   r   r+   r,   rm   r-   r.   r‹   rŒ   r   Úmodel_configr   Úclassmethodr   r   r;   r   rO   Úpropertyr   rR   rU   r	   rq   rx   r   r   r‰   r   r�   r   rž   r¤   r   rª   r¬   r    r!   r"   r$   r$      s  … ññ6  °AÔ6€HˆcÓ6Ø;à+/Ð˜8 C™=Ó/Ø*à+/Ð˜8 C™=Ó/ðð
 $(€L�(˜4‘.Ó'Ø1à9Ð�cÓ9Øà26€J�˜×.Ñ.Ñ/Ó6ØIñ ØØô€Lñ
 ˜(Ô#Øð¨$ð °3ò ó ó $ðñ ˜'Ô"ð"˜4ò "ó #ð"ðH ð
 W¨S°#¨XÑ%6ò 
ó ð
ð ð˜3ò ó ðð-
Ø˜s‘mð-
Ø-4°S¸#°XÑ->ð-
à	��c�Ñ	ó-
ð^
Øð
Ø#*¨3°¨8Ñ#4ð
à	��c�Ñ	ó
ðF %)Ø:>ñ	 àð ð �t˜C‘yÑ!ð ð Ð6Ñ7ð	 ð
 ð ð 
ó ðJ %)Ø?Cñ	*àð*ð �t˜C‘yÑ!ð*ð Ð;Ñ<ð	*ð
 ð*ð 
ó*ð^ %)Ø:>ñ	2à�c‘ð2ð �t˜C‘yÑ!ð2ð Ð6Ñ7ð	2ð
 ð2ð 
ó2ð< %)Ø?Cñ	2à�c‘ð2ð �t˜C‘yÑ!ð2ð Ð;Ñ<ð	2ð
 ð2ð 
ó2ð$&à˜‘ð&ð ð&ð 
ó	&ð*"&à˜‘ð"&ð ð"&ð 
ô	"&r!   r$   )"r    rG   Úconcurrent.futuresr   Útypingr   r   r   r   r   r	   r
   r‹   r�   Úlangchain_core.callbacksr   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   r   Úlangchain_core.utilsr   Úpydanticr   r   r   Útyping_extensionsr   Úlangchain_community.llms.utilsr   r   r$   r    r!   r"   Ú<module>r¹      sS   ðÛ Û Ý 1ß J× JÑ Jã Û ÷õ 8ß 8Ý 5ß 7Ñ 7Ý "å >ô�)ô ô|&�'õ |&r!   