§
    šŠtjæ  ã                   ó’   — 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dS )
é    N)ÚAnyÚDictÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLMÚurlÚreturnc                 ó‚   — |                       d¦  «        r
| dd…         S |                       d¦  «        r
| dd…         S | S )z3Remove trailing slash and /api from url if present.z/apiNéüÿÿÿú/éÿÿÿÿ)Úendswith)r	   s    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/koboldai.pyÚ	clean_urlr      sI   € à
‡|‚|�FÑÔð Ø�3�B�3ŒxˆØ	�Š�cÑ	Ô	ð Ø�3�B�3Œ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dS )%Ú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                 ó   — dS )NÚkoboldai© )Úselfs    r   Ú	_llm_typezKoboldApiLLM._llm_type|   s   € àˆzr   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�|¬¦  «        }|                     ¦   «          |                     ¦   «         }d|v r—t+          |d         ¦  «        dk    r~d|d         d         v rn|d         d         d                              ¦   «         }|�D|D ]A}	|                     |	¦  «        r*|dt+          |	¦  «         …                              ¦   «         }ŒB|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ð 
ð ˜dÔ1ð	 
ð
 ˜$œ/ð 
ð ! $Ô"9ð 
ð ˜$œ/ð 
ð �t”|ð 
ð ˜TÔ/ð 
ð ˜TÔ/ð 
ð ˜4Ô+ð 
ð �4”8ð 
ð �T”Zð 
ð �T”Zð 
ð �T”Zð 
ð  �t”|ð! 
ˆð& ÐØ$(ˆD�Ñ!å”=Ý˜œÑ'Ô'Ð9Ð9Ð9Àð
ñ 
ô 
ˆð 	×!Ò!Ñ#Ô#Ð#Ø Ÿš™œˆð ˜Ð&Ð&Ý�M )Ô,Ñ-Ô-°Ò1Ð1Ø˜-¨	Ô2°1Ô5Ð5Ð5à  Ô+¨AÔ.¨vÔ6×<Ò<Ñ>Ô>ˆDàÐØ $ð ?ð ?�HØ—}’} XÑ.Ô.ð ?Ø#Ð$4¥s¨8¡}¤} nÐ$4Ô5×<Ò<Ñ>Ô>˜øàˆKåØOÀÐOÐ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      sJ  € € € € € € ðð ð €M€M�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ð ð ð ñ „Xðð %)Ø:>ð	Eð EàðEð �t˜C”yÔ!ðEð Ð6Ô7ð	Eð
 ðEð 
ðEð Eð Eð 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      sÑ   ðØ €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à	ˆÔ	˜8Ñ	$Ô	$€ð�3ð ˜3ð ð ð ð ðpð pð pð pð p�3ñ pô pð pð pð pr   