CoolFace
Apppublic

cathub/LocalChatGPT

sourceHugging Facegpl-3.0updated 3y agoView on Hugging Face
0likes
chat_func.cpython-39.pyc86 linesDownload Raw Back to __pycache__
1a

28 d~;�@s$ddlmZddlmZmZddlZddlZddlZddlZddl	Z	ddl3m4Z5ddlZddlm
Z
ddlZddlZddlTddlTddlTddlmZer�ddlmZGdd	�d	e�Zd6ZdZdZd
d�Zddd�Zddd�Zdedddddfdd�Zdeddfdd�Zeddfdd�Z dS)�)�annotations)�
TYPE_CHECKING�ListN)�tqdm)�ddg)�*)�	TypedDictc@seZdZUded<ded<dS)�
DataframeDataz	List[str]�headerszList[List[str | int | bool]]�dataN)�__name__�7__module__�__qualname__�__annotations__�rr�G/Users/treediagram/Documents/Developer/huggingface/modules/chat_func.pyr	s8r	zYou are a helpful assistant.�history�	templatesc	Cs9dd|��d�}t|�g|�}||||d|ddd�}|r>t}	nt}	tj�d�pXtj�d�}10tj�d	�pptj�d11�}i}|12r�t�d|13���|14|d<|r�t�d
|���||d<tj	j15tkr�t�dtj	j16���|r�tj
tj	j17||d|	|d�}
ntj
tj	j18||d|	d�}
|
S)Nzapplication/jsonzBearer )zContent-Type�
Authorization�r)�model�messages�temperature�top_p�n�stream�presence_penalty�frequency_penaltyZ19HTTP_PROXY�20http_proxy�HTTPS_PROXY�https_proxyu使用 HTTP 代理: �httpu使用 HTTPS 代理: �httpsu使用自定义API URL: T)r21�jsonr�timeout�proxies)r22r#rr$)�construct_system�timeout_streaming�timeout_all�os�environ�get�logging�info�shared�state�api_url�API_URL�requests�post)�openai_api_key�
system_promptrrrr�selected_modelr23�payloadr$rr r%�responserrr�get_response$sX��24�	�r9�c	#s�����fdd�}t�d�d}d}
d���t|����td��|	rX��|	df�n��|df�d}t��dkr�tt|��}tt|��|}ntt|��}��|�t�d|���|�Vzt||�||d|�}WnZt	j25j�ytt
t�|�VYdSt	j26j�y4ttt�|�VYdS0|�Vd}|��D�]x}|
dk�rf|
d	7}
�qJ|
d	7}
|�rJ|��}t|�}zt�|d27d��}Wn@tj�y�t�|�||7}d|���|�VY�qJYn0|d28k�rJd|d
dv�rJ|d
dd}tt��dd��|dk�r0|�V�q�z||d
ddd}Wn8t�y�tdtt����|�VY�q�Yn0t|��d<�dd||29f�d<�dd	7<|�V�qJdS)Ncs����fS)Nrr��all_token_counts�chatbotr�status_textrr�get_return_valuensz(stream_predict.<locals>.get_return_valueu实时回答模式r:ru开始实时传输回答……u输入token计数: Tr�u6JSON解析错误。请重置对话。收到的内容: �delta�choices�
finish_reason)r�stop�contentulAPI回复中找不到内容。很可能是Token计数达到上限了。请重置对话。当前Token计数: �����)r,r-�append�construct_user�construct_assistant�len�count_tokenr&r9r2�30exceptions�ConnectTimeout�standard_error_msg�connection_timeout_prompt�error_retrieve_prompt�ReadTimeout�read_timeout_prompt�31iter_lines�decoder#�loads�JSONDecodeError�construct_token_message�sum�KeyError�str)r4r5r�inputsr=r<rrr6�32fake_input�display_appendr?Z
partial_words�counterZuser_token_countZsystem_prompt_token_countr8Zerror_json_str�chunkZchunklengthrCrr;r�stream_predictas�
33�34�	35�363738�39��40��r`cCspt�d�|�t|��|�td��|	r:|�|	df�n|�|df�|�tt|���zt|||||d|�}Wn�tjj	y�t41tt}||||fYStjj
y�t42tt}||||fYStjj�y�t43tt}||||fYS0t�|j�}|dddd}
t|
�|d<|dd|
|44f|d<|d	d45}|t|�|d<t|�}||||fS)Nu一次性回答模式r:FrBr�messagerErF�usage�total_tokens)r,r-rGrHrIrKr9r2rLrMrNrOrP�46ProxyError�proxy_error_prompt�SSLError�ssl_error_promptr#rU�textrXrW)r4r5rr[r=r<rrr6r\r]r8r>rEZtotal_token_countrrr�predict_all�sF
47�	48�riFu中文Tc
cs49t�dtjj|�tjj�||dfg|d|fV|dkrDd}|r�d}t�|�||dfg|||fVt||d�}d}||dfg|||fVt||||||�\}}}||||fVdSd}g}|50�r�t	|d	d51�}|}g}t52|�D]�\}}t�d|d�d
|���tj�
|d�j}|�d|d�d|d�d|d���|�|d�d|�d|d�d��q�dd�|�}tt��d|��dd�|���d|�}nd}t|�dk�r.tt}t�|�|�|df�t|�dk�r|�t|��|�d�|�d�nt|�|d<||dfg|||fVdSt|���dk�rntt}t�|�||dfg|||fVdS|�r�t�d�t|||||||||	||d�}|D]6\}}}}tjj�r�tj��dS||||fV�q�n>t�d�t|||||||||	||d�\}}}}||||fVt�d |���t|�dk�rp|d!d"|k�rpt�d#tjj|d!d"�tjj�|�r|t }nt!}t"|�|k�r|
�rd$|�d%|��}t�|�||||fVt#||||||||d&|	d'�	}|D]&\}}}}d(|��}||||fV�q�dS))Nu输入为:r:u开始生成回答……u!跟随问题语言(不稳定)ugthe same language as the question, such as English, 中文, 日本語, Español, Français, or Deutsch.u<构建索引中……(这可能需要比较久的时间))�file_srcu*索引构建完成,获取回答中……�)�max_resultsu搜索结果ru:�href�[z]"�bodyz"53URL: z. [z](z)54z55 56z{query}z
{web_results}z{reply_language}�3r�����u使用流式传输)r\r]u不使用流式传输u#传输完毕。当前token计数为rFrEu回答为:u精简token中�/�)r6u3Token 达到上限,已自动降低Token计数至 )$r,r-�colorama�Fore�BLUE�Style�	RESET_ALL�construct_index�chat_air�	enumerate�urllib3�util�	parse_url�hostrG�join�
replace_today�WEBSEARCH_PTOMPT_TEMPLATE�replacerJrN�
no_apikey_msgrH�strip�no_input_msgr`r.r/�interrupted�recoverri�max_token_streaming�
max_token_allrX�reduce_token_size)r4r5rr[r=r<rrrr6Z
use_websearch�files�reply_language�should_check_token_count�msg�indexr>Z57old_inputsZlink_references�search_resultsZweb_results�idx�resultZdomain_name�iterZ	max_tokenrrr�predict�s� 58(&�59���60616263�
646566�
 ����67�68r�c69

cs�t�d�t|�dkr.||t�d�|fVdS|��|��d}70|��t||||71|||||||	d�}t�d�|D]72}|Vqvt�d�dS)Nu重试中……ru上下文是空的rE)rr6r�u重试完毕)r,r-rJrN�popr�)
r4r5rr=�token_countrrrr6r�r[r��xrrr�retry�s073�
74r�c75
cs�t�d�t|||t|||||d|	d�}76t�d|���d}|77D]�\}}}}
t|
|�}|rf|dd�}d}|dkr�|d|d�ng}|dkr�|
|d�ng}d	|�d78�}|||dtt|�dkr�t|�nd�|fVq@t�|�t�d�dS)
Nu开始减少token数量……F)r6r�r�z	chatbot: rFTrrqu保留了最近u	轮对话u,u减少token数量完毕)r,r-r��summarize_prompt�find_nrWrJrX)r4r5rr=r�rrZmax_token_countr6r�r��flagr>�previous_token_countZnum_chatr�rrrr��s>79�
80��81r�)Nr:)Nr:)!�82__future__r�typingrrr,r#r)r2r|rrtZduckduckgo_searchr�asyncio�aiohttp�modules.presets�modules.llama_func�
modules.utils�modules.sharedr.rr	�initial_prompt�HISTORY_DIR�
TEMPLATES_DIRr9r`ri�MODELSr�r�r�rrrr�<module>sVG�83s�84=�85�86/�