a
    bgr                     @   s   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eZG d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                   @   sj  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dZeddeeeef edddZd#ee	ee  eeeef dddZeedddZeedddZeeeef dddZd$ee	ee  e	e eeddd Z d%ee	ee  e	e! eedd!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_urlZkonko_api_keymodelNtemperaturetop_ptop_k
max_tokensrepetition_penaltylogprobsZforbid)extrabefore)mode)valuesreturnc                 C   s@   zddl }W n ty&   tdY n0 t|ds<td |S )z3Validate that python package exists in environment.r   NzRCould not import konko python package. Please install it with `pip install konko`.Z_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    r!   l/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/llms/konko.pyvalidate_environmentC   s    

zKonko.validate_environment)promptstopkwargsr   c                 K   sF   |rt |dkr|d n|}i | j||d|}dd | D S )N   r   )r$   r%   c                 S   s   i | ]\}}|d ur||qS )Nr!   ).0kvr!   r!   r"   
<dictcomp>d       z+Konko.construct_payload.<locals>.<dictcomp>)lendefault_paramsitems)selfr$   r%   r&   Zstop_to_usepayloadr!   r!   r"   construct_payloadW   s    zKonko.construct_payload)r   c                 C   s   dS )zReturn type of model.r   r!   r0   r!   r!   r"   	_llm_typef   s    zKonko._llm_typec                  C   s   ddl m}  d|  S )Nr   __version__z
langchain/)Zlangchain_communityr6   r5   r!   r!   r"   get_user_agentk   s    zKonko.get_user_agentc                 C   s   | j | j| j| j| j| jdS )Nr   r   r   r   r   r   r8   r3   r!   r!   r"   r.   q   s    zKonko.default_params)r$   r%   run_managerr&   r   c           	      K   s   ddl }| j||fi |}z0t r8|jjf i |}n|jjf i |}W n tyf   tdY n0 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text)
r   r2   r   completionscreate
CompletionAttributeError
ValueErrorr;   r<   )	r0   r$   r%   r9   r&   r   r1   responseoutputr!   r!   r"   _call|   s    
zKonko._callc           
         s   ddl }| j||fi |}zDt rF| }|jjf i |I dH }n|jjf i |I dH }W n tyz   t	dY n0 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   Nr:   r;   r<   )r   r2   r   Z
AsyncKonkor=   r>   r?   Zacreater@   rA   r;   r<   )
r0   r$   r%   r9   r&   r   r1   clientrB   rC   r!   r!   r"   _acall   s    
zKonko._acall)N)NN)NN)#__name__
__module____qualname____doc__r   str__annotations__r
   r   r   floatr   r   intr   r   r   r	   Zmodel_configr   classmethodr   r   r#   r   r2   propertyr4   staticmethodr7   r.   r   rD   r   rF   r!   r!   r!   r"   r      s^   
 

  
*  
r   )rJ   loggingr   typingr   r   r   r   Zlangchain_core.callbacksr   r   Z#langchain_core.language_models.llmsr   Zpydanticr	   r
   r   Z langchain_community.utils.openair   	getLoggerrG   loggerr   r!   r!   r!   r"   <module>   s   
