§
    šŠtjr  ã                   óª   — 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 ) ÚKonkozäKonko 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_openaiz‰You 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/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/konko.pyÚvalidate_environmentzKonko.validate_environmentC   sy   € ð	ØˆLˆLˆLˆLøåð 	ð 	ð 	Ýð>ñô ð ð	øøøõ
 �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™˜˜A°A°M��1°M°M°Mó    )ÚlenÚdefault_paramsÚitems)Úselfr)   r*   r+   Ústop_to_useÚpayloads         r'   Úconstruct_payloadzKonko.construct_payloadW   st   € ð "&ÐB­#¨d©)¬)°qª.¨.�d˜1”g�g¸dˆð#
ØÔ!ð#
àØð#
ð #
ð #
ð ð	#
ˆð 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 )z¾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   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Þ   € ð 	ˆˆˆà(�$Ô(¨°Ð@Ð@¸Ð@Ð@ˆð	Ý‰~Œ~ð >Ø3˜5Ô,Ô3Ð>Ð>°gÐ>Ð>��à2˜5Ô+Ô2Ð=Ð=°WÐ=Ð=�øøåð 	ð 	ð 	Ýð6ñô ð ð	øøøõ ‰>Œ>ð 	4ØÔ% aÔ(Ô-ˆFˆFà˜iÔ(¨Ô+¨FÔ3ˆFàˆ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 )zÌAsynchronously 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Ð!E¸WÐ!EÐ!EÐEÐEÐEÐEÐEÐE��à!9 Ô!1Ô!9Ð!DÐ!D¸GÐ!DÐ!DÐDÐDÐDÐDÐDÐD�øøåð 	ð 	ð 	Ýð6ñô ð ð	øøøõ ‰>Œ>ð 	4ØÔ% aÔ(Ô-ˆFˆFà˜iÔ(¨Ô+¨FÔ3ˆFàˆ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ò  € € € € € € ðð ð :€HˆcÐ9Ð9Ñ9Ø!ØÐÐÑØØ€J€J�Jðð $(€K�˜%”Ð'Ð'Ñ'ØØ!€Eˆ8�EŒ?Ð!Ð!Ñ!ðð  €Eˆ8�CŒ=ÐÐÑðð !%€J�˜”Ð$Ð$Ñ$Ø3Ø*.Ð˜ œÐ.Ð.Ñ.ðð #€Hˆh�sŒmÐ"Ð"Ñ"ðð �:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð¨$¨s°C¨x¬.ð ¸Sð ð ð ñ „[ñ $Ô#ðð* %)ðCð CàðCð �t˜C”yÔ!ðCð ð	Cð
 
ˆc�3ˆhŒðCð Cð Cð Cð ð˜3ð ð ð ñ „Xðð ð*˜Cð *ð *ð *ñ „\ð*ð
 ð
  S¨# X¤ð 
ð 
ð 
ñ „Xð
ð %)Ø:>ð	%ð %àð%ð �t˜C”yÔ!ð%ð Ð6Ô7ð	%ð
 ð%ð 
ð%ð %ð %ð %ðT %)Ø?Cð	&ð &àð&ð �t˜C”yÔ!ð&ð Ð;Ô<ð	&ð
 ð&ð 
ð&ð &ð &ð &ð &ð &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   