diff --git a/apps/chuanhuchat/README.md b/apps/chuanhuchat/README.md new file mode 100644 index 00000000..8b557bfc --- /dev/null +++ b/apps/chuanhuchat/README.md @@ -0,0 +1,183 @@ +# 使用说明 + +## 功能相关由`config.json`决定,配置问题注意查看官方文档与教程 + +- https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki + +# 原始相关 +*** +
+ + 简体中文 | English | 日本語 | Russian | 한국어 +
+ +

川虎 Chat 🐯 Chuanhu Chat

+
+ + Logo + + +

+

为ChatGPT等多种LLM提供了一个轻快好用的Web图形界面和众多附加功能

+

+ + Tests Passing + + + GitHub Contributors + + + GitHub pull requests + +

+ 支持 GPT-4 · 基于文件问答 · LLM本地部署 · 联网搜索 · Agent 助理 · 支持 Fine-tune +

+ 视频教程 + · + 2.0介绍视频 + || + 在线体验 + · + 一键部署 +

+

+
+ +[![Video Title](https://github.com/GaiZhenbiao/ChuanhuChatGPT/assets/51039745/0eee1598-c2fd-41c6-bda9-7b059a3ce6e7.jpg)](https://github.com/GaiZhenbiao/ChuanhuChatGPT/assets/51039745/0eee1598-c2fd-41c6-bda9-7b059a3ce6e7?autoplay=1) + +## 目录 + +| [支持模型](#支持模型) | [使用技巧](#使用技巧) | [安装方式](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程) | [常见问题](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/常见问题) | [给作者买可乐🥤](#捐款) | [加入Telegram群组](https://t.me/tkdifferent) | +| --- | --- | --- | --- | --- | --- | + +## 支持模型 + +| API 调用模型 | 备注 | 本地部署模型 | 备注 | +| :---: | --- | :---: | --- | +| [ChatGPT(GPT-4)](https://chat.openai.com) | 支持微调 gpt-3.5 | [ChatGLM](https://github.com/THUDM/ChatGLM-6B) ([ChatGLM2](https://github.com/THUDM/ChatGLM2-6B)) | +| [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service) | | [LLaMA](https://github.com/facebookresearch/llama) | 支持 Lora 模型  +| [Google PaLM](https://developers.generativeai.google/products/palm) | 不支持流式传输 | [StableLM](https://github.com/Stability-AI/StableLM) +| [讯飞星火认知大模型](https://xinghuo.xfyun.cn) | | [MOSS](https://github.com/OpenLMLab/MOSS) +| [Inspur Yuan 1.0](https://air.inspur.com/home) | | [通义千问](https://github.com/QwenLM/Qwen/tree/main) +| [MiniMax](https://api.minimax.chat/) | +| [XMChat](https://github.com/MILVLG/xmchat) | 不支持流式传输 +| [Midjourney](https://www.midjourney.com/) | 不支持流式传输 +| [Claude](https://www.anthropic.com/) | +| DALL·E 3 | + +## 使用技巧 + +### 💪 强力功能 +- **川虎助理**:类似 AutoGPT,全自动解决你的问题; +- **在线搜索**:ChatGPT 的数据太旧?给 LLM 插上网络的翅膀; +- **知识库**:让 ChatGPT 帮你量子速读!根据文件回答问题。 +- **本地部署LLM**:一键部署,获取属于你自己的大语言模型。 + +### 🤖 System Prompt +- 通过 System Prompt 设定前提条件,可以很有效地进行角色扮演; +- 川虎Chat 预设了Prompt模板,点击`加载Prompt模板`,先选择 Prompt 模板集合,然后在下方选择想要的 Prompt。 + +### 💬 基础对话 +- 如果回答不满意,可以使用 `重新生成` 按钮再试一次,或者直接 `删除这轮对话`; +- 输入框支持换行,按 Shift + Enter即可; +- 在输入框按 方向键,可以在发送记录中快速切换; +- 每次新建一个对话太麻烦,试试 `单论对话` 功能; +- 回答气泡旁边的小按钮,不仅能 `一键复制`,还能 `查看Markdown原文`; +- 指定回答语言,让 ChatGPT 固定以某种语言回答。 + +### 📜 对话历史 +- 对话历史记录会被自动保存,不用担心问完之后找不到了; +- 多用户历史记录隔离,除了你都看不到; +- 重命名历史记录,方便日后查找; +- New! 魔法般自动命名历史记录,让 LLM 理解对话内容,帮你自动为历史记录命名! +- New! 搜索历史记录,支持正则表达式! + +### 🖼️ 小而美的体验 +- 自研 Small-and-Beautiful 主题,带给你小而美的体验; +- 自动亮暗色切换,给你从早到晚的舒适体验; +- 完美渲染 LaTeX / 表格 / 代码块,支持代码高亮; +- New! 非线性动画、毛玻璃效果,精致得不像 Gradio! +- New! 适配 Windows / macOS / Linux / iOS / Android,从图标到全面屏适配,给你最合适的体验! +- New! 支持以 PWA应用程序 安装,体验更加原生! + +### 👨‍💻 极客功能 +- New! 支持 Fine-tune(微调)gpt-3.5! +- 大量 LLM 参数可调; +- 支持更换 api-host; +- 支持自定义代理; +- 支持多 api-key 负载均衡。 + +### ⚒️ 部署相关 +- 部署到服务器:在 `config.json` 中设置 `"server_name": "0.0.0.0", "server_port": <你的端口号>,`。 +- 获取公共链接:在 `config.json` 中设置 `"share": true,`。注意程序必须在运行,才能通过公共链接访问。 +- 在Hugging Face上使用:建议在右上角 **复制Space** 再使用,这样App反应可能会快一点。 + +## 快速上手 + +在终端执行以下命令: + +```shell +git clone https://github.com/GaiZhenbiao/ChuanhuChatGPT.git +cd ChuanhuChatGPT +pip install -r requirements.txt +``` + +然后,在项目文件夹中复制一份 `config_example.json`,并将其重命名为 `config.json`,在其中填入 `API-Key` 等设置。 + +```shell +python ChuanhuChatbot.py +``` + +一个浏览器窗口将会自动打开,此时您将可以使用 **川虎Chat** 与ChatGPT或其他模型进行对话。 + +> **Note** +> +> 具体详尽的安装教程和使用教程请查看[本项目的wiki页面](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程)。 + +## 疑难杂症解决 + +在遇到各种问题查阅相关信息前,您可以先尝试 **手动拉取本项目的最新更改1** 并 **更新依赖库2**,然后重试。步骤为: + +1. 点击网页上的 `Download ZIP` 按钮,下载最新代码并解压覆盖,或 + ```shell + git pull https://github.com/GaiZhenbiao/ChuanhuChatGPT.git main -f + ``` +2. 尝试再次安装依赖(可能本项目引入了新的依赖) + ``` + pip install -r requirements.txt + ``` + +很多时候,这样就可以解决问题。 + +如果问题仍然存在,请查阅该页面:[常见问题](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/常见问题) + +该页面列出了**几乎所有**您可能遇到的各种问题,包括如何配置代理,以及遇到问题后您该采取的措施,**请务必认真阅读**。 + +## 了解更多 + +若需了解更多信息,请查看我们的 [wiki](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki): + +- [想要做出贡献?](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/贡献指南) +- [项目更新情况?](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/更新日志) +- [二次开发许可?](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用许可) +- [如何引用项目?](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用许可#如何引用该项目) + +## Starchart + +[![Star History Chart](https://api.star-history.com/svg?repos=GaiZhenbiao/ChuanhuChatGPT&type=Date)](https://star-history.com/#GaiZhenbiao/ChuanhuChatGPT&Date) + +## Contributors + + + + + +## 捐款 + +🐯如果觉得这个软件对你有所帮助,欢迎请作者喝可乐、喝咖啡~ + +联系作者:请去[我的bilibili账号](https://space.bilibili.com/29125536)私信我。 + +Buy Me A Coffee + +image diff --git a/apps/chuanhuchat/data.yml b/apps/chuanhuchat/data.yml new file mode 100644 index 00000000..ddd3782a --- /dev/null +++ b/apps/chuanhuchat/data.yml @@ -0,0 +1,20 @@ +name: 川虎 Chat (Chuanhu Chat) +tags: + - 工具 +title: 为多种 LLM 提供了一个轻快好用的 Web 图形界面和众多附加功能 +type: 工具 +description: 为多种 LLM 提供了一个轻快好用的 Web 图形界面和众多附加功能 +additionalProperties: + key: chuanhuchat + name: 川虎 Chat (Chuanhu Chat) + tags: + - Tool + shortDescZh: 为多种 LLM 提供了一个轻快好用的 Web 图形界面和众多附加功能 + shortDescEn: Lightweight and User-friendly Web-UI for LLMs + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/GaiZhenbiao/ChuanhuChatGPT + github: https://github.com/GaiZhenbiao/ChuanhuChatGPT + document: https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki diff --git a/apps/chuanhuchat/latest/.env.sample b/apps/chuanhuchat/latest/.env.sample new file mode 100644 index 00000000..44077e2a --- /dev/null +++ b/apps/chuanhuchat/latest/.env.sample @@ -0,0 +1,2 @@ +CONTAINER_NAME="chuanhuchat" +PANEL_APP_PORT_HTTP="40193" diff --git a/apps/chuanhuchat/latest/data.yml b/apps/chuanhuchat/latest/data.yml new file mode 100644 index 00000000..27359aaf --- /dev/null +++ b/apps/chuanhuchat/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 40193 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/chuanhuchat/latest/data/config.json b/apps/chuanhuchat/latest/data/config.json new file mode 100644 index 00000000..1119150e --- /dev/null +++ b/apps/chuanhuchat/latest/data/config.json @@ -0,0 +1,64 @@ +{ + "openai_api_key": "", + "google_palm_api_key": "", + "xmchat_api_key": "", + "minimax_api_key": "", + "minimax_group_id": "", + "midjourney_proxy_api_base": "", + "midjourney_proxy_api_secret": "", + "midjourney_discord_proxy_url": "", + "midjourney_temp_folder": "./tmp", + "spark_appid": "", + "spark_api_key": "", + "spark_api_secret": "", + "claude_api_secret":"", + "ernie_api_key": "", + "ernie_secret_key": "", + + + + "openai_api_type": "openai", + "azure_openai_api_key": "", + "azure_openai_api_base_url": "", + "azure_openai_api_version": "2023-05-15", + "azure_deployment_name": "", + "azure_embedding_deployment_name": "", + "azure_embedding_model_name": "text-embedding-ada-002", + + + "language": "zh_CN", + "users": [], + "local_embedding": false, + "hide_history_when_not_logged_in": false, + "check_update": true, + "default_model": "GPT3.5 Turbo", + "chat_name_method_index": 2, + "bot_avatar": "default", + "user_avatar": "default", + + + "show_api_billing": false, + "sensitive_id": "", + "usage_limit": 120, + "legacy_api_usage": false, + + + "default_chuanhu_assistant_model": "gpt-4", + "GOOGLE_CSE_ID": "", + "GOOGLE_API_KEY": "", + "WOLFRAM_ALPHA_APPID": "", + "SERPAPI_API_KEY": "", + + + "latex_option": "default", + "advance_docs": { + "pdf": { + "two_column": false, + "formula_ocr": true + } + }, + + + "multi_api_key": false, + "hide_my_key": false +} diff --git a/apps/chuanhuchat/latest/data/config_example.json b/apps/chuanhuchat/latest/data/config_example.json new file mode 100644 index 00000000..9c4180d1 --- /dev/null +++ b/apps/chuanhuchat/latest/data/config_example.json @@ -0,0 +1,87 @@ +{ + // 各配置具体说明,见 [https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程#配置-configjson] + + //== API 配置 == + "openai_api_key": "", // 你的 OpenAI API Key,一般必填,若空缺则需在图形界面中填入API Key + "google_palm_api_key": "", // 你的 Google PaLM API Key,用于 Google PaLM 对话模型 + "xmchat_api_key": "", // 你的 xmchat API Key,用于 XMChat 对话模型 + "minimax_api_key": "", // 你的 MiniMax API Key,用于 MiniMax 对话模型 + "minimax_group_id": "", // 你的 MiniMax Group ID,用于 MiniMax 对话模型 + "midjourney_proxy_api_base": "https://xxx/mj", // 你的 https://github.com/novicezk/midjourney-proxy 代理地址 + "midjourney_proxy_api_secret": "", // 你的 MidJourney Proxy API Secret,用于鉴权访问 api,可选 + "midjourney_discord_proxy_url": "", // 你的 MidJourney Discord Proxy URL,用于对生成对图进行反代,可选 + "midjourney_temp_folder": "./tmp", // 你的 MidJourney 临时文件夹,用于存放生成的图片,填空则关闭自动下载切图(直接显示MJ的四宫格图) + "spark_appid": "", // 你的 讯飞星火大模型 API AppID,用于讯飞星火大模型对话模型 + "spark_api_key": "", // 你的 讯飞星火大模型 API Key,用于讯飞星火大模型对话模型 + "spark_api_secret": "", // 你的 讯飞星火大模型 API Secret,用于讯飞星火大模型对话模型 + "claude_api_secret":"",// 你的 Claude API Secret,用于 Claude 对话模型 + "ernie_api_key": "",// 你的文心一言在百度云中的API Key,用于文心一言对话模型 + "ernie_secret_key": "",// 你的文心一言在百度云中的Secret Key,用于文心一言对话模型 + + + //== Azure == + "openai_api_type": "openai", // 可选项:azure, openai + "azure_openai_api_key": "", // 你的 Azure OpenAI API Key,用于 Azure OpenAI 对话模型 + "azure_openai_api_base_url": "", // 你的 Azure Base URL + "azure_openai_api_version": "2023-05-15", // 你的 Azure OpenAI API 版本 + "azure_deployment_name": "", // 你的 Azure OpenAI Chat 模型 Deployment 名称 + "azure_embedding_deployment_name": "", // 你的 Azure OpenAI Embedding 模型 Deployment 名称 + "azure_embedding_model_name": "text-embedding-ada-002", // 你的 Azure OpenAI Embedding 模型名称 + + //== 基础配置 == + "language": "auto", // 界面语言,可选"auto", "zh_CN", "en_US", "ja_JP", "ko_KR", "sv_SE", "ru_RU", "vi_VN" + "users": [], // 用户列表,[[用户名1, 密码1], [用户名2, 密码2], ...] + "local_embedding": false, //是否在本地编制索引 + "hide_history_when_not_logged_in": false, //未登录情况下是否不展示对话历史 + "check_update": true, //是否启用检查更新 + "default_model": "GPT3.5 Turbo", // 默认模型 + "chat_name_method_index": 2, // 选择对话名称的方法。0: 使用日期时间命名;1: 使用第一条提问命名,2: 使用模型自动总结 + "bot_avatar": "default", // 机器人头像,可填写本地或网络图片链接,或者"none"(不显示头像) + "user_avatar": "default", // 用户头像,可填写本地或网络图片链接,或者"none"(不显示头像) + + //== API 用量 == + "show_api_billing": false, //是否显示OpenAI API用量(启用需要填写sensitive_id) + "sensitive_id": "", // 你 OpenAI 账户的 Sensitive ID,用于查询 API 用量 + "usage_limit": 120, // 该 OpenAI API Key 的当月限额,单位:美元,用于计算百分比和显示上限 + "legacy_api_usage": false, // 是否使用旧版 API 用量查询接口(OpenAI现已关闭该接口,但是如果你在使用第三方 API,第三方可能仍然支持此接口) + + //== 川虎助理设置 == + "default_chuanhu_assistant_model": "gpt-4", //川虎助理使用的模型,可选gpt-3.5-turbo或者gpt-4等 + "GOOGLE_CSE_ID": "", //谷歌搜索引擎ID,用于川虎助理Pro模式,获取方式请看 https://stackoverflow.com/questions/37083058/programmatically-searching-google-in-python-using-custom-search + "GOOGLE_API_KEY": "", //谷歌API Key,用于川虎助理Pro模式 + "WOLFRAM_ALPHA_APPID": "", //Wolfram Alpha API Key,用于川虎助理Pro模式,获取方式请看 https://products.wolframalpha.com/api/ + "SERPAPI_API_KEY": "", //SerpAPI API Key,用于川虎助理Pro模式,获取方式请看 https://serpapi.com/ + + //== 文档处理与显示 == + "latex_option": "default", // LaTeX 公式渲染策略,可选"default", "strict", "all"或者"disabled" + "advance_docs": { + "pdf": { + "two_column": false, // 是否认为PDF是双栏的 + "formula_ocr": true // 是否使用OCR识别PDF中的公式 + } + }, + + //== 高级配置 == + // 是否多个API Key轮换使用 + "multi_api_key": false, + "hide_my_key": false, // 如果你想在UI中隐藏 API 密钥输入框,将此值设置为 true + // "available_models": ["GPT3.5 Turbo", "GPT4 Turbo", "GPT4 Vision"], // 可用的模型列表,将覆盖默认的可用模型列表 + // "extra_models": ["模型名称3", "模型名称4", ...], // 额外的模型,将添加到可用的模型列表之后 + // "api_key_list": [ + // "sk-xxxxxxxxxxxxxxxxxxxxxxxx1", + // "sk-xxxxxxxxxxxxxxxxxxxxxxxx2", + // "sk-xxxxxxxxxxxxxxxxxxxxxxxx3" + // ], + // 自定义OpenAI API Base + // "openai_api_base": "https://api.openai.com", + // 自定义使用代理(请替换代理URL) + // "https_proxy": "http://127.0.0.1:1079", + // "http_proxy": "http://127.0.0.1:1079", + // 自定义端口、自定义ip(请替换对应内容) + // "server_name": "0.0.0.0", + // "server_port": 7860, + // 如果要share到gradio,设置为true + // "share": false, + //如果不想自动打开浏览器,设置为false + //"autobrowser": false +} diff --git a/apps/chuanhuchat/latest/docker-compose.yml b/apps/chuanhuchat/latest/docker-compose.yml new file mode 100644 index 00000000..a5bdab20 --- /dev/null +++ b/apps/chuanhuchat/latest/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' +services: + chuanhuchat: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:7860" + volumes: + - ./data/history:/app/history + - ./data/config.json:/app/config.json + image: tuchuanhuhuhu/chuanhuchatgpt:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/chuanhuchat/logo.png b/apps/chuanhuchat/logo.png new file mode 100644 index 00000000..4cb36f46 Binary files /dev/null and b/apps/chuanhuchat/logo.png differ