
    7|hr                         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y)
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"y) 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 }t        |d      st        j                  d       |S # t        $ r t        d      w xY w)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      ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/konko.pyvalidate_environmentzKonko.validate_environmentC   sR    	 u12MM5
   	> 	s   ) >promptstopkwargsc                     |rt        |      dk(  r|d   n|}i | j                  ||d|}|j                         D ci c]  \  }}|	|| c}}S c c}}w )N   r   )r)   r*   )lendefault_paramsitems)selfr)   r*   r+   stop_to_usepayloadkvs           r'   construct_payloadzKonko.construct_payloadW   sm     "&#d)q.d1gd#
!!#
#
 	#
 ")BAAM1BBBs    
AAc                      y)zReturn type of model.r!    r1   s    r'   	_llm_typezKonko._llm_typef   s         c                      ddl m}  d|  S )Nr   __version__z
langchain/)langchain_communityr>   r=   s    r'   get_user_agentzKonko.get_user_agentk   s    3K=))r;   c                     | j                   | j                  | j                  | j                  | j                  | j
                  dS )Nr   r   r   r   r   r   rB   r9   s    r'   r/   zKonko.default_paramsq   s<     ZZ++ZZZZ//"&"9"9
 	
r;   run_managerc                 N   ddl } | j                  ||fi |}	 t               r |j                  j                  di |}n |j
                  j                  di |}t               r|j                  d   j                  }|S |d   d   d   }|S # t        $ r t        d      w xY w)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textr8   )
r!   r6   r   completionscreate
CompletionAttributeError
ValueErrorrF   rG   )	r1   r)   r*   rC   r+   r!   r3   responseoutputs	            r'   _callzKonko._call|   s     	($((@@	~35,,33>g>25++22=W= >%%a(--F  i(+F3F  	6 	s   AB B$c                   K   ddl } | j                  ||fi |}	 t               r5|j                         } |j                  j
                  di | d{   }n$ |j                  j                  di | d{   }t               r|j                  d   j                  }	|	S |d   d   d   }	|	S 7 [7 8# t        $ r t        d      w xY ww)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   NrE   rF   rG   r8   )r!   r6   r   
AsyncKonkorH   rI   rJ   acreaterK   rL   rF   rG   )
r1   r)   r*   rC   r+   r!   r3   clientrM   rN   s
             r'   _acallzKonko._acall   s      	($((@@	~))+!:!3!3!:!:!EW!EE!9!1!1!9!9!DG!DD >%%a(--F  i(+F3F! FD 	6 	s@   C9B5 B1$B5 :B3;B5 ?2C1B5 3B5 5C

C)N)NN)#__name__
__module____qualname____doc__r   str__annotations__r   r   r   floatr   r   intr   r   r   r
   model_configr   classmethodr   r   r(   r   r6   propertyr:   staticmethodr@   r/   r   rO   r   rT   r8   r;   r'   r   r      s    :Hc9!J $(K%'!E8E?!  E8C= !%J$3*.. #Hhsm" L (#$sCx. S   $* %)CC tCy!C 	C
 
c3hC 3   *C * *
 
S#X 
 
 %):>	%% tCy!% 67	%
 % 
%T %)?C	&& tCy!& ;<	&
 & 
&r;   r   )rX   loggingr$   typingr   r   r   r   langchain_core.callbacksr   r   #langchain_core.language_models.llmsr	   pydanticr
   r   r    langchain_community.utils.openair   	getLoggerrU   loggerr   r8   r;   r'   <module>ri      sG    /   , , 4 ; ; 9			8	$vC vr;   