
    Ng                         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/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/koboldai.py	clean_urlr      sI    
||F 3B3x	c		 3B3x
    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_lengthP   
max_lengthgQ?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 rt+          |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+ 
 48 
 TZ 
 TZ 
 TZ 
  t|! 
& $(D!=''999
 
 
 	!!###  &&M),--11-	21555 +A.v6<<>>D $ ? ?H}}X.. ?#$4s8}}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          MMM6 %Ix~%%%W',htn,,,
 &+NHTN***S!&J&&&O(,,,,
 !#J"""  $GXe_###
 $(M8C='''
 &)M8E?(((
 $'K%&&&
 C% !E8E?   
 "E8E?!!! E8C=
  #GXe_""" 3    X %):>	E EE tCy!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   