CoolFace
Apppublic

Dwild/ChuanhuChatGPT

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

2�#,dB�@s8ddlmZddlmZmZddlZddlZddlZddlZddl	Z	ddl3m4Z5ddlZddlm
Z
ddlZddlZddlTddlTddlTddlmZdd	lmZer�dd6lmZGdd�de�Zd
ZdZdZejjdd��Zd dd�Zd!dd�Z de!dddddfdd�Z"de!ddfdd�Z#e!ddfdd�Z$dS)"�)�annotations)�
TYPE_CHECKING�ListN)�tqdm)�ddg)�*�)�shared)�retrieve_proxy)�	TypedDictc@seZdZUded<ded<dS)�
DataframeDataz	List[str]�headerszList[List[str | int | bool]]�dataN)�__name__�7__module__�__qualname__�__annotations__�rr�J/Users/treediagram/Documents/Developer/ChuanhuChatGPT/modules/chat_func.pyrs8rzYou are a helpful assistant.�history�	templatesc	Cs�dd|��d�}t|�g|�}||||d|ddd�}|r>t}	nt}	tjjtkrbt�dtjj���t	��(t9jtjj||d|	d	�}10Wd�n1s�0Y|11S)12Nzapplication/jsonzBearer )zContent-Type�
Authorizationrr)�model�messages�temperature�top_p�n�stream�presence_penalty�frequency_penaltyu使用自定义API URL: T)r
�jsonr�timeout)�construct_system�timeout_streaming�timeout_allr	�state�completion_url�COMPLETION_URL�logging�infor13�requests�post)�openai_api_key�
system_promptrrrr�selected_modelr
�payloadr!�responserrr�get_response&s6��14�$r1�c	#s�����fdd�}t�d�d}d}
d���t|����td��|	rX��|	df�n��|df�d}|	dur�tt|	��}ntt|��}t��dkr�tt|��}||}n|}��|�t�d|���|�Vzt||�||d|�}WnZt	j15j�ytt
t�|�VYdSt	j16j�yFttt�|�VYdS0|�Vd}|	du�rjt|	��d	<t|���D�]p}|
dk�r�|
d177}
�qv|
d187}
|�rv|��}t|�}zt�|dd��}Wn@tj�yt�|�||7}d|���|�VY�qvYn0|dk�rvd
|ddv�rv|ddd}t���|dk�rT|�V�q�z||ddd
d}Wn8t�y�tdtt����|�VY�q�Yn0t|��d<�dd||19f�d<�dd207<|�V�qvdS)Ncs����fS)Nrr��all_token_counts�chatbotr�status_textrr�get_return_value^sz(stream_predict.<locals>.get_return_valueu实时回答模式r2ru开始实时传输回答……u输入token计数: T�����r�u6JSON解析错误。请重置对话。收到的内容: �delta�choices�
finish_reason�stop�contentulAPI回复中找不到内容。很可能是Token计数达到上限了。请重置对话。当前Token计数: �����)r(r)�append�construct_user�construct_assistant�count_token�lenr"r1r*�21exceptions�ConnectTimeout�standard_error_msg�connection_timeout_prompt�error_retrieve_prompt�ReadTimeout�read_timeout_promptr�22iter_lines�decoder �loads�JSONDecodeError�construct_token_message�KeyError�str�sum)r,r-r�inputsr5r4rrr.�23fake_input�display_appendr7Z
partial_words�counterZuser_token_countZinput_token_countZsystem_prompt_token_countr0Zerror_json_str�chunkZchunklengthr<rr3r�stream_predictQs�
24�25�	26�2728293031��32��rYcCs�t�d�|�t|��|�td��|	r:|�|	df�n|�|df�|	durd|�tt|	���n|�tt|���zt|||||d|�}Wn�tjj	y�t33tt}||||fYStjj
y�t34tt}||||fYStjj�yt35tt}||||fYS0t�|j�}|	du�r:t|	�|d<z�|dddd}
t|
�|d	<|d	d|
|36f|d	<|d37d}|	du�r�|d	tt|
��7<n|t|�|d	<t|�}||||fWSt�y�t38t|�}||||fYS0dS)Nu一次性回答模式r2Fr8r;r�messager>r?�usage�total_tokens)r(r)r@rArBrCr1r*rErFrGrHrI�39ProxyError�proxy_error_prompt�SSLError�ssl_error_promptr rN�textrSrPrQrR)r,r-rrTr5r4rrr.rUrVr0r6r>Ztotal_token_countrrr�predict_all�sZ
40�	41�4243rbFu中文Tc&
csBddlm}ddlm}ddlm}t�dtj	j44|�tjj�|
r`||dfg|d|fV|dkrld	}d}g}d45}|�r�d}|}d}t�|�||dfg|||fVt
||d
�}d}t�|�||dfg|||fVt��vt|d|	d�d�}tddddd�}ddlm}|j||d�}||j|d|j|jd�}||�}|�|�}Wd�n1�sb0Ydd�|D�}t|d46d�}t|�}dd�|�}tt��d|��dd�|���d|�}n�|47�r�d}t|dd �}|}g}t|�D]p\}} t�d!|d"�d#| ���t j!�"| d$�j#}!|�$| d%| d$g�|�$|d"�d&|!�d'| d$�d(���q�t|�}dd�|�}tt%��d)|��d*d�|���d|�}nd}t&|�dk�r0t'j(j)�s0t*t+}"t�|"�|�$|df�t&|�dk�r|�$t,|��|�$d�|�$d�nt,|�|d+<||dfg||"|fVdSt&|�-��dk�rpt*t.}"t�|"�||dfg||"|fVdS|�r�t�d,�t/|||||||||	||d-�}#|#D]6\}}}"}t'j(j0�r�t'j(�1�dS|||"|fV�q�n>t�d.�t2|||||||||	||d-�\}}}"}|||"|fVt�d/|���t&|�d"k�rr|d0d1|k�rrt�d2tj	j48|d0d1�tjj�|�r�|d3d�}|d+d�}|||"|fV|�r�t3|	d4}$nt3|	d5}$t4|�|$k�r>|
�r>t5|�d}%t4|�|$d6k�rt4|�dk�r|%d"7}%|d=|dd7�=�q�t�|"�d8|%�d9�}"|||"|fVdS):Nr)�GPTVectorStoreIndexQuery)�QueryBundle)�49OpenAIChatu输入为:r2u开始生成回答……u!跟随问题语言(不稳定)ugthe same language as the question, such as English, 中文, 日本語, Español, Français, or Deutsch.FTu3加载索引中……(这可能需要几分钟))�file_srcu*索引构建完成,获取回答中……)r�50model_name)�llmi��iX)�max_input_size�51num_output�max_chunk_overlap�chunk_size_limit)�ServiceContext)�
llm_predictor�
prompt_helper)�service_context�similarity_top_k�vector_store�docstorecSsg|]}|jj�qSr)�nodera)�.0rrrr�52<listcomp>-�zpredict.<locals>.<listcomp>)�53use_sourcez54 55z{query_str}z
{context_str}z{reply_language})�max_resultsu搜索结果ru:�href�bodyz. [z](z)56z{query}z
{web_results}r8u使用流式传输)rUrVu不使用流式传输u#传输完毕。当前token计数为r?r>u回答为:������	streaming�alli��u3为了防止token超限,模型忘记了早期的 u57 轮对话)6�+llama_index.indices.vector_store.base_queryrc� llama_index.indices.query.schemardZlangchain.llmsrer(r)�colorama�Fore�BLUE�Style�	RESET_ALL�construct_indexr58�LLMPredictor�PromptHelper�llama_indexro�
from_defaults�index_struct�
_vector_store�	_docstore�retrieve�add_source_numbers�add_details�join�
replace_today�PROMPT_TEMPLATE�replacer�	enumerate�urllib3�util�	parse_url�hostr@�WEBSEARCH_PTOMPT_TEMPLATErDr	r%�
multi_api_keyrG�
no_apikey_msgrA�strip�no_input_msgrY�interrupted�recoverrb�MODEL_SOFT_TOKEN_LIMITrS�print)&r,r-rrTr5r4rrrr.Z
use_websearch�files�reply_language�should_check_token_countrcrdreZ59old_inputsZdisplay_referenceZlimited_context�msg�indexrprqrorrZquery_object�query_bundle�nodesZreference_results�search_results�idx�resultZdomain_namer6�iterZ	max_token�countrrr�predict�s 6061*�62���(�63���64656667�
686970�
 ���� 71r�c72

cs�t�d�t|�dkr.||t�d�|fVdS|��|��d}73|��t||||74|||||||	d�}t�d�|D]75}|Vqvt�d�dS)Nu重试中……ru上下文是空的r>)rr.r�u重试完毕)r(r)rDrG�popr�)
r,r-rr5�token_countrrrr.r�rTr��xrrr�retry�s076�
77r�c78
cs79t�d�t|||t|||||d|	d�}80t�d|���d}|81D]�\}}}}
t|
|�}t�d|
�d|�d��|r~|dd�}d	}|d82kr�|d|d�ng}|d83kr�|
|d�ng}d|�d
�}|||dtt|�d84kr�|nd85g�|fVq@t�|�t�d�dS)Nu开始减少token数量……F)r.r�r�z	chatbot: zprevious_token_count: z86, keeping z chatsr?Trr8u保留了最近u	轮对话u,u减少token数量完毕)r(r)r��summarize_prompt�find_nrPrD)r,r-rr5r�rrZmax_token_countr.r�r��flagr6�previous_token_countZnum_chatr�rrr�reduce_token_size�s@87�
88��89r�)Nr2)Nr2)%�90__future__r�typingrrr(r �osr*r�rr�Zduckduckgo_searchr�asyncio�aiohttp�modules.presets�modules.llama_func�
modules.utilsr2r	�modules.configr91rr�initial_prompt�HISTORY_DIR�
TEMPLATES_DIRr%�switching_api_keyr1rYrb�MODELSr�r�r�rrrr�<module>sZ924�93w�94I�95-�96/�