Ë
    µŒjC7  ã                   óª   — 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mZ d dlmZ d dlmZ d dlmZ  ej&                  e«      Z G d„ de«      Zy)	é    N)ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚOptional)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)ÚFieldc                   ó®  — e Zd ZU dZeed<   	 dZee   ed<   	 dZee	   ed<   	  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   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d<   	 dZee	   ed<   	 dZee   ed<   	 dZee   ed<   	  e
dd¬	«      Zeed<   	  e
dd¬	«      Ze	ed<   	  e
dd ¬	«      Zeed <   	 d!Zee	   ed"<   	  e
dd#¬	«      Zeed#<   	  e
dd$¬	«      Zeed$<   	 g Z ee!e      ed%<   	 dZ"eed&<   	 e#d'e$ee%f   fd(„«       Z&e#d'e$ee%f   fd)„«       Z'e#d'efd*„«       Z(d4d+ee!e      d'e$ee%f   fd,„Z)	 	 d5d-ed+ee!e      d.ee*   d/e%d'ef
d0„Z+	 	 d5d-ed+ee!e      d.ee,   d/e%d'ef
d1„Z-	 	 d5d-ed+ee!e      d.ee*   d/e%d'e.e/   f
d2„Z0	 	 d5d-ed+ee!e      d.ee,   d/e%d'e1e/   f
d3„Z2y)6ÚTextGenaz  Text generation models from WebUI.

    To use, you should have the text-generation-webui installed, a model loaded,
    and --api added as a command-line option.

    Suggested installation, use one-click installer for your OS:
    https://github.com/oobabooga/text-generation-webui#one-click-installers

    Parameters below taken from text-generation-webui api example:
    https://github.com/oobabooga/text-generation-webui/blob/main/api-examples/api-example.py

    Example:
        .. code-block:: python

            from langchain_community.llms import TextGen
            llm = TextGen(model_url="http://localhost:8500")
    Ú	model_urlNÚpresetéú   Úmax_new_tokensTÚ	do_sample)ÚaliasgÍÌÌÌÌÌô?Útemperaturegš™™™™™¹?Útop_pé   Ú	typical_pr   Úepsilon_cutoffÚ
eta_cutoffgáz®Gáò?Úrepetition_penaltyé(   Útop_kÚ
min_lengthÚno_repeat_ngram_sizeÚ	num_beamsÚpenalty_alphaÚlength_penaltyFÚearly_stoppingéÿÿÿÿÚseedÚadd_bos_tokeni   Útruncation_lengthÚban_eos_tokenÚskip_special_tokensÚstopping_stringsÚ	streamingÚreturnc                 ó  — i d| j                   “d| j                  “d| j                  “d| j                  “d| j                  “d| j
                  “d| j                  “d| j                  “d	| j                  “d
| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                   “| j"                  | j$                  | j&                  | j(                  dœ¥S )z/Get the default parameters for calling textgen.r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r&   r'   )r(   r)   r*   r+   )r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r&   r'   r(   r)   r*   r+   ©Úselfs    új/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/textgen.pyÚ_default_paramszTextGen._default_paramsv   sU  € ð
Ø˜d×1Ñ1ð
à˜Ÿ™ð
ð ˜4×+Ñ+ð
ð �T—Z‘Zð	
ð
 ˜Ÿ™ð
ð ˜d×1Ñ1ð
ð ˜$Ÿ/™/ð
ð ! $×"9Ñ"9ð
ð �T—Z‘Zð
ð ˜$Ÿ/™/ð
ð # D×$=Ñ$=ð
ð ˜Ÿ™ð
ð ˜T×/Ñ/ð
ð ˜d×1Ñ1ð
ð ˜d×1Ñ1ð
ð  �D—I‘Ið!
ð" ˜T×/Ñ/ð#
ð$ "&×!7Ñ!7Ø!×/Ñ/Ø#'×#;Ñ#;Ø $× 5Ñ 5ò+
ð 	
ó    c                 ó:   — i d| j                   i¥| j                  ¥S )zGet the identifying parameters.r   )r   r2   r/   s    r1   Ú_identifying_paramszTextGen._identifying_params‘   s$   € ð I�; §¡Ð/ÐH°4×3GÑ3GÐHÐHr3   c                  ó   — y)zReturn type of llm.Útextgen© r/   s    r1   Ú	_llm_typezTextGen._llm_type–   s   € ð r3   Ústopc                 ó´   — | j                   r|�t        d«      ‚| j                  €| j                  }nd| j                  i}| j                   xs |xs g |d<   |S )a  
        Performs sanity check, preparing parameters in format needed by textgen.

        Args:
            stop (Optional[List[str]]): List of stop sequences for textgen.

        Returns:
            Dictionary containing the combined parameters.
        z2`stop` found in both the input and default params.r   r+   )r+   Ú
ValueErrorr   r2   )r0   r:   Úparamss      r1   Ú_get_parameterszTextGen._get_parameters›   sc   € ð × Ò  TÐ%5ÜÐQÓRÐRà�;‰;ÐØ×)Ñ)‰Fà §¡Ð,ˆFð &*×%:Ñ%:Ò%H¸dÒ%HÀbˆÐ!Ñ"àˆr3   ÚpromptÚrun_managerÚkwargsc                 óŠ  — | j                   r0d} | j                  d|||dœ|¤ŽD ]  }||j                  z  }Œ |}|S | j                  › d�}| j	                  |«      }	|	j                  «       }
||
d<   t        j                  ||
¬«      }|j                  dk(  r|j                  «       d   d   d	   }|S t        d
|› �«       d}|S )áæ  Call the textgen web API and return the output.

        Args:
            prompt: The prompt to use for generation.
            stop: A list of strings to stop generation when encountered.

        Returns:
            The generated text.

        Example:
            .. code-block:: python

                from langchain_community.llms import TextGen
                llm = TextGen(model_url="http://localhost:5000")
                llm.invoke("Write a story about llamas.")
        Ú ©r?   r:   r@   ú/api/v1/generater?   ©ÚjsonéÈ   Úresultsr   ÚtextúERROR: response: r8   )r,   Ú_streamrK   r   r>   ÚcopyÚrequestsÚpostÚstatus_coderH   Úprint©r0   r?   r:   r@   rA   Úcombined_text_outputÚchunkÚresultÚurlr=   ÚrequestÚresponses               r1   Ú_callzTextGen._callµ   sí   € ð. �>Š>Ø#%Ð Ø%˜Ÿ™ð Ø D°kñØEKô�ð %¨¯
©
Ñ2Ñ$ðð *ˆFð ˆð —^‘^Ð$Ð$4Ð5ˆCØ×)Ñ)¨$Ó/ˆFØ—k‘k“mˆGØ &ˆG�HÑÜ—}‘} S¨wÔ7ˆHà×#Ñ# sÒ*Ø!Ÿ™›¨Ñ3°AÑ6°vÑ>�ð
 ˆô Ð)¨(¨Ð4Ô5Ø�àˆr3   c              ‹   ó¢  K  — | j                   r1d} | j                  d|||dœ|¤Ž2 3 d{  –—† }||j                  z  }Œ| j                  › d�}| j	                  |«      }	|	j                  «       }
||
d<   t        j                  ||
¬«      }|j                  dk(  r|j                  «       d   d	   d
   }|S t        d|› �«       d}|S 7 Œœ6 |}|S ­w)rC   rD   rE   NrF   r?   rG   rI   rJ   r   rK   rL   r8   )r,   Ú_astreamrK   r   r>   rN   rO   rP   rQ   rH   rR   rS   s               r1   Ú_acallzTextGen._acallã   sü   è ø€ ð. �>Š>Ø#%Ð Ø,˜tŸ}™}ð  Ø D°kñ ØEKò ÷ 3�eð %¨¯
©
Ñ2Ñ$ð —^‘^Ð$Ð$4Ð5ˆCØ×)Ñ)¨$Ó/ˆFØ—k‘k“mˆGØ &ˆG�HÑÜ—}‘} S¨wÔ7ˆHà×#Ñ# sÒ*Ø!Ÿ™›¨Ñ3°AÑ6°vÑ>�ð
 ˆô Ð)¨(¨Ð4Ô5Ø�àˆð'3øð  ð *ˆFð ˆùs&   ‚%C§C
«C¬C
¯BCÃC
Ã
Cc              +   ó6  K  — 	 ddl }i | j                  |«      ¥|¥}| j                  › d�}|j	                  «       }||d<   |j                  «       }	|	j                  |«       |	j                  t        j                  |«      «       	 |	j                  «       }
t        j                  |
«      }
|
d   dk(  r3t        |
d   d¬	«      }|r|j                  |j                  ¬
«       |–— n|
d   dk(  r|	j                  «        yŒz# t        $ r t        d«      ‚w xY w­w©a  Yields results objects as they are generated in real time.

        It also calls the callback manager's on_llm_new_token event with
        similar parameters to the OpenAI LLM class method of the same name.

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

        Returns:
            A generator representing the stream of tokens being generated.

        Yields:
            A dictionary like objects containing a string token and metadata.
            See text-generation-webui docs and below for more.

        Example:
            .. code-block:: python

                from langchain_community.llms import TextGen
                llm = TextGen(
                    model_url = "ws://localhost:5005"
                    streaming=True
                )
                for chunk in llm.stream("Ask 'Hi, how are you?' like a pirate:'",
                        stop=["'","
"]):
                    print(chunk, end='', flush=True)  # noqa: T201

        r   Nz9The `websocket-client` package is required for streaming.z/api/v1/streamr?   ÚeventÚtext_streamrK   )rK   Úgeneration_info)ÚtokenÚ
stream_end©Ú	websocketÚImportErrorr>   r   rN   Ú	WebSocketÚconnectÚsendrH   ÚdumpsÚrecvÚloadsr   Úon_llm_new_tokenrK   Úclose©r0   r?   r:   r@   rA   rf   r=   rW   rX   Úwebsocket_clientrV   rU   s               r1   rM   zTextGen._stream  s#  è ø€ ðH	Ûð :�D×(Ñ(¨Ó.Ð9°&Ð9ˆà—‘Ð  Ð/ˆà—+‘+“-ˆØ"ˆ�Ñà$×.Ñ.Ó0Ðà× Ñ  Ô%à×ÑœdŸj™j¨Ó1Ô2àØ%×*Ñ*Ó,ˆFÜ—Z‘Z Ó'ˆFà�g‰ -Ò/Ü'Ø ™Ø$(ô�ñ Ø×0Ñ0°u·z±zÐ0ÔBØ“Ø˜‘ LÒ0Ø ×&Ñ&Ô(Øð øô% ò 	ÜØKóð ð	üs   ‚D„D ˆC9DÄDÄDc                óL  K  — 	 ddl }i | j                  |«      ¥|¥}| j                  › d�}|j	                  «       }||d<   |j                  «       }	|	j                  |«       |	j                  t        j                  |«      «       	 |	j                  «       }
t        j                  |
«      }
|
d   dk(  r<t        |
d   d¬	«      }|r$|j                  |j                  ¬
«      ƒ d{  –—†  |­–— n|
d   dk(  r|	j                  «        yŒƒ# t        $ r t        d«      ‚w xY w7 Œ<­wr_   re   rp   s               r1   r\   zTextGen._astreamY  s0  è ø€ ðH	Ûð :�D×(Ñ(¨Ó.Ð9°&Ð9ˆà—‘Ð  Ð/ˆà—+‘+“-ˆØ"ˆ�Ñà$×.Ñ.Ó0Ðà× Ñ  Ô%à×ÑœdŸj™j¨Ó1Ô2àØ%×*Ñ*Ó,ˆFÜ—Z‘Z Ó'ˆFà�g‰ -Ò/Ü'Ø ™Ø$(ô�ñ Ø%×6Ñ6¸U¿Z¹ZÐ6ÓH×HÐHØ”Ø˜‘ LÒ0Ø ×&Ñ&Ô(Øð øô% ò 	ÜØKóð ð	úð8 Iús(   ‚D$„D
 ˆCD$Ã%D"Ã&$D$Ä
DÄD$)N)NN)3Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r   r   Úintr   r   Úboolr   Úfloatr   r   r   r   r   r   r   r    r!   r"   r#   r$   r&   r'   r(   r)   r*   r+   r   r,   Úpropertyr   r   r2   r5   r9   r>   r
   rZ   r	   r]   r   r   rM   r   r\   r8   r3   r1   r   r      s¥  … ñð$ ƒNØJà €FˆH�S‰MÓ Ø1à$'€N�H˜S‘MÓ'Ø3á˜D¨Ô4€IˆtÓ4Øà#&€K�˜%‘Ó&ðMð !€Eˆ8�E‰?Ó ðGð "#€Iˆx˜‰Ó"ð8ð '(€N�H˜U‘OÓ'Øà"#€J�˜‘Ó#Øà*.Ð˜ ™Ó.ðFð  €Eˆ8�E‰?Óð?ð !"€J�˜‘Ó!Ø.à*+Ð˜( 3™-Ó+ð<ð
  !€Iˆx˜‰}Ó Øà%&€M�8˜E‘?Ó&Øà&'€N�H˜U‘OÓ'Øá  Ð.>Ô?€N�DÓ?Øá�b Ô'€Dˆ#Ó'Øá ¨OÔ<€M�4Ó<ð:ð (,Ð�x ‘}Ó+ðTñ   ¨_Ô=€M�4Ó=ØVá % dÐ2GÔ HÐ˜ÓHØDà,.Ð�h˜t C™yÑ)Ó.Ø@à€IˆtÓØ8àð
  c¨3 h¡ò 
ó ð
ð4 ðI T¨#¨s¨(¡^ò Ió ðIð ð˜3ò ó ðñ H¨T°#©YÑ$7ð À4ÈÈSÈÁ>ó ð: %)Ø:>ñ	,àð,ð �t˜C‘yÑ!ð,ð Ð6Ñ7ð	,ð
 ð,ð 
ó,ðb %)Ø?Cñ	,àð,ð �t˜C‘yÑ!ð,ð Ð;Ñ<ð	,ð
 ð,ð 
ó,ðb %)Ø:>ñ	FàðFð �t˜C‘yÑ!ðFð Ð6Ñ7ð	Fð
 ðFð 
�/Ñ	"óFðV %)Ø?Cñ	FàðFð �t˜C‘yÑ!ðFð Ð;Ñ<ð	Fð
 ðFð 
�Ñ	'ôFr3   r   )rH   ÚloggingÚtypingr   r   r   r   r   r   rO   Úlangchain_core.callbacksr	   r
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úpydanticr   Ú	getLoggerrs   Úloggerr   r8   r3   r1   Ú<module>r…      sD   ðÛ Û ß E× Eã ÷õ 4Ý 2Ý à	ˆ×	Ñ	˜8Ó	$€ôNˆcõ Nr3   