Ë
    µŒjæ  ã                   óŽ   — d dl Z d dlmZmZmZmZ d dlZd dlmZ d dl	m
Z
  e j                  e«      Zdedefd„Z G d„ d	e
«      Zy)
é    N)ÚAnyÚDictÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLMÚurlÚreturnc                 ó^   — | j                  d«      r| dd S | j                  d«      r| dd S | S )z3Remove trailing slash and /api from url if present.z/apiNéüÿÿÿÚ/éÿÿÿÿ)Úendswith)r	   s    úk/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/koboldai.pyÚ	clean_urlr      s5   € à
‡|�|�FÔØ�3�BˆxˆØ	�‰�cÔ	Ø�3�Bˆxˆàˆ
ó    c                   ó²  — e Zd ZU 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<   	 dZee   ed<   	 dZee   ed<   	 dZe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y)%ÚKoboldApiLLMaØ  Kobold API language model.

    It includes several fields that can be used to control the text generation process.

    To use this class, instantiate it with the required parameters and call it with a
    prompt to generate text. For example:

        kobold = KoboldApiLLM(endpoint="http://localhost:5000")
        result = kobold("Write a story about a dragon.")

    This will send a POST request to the Kobold API with the provided prompt and
    generate text.
    ÚendpointFÚ	use_storyÚuse_authors_noteÚuse_world_infoÚ
use_memoryi@  Úmax_context_lengthéP   Ú
max_lengthgìQ¸…ëñ?Úrep_peni   Úrep_pen_rangegÍÌÌÌÌÌì?Úrep_pen_slopeg333333ã?ÚtemperatureÚtfsÚtop_agffffffî?Útop_pr   Útop_kg      à?Útypicalr
   c                  ó   — y)NÚkoboldai© )Úselfs    r   Ú	_llm_typezKoboldApiLLM._llm_type|   s   € àr   NÚpromptÚstopÚrun_managerÚkwargsc                 ó:  — i d|“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<   t        j                   t#        | j$                  «      › d�|¬«      }|j'                  «        |j)                  «       }d|v rnt+        |d   «      dkD  r]d|d   d   v rS|d   d   d   j-                  «       }|�6|D ]1  }	|j/                  |	«      sŒ|dt+        |	«        j1                  «       }Œ3 |S t3        d|› �«      ‚)aå  Call the 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 KoboldApiLLM

                llm = KoboldApiLLM(endpoint="http://localhost:5000")
                llm.invoke("Write a story about dragons.")
        r+   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   NÚstop_sequencez/api/v1/generate)ÚjsonÚresultsr   Útextz-Unexpected response format from Kobold API:  )r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   ÚrequestsÚpostr   r   Úraise_for_statusr1   ÚlenÚstripr   ÚrstripÚ
ValueError)
r)   r+   r,   r-   r.   ÚdataÚresponseÚjson_responser3   Úsequences
             r   Ú_callzKoboldApiLLM._call€   sþ  € ð0 
Ø�fð 
à˜Ÿ™ð 
ð  × 5Ñ 5ð 
ð ˜d×1Ñ1ð	 
ð
 ˜$Ÿ/™/ð 
ð ! $×"9Ñ"9ð 
ð ˜$Ÿ/™/ð 
ð �t—|‘|ð 
ð ˜T×/Ñ/ð 
ð ˜T×/Ñ/ð 
ð ˜4×+Ñ+ð 
ð �4—8‘8ð 
ð �T—Z‘Zð 
ð �T—Z‘Zð 
ð �T—Z‘Zð 
ð  �t—|‘|ð! 
ˆð& ÐØ$(ˆD�Ñ!ä—=‘=Ü˜Ÿ™Ó'Ð(Ð(8Ð9Àô
ˆð 	×!Ñ!Ô#Ø Ÿ™›ˆð ˜Ñ&Ü�M )Ñ,Ó-°Ò1Ø˜-¨	Ñ2°1Ñ5Ñ5à  Ñ+¨AÑ.¨vÑ6×<Ñ<Ó>ˆDàÐÛ $�HØ—}‘} XÕ.Ø#Ð$4¤s¨8£} nÐ5×<Ñ<Ó>™ð !%ð ˆKäØ?À¸ÐOóð r   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r   Úboolr   r   r   r   Úintr   r   Úfloatr   r   r    r!   r"   r#   r$   r%   Úpropertyr*   r   r   r   r?   r(   r   r   r   r      s­  … ñð ƒMØ6à %€Iˆx˜‰~Ó%ØWà',Ð�h˜t‘nÓ,ðð
 &+€N�H˜T‘NÓ*ØSà!&€J�˜‘Ó&ØOà(,Ð˜ ™Ó,ðð
 !#€J�˜‘Ó"ðð  $€GˆX�e‰_Ó#ðð
 $(€M�8˜C‘=Ó'ðð
 &)€M�8˜E‘?Ó(ðð
 $'€K�˜%‘Ó&ðð
 €Cˆ�%‰Óðð !€Eˆ8�E‰?Ó ðð
 "€Eˆ8�E‰?Ó!ðð €Eˆ8�C‰=Óðð
  #€GˆX�e‰_Ó"ðð ð˜3ò ó ðð %)Ø:>ñ	EàðEð �t˜C‘yÑ!ðEð Ð6Ñ7ð	Eð
 ðEð 
ôEr   r   )ÚloggingÚtypingr   r   r   r   r4   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr   Ú	getLoggerr@   ÚloggerrD   r   r   r(   r   r   Ú<module>rP      sJ   ðÛ ß ,Ó ,ã Ý =Ý 3à	ˆ×	Ñ	˜8Ó	$€ð�3ð ˜3ó ôp�3õ pr   