
    Ngr                         d Z ddlZddlZddlmZmZmZ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  ej        e          Z G d d	e          ZdS )
z)Wrapper around Konko AI's Completion API.    N)AnyDictListOptional)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)
ConfigDict	SecretStrmodel_validator)is_openai_v1c                      e Zd ZU dZdZeed<   	 eed<   	 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          Z ed          edeeef         defd                        Z	 ddede	ee                  dedeeef         fdZedefd            Zedefd            Ze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S ) KonkozKonko AI models.

    To use, you'll need an API key. This can be passed in as init param
    ``konko_api_key`` or set as environment variable ``KONKO_API_KEY``.

    Konko AI API reference: https://docs.konko.ai/reference/
    z#https://api.konko.ai/v1/completionsbase_urlkonko_api_keymodelNtemperaturetop_ptop_k
max_tokensrepetition_penaltylogprobsforbid)extrabefore)modevaluesreturnc                     	 ddl }n# t          $ r t          d          w xY wt          |d          st          j        d           |S )z3Validate that python package exists in environment.r   NzRCould not import konko python package. Please install it with `pip install konko`._is_legacy_openaizYou are using an older version of the 'konko' package. Please consider upgrading to access new featuresincluding the completion endpoint.)konkoImportErrorhasattrwarningswarn)clsr   r!   s      Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/konko.pyvalidate_environmentzKonko.validate_environmentC   sy    	LLLL 	 	 	>  	
 u122 	M5  
 s    !promptstopkwargsc                     |rt          |          dk    r|d         n|}i | j        ||d|}d |                                D             S )N   r   )r)   r*   c                     i | ]
\  }}|||S N ).0kvs      r'   
<dictcomp>z+Konko.construct_payload.<locals>.<dictcomp>d   s    BBBAAM1MMM    )lendefault_paramsitems)selfr)   r*   r+   stop_to_usepayloads         r'   construct_payloadzKonko.construct_payloadW   st     "&B#d))q..d1ggd#
!#
#
 #
 #
 	#
 CBBBBBr5   c                     dS )zReturn type of model.r!   r0   r9   s    r'   	_llm_typezKonko._llm_typef   s	     wr5   c                      ddl m}  d|  S )Nr   __version__z
langchain/)langchain_communityrB   rA   s    r'   get_user_agentzKonko.get_user_agentk   s"    333333)K)))r5   c                 P    | j         | j        | j        | j        | j        | j        dS )Nr   r   r   r   r   r   rF   r>   s    r'   r7   zKonko.default_paramsq   s3     Z+ZZ/"&"9
 
 	
r5   run_managerc                 :   ddl } | j        ||fi |}	 t                      r |j        j        di |}n |j        j        di |}n# t          $ r t          d          w xY wt                      r|j        d         j	        }n|d         d         d         }|S )zCall out to Konko's text generation endpoint.

        Args:
            prompt: The prompt to pass into the model.

        Returns:
            The string generated by the model..
        r   N`konko` has no `Completion` attribute, this is likely due to an old version of the konko package. Try upgrading it with `pip install --upgrade konko`.choicestextr0   )
r!   r<   r   completionscreate
CompletionAttributeError
ValueErrorrJ   rK   )	r9   r)   r*   rG   r+   r!   r;   responseoutputs	            r'   _callzKonko._call|   s     	($(@@@@	~~ >35,3>>g>>25+2==W== 	 	 	6  	 >> 	4%a(-FFi(+F3Fs   3A	 	A#c                 ~  K   ddl } | j        ||fi |}	 t                      r-|                                } |j        j        di | d{V }n |j        j        di | d{V }n# t          $ r t          d          w xY wt                      r|j
        d         j        }	n|d         d         d         }	|	S )zAsynchronously call out to Konko's text generation endpoint.

        Args:
            prompt: The prompt to pass into the model.

        Returns:
            The string generated by the model.
        r   NrI   rJ   rK   r0   )r!   r<   r   
AsyncKonkorL   rM   rN   acreaterO   rP   rJ   rK   )
r9   r)   r*   rG   r+   r!   r;   clientrQ   rR   s
             r'   _acallzKonko._acall   s      	($(@@@@	~~ E))++!:!3!:!E!EW!E!EEEEEEE!9!1!9!D!DG!D!DDDDDDD 	 	 	6  	 >> 	4%a(-FFi(+F3Fs   AA+ +Br/   )NN)#__name__
__module____qualname____doc__r   str__annotations__r   r   r   floatr   r   intr   r   r   r
   model_configr   classmethodr   r   r(   r   r<   propertyr?   staticmethodrD   r7   r   rS   r   rX   r0   r5   r'   r   r      s          :Hc999!JJJ $(K%'''!E8E?!!!  E8C= !%J$$$3*.... #Hhsm""" :  L _(###$sCx. S    [ $#* %)C CC tCy!C 	C
 
c3hC C C C 3    X *C * * * \*
 
S#X 
 
 
 X
 %):>	% %% tCy!% 67	%
 % 
% % % %T %)?C	& && tCy!& ;<	&
 & 
& & & & & &r5   r   )r\   loggingr$   typingr   r   r   r   langchain_core.callbacksr   r   #langchain_core.language_models.llmsr	   pydanticr
   r   r    langchain_community.utils.openair   	getLoggerrY   loggerr   r0   r5   r'   <module>rm      s    / /   , , , , , , , , , , , ,        4 3 3 3 3 3 ; ; ; ; ; ; ; ; ; ; 9 9 9 9 9 9		8	$	$v v v v vC v v v v vr5   