§
    šŠtjX  ã                   ój   — d dl 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
 d dlmZ  G d„ de¦  «        ZdS )é    N)ÚAnyÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLMc                   óÖ   — e Zd ZU 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e	deeef         fd„¦   «         ZdS )ÚNIBittensorLLMaÕ  NIBittensor LLMs

    NIBittensorLLM is created by Neural Internet (https://neuralinternet.ai/),
    powered by Bittensor, a decentralized network full of different AI models.

    To analyze API_KEYS and logs of your usage visit
        https://api.neuralinternet.ai/api-keys
        https://api.neuralinternet.ai/logs

    Example:
        .. code-block:: python

            from langchain_community.llms import NIBittensorLLM
            llm = NIBittensorLLM()
    Úsystem_promptr   Útop_responsesÚreturnc                 ó   — dS )Nr
   © ©Úselfs    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/bittensor.pyÚ	_llm_typezNIBittensorLLM._llm_type"   s   € àÐó    NÚpromptÚstopÚrun_managerÚkwargsc                 ó  — t          j        ¦   «         }d|_        t          j                             d|¬¦  «        }t          | j        t          ¦  «        rt          d| j        ¦  «        }nd}d}| j
        €|dz   }	n|t          | j
        ¦  «        z   }	|                     d	d
¦  «         |                     ¦   «         }
|
                     ¦   «                              d¦  «                             dd¦  «                             dd¦  «        }t#          j        |¦  «        }|d         d         }dd|› �ddœ}|                     d	d|¬¦  «         |                     ¦   «         }|                     ¦   «                              d¦  «                             dd¦  «                             dd¦  «        }t#          j        |¦  «        }t          |t&          ¦  «        rÿ|rý|sû|D ]ø}	 t#          j        |gd|	dœd|dœgdœ¦  «        }|                     dd||¦  «         |                     ¦   «         }|                     ¦   «                              d¦  «                             dd¦  «                             dd¦  «        }t#          j        |¦  «        }d|vrŒ·|d         d         d         d         }|                     ¦   «          |c S # t,          $ r Y Œõw xY w	 t#          j        |d|	dœd|dœgdœ¦  «        }|                     dd||¦  «         |                     ¦   «         }|                     ¦   «                              d¦  «                             dd¦  «                             dd¦  «        }|r|                     ¦   «          |S t#          j        |¦  «        }|d         d         d         d         }|                     ¦   «          |S # t,          $ r)}|                     d	d |› d!|› �|¬¦  «         Y d}~d"S d}~ww xY w)#a¾  
        Wrapper around the bittensor top miner models. Its built by Neural Internet.

        Call the Neural Internet's BTVEP Server and return the output.

        Parameters (optional):
            system_prompt(str): A system prompt defining how your model should respond.
            top_responses(int): Total top miner responses to retrieve from Bittensor
                protocol.

        Return:
            The generated response(s).

        Example:
            .. code-block:: python

                from langchain_community.llms import NIBittensorLLM
                llm = NIBittensorLLM(system_prompt="Act like you are programmer with                 5+ years of experience.")
        Tztest.neuralinternet.ai)Úcontextéd   r   zwYou are an assistant which is created by Neural Internet(NI)             in decentralized network named as a Bittensor.Nz? Your task is to provide accurate response based on user promptÚGETz/admin/api-keys/zutf-8ú
Ú ú	Úapi_keyzapplication/jsonzBearer z
2023-05-19)zContent-TypeÚAuthorizationzEndpoint-Versionz/top_miner_uids)ÚheadersÚsystem)ÚroleÚcontentÚuser)ÚuidsÚmessagesÚPOSTz/chatÚchoicesÚmessager%   )Útop_nr(   z/error_msg?e=z&p=zBSorry I am unable to provide response now, Please try again later.)ÚsslÚcreate_default_contextÚcheck_hostnameÚhttpÚclientÚHTTPSConnectionÚ
isinstancer   ÚintÚminr   ÚstrÚrequestÚgetresponseÚreadÚdecodeÚreplaceÚjsonÚloadsÚlistÚdumpsÚcloseÚ	Exception)r   r   r   r   r   r   Úconnr,   Údefault_promptr   Úapi_key_responseÚapi_keys_dataÚapi_keys_jsonr    r"   Úminer_responseÚ
miner_datar'   ÚuidÚpayloadÚinit_responseÚ	init_dataÚ	init_jsonÚreplyÚresponseÚ
utf_stringÚ	json_respÚes                               r   Ú_callzNIBittensorLLM._call&   so  € õ: Ô,Ñ.Ô.ˆØ!%ˆÔÝŒ{×*Ò*Ð+CÈWÐ*ÑUÔUˆõ �dÔ(­#Ñ.Ô.ð 	Ý˜˜TÔ/Ñ0Ô0ˆEˆEàˆEð<ˆàÔÐ%àØSñTð ˆMð
 +­S°Ô1CÑ-DÔ-DÑDˆMð 	�Š�UÐ.Ñ/Ô/Ð/Ø×+Ò+Ñ-Ô-Ðà×!Ò!Ñ#Ô#×*Ò*¨7Ñ3Ô3×;Ò;¸DÀ"ÑEÔE×MÒMÈdÐTVÑWÔWð 	õ œ
 =Ñ1Ô1ˆØ Ô" 9Ô-ˆð /Ø0 wÐ0Ð0Ø ,ð
ð 
ˆð
 	�Š�UÐ-°wˆÑ?Ô?Ð?Ø×)Ò)Ñ+Ô+ˆà×ÒÑ!Ô!×(Ò(¨Ñ1Ô1×9Ò9¸$ÀÑCÔC×KÒKÈDÐRTÑUÔUð 	õ Œz˜*Ñ%Ô%ˆõ �d�DÑ!Ô!ð 	 dð 	°5ð 	Øð ð �ðÝ"œjà%( Eà)1¸mÐ LÐ LØ)/¸FÐ CÐ Cð)ðð ñô �Gð —L’L ¨°'¸7ÑCÔCÐCØ$(×$4Ò$4Ñ$6Ô$6�Mà%×*Ò*Ñ,Ô,ßš ™œß š  rÑ*Ô*ß š  rÑ*Ô*ð	 õ !%¤
¨9Ñ 5Ô 5�IØ ¨	Ð1Ð1Ø Ø% iÔ0°Ô3°IÔ>¸yÔI�EØ—J’J‘L”L�LØ �L�L�LøÝ ð ð ð Ø�Hðøøøð	XÝ”jà"à!)°mÐDÐDØ!'°FÐ;Ð;ð!ðð ñô ˆGð �LŠL˜ ¨'°7Ñ;Ô;Ð;Ø×'Ò'Ñ)Ô)ˆHà—’‘”×&Ò& wÑ/Ô/×7Ò7¸¸bÑAÔA×IÒIÈ$ÐPRÑSÔSð ð ð "Ø—
’
‘”�Ø!Ð!Ýœ
 :Ñ.Ô.ˆIØ˜iÔ(¨Ô+¨IÔ6°yÔAˆEØ�JŠJ‰LŒLˆLØˆLøÝð 	Xð 	Xð 	XØ�LŠL˜Ð >°Ð >Ð >°fÐ >Ð >ÈˆLÑPÔPÐPØWÐWÐWÐWÐWÐWøøøøð	Xøøøs9   Ç%B3KÊ/KË
KËKËB1O ÎAO Ï
PÏP Ð Pc                 ó    — | j         | j        dœS )zGet the identifying parameters.©r   r   rU   r   s    r   Ú_identifying_paramsz"NIBittensorLLM._identifying_params¨   s   € ð "Ô/Ø!Ô/ð
ð 
ð 	
r   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r6   Ú__annotations__r   r4   Úpropertyr   r   r   r   rS   r   rV   r   r   r   r
   r
   
   s  € € € € € € ðð ð  ˜C”=Ð Ð Ñ ØWà#$€M�8˜C”=Ð$Ð$Ñ$ð#ð ð ˜3ð  ð  ð  ñ „Xð ð %)Ø:>ð	@Xð @Xàð@Xð �t˜C”yÔ!ð@Xð Ð6Ô7ð	@Xð
 ð@Xð 
ð@Xð @Xð @Xð @XðD ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð 
ð 
r   r
   )Úhttp.clientr0   r<   r-   Útypingr   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr   r
   r   r   r   ú<module>ra      s©   ðØ Ð Ð Ð Ø €€€Ø 
€
€
€
Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðd
ð d
ð d
ð d
ð d
�Sñ d
ô d
ð d
ð d
ð d
r   