Spaces:
Runtime error
Runtime error
Merge branch 'master' of github.com:mrhblfx/chatgpt_academic
Browse files- README.md +42 -45
- main.py +6 -3
- request_llm/bridge_chatgpt.py +2 -0
- toolbox.py +3 -1
README.md
CHANGED
@@ -12,7 +12,7 @@ If you like this project, please give it a Star. If you've come up with more use
|
|
12 |
>
|
13 |
> 2.本项目中每个文件的功能都在自译解[`self_analysis.md`](https://github.com/binary-husky/chatgpt_academic/wiki/chatgpt-academic%E9%A1%B9%E7%9B%AE%E8%87%AA%E8%AF%91%E8%A7%A3%E6%8A%A5%E5%91%8A)详细说明。随着版本的迭代,您也可以随时自行点击相关函数插件,调用GPT重新生成项目的自我解析报告。常见问题汇总在[`wiki`](https://github.com/binary-husky/chatgpt_academic/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)当中。
|
14 |
>
|
15 |
-
|
16 |
|
17 |
<div align="center">
|
18 |
|
@@ -30,6 +30,7 @@ If you like this project, please give it a Star. If you've come up with more use
|
|
30 |
Latex全文翻译、润色 | [函数插件] 一键翻译或润色latex论文
|
31 |
批量注释生成 | [函数插件] 一键批量生成函数注释
|
32 |
chat分析报告生成 | [函数插件] 运行后自动生成总结汇报
|
|
|
33 |
[arxiv小助手](https://www.bilibili.com/video/BV1LM4y1279X) | [函数插件] 输入arxiv文章url即可一键翻译摘要+下载PDF
|
34 |
[PDF论文全文翻译功能](https://www.bilibili.com/video/BV1KT411x7Wn) | [函数插件] PDF论文提取题目&摘要+翻译全文(多线程)
|
35 |
[谷歌学术统合小助手](https://www.bilibili.com/video/BV19L411U7ia) | [函数插件] 给定任意谷歌学术搜索页面URL,让gpt帮你选择有趣的文章
|
@@ -43,7 +44,7 @@ huggingface免科学上网[在线体验](https://huggingface.co/spaces/qingxu98/
|
|
43 |
</div>
|
44 |
|
45 |
|
46 |
-
-
|
47 |
<div align="center">
|
48 |
<img src="https://user-images.githubusercontent.com/96192199/230361456-61078362-a966-4eb5-b49e-3c62ef18b860.gif" width="700" >
|
49 |
</div>
|
@@ -91,9 +92,8 @@ cd chatgpt_academic
|
|
91 |
|
92 |
在`config.py`中,配置 海外Proxy 和 OpenAI API KEY,说明如下
|
93 |
```
|
94 |
-
1. 如果你在国内,需要设置海外代理才能够顺利使用
|
95 |
-
2. 配置 OpenAI API KEY
|
96 |
-
3. 支持任意数量的OpenAI的密钥和API2D的密钥共存/负载均衡,多个KEY用英文逗号分隔即可,例如输入 API_KEY="OpenAI密钥1,API2D密钥2,OpenAI密钥3,OpenAI密钥4"
|
97 |
3. 与代理网络有关的issue(网络超时、代理不起作用)汇总到 https://github.com/binary-husky/chatgpt_academic/issues/1
|
98 |
```
|
99 |
(P.S. 程序运行时会优先检查是否存在名为`config_private.py`的私密配置文件,并用其中的配置覆盖`config.py`的同名配置。因此,如果您能理解我们的配置读取逻辑,我们强烈建议您在`config.py`旁边创建一个名为`config_private.py`的新配置文件,并把`config.py`中的配置转移(复制)到`config_private.py`中。`config_private.py`不受git管控,可以让您的隐私信息更加安全。)
|
@@ -101,19 +101,17 @@ cd chatgpt_academic
|
|
101 |
|
102 |
3. 安装依赖
|
103 |
```sh
|
104 |
-
#
|
105 |
-
python -m pip install -r requirements.txt
|
106 |
-
|
107 |
-
|
108 |
-
#
|
109 |
-
#
|
110 |
-
#
|
111 |
-
|
112 |
-
# 备注:使用官方pip源或者阿里pip源,其他pip源(如一些大学的pip)有可能出问题,临时换源方法:
|
113 |
-
# python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
|
114 |
```
|
115 |
|
116 |
-
如果需要支持清华ChatGLM
|
117 |
```sh
|
118 |
python -m pip install -r request_llm/requirements_chatglm.txt
|
119 |
```
|
@@ -126,15 +124,16 @@ python main.py
|
|
126 |
5. 测试函数插件
|
127 |
```
|
128 |
- 测试Python项目分析
|
129 |
-
input区域 输入 `./crazy_functions/test_project/python/dqn` , 然后点击 "解析整个Python项目"
|
130 |
-
|
|
|
131 |
点击 "[多线程Demo] 解析此项目本身(源码自译解)"
|
132 |
-
-
|
133 |
点击 "[函数插件模板Demo] 历史上的今天"
|
134 |
- 函数插件区下拉菜单中有更多功能可供选择
|
135 |
```
|
136 |
|
137 |
-
## 安装-方法2:使用
|
138 |
|
139 |
1. 仅ChatGPT(推荐大多数人选择)
|
140 |
``` sh
|
@@ -147,33 +146,23 @@ cd chatgpt_academic
|
|
147 |
docker build -t gpt-academic .
|
148 |
# 运行
|
149 |
docker run --rm -it --net=host gpt-academic
|
150 |
-
|
151 |
-
# 测试函数插件
|
152 |
-
## 测试函数插件模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能
|
153 |
-
点击 "[函数插件模板Demo] 历史上的今天"
|
154 |
-
## 测试给Latex项目写摘要
|
155 |
-
input区域 输入 ./crazy_functions/test_project/latex/attention , 然后点击 "读Tex论文写摘要"
|
156 |
-
## 测试Python项目分析
|
157 |
-
input区域 输入 ./crazy_functions/test_project/python/dqn , 然后点击 "解析整个Python项目"
|
158 |
-
|
159 |
-
函数插件区下拉菜单中有更多功能可供选择
|
160 |
```
|
161 |
|
162 |
-
2. ChatGPT+ChatGLM(需要对docker
|
163 |
|
164 |
``` sh
|
165 |
-
# 修改
|
166 |
cd docs && nano Dockerfile+ChatGLM
|
167 |
-
#
|
168 |
docker build -t gpt-academic --network=host -f Dockerfile+ChatGLM .
|
169 |
-
#
|
170 |
docker run --rm -it --net=host --gpus=all gpt-academic
|
171 |
-
#
|
172 |
docker run --rm -it --net=host --gpus=all gpt-academic bash
|
173 |
```
|
174 |
|
175 |
|
176 |
-
## 安装-方法3
|
177 |
|
178 |
1. 远程云服务器部署
|
179 |
请访问[部署wiki-1](https://github.com/binary-husky/chatgpt_academic/wiki/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9C%E7%A8%8B%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97)
|
@@ -192,7 +181,9 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
192 |
|
193 |
---
|
194 |
|
195 |
-
##
|
|
|
|
|
196 |
任意文本编辑器打开`core_functional.py`,添加条目如下,然后重启程序即可。(如果按钮已经添加成功并可见,那么前缀、后缀都支持热修改,无需重启程序即可生效。)
|
197 |
例如
|
198 |
```
|
@@ -208,19 +199,25 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
208 |
<img src="https://user-images.githubusercontent.com/96192199/226899272-477c2134-ed71-4326-810c-29891fe4a508.png" width="500" >
|
209 |
</div>
|
210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
---
|
212 |
|
213 |
|
214 |
## 部分功能展示
|
215 |
|
216 |
-
|
217 |
|
218 |
<div align="center">
|
219 |
<img src="https://user-images.githubusercontent.com/96192199/228737599-bf0a9d9c-1808-4f43-ae15-dfcc7af0f295.png" width="800" >
|
220 |
</div>
|
221 |
|
222 |
-
|
223 |
-
### 如果一个程序能够读懂并剖析自己:
|
224 |
|
225 |
<div align="center">
|
226 |
<img src="https://user-images.githubusercontent.com/96192199/226936850-c77d7183-0749-4c1c-9875-fd4891842d0c.png" width="800" >
|
@@ -230,7 +227,7 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
230 |
<img src="https://user-images.githubusercontent.com/96192199/226936618-9b487e4b-ab5b-4b6e-84c6-16942102e917.png" width="800" >
|
231 |
</div>
|
232 |
|
233 |
-
|
234 |
<div align="center">
|
235 |
<img src="https://user-images.githubusercontent.com/96192199/226935232-6b6a73ce-8900-4aee-93f9-733c7e6fef53.png" width="800" >
|
236 |
</div>
|
@@ -239,26 +236,26 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
239 |
<img src="https://user-images.githubusercontent.com/96192199/226969067-968a27c1-1b9c-486b-8b81-ab2de8d3f88a.png" width="800" >
|
240 |
</div>
|
241 |
|
242 |
-
|
243 |
<div align="center">
|
244 |
<img src="https://user-images.githubusercontent.com/96192199/227504406-86ab97cd-f208-41c3-8e4a-7000e51cf980.png" width="800" >
|
245 |
</div>
|
246 |
|
247 |
-
|
248 |
<div align="center">
|
249 |
<img src="https://user-images.githubusercontent.com/96192199/227503770-fe29ce2c-53fd-47b0-b0ff-93805f0c2ff4.png" height="300" >
|
250 |
<img src="https://user-images.githubusercontent.com/96192199/227504617-7a497bb3-0a2a-4b50-9a8a-95ae60ea7afd.png" height="300" >
|
251 |
<img src="https://user-images.githubusercontent.com/96192199/227504005-efeaefe0-b687-49d0-bf95-2d7b7e66c348.png" height="300" >
|
252 |
</div>
|
253 |
|
254 |
-
|
255 |
<div align="center">
|
256 |
<img src="https://user-images.githubusercontent.com/96192199/229288270-093643c1-0018-487a-81e6-1d7809b6e90f.png" height="400" >
|
257 |
<img src="https://user-images.githubusercontent.com/96192199/227504931-19955f78-45cd-4d1c-adac-e71e50957915.png" height="400" >
|
258 |
</div>
|
259 |
|
260 |
|
261 |
-
|
262 |
|
263 |
<div align="center">
|
264 |
<img src="https://user-images.githubusercontent.com/96192199/229720562-fe6c3508-6142-4635-a83d-21eb3669baee.png" height="400" >
|
|
|
12 |
>
|
13 |
> 2.本项目中每个文件的功能都在自译解[`self_analysis.md`](https://github.com/binary-husky/chatgpt_academic/wiki/chatgpt-academic%E9%A1%B9%E7%9B%AE%E8%87%AA%E8%AF%91%E8%A7%A3%E6%8A%A5%E5%91%8A)详细说明。随着版本的迭代,您也可以随时自行点击相关函数插件,调用GPT重新生成项目的自我解析报告。常见问题汇总在[`wiki`](https://github.com/binary-husky/chatgpt_academic/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)当中。
|
14 |
>
|
15 |
+
> 3.已支持OpenAI和API2D的api-key共存,可在配置文件中填写如`API_KEY="openai-key1,openai-key2,api2d-key3"`。需要临时更换`API_KEY`时,在输入区输入临时的`API_KEY`然后回车键提交后即可生效。
|
16 |
|
17 |
<div align="center">
|
18 |
|
|
|
30 |
Latex全文翻译、润色 | [函数插件] 一键翻译或润色latex论文
|
31 |
批量注释生成 | [函数插件] 一键批量生成函数注释
|
32 |
chat分析报告生成 | [函数插件] 运行后自动生成总结汇报
|
33 |
+
Markdown中英互译 | [函数插件] 看到上面5种语言的[README](https://github.com/binary-husky/chatgpt_academic/blob/master/docs/README_EN.md)了吗?
|
34 |
[arxiv小助手](https://www.bilibili.com/video/BV1LM4y1279X) | [函数插件] 输入arxiv文章url即可一键翻译摘要+下载PDF
|
35 |
[PDF论文全文翻译功能](https://www.bilibili.com/video/BV1KT411x7Wn) | [函数插件] PDF论文提取题目&摘要+翻译全文(多线程)
|
36 |
[谷歌学术统合小助手](https://www.bilibili.com/video/BV19L411U7ia) | [函数插件] 给定任意谷歌学术搜索页面URL,让gpt帮你选择有趣的文章
|
|
|
44 |
</div>
|
45 |
|
46 |
|
47 |
+
- 新界面(修改`config.py`中的LAYOUT选项即可实现“左右布局”和“上下布局”的切换)
|
48 |
<div align="center">
|
49 |
<img src="https://user-images.githubusercontent.com/96192199/230361456-61078362-a966-4eb5-b49e-3c62ef18b860.gif" width="700" >
|
50 |
</div>
|
|
|
92 |
|
93 |
在`config.py`中,配置 海外Proxy 和 OpenAI API KEY,说明如下
|
94 |
```
|
95 |
+
1. 如果你在国内,需要设置海外代理才能够顺利使用OpenAI API,设置方法请仔细阅读config.py(1.修改其中的USE_PROXY为True; 2.按照说明修改其中的proxies)。
|
96 |
+
2. 配置 OpenAI API KEY。支持任意数量的OpenAI的密钥和API2D的密钥共存/负载均衡,多个KEY用英文逗号分隔即可,例如输入 API_KEY="OpenAI密钥1,API2D密钥2,OpenAI密钥3,OpenAI密钥4"
|
|
|
97 |
3. 与代理网络有关的issue(网络超时、代理不起作用)汇总到 https://github.com/binary-husky/chatgpt_academic/issues/1
|
98 |
```
|
99 |
(P.S. 程序运行时会优先检查是否存在名为`config_private.py`的私密配置文件,并用其中的配置覆盖`config.py`的同名配置。因此,如果您能理解我们的配置读取逻辑,我们强烈建议您在`config.py`旁边创建一个名为`config_private.py`的新配置文件,并把`config.py`中的配置转移(复制)到`config_private.py`中。`config_private.py`不受git管控,可以让您的隐私信息更加安全。)
|
|
|
101 |
|
102 |
3. 安装依赖
|
103 |
```sh
|
104 |
+
# (选择I: 如熟悉python)推荐
|
105 |
+
python -m pip install -r requirements.txt
|
106 |
+
# 备注:使用官方pip源或者阿里pip源,其他pip源(如一些大学的pip)有可能出问题,临时换源方法:python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
|
107 |
+
|
108 |
+
# (选择II: 如不熟悉python)使用anaconda,步骤也是类似的:
|
109 |
+
# (II-1)conda create -n gptac_venv python=3.11
|
110 |
+
# (II-2)conda activate gptac_venv
|
111 |
+
# (II-3)python -m pip install -r requirements.txt
|
|
|
|
|
112 |
```
|
113 |
|
114 |
+
如果需要支持清华ChatGLM后端,需要额外安装更多依赖(不熟悉python、电脑配置不佳者,建议不要尝试):
|
115 |
```sh
|
116 |
python -m pip install -r request_llm/requirements_chatglm.txt
|
117 |
```
|
|
|
124 |
5. 测试函数插件
|
125 |
```
|
126 |
- 测试Python项目分析
|
127 |
+
(选择1)input区域 输入 `./crazy_functions/test_project/python/dqn` , 然后点击 "解析整个Python项目"
|
128 |
+
(选择2)展开文件上传区,将python文件/包含python文件的压缩包拖拽进去,在出现反馈提示后, 然后点击 "解析整个Python项目"
|
129 |
+
- 测试自我代码解读(本项目自译解)
|
130 |
点击 "[多线程Demo] 解析此项目本身(源码自译解)"
|
131 |
+
- 测试函数插件模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能
|
132 |
点击 "[函数插件模板Demo] 历史上的今天"
|
133 |
- 函数插件区下拉菜单中有更多功能可供选择
|
134 |
```
|
135 |
|
136 |
+
## 安装-方法2:使用Docker (Linux)
|
137 |
|
138 |
1. 仅ChatGPT(推荐大多数人选择)
|
139 |
``` sh
|
|
|
146 |
docker build -t gpt-academic .
|
147 |
# 运行
|
148 |
docker run --rm -it --net=host gpt-academic
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
```
|
150 |
|
151 |
+
2. ChatGPT+ChatGLM(需要对docker熟悉 + 读懂Dockerfile + 电脑配置够强)
|
152 |
|
153 |
``` sh
|
154 |
+
# 修改Dockerfile
|
155 |
cd docs && nano Dockerfile+ChatGLM
|
156 |
+
# 构建 (Dockerfile+ChatGLM在docs路径下,请先cd docs)
|
157 |
docker build -t gpt-academic --network=host -f Dockerfile+ChatGLM .
|
158 |
+
# 运行 (1) 直接运行:
|
159 |
docker run --rm -it --net=host --gpus=all gpt-academic
|
160 |
+
# 运行 (2) 我想运行之前进容器做一些调整:
|
161 |
docker run --rm -it --net=host --gpus=all gpt-academic bash
|
162 |
```
|
163 |
|
164 |
|
165 |
+
## 安装-方法3:其他部署方式(需要云服务器知识与经验)
|
166 |
|
167 |
1. 远程云服务器部署
|
168 |
请访问[部署wiki-1](https://github.com/binary-husky/chatgpt_academic/wiki/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9C%E7%A8%8B%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97)
|
|
|
181 |
|
182 |
---
|
183 |
|
184 |
+
## 自定义新的便捷按钮 / 自定义函数插件
|
185 |
+
|
186 |
+
1. 自定义新的便捷按钮(学术快捷键)
|
187 |
任意文本编辑器打开`core_functional.py`,添加条目如下,然后重启程序即可。(如果按钮已经添加成功并可见,那么前缀、后缀都支持热修改,无需重启程序即可生效。)
|
188 |
例如
|
189 |
```
|
|
|
199 |
<img src="https://user-images.githubusercontent.com/96192199/226899272-477c2134-ed71-4326-810c-29891fe4a508.png" width="500" >
|
200 |
</div>
|
201 |
|
202 |
+
2. 自定义函数插件
|
203 |
+
|
204 |
+
编写强大的函数插件来执行任何你想得到的和想不到的任务。
|
205 |
+
本项目的插件编写、调试难度很低,只要您具备一定的python基础知识,就可以仿照我们提供的模板实现自己的插件功能。
|
206 |
+
详情请参考[函数插件指南](https://github.com/binary-husky/chatgpt_academic/wiki/%E5%87%BD%E6%95%B0%E6%8F%92%E4%BB%B6%E6%8C%87%E5%8D%97)。
|
207 |
+
|
208 |
+
|
209 |
---
|
210 |
|
211 |
|
212 |
## 部分功能展示
|
213 |
|
214 |
+
1. 图片显示:
|
215 |
|
216 |
<div align="center">
|
217 |
<img src="https://user-images.githubusercontent.com/96192199/228737599-bf0a9d9c-1808-4f43-ae15-dfcc7af0f295.png" width="800" >
|
218 |
</div>
|
219 |
|
220 |
+
2. 本项目的代码自译解(如果一个程序能够读懂并剖析自己):
|
|
|
221 |
|
222 |
<div align="center">
|
223 |
<img src="https://user-images.githubusercontent.com/96192199/226936850-c77d7183-0749-4c1c-9875-fd4891842d0c.png" width="800" >
|
|
|
227 |
<img src="https://user-images.githubusercontent.com/96192199/226936618-9b487e4b-ab5b-4b6e-84c6-16942102e917.png" width="800" >
|
228 |
</div>
|
229 |
|
230 |
+
3. 其他任意Python/Cpp/Java/Go/Rect/...项目剖析:
|
231 |
<div align="center">
|
232 |
<img src="https://user-images.githubusercontent.com/96192199/226935232-6b6a73ce-8900-4aee-93f9-733c7e6fef53.png" width="800" >
|
233 |
</div>
|
|
|
236 |
<img src="https://user-images.githubusercontent.com/96192199/226969067-968a27c1-1b9c-486b-8b81-ab2de8d3f88a.png" width="800" >
|
237 |
</div>
|
238 |
|
239 |
+
4. Latex论文一键阅读理解与摘要生成
|
240 |
<div align="center">
|
241 |
<img src="https://user-images.githubusercontent.com/96192199/227504406-86ab97cd-f208-41c3-8e4a-7000e51cf980.png" width="800" >
|
242 |
</div>
|
243 |
|
244 |
+
5. 自动报告生成
|
245 |
<div align="center">
|
246 |
<img src="https://user-images.githubusercontent.com/96192199/227503770-fe29ce2c-53fd-47b0-b0ff-93805f0c2ff4.png" height="300" >
|
247 |
<img src="https://user-images.githubusercontent.com/96192199/227504617-7a497bb3-0a2a-4b50-9a8a-95ae60ea7afd.png" height="300" >
|
248 |
<img src="https://user-images.githubusercontent.com/96192199/227504005-efeaefe0-b687-49d0-bf95-2d7b7e66c348.png" height="300" >
|
249 |
</div>
|
250 |
|
251 |
+
6. 模块化功能设计
|
252 |
<div align="center">
|
253 |
<img src="https://user-images.githubusercontent.com/96192199/229288270-093643c1-0018-487a-81e6-1d7809b6e90f.png" height="400" >
|
254 |
<img src="https://user-images.githubusercontent.com/96192199/227504931-19955f78-45cd-4d1c-adac-e71e50957915.png" height="400" >
|
255 |
</div>
|
256 |
|
257 |
|
258 |
+
7. 源代码转译英文
|
259 |
|
260 |
<div align="center">
|
261 |
<img src="https://user-images.githubusercontent.com/96192199/229720562-fe6c3508-6142-4635-a83d-21eb3669baee.png" height="400" >
|
main.py
CHANGED
@@ -56,7 +56,7 @@ def main():
|
|
56 |
cookies = gr.State({'api_key': API_KEY, 'llm_model': LLM_MODEL})
|
57 |
with gr_L1():
|
58 |
with gr_L2(scale=2):
|
59 |
-
chatbot = gr.Chatbot()
|
60 |
chatbot.style(height=CHATBOT_HEIGHT)
|
61 |
history = gr.State([])
|
62 |
with gr_L2(scale=1):
|
@@ -121,7 +121,7 @@ def main():
|
|
121 |
with gr.Row():
|
122 |
resetBtn2 = gr.Button("重置", variant="secondary"); resetBtn2.style(size="sm")
|
123 |
stopBtn2 = gr.Button("停止", variant="secondary"); stopBtn2.style(size="sm")
|
124 |
-
clearBtn2 = gr.Button("清除", variant="secondary", visible=False);
|
125 |
# 功能区显示开关与功能区的互动
|
126 |
def fn_area_visibility(a):
|
127 |
ret = {}
|
@@ -168,6 +168,9 @@ def main():
|
|
168 |
variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
|
169 |
return {switchy_bt: gr.update(value=k, variant=variant)}
|
170 |
dropdown.select(on_dropdown_changed, [dropdown], [switchy_bt] )
|
|
|
|
|
|
|
171 |
# 随变按钮的回调函数注册
|
172 |
def route(k, *args, **kwargs):
|
173 |
if k in [r"打开插件列表", r"请先从插件列表中选择"]: return
|
@@ -199,4 +202,4 @@ def main():
|
|
199 |
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png")
|
200 |
|
201 |
if __name__ == "__main__":
|
202 |
-
main()
|
|
|
56 |
cookies = gr.State({'api_key': API_KEY, 'llm_model': LLM_MODEL})
|
57 |
with gr_L1():
|
58 |
with gr_L2(scale=2):
|
59 |
+
chatbot = gr.Chatbot(label=f"当前模型:{LLM_MODEL}")
|
60 |
chatbot.style(height=CHATBOT_HEIGHT)
|
61 |
history = gr.State([])
|
62 |
with gr_L2(scale=1):
|
|
|
121 |
with gr.Row():
|
122 |
resetBtn2 = gr.Button("重置", variant="secondary"); resetBtn2.style(size="sm")
|
123 |
stopBtn2 = gr.Button("停止", variant="secondary"); stopBtn2.style(size="sm")
|
124 |
+
clearBtn2 = gr.Button("清除", variant="secondary", visible=False); clearBtn2.style(size="sm")
|
125 |
# 功能区显示开关与功能区的互动
|
126 |
def fn_area_visibility(a):
|
127 |
ret = {}
|
|
|
168 |
variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
|
169 |
return {switchy_bt: gr.update(value=k, variant=variant)}
|
170 |
dropdown.select(on_dropdown_changed, [dropdown], [switchy_bt] )
|
171 |
+
def on_md_dropdown_changed(k):
|
172 |
+
return {chatbot: gr.update(label="当前模型:"+k)}
|
173 |
+
md_dropdown.select(on_md_dropdown_changed, [md_dropdown], [chatbot] )
|
174 |
# 随变按钮的回调函数注册
|
175 |
def route(k, *args, **kwargs):
|
176 |
if k in [r"打开插件列表", r"请先从插件列表中选择"]: return
|
|
|
202 |
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png")
|
203 |
|
204 |
if __name__ == "__main__":
|
205 |
+
main()
|
request_llm/bridge_chatgpt.py
CHANGED
@@ -208,6 +208,8 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
|
|
208 |
chatbot[-1] = (chatbot[-1][0], "[Local Message] You exceeded your current quota. OpenAI以账户额度不足为由,拒绝服务.")
|
209 |
elif "bad forward key" in error_msg:
|
210 |
chatbot[-1] = (chatbot[-1][0], "[Local Message] Bad forward key. API2D账户额度不足.")
|
|
|
|
|
211 |
else:
|
212 |
from toolbox import regular_txt_to_markdown
|
213 |
tb_str = '```\n' + traceback.format_exc() + '```'
|
|
|
208 |
chatbot[-1] = (chatbot[-1][0], "[Local Message] You exceeded your current quota. OpenAI以账户额度不足为由,拒绝服务.")
|
209 |
elif "bad forward key" in error_msg:
|
210 |
chatbot[-1] = (chatbot[-1][0], "[Local Message] Bad forward key. API2D账户额度不足.")
|
211 |
+
elif "Not enough point" in error_msg:
|
212 |
+
chatbot[-1] = (chatbot[-1][0], "[Local Message] Not enough point. API2D账户点数不足.")
|
213 |
else:
|
214 |
from toolbox import regular_txt_to_markdown
|
215 |
tb_str = '```\n' + traceback.format_exc() + '```'
|
toolbox.py
CHANGED
@@ -455,13 +455,15 @@ def select_api_key(keys, llm_model):
|
|
455 |
|
456 |
@lru_cache(maxsize=128)
|
457 |
def read_single_conf_with_lru_cache(arg):
|
458 |
-
from colorful import print亮红, print
|
459 |
try:
|
460 |
r = getattr(importlib.import_module('config_private'), arg)
|
461 |
except:
|
462 |
r = getattr(importlib.import_module('config'), arg)
|
463 |
# 在读取API_KEY时,检查一下是不是忘了改config
|
464 |
if arg == 'API_KEY':
|
|
|
|
|
465 |
if is_any_api_key(r):
|
466 |
print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功")
|
467 |
else:
|
|
|
455 |
|
456 |
@lru_cache(maxsize=128)
|
457 |
def read_single_conf_with_lru_cache(arg):
|
458 |
+
from colorful import print亮红, print亮绿, print亮蓝
|
459 |
try:
|
460 |
r = getattr(importlib.import_module('config_private'), arg)
|
461 |
except:
|
462 |
r = getattr(importlib.import_module('config'), arg)
|
463 |
# 在读取API_KEY时,检查一下是不是忘了改config
|
464 |
if arg == 'API_KEY':
|
465 |
+
print亮蓝(f"[API_KEY] 本项目现已支持OpenAI和API2D的api-key。也支持同时填写多个api-key,如API_KEY=\"openai-key1,openai-key2,api2d-key3\"")
|
466 |
+
print亮蓝(f"[API_KEY] 您既可以在config.py中修改api-key(s),也可以在问题输入区输入临时的api-key(s),然后回车键提交后即可生效。")
|
467 |
if is_any_api_key(r):
|
468 |
print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功")
|
469 |
else:
|