Spaces:
Runtime error
Runtime error
Suchun-sv
commited on
Commit
·
566aee2
1
Parent(s):
35c77ea
init
Browse files- README.md +46 -46
- config.py +4 -4
- crazy_functional.py +13 -16
- crazy_functions/crazy_functions_test.py +9 -41
- crazy_functions/询问多个大语言模型.py +2 -2
- main.py +5 -7
- request_llm/bridge_chatgpt.py +0 -2
- toolbox.py +1 -3
README.md
CHANGED
@@ -10,7 +10,7 @@ app_file: main.py
|
|
10 |
pinned: false
|
11 |
---
|
12 |
|
13 |
-
#
|
14 |
|
15 |
**如果喜欢这个项目,请给它一个Star;如果你发明了更好用的快捷键或函数插件,欢迎发issue或者pull requests**
|
16 |
|
@@ -22,7 +22,7 @@ If you like this project, please give it a Star. If you've come up with more use
|
|
22 |
>
|
23 |
> 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)当中。
|
24 |
>
|
25 |
-
|
26 |
|
27 |
<div align="center">
|
28 |
|
@@ -40,7 +40,6 @@ If you like this project, please give it a Star. If you've come up with more use
|
|
40 |
Latex全文翻译、润色 | [函数插件] 一键翻译或润色latex论文
|
41 |
批量注释生成 | [函数插件] 一键批量生成函数注释
|
42 |
chat分析报告生成 | [函数插件] 运行后自动生成总结汇报
|
43 |
-
Markdown中英互译 | [函数插件] 看到上面5种语言的[README](https://github.com/binary-husky/chatgpt_academic/blob/master/docs/README_EN.md)了吗?
|
44 |
[arxiv小助手](https://www.bilibili.com/video/BV1LM4y1279X) | [函数插件] 输入arxiv文章url即可一键翻译摘要+下载PDF
|
45 |
[PDF论文全文翻译功能](https://www.bilibili.com/video/BV1KT411x7Wn) | [函数插件] PDF论文提取题目&摘要+翻译全文(多线程)
|
46 |
[谷歌学术统合小助手](https://www.bilibili.com/video/BV19L411U7ia) | [函数插件] 给定任意谷歌学术搜索页面URL,让gpt帮你选择有趣的文章
|
@@ -54,7 +53,7 @@ huggingface免科学上网[在线体验](https://huggingface.co/spaces/qingxu98/
|
|
54 |
</div>
|
55 |
|
56 |
|
57 |
-
-
|
58 |
<div align="center">
|
59 |
<img src="https://user-images.githubusercontent.com/96192199/230361456-61078362-a966-4eb5-b49e-3c62ef18b860.gif" width="700" >
|
60 |
</div>
|
@@ -102,8 +101,8 @@ cd chatgpt_academic
|
|
102 |
|
103 |
在`config.py`中,配置 海外Proxy 和 OpenAI API KEY,说明如下
|
104 |
```
|
105 |
-
1. 如果你在国内,需要设置海外代理才能够顺利使用OpenAI API,设置方法请仔细阅读config.py(1.修改其中的USE_PROXY为True; 2.按照说明修改其中的proxies)。
|
106 |
-
2. 配置 OpenAI API KEY
|
107 |
3. 与代理网络有关的issue(网络超时、代理不起作用)汇总到 https://github.com/binary-husky/chatgpt_academic/issues/1
|
108 |
```
|
109 |
(P.S. 程序运行时会优先检查是否存在名为`config_private.py`的私密配置文件,并用其中的配置覆盖`config.py`的同名配置。因此,如果您能理解我们的配置读取逻辑,我们强烈建议您在`config.py`旁边创建一个名为`config_private.py`的新配置文件,并把`config.py`中的配置转移(复制)到`config_private.py`中。`config_private.py`不受git管控,可以让您的隐私信息更加安全。)
|
@@ -111,17 +110,19 @@ cd chatgpt_academic
|
|
111 |
|
112 |
3. 安装依赖
|
113 |
```sh
|
114 |
-
#
|
115 |
-
python -m pip install -r requirements.txt
|
116 |
-
|
117 |
-
|
118 |
-
#
|
119 |
-
#
|
120 |
-
#
|
121 |
-
|
|
|
|
|
122 |
```
|
123 |
|
124 |
-
如果需要支持清华ChatGLM
|
125 |
```sh
|
126 |
python -m pip install -r request_llm/requirements_chatglm.txt
|
127 |
```
|
@@ -134,16 +135,15 @@ python main.py
|
|
134 |
5. 测试函数插件
|
135 |
```
|
136 |
- 测试Python项目分析
|
137 |
-
|
138 |
-
|
139 |
-
- 测试自我代码解读(本项目自译解)
|
140 |
点击 "[多线程Demo] 解析此项目本身(源码自译解)"
|
141 |
-
-
|
142 |
点击 "[函数插件模板Demo] 历史上的今天"
|
143 |
- 函数插件区下拉菜单中有更多功能可供选择
|
144 |
```
|
145 |
|
146 |
-
## 安装-方法2:使用
|
147 |
|
148 |
1. 仅ChatGPT(推荐大多数人选择)
|
149 |
``` sh
|
@@ -156,23 +156,33 @@ cd chatgpt_academic
|
|
156 |
docker build -t gpt-academic .
|
157 |
# 运行
|
158 |
docker run --rm -it --net=host gpt-academic
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
```
|
160 |
|
161 |
-
2. ChatGPT+ChatGLM(需要对docker
|
162 |
|
163 |
``` sh
|
164 |
-
# 修改
|
165 |
cd docs && nano Dockerfile+ChatGLM
|
166 |
-
#
|
167 |
docker build -t gpt-academic --network=host -f Dockerfile+ChatGLM .
|
168 |
-
#
|
169 |
docker run --rm -it --net=host --gpus=all gpt-academic
|
170 |
-
#
|
171 |
docker run --rm -it --net=host --gpus=all gpt-academic bash
|
172 |
```
|
173 |
|
174 |
|
175 |
-
## 安装-方法3
|
176 |
|
177 |
1. 远程云服务器部署
|
178 |
请访问[部署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)
|
@@ -191,9 +201,7 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
191 |
|
192 |
---
|
193 |
|
194 |
-
##
|
195 |
-
|
196 |
-
1. 自定义新的便捷按钮(学术快捷键)
|
197 |
任意文本编辑器打开`core_functional.py`,添加条目如下,然后重启程序即可。(如果按钮已经添加成功并可见,那么前缀、后缀都支持热修改,无需重启程序即可生效。)
|
198 |
例如
|
199 |
```
|
@@ -209,25 +217,19 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
209 |
<img src="https://user-images.githubusercontent.com/96192199/226899272-477c2134-ed71-4326-810c-29891fe4a508.png" width="500" >
|
210 |
</div>
|
211 |
|
212 |
-
2. 自定义函数插件
|
213 |
-
|
214 |
-
编写强大的函数插件来执行任何你想得到的和想不到的任务。
|
215 |
-
本项目的插件编写、调试难度很低,只要您具备一定的python基础知识,就可以仿照我们提供的模板实现自己的插件功能。
|
216 |
-
详情请参考[函数插件指南](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)。
|
217 |
-
|
218 |
-
|
219 |
---
|
220 |
|
221 |
|
222 |
## 部分功能展示
|
223 |
|
224 |
-
|
225 |
|
226 |
<div align="center">
|
227 |
<img src="https://user-images.githubusercontent.com/96192199/228737599-bf0a9d9c-1808-4f43-ae15-dfcc7af0f295.png" width="800" >
|
228 |
</div>
|
229 |
|
230 |
-
|
|
|
231 |
|
232 |
<div align="center">
|
233 |
<img src="https://user-images.githubusercontent.com/96192199/226936850-c77d7183-0749-4c1c-9875-fd4891842d0c.png" width="800" >
|
@@ -237,7 +239,7 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
237 |
<img src="https://user-images.githubusercontent.com/96192199/226936618-9b487e4b-ab5b-4b6e-84c6-16942102e917.png" width="800" >
|
238 |
</div>
|
239 |
|
240 |
-
|
241 |
<div align="center">
|
242 |
<img src="https://user-images.githubusercontent.com/96192199/226935232-6b6a73ce-8900-4aee-93f9-733c7e6fef53.png" width="800" >
|
243 |
</div>
|
@@ -246,26 +248,26 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
246 |
<img src="https://user-images.githubusercontent.com/96192199/226969067-968a27c1-1b9c-486b-8b81-ab2de8d3f88a.png" width="800" >
|
247 |
</div>
|
248 |
|
249 |
-
|
250 |
<div align="center">
|
251 |
<img src="https://user-images.githubusercontent.com/96192199/227504406-86ab97cd-f208-41c3-8e4a-7000e51cf980.png" width="800" >
|
252 |
</div>
|
253 |
|
254 |
-
|
255 |
<div align="center">
|
256 |
<img src="https://user-images.githubusercontent.com/96192199/227503770-fe29ce2c-53fd-47b0-b0ff-93805f0c2ff4.png" height="300" >
|
257 |
<img src="https://user-images.githubusercontent.com/96192199/227504617-7a497bb3-0a2a-4b50-9a8a-95ae60ea7afd.png" height="300" >
|
258 |
<img src="https://user-images.githubusercontent.com/96192199/227504005-efeaefe0-b687-49d0-bf95-2d7b7e66c348.png" height="300" >
|
259 |
</div>
|
260 |
|
261 |
-
|
262 |
<div align="center">
|
263 |
<img src="https://user-images.githubusercontent.com/96192199/229288270-093643c1-0018-487a-81e6-1d7809b6e90f.png" height="400" >
|
264 |
<img src="https://user-images.githubusercontent.com/96192199/227504931-19955f78-45cd-4d1c-adac-e71e50957915.png" height="400" >
|
265 |
</div>
|
266 |
|
267 |
|
268 |
-
|
269 |
|
270 |
<div align="center">
|
271 |
<img src="https://user-images.githubusercontent.com/96192199/229720562-fe6c3508-6142-4635-a83d-21eb3669baee.png" height="400" >
|
@@ -284,13 +286,11 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
|
|
284 |
- version 2.0: 引入模块化函数插件
|
285 |
- version 1.0: 基础功能
|
286 |
|
287 |
-
chatgpt_academic开发者QQ群:734063350
|
288 |
-
|
289 |
## 参考与学习
|
290 |
|
291 |
```
|
292 |
代码中参考了很多其他优秀项目中的设计,主要包括:
|
293 |
-
|
294 |
# 借鉴项目1:借鉴了ChuanhuChatGPT中诸多技巧
|
295 |
https://github.com/GaiZhenbiao/ChuanhuChatGPT
|
296 |
|
|
|
10 |
pinned: false
|
11 |
---
|
12 |
|
13 |
+
# ChatGPT 学术优化
|
14 |
|
15 |
**如果喜欢这个项目,请给它一个Star;如果你发明了更好用的快捷键或函数插件,欢迎发issue或者pull requests**
|
16 |
|
|
|
22 |
>
|
23 |
> 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)当中。
|
24 |
>
|
25 |
+
|
26 |
|
27 |
<div align="center">
|
28 |
|
|
|
40 |
Latex全文翻译、润色 | [函数插件] 一键翻译或润色latex论文
|
41 |
批量注释生成 | [函数插件] 一键批量生成函数注释
|
42 |
chat分析报告生成 | [函数插件] 运行后自动生成总结汇报
|
|
|
43 |
[arxiv小助手](https://www.bilibili.com/video/BV1LM4y1279X) | [函数插件] 输入arxiv文章url即可一键翻译摘要+下载PDF
|
44 |
[PDF论文全文翻译功能](https://www.bilibili.com/video/BV1KT411x7Wn) | [函数插件] PDF论文提取题目&摘要+翻译全文(多线程)
|
45 |
[谷歌学术统合小助手](https://www.bilibili.com/video/BV19L411U7ia) | [函数插件] 给定任意谷歌学术搜索页面URL,让gpt帮你选择有趣的文章
|
|
|
53 |
</div>
|
54 |
|
55 |
|
56 |
+
- 新界面(修改config.py中的LAYOUT选项即可实现“左右布局”和“上下布局”的切换)
|
57 |
<div align="center">
|
58 |
<img src="https://user-images.githubusercontent.com/96192199/230361456-61078362-a966-4eb5-b49e-3c62ef18b860.gif" width="700" >
|
59 |
</div>
|
|
|
101 |
|
102 |
在`config.py`中,配置 海外Proxy 和 OpenAI API KEY,说明如下
|
103 |
```
|
104 |
+
1. 如果你在国内,需要设置海外代理才能够顺利使用 OpenAI API,设置方法请仔细阅读config.py(1.修改其中的USE_PROXY为True; 2.按照说明修改其中的proxies)。
|
105 |
+
2. 配置 OpenAI API KEY。你需要在 OpenAI 官网上注册并获取 API KEY。一旦你拿到了 API KEY,在 config.py 文件里配置好即可。
|
106 |
3. 与代理网络有关的issue(网络超时、代理不起作用)汇总到 https://github.com/binary-husky/chatgpt_academic/issues/1
|
107 |
```
|
108 |
(P.S. 程序运行时会优先检查是否存在名为`config_private.py`的私密配置文件,并用其中的配置覆盖`config.py`的同名配置。因此,如果您能理解我们的配置读取逻辑,我们强烈建议您在`config.py`旁边创建一个名为`config_private.py`的新配置文件,并把`config.py`中的配置转移(复制)到`config_private.py`中。`config_private.py`不受git管控,可以让您的隐私信息更加安全。)
|
|
|
110 |
|
111 |
3. 安装依赖
|
112 |
```sh
|
113 |
+
# (选择一)推荐
|
114 |
+
python -m pip install -r requirements.txt
|
115 |
+
|
116 |
+
# (选择二)如果您使用anaconda,步骤也是类似的:
|
117 |
+
# (选择二.1)conda create -n gptac_venv python=3.11
|
118 |
+
# (选择二.2)conda activate gptac_venv
|
119 |
+
# (选择二.3)python -m pip install -r requirements.txt
|
120 |
+
|
121 |
+
# 备注:使用官方pip源或者阿里pip源,其他pip源(如一些大学的pip)有可能出问题,临时换源方法:
|
122 |
+
# python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
|
123 |
```
|
124 |
|
125 |
+
如果需要支持清华ChatGLM,需要额外安装更多依赖(不熟悉python者、电脑配置不佳者,建议不要尝试):
|
126 |
```sh
|
127 |
python -m pip install -r request_llm/requirements_chatglm.txt
|
128 |
```
|
|
|
135 |
5. 测试函数插件
|
136 |
```
|
137 |
- 测试Python项目分析
|
138 |
+
input区域 输入 `./crazy_functions/test_project/python/dqn` , 然后点击 "解析整个Python项目"
|
139 |
+
- 测试自我代码解读
|
|
|
140 |
点击 "[多线程Demo] 解析此项目本身(源码自译解)"
|
141 |
+
- 测试实验功能模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能
|
142 |
点击 "[函数插件模板Demo] 历史上的今天"
|
143 |
- 函数插件区下拉菜单中有更多功能可供选择
|
144 |
```
|
145 |
|
146 |
+
## 安装-方法2:使用docker (Linux)
|
147 |
|
148 |
1. 仅ChatGPT(推荐大多数人选择)
|
149 |
``` sh
|
|
|
156 |
docker build -t gpt-academic .
|
157 |
# 运行
|
158 |
docker run --rm -it --net=host gpt-academic
|
159 |
+
|
160 |
+
# 测试函数插件
|
161 |
+
## 测试函数插件模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能
|
162 |
+
点击 "[函数插件模板Demo] 历史上的今天"
|
163 |
+
## 测试给Latex项目写摘要
|
164 |
+
input区域 输入 ./crazy_functions/test_project/latex/attention , 然后点击 "读Tex论文写摘要"
|
165 |
+
## 测试Python项目分析
|
166 |
+
input区域 输入 ./crazy_functions/test_project/python/dqn , 然后点击 "解析整个Python项目"
|
167 |
+
|
168 |
+
函数插件区下拉菜单中有更多功能可供选择
|
169 |
```
|
170 |
|
171 |
+
2. ChatGPT+ChatGLM(需要对docker非常熟悉 + 电脑配置足够强)
|
172 |
|
173 |
``` sh
|
174 |
+
# 修改dockerfile
|
175 |
cd docs && nano Dockerfile+ChatGLM
|
176 |
+
# How to build | 如何构建 (Dockerfile+ChatGLM在docs路径下,请先cd docs)
|
177 |
docker build -t gpt-academic --network=host -f Dockerfile+ChatGLM .
|
178 |
+
# How to run | 如何运行 (1) 直接运行:
|
179 |
docker run --rm -it --net=host --gpus=all gpt-academic
|
180 |
+
# How to run | 如何运行 (2) 我想运行之前进容器做一些调整:
|
181 |
docker run --rm -it --net=host --gpus=all gpt-academic bash
|
182 |
```
|
183 |
|
184 |
|
185 |
+
## 安装-方法3:其他部署方式
|
186 |
|
187 |
1. 远程云服务器部署
|
188 |
请访问[部署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)
|
|
|
201 |
|
202 |
---
|
203 |
|
204 |
+
## 自定义新的便捷按钮(学术快捷键自定义)
|
|
|
|
|
205 |
任意文本编辑器打开`core_functional.py`,添加条目如下,然后重启程序即可。(如果按钮已经添加成功并可见,那么前缀、后缀都支持热修改,无需重启程序即可生效。)
|
206 |
例如
|
207 |
```
|
|
|
217 |
<img src="https://user-images.githubusercontent.com/96192199/226899272-477c2134-ed71-4326-810c-29891fe4a508.png" width="500" >
|
218 |
</div>
|
219 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
---
|
221 |
|
222 |
|
223 |
## 部分功能展示
|
224 |
|
225 |
+
### 图片显示:
|
226 |
|
227 |
<div align="center">
|
228 |
<img src="https://user-images.githubusercontent.com/96192199/228737599-bf0a9d9c-1808-4f43-ae15-dfcc7af0f295.png" width="800" >
|
229 |
</div>
|
230 |
|
231 |
+
|
232 |
+
### 如果一个程序能够读懂并剖析自己:
|
233 |
|
234 |
<div align="center">
|
235 |
<img src="https://user-images.githubusercontent.com/96192199/226936850-c77d7183-0749-4c1c-9875-fd4891842d0c.png" width="800" >
|
|
|
239 |
<img src="https://user-images.githubusercontent.com/96192199/226936618-9b487e4b-ab5b-4b6e-84c6-16942102e917.png" width="800" >
|
240 |
</div>
|
241 |
|
242 |
+
### 其他任意Python/Cpp项目剖析:
|
243 |
<div align="center">
|
244 |
<img src="https://user-images.githubusercontent.com/96192199/226935232-6b6a73ce-8900-4aee-93f9-733c7e6fef53.png" width="800" >
|
245 |
</div>
|
|
|
248 |
<img src="https://user-images.githubusercontent.com/96192199/226969067-968a27c1-1b9c-486b-8b81-ab2de8d3f88a.png" width="800" >
|
249 |
</div>
|
250 |
|
251 |
+
### Latex论文一键阅读理解与摘要生成
|
252 |
<div align="center">
|
253 |
<img src="https://user-images.githubusercontent.com/96192199/227504406-86ab97cd-f208-41c3-8e4a-7000e51cf980.png" width="800" >
|
254 |
</div>
|
255 |
|
256 |
+
### 自动报告生成
|
257 |
<div align="center">
|
258 |
<img src="https://user-images.githubusercontent.com/96192199/227503770-fe29ce2c-53fd-47b0-b0ff-93805f0c2ff4.png" height="300" >
|
259 |
<img src="https://user-images.githubusercontent.com/96192199/227504617-7a497bb3-0a2a-4b50-9a8a-95ae60ea7afd.png" height="300" >
|
260 |
<img src="https://user-images.githubusercontent.com/96192199/227504005-efeaefe0-b687-49d0-bf95-2d7b7e66c348.png" height="300" >
|
261 |
</div>
|
262 |
|
263 |
+
### 模块化功能设计
|
264 |
<div align="center">
|
265 |
<img src="https://user-images.githubusercontent.com/96192199/229288270-093643c1-0018-487a-81e6-1d7809b6e90f.png" height="400" >
|
266 |
<img src="https://user-images.githubusercontent.com/96192199/227504931-19955f78-45cd-4d1c-adac-e71e50957915.png" height="400" >
|
267 |
</div>
|
268 |
|
269 |
|
270 |
+
### 源代码转译英文
|
271 |
|
272 |
<div align="center">
|
273 |
<img src="https://user-images.githubusercontent.com/96192199/229720562-fe6c3508-6142-4635-a83d-21eb3669baee.png" height="400" >
|
|
|
286 |
- version 2.0: 引入模块化函数插件
|
287 |
- version 1.0: 基础功能
|
288 |
|
|
|
|
|
289 |
## 参考与学习
|
290 |
|
291 |
```
|
292 |
代码中参考了很多其他优秀项目中的设计,主要包括:
|
293 |
+
|
294 |
# 借鉴项目1:借鉴了ChuanhuChatGPT中诸多技巧
|
295 |
https://github.com/GaiZhenbiao/ChuanhuChatGPT
|
296 |
|
config.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
# [step 1]>> 例如: API_KEY = "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" (此key无效)
|
2 |
import os
|
3 |
-
API_KEY = os.environ
|
4 |
|
5 |
# [step 2]>> 改为True应用代理,如果直接在海外服务器部署,此处不修改
|
6 |
USE_PROXY = False
|
@@ -44,9 +44,9 @@ WEB_PORT = -1
|
|
44 |
# 如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制
|
45 |
MAX_RETRY = 2
|
46 |
|
47 |
-
# OpenAI模型选择是(gpt4
|
48 |
-
LLM_MODEL = "gpt-3.5-turbo" # 可选
|
49 |
-
AVAIL_LLM_MODELS = ["gpt-3.5-turbo", "
|
50 |
|
51 |
# 本地LLM模型如ChatGLM的执行方式 CPU/GPU
|
52 |
LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda"
|
|
|
1 |
# [step 1]>> 例如: API_KEY = "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" (此key无效)
|
2 |
import os
|
3 |
+
API_KEY = os.environ.get("key") # 可同时填写多个API-KEY,用英文逗号分割,例如API_KEY = "sk-openaikey1,sk-openaikey2,fkxxxx-api2dkey1,fkxxxx-api2dkey2"
|
4 |
|
5 |
# [step 2]>> 改为True应用代理,如果直接在海外服务器部署,此处不修改
|
6 |
USE_PROXY = False
|
|
|
44 |
# 如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制
|
45 |
MAX_RETRY = 2
|
46 |
|
47 |
+
# OpenAI模型选择是(gpt4现在只对申请成功的人开放)
|
48 |
+
LLM_MODEL = "gpt-3.5-turbo" # 可选 "chatglm"
|
49 |
+
AVAIL_LLM_MODELS = ["gpt-3.5-turbo", "gpt-4", "api2d-gpt-4", "api2d-gpt-3.5-turbo"]
|
50 |
|
51 |
# 本地LLM模型如ChatGLM的执行方式 CPU/GPU
|
52 |
LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda"
|
crazy_functional.py
CHANGED
@@ -173,23 +173,20 @@ def get_crazy_functions():
|
|
173 |
|
174 |
###################### 第三组插件 ###########################
|
175 |
# [第三组插件]: 尚未充分测试的函数插件,放在这里
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
"
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
|
|
|
|
|
|
|
|
184 |
|
185 |
-
|
186 |
-
function_plugins.update({
|
187 |
-
"连接网络回答问题(先输入问题,再点击按钮,需要访问谷歌)": {
|
188 |
-
"Color": "stop",
|
189 |
-
"AsButton": False, # 加入下拉菜单中
|
190 |
-
"Function": HotReload(连接网络回答问题)
|
191 |
-
}
|
192 |
-
})
|
193 |
|
194 |
###################### 第n组插件 ###########################
|
195 |
return function_plugins
|
|
|
173 |
|
174 |
###################### 第三组插件 ###########################
|
175 |
# [第三组插件]: 尚未充分测试的函数插件,放在这里
|
176 |
+
try:
|
177 |
+
from crazy_functions.下载arxiv论文翻译摘要 import 下载arxiv论文并翻译摘要
|
178 |
+
function_plugins.update({
|
179 |
+
"一键下载arxiv论文并翻译摘要(先在input输入编号,如1812.10695)": {
|
180 |
+
"Color": "stop",
|
181 |
+
"AsButton": False, # 加入下拉菜单中
|
182 |
+
"Function": HotReload(下载arxiv论文并翻译摘要)
|
183 |
+
}
|
184 |
+
})
|
185 |
+
|
186 |
+
except Exception as err:
|
187 |
+
print(f'[下载arxiv论文并翻译摘要] 插件导入失败 {str(err)}')
|
188 |
|
189 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
|
191 |
###################### 第n组插件 ###########################
|
192 |
return function_plugins
|
crazy_functions/crazy_functions_test.py
CHANGED
@@ -12,7 +12,7 @@ def validate_path():
|
|
12 |
sys.path.append(root_dir_assume)
|
13 |
|
14 |
validate_path() # validate path so you can run from base directory
|
15 |
-
|
16 |
from toolbox import get_conf, ChatBotWithCookies
|
17 |
proxies, WEB_PORT, LLM_MODEL, CONCURRENT_COUNT, AUTHENTICATION, CHATBOT_HEIGHT, LAYOUT, API_KEY = \
|
18 |
get_conf('proxies', 'WEB_PORT', 'LLM_MODEL', 'CONCURRENT_COUNT', 'AUTHENTICATION', 'CHATBOT_HEIGHT', 'LAYOUT', 'API_KEY')
|
@@ -79,46 +79,14 @@ def test_下载arxiv论文并翻译摘要():
|
|
79 |
for cookies, cb, hist, msg in 下载arxiv论文并翻译摘要(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
80 |
print(cb)
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
# txt = "道路千万条,安全第一条。后面两句是?"
|
91 |
-
# >> '行车不规范,亲人两行泪。'
|
92 |
-
# txt = "What is in the canister?"
|
93 |
-
# >> Rainbow Six Siege 游戏中 Smoke 的 Canister 中装有何种物质相关的官方信息。
|
94 |
-
# txt = "失败的man是什么?"
|
95 |
-
# >> 根据第1份搜索结果,可以得知失败的man是指一位在B站购买了蜘蛛侠COS服后穿上后被网友嘲笑的UP主,而“失败的man”是蜘蛛侠英文名“spiderman”的谐音梗,并且网友们还 给这位UP主起了“苍蝇侠”的外号。因此,失败的man是指这位UP主在穿上蜘蛛侠COS服后被网友嘲笑的情况。
|
96 |
-
# txt = "老六是什么,起源于哪里?"
|
97 |
-
# >> 老六是网络流行语,最初起源于游戏《CSGO》,指游戏中玩家中独来独往、游离于队伍之外的“自由人”或玩得比较菜或者玩得比较阴险的人 ,后来逐渐演变成指玩得比较阴险的玩家。
|
98 |
-
# txt = "罗小黑战记因为什么经常被吐槽?"
|
99 |
-
# >> 3. 更新速度。罗小黑战记的更新时间不定,时而快时而慢,给观众留下了等待的时间过长的印象。
|
100 |
-
# txt = "沙特、伊朗最近的关系如何?"
|
101 |
-
# >> 最近在中国的斡旋下,沙特和伊朗于3月10日达成了恢复两国外交关系的协议,这表明两国关系已经重新回到正常化状态。
|
102 |
-
# txt = "You should have gone for the head. What does that mean?"
|
103 |
-
# >> The phrase "You should have gone for the head" is a quote from the Marvel movies, Avengers: Infinity War and Avengers: Endgame. It was spoken by the character Thanos in Infinity War and by Thor in Endgame.
|
104 |
-
txt = "AutoGPT是什么?"
|
105 |
-
# >> AutoGPT是一个基于GPT-4语言模型的开源应用程序。它可以根据用户需求自主执行任务,包括事件分析、营销方案撰写、代码编程、数学运算等等,并完全不需要用户插手。它可以自己思考,给出实现的步骤和实现细节,甚至可以自问自答执 行任务。最近它在GitHub上爆火,成为了业内最热门的项目之一。
|
106 |
-
# txt = "钟离带什么圣遗物?"
|
107 |
-
for cookies, cb, hist, msg in 连接网络回答问题(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
108 |
-
print("当前问答:", cb[-1][-1].replace("\n"," "))
|
109 |
-
for i, it in enumerate(cb): print亮蓝(it[0]); print亮黄(it[1])
|
110 |
-
|
111 |
-
# test_解析一个Python项目()
|
112 |
-
# test_Latex英文润色()
|
113 |
-
# test_Markdown中译英()
|
114 |
-
# test_批量翻译PDF文档()
|
115 |
-
# test_谷歌检索小助手()
|
116 |
-
# test_总结word文档()
|
117 |
-
# test_下载arxiv论文并翻译摘要()
|
118 |
-
# test_解析一个Cpp项目()
|
119 |
-
|
120 |
-
test_联网回答问题()
|
121 |
-
|
122 |
|
123 |
input("程序完成,回车退出。")
|
124 |
print("退出。")
|
|
|
12 |
sys.path.append(root_dir_assume)
|
13 |
|
14 |
validate_path() # validate path so you can run from base directory
|
15 |
+
|
16 |
from toolbox import get_conf, ChatBotWithCookies
|
17 |
proxies, WEB_PORT, LLM_MODEL, CONCURRENT_COUNT, AUTHENTICATION, CHATBOT_HEIGHT, LAYOUT, API_KEY = \
|
18 |
get_conf('proxies', 'WEB_PORT', 'LLM_MODEL', 'CONCURRENT_COUNT', 'AUTHENTICATION', 'CHATBOT_HEIGHT', 'LAYOUT', 'API_KEY')
|
|
|
79 |
for cookies, cb, hist, msg in 下载arxiv论文并翻译摘要(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
80 |
print(cb)
|
81 |
|
82 |
+
test_解析一个Python项目()
|
83 |
+
test_Latex英文润色()
|
84 |
+
test_Markdown中译英()
|
85 |
+
test_批量翻译PDF文档()
|
86 |
+
test_谷歌检索小助手()
|
87 |
+
test_总结word文档()
|
88 |
+
test_下载arxiv论文并翻译摘要()
|
89 |
+
test_解析一个Cpp项目()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
|
91 |
input("程序完成,回车退出。")
|
92 |
print("退出。")
|
crazy_functions/询问多个大语言模型.py
CHANGED
@@ -13,11 +13,11 @@ def 同时问询(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt
|
|
13 |
web_port 当前软件运行的端口号
|
14 |
"""
|
15 |
history = [] # 清空历史,以免输入溢出
|
16 |
-
chatbot.append((txt, "正在同时咨询
|
17 |
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新
|
18 |
|
19 |
# llm_kwargs['llm_model'] = 'chatglm&gpt-3.5-turbo&api2d-gpt-3.5-turbo' # 支持任意数量的llm接口,用&符号分隔
|
20 |
-
llm_kwargs['llm_model'] = '
|
21 |
gpt_say = yield from request_gpt_model_in_new_thread_with_ui_alive(
|
22 |
inputs=txt, inputs_show_user=txt,
|
23 |
llm_kwargs=llm_kwargs, chatbot=chatbot, history=history,
|
|
|
13 |
web_port 当前软件运行的端口号
|
14 |
"""
|
15 |
history = [] # 清空历史,以免输入溢出
|
16 |
+
chatbot.append((txt, "正在同时咨询gpt-3.5和gpt-4……"))
|
17 |
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新
|
18 |
|
19 |
# llm_kwargs['llm_model'] = 'chatglm&gpt-3.5-turbo&api2d-gpt-3.5-turbo' # 支持任意数量的llm接口,用&符号分隔
|
20 |
+
llm_kwargs['llm_model'] = 'gpt-3.5-turbo&gpt-4' # 支持任意数量的llm接口,用&符号分隔
|
21 |
gpt_say = yield from request_gpt_model_in_new_thread_with_ui_alive(
|
22 |
inputs=txt, inputs_show_user=txt,
|
23 |
llm_kwargs=llm_kwargs, chatbot=chatbot, history=history,
|
main.py
CHANGED
@@ -53,10 +53,11 @@ def main():
|
|
53 |
cancel_handles = []
|
54 |
with gr.Blocks(title="ChatGPT 学术优化", theme=set_theme, analytics_enabled=False, css=advanced_css) as demo:
|
55 |
gr.HTML(title_html)
|
|
|
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):
|
@@ -112,7 +113,7 @@ def main():
|
|
112 |
with gr.Row():
|
113 |
resetBtn2 = gr.Button("重置", variant="secondary"); resetBtn2.style(size="sm")
|
114 |
stopBtn2 = gr.Button("停止", variant="secondary"); stopBtn2.style(size="sm")
|
115 |
-
clearBtn2 = gr.Button("清除", variant="secondary", visible=False);
|
116 |
# 功能区显示开关与功能区的互动
|
117 |
def fn_area_visibility(a):
|
118 |
ret = {}
|
@@ -155,9 +156,6 @@ def main():
|
|
155 |
variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
|
156 |
return {switchy_bt: gr.update(value=k, variant=variant)}
|
157 |
dropdown.select(on_dropdown_changed, [dropdown], [switchy_bt] )
|
158 |
-
def on_md_dropdown_changed(k):
|
159 |
-
return {chatbot: gr.update(label="当前模型:"+k)}
|
160 |
-
md_dropdown.select(on_md_dropdown_changed, [md_dropdown], [chatbot] )
|
161 |
# 随变按钮的回调函数注册
|
162 |
def route(k, *args, **kwargs):
|
163 |
if k in [r"打开插件列表", r"请先从插件列表中选择"]: return
|
@@ -186,7 +184,7 @@ def main():
|
|
186 |
threading.Thread(target=warm_up_modules, name="warm-up", daemon=True).start()
|
187 |
|
188 |
auto_opentab_delay()
|
189 |
-
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0",
|
190 |
|
191 |
if __name__ == "__main__":
|
192 |
-
main()
|
|
|
53 |
cancel_handles = []
|
54 |
with gr.Blocks(title="ChatGPT 学术优化", theme=set_theme, analytics_enabled=False, css=advanced_css) as demo:
|
55 |
gr.HTML(title_html)
|
56 |
+
gr.HTML('''<center><a href="https://huggingface.co/spaces/qingxu98/gpt-academic?duplicate=true"><img src="https://bit.ly/3gLdBN6" alt="Duplicate Space">''')
|
57 |
cookies = gr.State({'api_key': API_KEY, 'llm_model': LLM_MODEL})
|
58 |
with gr_L1():
|
59 |
with gr_L2(scale=2):
|
60 |
+
chatbot = gr.Chatbot()
|
61 |
chatbot.style(height=CHATBOT_HEIGHT)
|
62 |
history = gr.State([])
|
63 |
with gr_L2(scale=1):
|
|
|
113 |
with gr.Row():
|
114 |
resetBtn2 = gr.Button("重置", variant="secondary"); resetBtn2.style(size="sm")
|
115 |
stopBtn2 = gr.Button("停止", variant="secondary"); stopBtn2.style(size="sm")
|
116 |
+
clearBtn2 = gr.Button("清除", variant="secondary", visible=False); clearBtn.style(size="sm")
|
117 |
# 功能区显示开关与功能区的互动
|
118 |
def fn_area_visibility(a):
|
119 |
ret = {}
|
|
|
156 |
variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
|
157 |
return {switchy_bt: gr.update(value=k, variant=variant)}
|
158 |
dropdown.select(on_dropdown_changed, [dropdown], [switchy_bt] )
|
|
|
|
|
|
|
159 |
# 随变按钮的回调函数注册
|
160 |
def route(k, *args, **kwargs):
|
161 |
if k in [r"打开插件列表", r"请先从插件列表中选择"]: return
|
|
|
184 |
threading.Thread(target=warm_up_modules, name="warm-up", daemon=True).start()
|
185 |
|
186 |
auto_opentab_delay()
|
187 |
+
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", share=False, favicon_path="docs/logo.png")
|
188 |
|
189 |
if __name__ == "__main__":
|
190 |
+
main()
|
request_llm/bridge_chatgpt.py
CHANGED
@@ -208,8 +208,6 @@ 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 |
-
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() + '```'
|
|
|
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() + '```'
|
toolbox.py
CHANGED
@@ -454,15 +454,13 @@ def select_api_key(keys, llm_model):
|
|
454 |
|
455 |
@lru_cache(maxsize=128)
|
456 |
def read_single_conf_with_lru_cache(arg):
|
457 |
-
from colorful import print亮红, print
|
458 |
try:
|
459 |
r = getattr(importlib.import_module('config_private'), arg)
|
460 |
except:
|
461 |
r = getattr(importlib.import_module('config'), arg)
|
462 |
# 在读取API_KEY时,检查一下是不是忘了改config
|
463 |
if arg == 'API_KEY':
|
464 |
-
print亮蓝(f"[API_KEY] 本项目现已支持OpenAI和API2D的api-key。也支持同时填写多个api-key,如API_KEY=\"openai-key1,openai-key2,api2d-key3\"")
|
465 |
-
print亮蓝(f"[API_KEY] 您既可以在config.py中修改api-key(s),也可以在问题输入区输入临时的api-key(s),然后回车键提交后即可生效。")
|
466 |
if is_any_api_key(r):
|
467 |
print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功")
|
468 |
else:
|
|
|
454 |
|
455 |
@lru_cache(maxsize=128)
|
456 |
def read_single_conf_with_lru_cache(arg):
|
457 |
+
from colorful import print亮红, print亮绿
|
458 |
try:
|
459 |
r = getattr(importlib.import_module('config_private'), arg)
|
460 |
except:
|
461 |
r = getattr(importlib.import_module('config'), arg)
|
462 |
# 在读取API_KEY时,检查一下是不是忘了改config
|
463 |
if arg == 'API_KEY':
|
|
|
|
|
464 |
if is_any_api_key(r):
|
465 |
print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功")
|
466 |
else:
|