From ac219f40c5a9cdc44a73c620a272eb96cf324ac4 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 19 Apr 2023 22:10:26 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=9C=A8chatbot=E7=9A=84=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E4=B8=8A=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- main.py | 5 ++++- toolbox.py | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9fefdcb..79562ef 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ If you like this project, please give it a Star. If you've come up with more use > > 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)当中。 > - +> 3.已支持OpenAI和API2D的api-key共存,可在配置文件中填写如`API_KEY="openai-key1,openai-key2,api2d-key3"`。需要临时更换`API_KEY`时,在输入区输入临时的`API_KEY`然后回车键提交后即可生效。
diff --git a/main.py b/main.py index 2ee64a9..44c09ae 100644 --- a/main.py +++ b/main.py @@ -56,7 +56,7 @@ def main(): cookies = gr.State({'api_key': API_KEY, 'llm_model': LLM_MODEL}) with gr_L1(): with gr_L2(scale=2): - chatbot = gr.Chatbot() + chatbot = gr.Chatbot(label=f"当前模型:{LLM_MODEL}") chatbot.style(height=CHATBOT_HEIGHT) history = gr.State([]) with gr_L2(scale=1): @@ -155,6 +155,9 @@ def main(): variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary" return {switchy_bt: gr.update(value=k, variant=variant)} dropdown.select(on_dropdown_changed, [dropdown], [switchy_bt] ) + def on_md_dropdown_changed(k): + return {chatbot: gr.update(label="当前模型:"+k)} + md_dropdown.select(on_md_dropdown_changed, [md_dropdown], [chatbot] ) # 随变按钮的回调函数注册 def route(k, *args, **kwargs): if k in [r"打开插件列表", r"请先从插件列表中选择"]: return diff --git a/toolbox.py b/toolbox.py index 038d7be..c5fe60f 100644 --- a/toolbox.py +++ b/toolbox.py @@ -454,13 +454,15 @@ def select_api_key(keys, llm_model): @lru_cache(maxsize=128) def read_single_conf_with_lru_cache(arg): - from colorful import print亮红, print亮绿 + from colorful import print亮红, print亮绿, print亮蓝 try: r = getattr(importlib.import_module('config_private'), arg) except: r = getattr(importlib.import_module('config'), arg) # 在读取API_KEY时,检查一下是不是忘了改config if arg == 'API_KEY': + print亮蓝(f"[API_KEY] 本项目现已支持OpenAI和API2D的api-key。也支持同时填写多个api-key,如API_KEY=\"openai-key1,openai-key2,api2d-key3\"") + print亮蓝(f"[API_KEY] 您既可以在config.py中修改api-key(s),也可以在问题输入区输入临时的api-key(s),然后回车键提交后即可生效。") if is_any_api_key(r): print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功") else: From 4812513cbcfe255d01ebcc4d3655b76f93498cef Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 20 Apr 2023 09:45:44 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=A2=9E=E6=B7=BB=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- request_llm/bridge_chatgpt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/request_llm/bridge_chatgpt.py b/request_llm/bridge_chatgpt.py index 8c915c2..34c3ff6 100644 --- a/request_llm/bridge_chatgpt.py +++ b/request_llm/bridge_chatgpt.py @@ -208,6 +208,8 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp chatbot[-1] = (chatbot[-1][0], "[Local Message] You exceeded your current quota. OpenAI以账户额度不足为由,拒绝服务.") elif "bad forward key" in error_msg: chatbot[-1] = (chatbot[-1][0], "[Local Message] Bad forward key. API2D账户额度不足.") + elif "Not enough point" in error_msg: + chatbot[-1] = (chatbot[-1][0], "[Local Message] Not enough point. API2D账户点数不足.") else: from toolbox import regular_txt_to_markdown tb_str = '```\n' + traceback.format_exc() + '```' From 2b9261bc398c787091d380d0c10a03169214e3d8 Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Thu, 20 Apr 2023 10:20:48 +0800 Subject: [PATCH 3/9] Update README.md --- README.md | 73 ++++++++++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 02cf494..53085fc 100644 --- a/README.md +++ b/README.md @@ -91,9 +91,8 @@ cd chatgpt_academic 在`config.py`中,配置 海外Proxy 和 OpenAI API KEY,说明如下 ``` -1. 如果你在国内,需要设置海外代理才能够顺利使用 OpenAI API,设置方法请仔细阅读config.py(1.修改其中的USE_PROXY为True; 2.按照说明修改其中的proxies)。 -2. 配置 OpenAI API KEY。你需要在 OpenAI 官网上注册并获取 API KEY。一旦你拿到了 API KEY,在 config.py 文件里配置好即可。 -3. 支持任意数量的OpenAI的密钥和API2D的密钥共存/负载均衡,多个KEY用英文逗号分隔即可,例如输入 API_KEY="OpenAI密钥1,API2D密钥2,OpenAI密钥3,OpenAI密钥4" +1. 如果你在国内,需要设置海外代理才能够顺利使用OpenAI API,设置方法请仔细阅读config.py(1.修改其中的USE_PROXY为True; 2.按照说明修改其中的proxies)。 +2. 配置 OpenAI API KEY。支持任意数量的OpenAI的密钥和API2D的密钥共存/负载均衡,多个KEY用英文逗号分隔即可,例如输入 API_KEY="OpenAI密钥1,API2D密钥2,OpenAI密钥3,OpenAI密钥4" 3. 与代理网络有关的issue(网络超时、代理不起作用)汇总到 https://github.com/binary-husky/chatgpt_academic/issues/1 ``` (P.S. 程序运行时会优先检查是否存在名为`config_private.py`的私密配置文件,并用其中的配置覆盖`config.py`的同名配置。因此,如果您能理解我们的配置读取逻辑,我们强烈建议您在`config.py`旁边创建一个名为`config_private.py`的新配置文件,并把`config.py`中的配置转移(复制)到`config_private.py`中。`config_private.py`不受git管控,可以让您的隐私信息更加安全。) @@ -101,19 +100,17 @@ cd chatgpt_academic 3. 安装依赖 ```sh -# (选择一)推荐 -python -m pip install -r requirements.txt +# (选择I: 如熟悉python)推荐 +python -m pip install -r requirements.txt +# 备注:使用官方pip源或者阿里pip源,其他pip源(如一些大学的pip)有可能出问题,临时换源方法:python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ -# (选择二)如果您使用anaconda,步骤也是类似的: -# (选择二.1)conda create -n gptac_venv python=3.11 -# (选择二.2)conda activate gptac_venv -# (选择二.3)python -m pip install -r requirements.txt - -# 备注:使用官方pip源或者阿里pip源,其他pip源(如一些大学的pip)有可能出问题,临时换源方法: -# python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ +# (选择II: 如不熟悉python)使用anaconda,步骤也是类似的: +# (II-1)conda create -n gptac_venv python=3.11 +# (II-2)conda activate gptac_venv +# (II-3)python -m pip install -r requirements.txt ``` -如果需要支持清华ChatGLM,需要额外安装更多依赖(不熟悉python者、电脑配置不佳者,建议不要尝试): +如果需要支持清华ChatGLM后端,需要额外安装更多依赖(不熟悉python、电脑配置不佳者,建议不要尝试): ```sh python -m pip install -r request_llm/requirements_chatglm.txt ``` @@ -134,7 +131,7 @@ python main.py - 函数插件区下拉菜单中有更多功能可供选择 ``` -## 安装-方法2:使用docker (Linux) +## 安装-方法2:使用Docker (Linux) 1. 仅ChatGPT(推荐大多数人选择) ``` sh @@ -147,33 +144,23 @@ cd chatgpt_academic docker build -t gpt-academic . # 运行 docker run --rm -it --net=host gpt-academic - -# 测试函数插件 -## 测试函数插件模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能 -点击 "[函数插件模板Demo] 历史上的今天" -## 测试给Latex项目写摘要 -input区域 输入 ./crazy_functions/test_project/latex/attention , 然后点击 "读Tex论文写摘要" -## 测试Python项目分析 -input区域 输入 ./crazy_functions/test_project/python/dqn , 然后点击 "解析整个Python项目" - -函数插件区下拉菜单中有更多功能可供选择 ``` -2. ChatGPT+ChatGLM(需要对docker非常熟悉 + 电脑配置足够强) +2. ChatGPT+ChatGLM(需要对docker熟悉 + 读懂Dockerfile + 电脑配置够强) ``` sh -# 修改dockerfile +# 修改Dockerfile cd docs && nano Dockerfile+ChatGLM -# How to build | 如何构建 (Dockerfile+ChatGLM在docs路径下,请先cd docs) +# 构建 (Dockerfile+ChatGLM在docs路径下,请先cd docs) docker build -t gpt-academic --network=host -f Dockerfile+ChatGLM . -# How to run | 如何运行 (1) 直接运行: +# 运行 (1) 直接运行: docker run --rm -it --net=host --gpus=all gpt-academic -# How to run | 如何运行 (2) 我想运行之前进容器做一些调整: +# 运行 (2) 我想运行之前进容器做一些调整: docker run --rm -it --net=host --gpus=all gpt-academic bash ``` -## 安装-方法3:其他部署方式 +## 安装-方法3:其他部署方式(需要云服务器知识与经验) 1. 远程云服务器部署 请访问[部署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 +179,9 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash --- -## 自定义新的便捷按钮(学术快捷键自定义) +## 自定义新的便捷按钮 / 自定义函数插件 + +1. 自定义新的便捷按钮(学术快捷键) 任意文本编辑器打开`core_functional.py`,添加条目如下,然后重启程序即可。(如果按钮已经添加成功并可见,那么前缀、后缀都支持热修改,无需重启程序即可生效。) 例如 ``` @@ -208,19 +197,25 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
+2. 自定义函数插件 + +编写强大的函数插件来执行任何你想得到的和想不到的任务。 +本项目的插件编写、调试难度很低,只要您具备一定的python基础知识,就可以仿照我们提供的模板实现自己的插件功能。 +详情请参考[函数插件指南](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) + + --- ## 部分功能展示 -### 图片显示: +1. 图片显示:
- -### 如果一个程序能够读懂并剖析自己: +2. 本项目的代码自译解(如果一个程序能够读懂并剖析自己):
@@ -230,7 +225,7 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash
-### 其他任意Python/Cpp项目剖析: +3. 其他任意Python/Cpp/Java/Go/Rect/...项目剖析:
@@ -239,26 +234,26 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash -### Latex论文一键阅读理解与摘要生成 +4. Latex论文一键阅读理解与摘要生成
-### 自动报告生成 +5. 自动报告生成
-### 模块化功能设计 +6. 模块化功能设计
-### 源代码转译英文 +7. 源代码转译英文
From 4b7a954fc81569a21a3571b33e0937eafc9c3f72 Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Thu, 20 Apr 2023 10:22:33 +0800 Subject: [PATCH 4/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 53085fc..f5c7a85 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ docker run --rm -it --net=host --gpus=all gpt-academic bash 编写强大的函数插件来执行任何你想得到的和想不到的任务。 本项目的插件编写、调试难度很低,只要您具备一定的python基础知识,就可以仿照我们提供的模板实现自己的插件功能。 -详情请参考[函数插件指南](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) +详情请参考[函数插件指南](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)。 --- From 53189aea4e2cecf2219a77be616bed2cd3258d7b Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Thu, 20 Apr 2023 10:38:30 +0800 Subject: [PATCH 5/9] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f5c7a85..c001290 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ If you like this project, please give it a Star. If you've come up with more use Latex全文翻译、润色 | [函数插件] 一键翻译或润色latex论文 批量注释生成 | [函数插件] 一键批量生成函数注释 chat分析报告生成 | [函数插件] 运行后自动生成总结汇报 +Markdown中英互译 | [函数插件] 看到上面5种语言的[README](https://github.com/binary-husky/chatgpt_academic/blob/master/docs/README_EN.md)了吗? [arxiv小助手](https://www.bilibili.com/video/BV1LM4y1279X) | [函数插件] 输入arxiv文章url即可一键翻译摘要+下载PDF [PDF论文全文翻译功能](https://www.bilibili.com/video/BV1KT411x7Wn) | [函数插件] PDF论文提取题目&摘要+翻译全文(多线程) [谷歌学术统合小助手](https://www.bilibili.com/video/BV19L411U7ia) | [函数插件] 给定任意谷歌学术搜索页面URL,让gpt帮你选择有趣的文章 From c24ff30f8cd4d6fdd432ef66ab8701976845da76 Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Thu, 20 Apr 2023 10:40:44 +0800 Subject: [PATCH 6/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c001290..5c1bcfa 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ huggingface免科学上网[在线体验](https://huggingface.co/spaces/qingxu98/
-- 新界面(修改config.py中的LAYOUT选项即可实现“左右布局”和“上下布局”的切换) +- 新界面(修改`config.py`中的LAYOUT选项即可实现“左右布局”和“上下布局”的切换)
From bda025bc50446b7976468074f01d1523936276f5 Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Thu, 20 Apr 2023 16:31:26 +0800 Subject: [PATCH 7/9] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c1bcfa..57f9d2b 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,9 @@ python main.py 5. 测试函数插件 ``` - 测试Python项目分析 - input区域 输入 `./crazy_functions/test_project/python/dqn` , 然后点击 "解析整个Python项目" + (选择1)input区域 输入 `./crazy_functions/test_project/python/dqn` , 然后点击 "解析整个Python项目" + (选择2)展开文件上传区,将python文件/包含python文件的压缩包拖拽进去,在出现反馈提示后, 然后点击 "解析整个Python项目" + - 测试自我代码解读 点击 "[多线程Demo] 解析此项目本身(源码自译解)" - 测试实验功能模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能 From 3bb4b4c92aafd801ab25d8fb9dd0c68d4f8b184c Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Thu, 20 Apr 2023 16:33:08 +0800 Subject: [PATCH 8/9] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 57f9d2b..e606db2 100644 --- a/README.md +++ b/README.md @@ -126,10 +126,9 @@ python main.py - 测试Python项目分析 (选择1)input区域 输入 `./crazy_functions/test_project/python/dqn` , 然后点击 "解析整个Python项目" (选择2)展开文件上传区,将python文件/包含python文件的压缩包拖拽进去,在出现反馈提示后, 然后点击 "解析整个Python项目" - -- 测试自我代码解读 +- 测试自我代码解读(本项目自译解) 点击 "[多线程Demo] 解析此项目本身(源码自译解)" -- 测试实验功能模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能 +- 测试函数插件模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能 点击 "[函数插件模板Demo] 历史上的今天" - 函数插件区下拉菜单中有更多功能可供选择 ``` From b42f2f745ff97cdcfa846dfdbdcfeaab668eb811 Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Thu, 20 Apr 2023 20:36:20 +0800 Subject: [PATCH 9/9] Update main.py --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 44c09ae..833720b 100644 --- a/main.py +++ b/main.py @@ -112,7 +112,7 @@ def main(): with gr.Row(): resetBtn2 = gr.Button("重置", variant="secondary"); resetBtn2.style(size="sm") stopBtn2 = gr.Button("停止", variant="secondary"); stopBtn2.style(size="sm") - clearBtn2 = gr.Button("清除", variant="secondary", visible=False); clearBtn.style(size="sm") + clearBtn2 = gr.Button("清除", variant="secondary", visible=False); clearBtn2.style(size="sm") # 功能区显示开关与功能区的互动 def fn_area_visibility(a): ret = {} @@ -189,4 +189,4 @@ def main(): demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=PORT, auth=AUTHENTICATION, favicon_path="docs/logo.png") if __name__ == "__main__": - main() \ No newline at end of file + main()