CoolFace
Apppublic

Dwild/ChuanhuChatGPT

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

2?J,d/B�@s�ddlmZddlmZmZmZmZmZmZm	Z	ddl3Z4ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlZddlZddlmZddlmZddlmZddl m!Z!ddl"Z#dd	l$Td5dl%m&Z&ddl'm(Z(e�r&dd
lm)Z)Gdd�de)�Z*dd�Z+dd�Z,ddd�dd�Z-dd�Z.dd�Z/dd�Z0dd�Z1d d!�Z2d"d#�Z3d$d%�Z4d&d'�Z5d(d)�d*d+�Z6d,d-�Z7d.d/�Z8d0d1�Z9d2d3�Z:d4d5�Z;d6d7�Z<d8d9�Z=d:d;gfd<d=�Z>dqd?d@�Z?drdAdB�Z@dsdCdD�ZAdEdF�ZBdGdH�ZCdIdJ�ZDdKdL�ZEdMdN�ZFdOdP�ZGdQdR�ZHdSdT�ZIdUdV�ZJdWdX�ZKdYdZ�ZLd[d\�ZMd]d^�ZNd_d`�ZOdadb�ZPdtdcdd�ZQdedf�ZRdudidj�ZSdkdl�ZTdmdn�ZUdodp�ZVdS)v�)�annotations)�
TYPE_CHECKING�Any�Callable�Dict�List�Tuple�TypeN��lazy_pinyin)�markdown)�	highlight)�get_lexer_by_name)�
HtmlFormatter)�*�)�shared)�retrieve_proxy)�	TypedDictc@seZdZUded<ded<dS)�
DataframeDataz	List[str]�headerszList[List[str | int | bool]]�dataN)�__name__�6__module__�__qualname__�__annotations__�rr�C/Users/treediagram/Documents/Developer/huggingface/modules/utils.pyr!s7rcCs4t�d�}d|d�d|d��}t|�|��}|S)NZcl100k_basezrole: �rolez, content: �content)�tiktoken�get_encoding�len�encode)�message�encoding�	input_str�lengthrrr�count_token&s8r(cCs,dd�}d}tj|||tjd�}t|�}|S)NcSsl|�d�pd}|�d�}zt|dd�}WntyFtddd�}Yn0t�}t|||�}d|�d|�d�S)	Nr�text�T)�stripallz<pre><code class="�">z
</code></pre>)�groupr�9ValueErrorrr
)�match�lang�code�lexer�	formatterZhighlighted_coderrr�replacer.s10z8markdown_to_html_with_syntax_highlight.<locals>.replacerz```(\w+)?\n([\s\S]+?)\n```)�flags)�re�sub�	MULTILINEr)Zmd_strr4�code_block_patternZhtml_strrrr�&markdown_to_html_with_syntax_highlight-s11r:�str)�md_text�returncCs�|�d�}g}d}t|�D]�\}}t�d|���rl|s\|dkr\||d��dkr\|�d�d}|�|�q|r�|��dkr�|t|�dkrt�d||d���s|�|�qqd}|�|�qd�|�S)N�12Fz^(\d+\.|-|\*|\+)\srr�T)�split�	enumerater6r/�strip�appendr"�join)r<�linesZnormalized_linesZinside_list�i�linerrr�normalize_markdownCs$13 14�15rHcCs�t�dtj�}t�dtj�}|�|�}|�|�ddd�}g}t||dg�D]t\}}|��r�t|�}|�|�r�|�	t16|dgd��n|�	tj|dgd��|��rNd|�d�}t
|�}|�	|�qNd�|�}|t7}|S)	Nz```(.*?)(?:```|$)z`(.*?)`r*r?�tables)�17extensionsz18```z19 20```)r6�compile�DOTALL�findallr@�ziprBrH�searchrCr�21mdtex2html�convertr:rD�ALREADY_CONVERTED_MARK)r<r9Zinline_code_patternZcode_blocksZnon_code_parts�resultZnon_coder1rrr�convert_mdtext[s$222324rTcCsdt�|��d�tS)Nz!<p style="white-space:pre-wrap;">z</p>)�html�escaperR�Z	userinputrrr�convert_asists��rXcCs|�t�rdSdSdS)NTF)�endswithrRrWrrr�detect_converted_mark{s25rZcCsX|�d�rd}n|���dd�d}|r0|��nd}|rL|t|�d���n|}||fS)Nr>r?rr)�26startswithrBr@�lowerr"�lstrip)r1�27first_line�languageZcode_without_languagerrr�detect_language�s28r`cCs29||d�S)N)rrr)rr)rrr�construct_text�sracCs30td|�S)N�user�ra�r)rrr�construct_user�srecCs31td|�S)N�systemrcrdrrr�construct_system�srgcCs32td|�S)NZ	assistantrcrdrrr�construct_assistant�srhz	List[int])�tokenscCsDd}tt|��D]}|t|d|d��7}qdt|��d|�d�S)NrruToken 计数: u,本次对话累计消耗了 z tokens)�ranger"�sum)riZ	token_sumrFrrr�construct_token_message�srlcCs"|r|dd�=|d=||t|�fS)Nr*r)rl)�history�previous_token_countrrr�delete_first_conversation�s33�rocCs�t|�dkr6t|ddvr6t�d�|��||fSt|�dkr\t�d�|��|��t|�dkrzt�d�|��t|�dkr�t�d�|��|||t|�fS)Nr�����ru1由于包含报错信息,只删除chatbot记录u删除了一组对话历史u删除了一组chatbot对话u)删除了一组对话的token计数记录)r"�standard_error_msg�logging�info�poprl)�chatbotrmrnrrr�delete_last_conversation�s&34353637�rvc	Cs0t�|�d��tjt|dd�|�d�r�|||d�}t|�ttj�	t||�d��}t38�||�Wd�n1sz0Yn�|�d��rd|�d	�}|D]"}|d39|d�d|d
�d	�7}q�ttj�	t||�ddd��}|�|�Wd�n1�s0Yt�|�d��tj�	t||�S)Nu 保存对话历史中……T)�exist_ok�.json)rfrmru�w�.mdzsystem: 40- z 41r>rz: 42- r�utf8�r%u 保存对话历史完毕)
rrrs�os�makedirs�HISTORY_DIRrY�print�open�pathrD�json�dump�write)	�filenamerfrmru�	user_name�json_s�fZmd_srrrr�	save_file�s43, *r�cCs.|dkrdS|�d�s|d7}t|||||�S)Nr?rx�rYr��r�rfrmrur�rrr�save_chat_history�s4445r�cCs.|dkrdS|�d�s|d7}t|||||�S)Nr?rzr�r�rrr�export_markdown�s4647r�c48CsJt�|�d��t|�tkr"|j}z�ttj�t	||�d��}t49�|�}Wd�n1s\0Yzxt|dd�tkr�t�d�g}t|d�D]2\}}	|ddkr�|�
t|	��q�|�
t|	��q�||d<t�|�WnYn0t�|�d��||d|d|d	fWSt�yDt�|�d50��||||fYS0dS)Nu 加载对话历史中……�rrmru0历史记录格式为旧版,正在转换……r*u 加载对话历史完毕rfruu7 没有找到对话历史文件,不执行任何操作)rrrs�typer;�namer�r}r�rDrr��loadrArCrerh�FileNotFoundError)51r�rfrmrur�r�r�Znew_history�index�itemrrr�load_chat_history�s.(52r�cCst|dd�d�S)NcSst|�ddS)Nrr53)�charrrr�<lambda>�z"sorted_by_pinyin.<locals>.<lambda>)�key)�sorted)�listrrr�sorted_by_pinyinsr�Frxcs�t�d|�d|�d|���g}z*|D] �|�fdd�t�|�D�7}q&Wnty`g}Yn0t|�}|gkrxdg}t�d|���|r�|Stjj	|d�SdS)	Nu!获取文件名列表,目录为u,文件类型为u,是否为纯文本列表csg|]}|���r|�qSr)rY)�.0r��r�rr�54<listcomp>r�z"get_file_names.<locals>.<listcomp>r?z55files are:��choices)56rrrsr}�listdirr�r��debug�gr�Dropdown�update)�dir�plain�	filetypes�filesrr�r�get_file_namess"57r�r?cCs t�d|�d��tt||�S)Nu58从用户 u% 中获取历史记录文件名列表)rrrsr�r)r�r�rrr�get_history_namessr�cCs<t�d|�d|�d��g}t�d�|�d�r�ttj�t|�ddd��}t�	|�}Wd�n1sh0Yd	d59�|D�}nVttj�t|�ddd��"}t60�|�}t|�}Wd�n1s�0Y|dd�}|dkr�t
dd61�|D��S|d
k�r62dd�|D�St
dd63�|D��}dd�|D�tjj|d�fSdS)Nu加载模板文件u,模式为uQ(0为返回字典和下拉菜单,1为返回下拉菜单,2为返回字典)zLoading template...rxr�r{r|cSsg|]}|d|dg�qS)Zact�promptr)r�rFrrrr�%r�z!load_template.<locals>.<listcomp>rcSsg|]}|d�qS�rr�r��rowrrrr�.r�r*cSsi|]}|d|d�qS�rrrr�rrr�64<dictcomp>0r�z!load_template.<locals>.<dictcomp>cSsg|]}|d�qSr�rr�rrrr�2r�cSsi|]}|d|d�qSr�rr�rrrr�3r�r�)rrrsrYr�r}r�rD�
TEMPLATES_DIRr�r��csv�readerr�r�r�r�r�)r��moderEr��csvfiler�r�rrr�
load_templates,6566(�67&68�r�cCst�d�tt|ddgd�S)Nu获取模板文件名列表z.csvr�)r�)rrrsr�r�)r�rrr�get_template_names8s69r�cCs6t�d|�d|���z70||WS|YS0dS)Nu应用模板中,选择为u,原始系统提示为)rrrs)�	templates�	selectionZoriginal_system_promptrrr�get_template_content=s7172r�cCst�d�gggtdg�fS)Nu重置状态r)rrrsrlrrrr�reset_stateEs73r�cCst�d�tjdd�S)Nu重置文本框r?��value)rrr�r�r�rrrr�
reset_textboxJs74r�cCs,tj��}td�tj|d�tjdd�dfS)Nr?r�uAPI-Host 和代理已重置)r�state�reset_api_hostrr�r�)Zdefault_hostrrr�
reset_defaultOs75r�cCs$tj�|�d|��}t�|�|S)NuAPI-Host更改为了)rr��set_api_hostrrrs)�host�msgrrr�change_api_hostUs7677r�cCs*t|�|tjd<d|��}t�|�|S)N�HTTPS_PROXYu代理更改为了)rr}�environrrrs)�proxyr�rrr�change_proxy\s78798081r�cCsT|durdSt|�dkr|S|dd�}|dd�}dt|�d}|||SdS)Nr?�������r)r")�s�head�tail�hiddenrrr�hide_middle_charsdsr�cCs(|��}dt|���}t�|�||fS)NuAPI密钥更改为了)rBr�rrrs)r�r�rrr�82submit_keyps83r�cCstj���d�}|�d|�S)Nz%Y-%m-%dz{current_date})�datetime�today�strftime�replace)r�r�rrr�
replace_todaywsr�cCs�z@t��tjddd�}Wd�n1s,0Y|��}Wnddd�}Yn0d|��vr�t�d|���|d	d84kr�dSd|d	�d
�Sn0|d}|dkr�d}nd|�d�}t�|�|SdS)Nzhttps://ipapi.co/json/�)�timeoutTu连接ipapi失败)�error�reasonr�u无法获取IP地址信息。85r�ZRateLimitedug获取IP地理位置失败,因为达到了检测IP的速率限制。聊天功能可能仍然可用。u&获取IP地理位置失败。原因:u'。你仍然可以使用聊天功能。Zcountry_nameZChinau{**您的IP区域:中国。请立即检查代理设置,在不受支持的地区使用API可能导致账号被封禁。**u您的IP区域:u。)r�requests�getr��keysrr�warningrs)�responserZcountryr)rrr�	get_geoip|s$,�86r�cCs^t|�}t|�}||kr|Stt|��D]0}||||krL||dS|||}q(dS)Nr)r"rkrj)�lstZmax_num�n�totalrFrrr�find_n�sr�cCs&t�d�tjjdd�tjjdd�fS)Nu'显示取消按钮,隐藏发送按钮T��visibleF)rrr�r��Buttonr�rrrr�start_outputing�s87r�cCstjjdd�tjjdd�fS)NTr�F)r�r�r�rrrr�
end_outputing�s�r�cCst�d�tj��dS)Nu中止输出……)rrrsrr��	interruptrrrr�cancel_outputing�s88r�cCs4t�}t�}|tjdd�tjjdd�tjjdd�fS)Nr?r�Tr�F)r�r�r�r�r�)�inputs�textbox�	outputingrrr�transfer_input�s89�r�cCs90|durt|�|r^tj|d|dur*tjn|d�}|jdkrZt|pDd�d|�d|j����dStj|tjtjd|dur|tjn|d�}|jdkr�|p�d�d|�d|j�d	t|j	�dkr�|j	j91d92dd�nd
�dt|j�dkr�|jj93d94dd�nd
�d�95}t|��|j	j96d97dd�S)NT)�shell�envrzError running commandz.98Command: z
99Error code: r?)�stdout�stderrr�r�z	100stdout: r{�ignore)r%�errorsz<empty>z	101stderr: r>)r��102subprocess�runr}r��103returncode�RuntimeError�PIPEr"r��decoder�)�command�descZerrdescZ104custom_env�liverSr$rrrr��s0105��&106107�� � �r�c	Cs�tj�dd�}d�dd�tjdd�D��}zt|�d����}WntyXd	}Yn0|d	kr�|dd108�}d|�d|�d
�}nd}dtj	�d|�dt109j�d|�d�	S)NZGIT�git�.cSsg|]}t|��qSr)r;)r��xrrrr��r�z!versions_html.<locals>.<listcomp>r�z rev-parse HEADz<none>�z[<a style="text-decoration:none" href="https://github.com/GaiZhenbiao/ChuanhuChatGPT/commit/r,z</a>uunknown 😕z110Python: <span title="u</span>111 • 112Gradio: u113 • 114Commit: r>)r}r�r�rD�sys�version_infor�rB�	Exception�versionr��__version__)r�python_version�commit_hashZshort_commit�commit_inforrr�
versions_html�s&115����r�SourceTcs0|r�fdd�t|�D�Sdd�t|�D�SdS)Ncs8g|]0\}}d|d�d|d�d��d|d���qS)�[r�]	 "rz"116�: r�r��idxr���source_namerrr��r�z&add_source_numbers.<locals>.<listcomp>cSs&g|]\}}d|d�d|�d��qS)rrr�"rrrrrr��r�)rA)r�rZ117use_sourcerrr�add_source_numbers�srcCsFg}t|�D]4\}}|dd��dd�}|�d|�d|�d��q|S)N�r>r?z<details><summary>z...</summary><p>z</p></details>)rAr�rC)r��nodesr��txt�briefrrr�add_details�s�rcCs`d}|��D]N\}}d}|jD]}||�d||�d�7}q|�d�}|d7}||d7}q|S)Nr?rz, rr>)�iterrows�columns�rstrip)�sheetrSr�r�Z118row_string�columnrrr�sheet_to_string�s119120r%cCsNtj|ddd�}d}|��D],\}}|d|�d�7}|t|�7}|d7}q|S)N�openpyxl)�engine�121sheet_namer?zSheet: r>z122--------------------123 124)�pd�125read_excel�itemsr%)�	file_pathZ126excel_filerSr(Z127sheet_datarrr�excel_to_strings128r-)Fr?)r)F)NNNF)rT)W�129__future__r�typingrrrrrrr	rrr�r}r��hashlibr�r�r6rUrr��gradior�Zpypinyinrr rPr�pygmentsr
�pygments.lexersr�pygments.formattersr�pandasr)�modules.presetsr?r�modules.configrrrr(r:rHrTrXrZr`rarergrhrlrorvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr%r-rrrr�<module>s�$130131132133
134135136