├── wrangler.toml ├── LICENSE ├── README.md ├── README_OLD.md └── openai.html /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "openai-webui-lite" 2 | main = "worker.js" 3 | compatibility_date = "2024-01-01" 4 | 5 | [env.production.vars] 6 | # 在 Cloudflare Dashboard 中配置敏感信息 7 | # API_KEYS = "key1,key2,key3" 8 | # API_BASE = "https://generativelanguage.googleapis.com" 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 icheer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenAI WebUI Lite - 自部署的 OpenAI API 代理服务 2 | 3 | [![Deploy to Deno Deploy](https://img.shields.io/badge/Deploy%20to-Deno%20Deploy-00ADD8?style=flat-square&logo=deno)](https://dash.deno.com/) 4 | [![Deploy to Cloudflare Workers](https://img.shields.io/badge/Deploy%20to-Cloudflare%20Workers-orange?style=flat-square&logo=cloudflare)](https://workers.cloudflare.com/) 5 | [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](#license) 6 | [![OpenAI API](https://img.shields.io/badge/Powered%20by-OpenAI%20API-412991?style=flat-square&logo=openai)](https://platform.openai.com/) 7 | 8 | 一个简单、轻量且功能强大的 OpenAI API 代理服务。基于 Deno Deploy / Cloudflare Workers 构建,无需服务器,只需一个域名和 API Key,即可免费部署属于你自己的 AI 助手。 9 | 10 | --- 11 | 12 | ## ✨ 核心特性 13 | 14 | 本项目致力于提供“养老级”的稳定体验,功能丰富且不失简洁: 15 | 16 | - 🚀 **一键部署**:基于 Serverless 架构,免费、快速,无需维护服务器。 17 | - 🔐 **安全访问**:支持**共享密码**(长期使用)和**演示密码**(限制频率),保护 API Key 不泄露。 18 | - 💬 **流畅对话**:支持打字机流式响应 (Streaming),体验丝滑。 19 | - 🌐 **多模型支持**:兼容 OpenAI (GPT-4o/5)、Google (Gemini)、Claude、以及各类国产大模型(Qwen/DeepSeek等)。 20 | - 🔍 **联网搜索**:集成 Tavily Search API,让 AI 能够获取实时网络信息作为回答依据。 21 | - 🖥️ **全端适配**:精心设计的响应式 UI,完美适配桌面端和移动端。 22 | - 📱 **PWA 支持**:支持渐进式 Web 应用 (PWA) 标准,移动端可将网页添加到桌面,获得原生 App 般的沉浸体验。 23 | - 🛡️ **隐私优先**:聊天记录仅存储在浏览器本地 (IndexedDB),不上传服务器。 24 | - 📸 **一键分享**:自动生成精美的问答长图,方便社交分享。 25 | - 🏷️ **智能管理**:根据对话内容自动生成标题,支持两轮对话(一问一答+追问),保持界面清爽。 26 | - 🎨 **高度定制**:支持自定义网站标题、Favicon 图标以及模型列表。 27 | 28 | ## 🖼️ 界面预览 29 | 30 | ![openai_webui_lite](https://lsky.useforall.com/pixel/2025/11/03/690882cd3229a.png) 31 | ![openai_webui_lite-m](https://lsky.useforall.com/pixel/2025/11/03/690882cced092.png) 32 | 33 | ## 🚀 部署指南 34 | 35 | ### 准备工作 36 | 1. **API Key**: 准备好 OpenAI 或其他兼容服务的 API Key。 37 | 2. **域名**: 一个用于绑定的域名(推荐,可避免官方域名被墙)。 38 | 39 | ### ⚡ 一键部署 40 | 41 | 点击下方按钮,即可快速部署: 42 | 43 | [![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/icheer/openai-webui-lite) 44 | 45 | [![Deploy to Deno Deploy](https://img.shields.io/badge/Deploy%20to-Deno%20Deploy-000?style=for-the-badge&logo=deno)](https://dash.deno.com/new?url=https://github.com/icheer/openai-webui-lite&entrypoint=worker.js) 46 | 47 | > 首次部署需要授权访问您的 GitHub 账户,系统会自动 Fork 本仓库并完成部署。 48 | 49 | ### 部署方式 A:GitHub 集成部署 (推荐) 50 | > **特点**:支持自动更新,当您同步了上游代码后,服务会自动重新部署。 51 | > **支持平台**:Deno Deploy / Cloudflare Workers 52 | 53 | 1. **Fork 项目**:将本项目 Fork 到您的 GitHub 仓库。 54 | 2. **创建项目**: 55 | - **Deno Deploy**: 登录 [Deno Dash](https://dash.deno.com/) -> New Project -> 选择 Fork 的仓库 -> Entry Point 选 `worker.js` -> Deploy。 56 | - **Cloudflare Workers**: 登录 [Cloudflare Dash](https://dash.cloudflare.com/) -> Workers & Pages -> Create application -> Connect to Git -> 选择仓库 -> Deploy。 57 | 58 | ### 部署方式 B:手动复制部署 (Playground) 59 | > **特点**:最简单,无需 GitHub 账号,直接复制粘贴代码即可。 60 | > **支持平台**:Deno Deploy / Cloudflare Workers 61 | 62 | 1. **复制代码**:复制本项目 `worker.js` 的全部内容。 63 | 2. **创建项目**: 64 | - **Deno Deploy**: 登录 [Deno Dash](https://dash.deno.com/) -> New Playground -> 粘贴代码 -> Save & Deploy。 65 | - **Cloudflare Workers**: 登录 [Cloudflare Dash](https://dash.cloudflare.com/) -> Workers & Pages -> Create Worker -> Edit code -> 粘贴代码 -> Deploy。 66 | 67 | ### 后续配置 (通用) 68 | 1. **绑定域名**:在项目设置中绑定您的自定义域名(自动申请 SSL)。 69 | - *Deno Deploy*: Settings -> Domains 70 | - *Cloudflare Workers*: Settings -> Triggers -> Custom Domains 71 | 2. **配置变量**:在项目设置中添加环境变量(见下文配置章节)。 72 | - *Deno Deploy*: Settings -> Environment Variables 73 | - *Cloudflare Workers*: Settings -> Variables 74 | 75 | > **⚠️ 平台选择建议**: 76 | > - **Deno Deploy**: 部署最简单,且节点 IP 通常未被 OpenAI/Google 封锁,可直接调用官方 API。 77 | > - **Cloudflare Workers**: 全球节点更多,连接速度可能更快,但调用官方 API 可能需要自备代理或使用中转。 78 | > 79 | > **⚠️ 中国大陆访问提示**:无论选择哪个平台,原生域名 (`*.deno.dev`, `*.workers.dev`) 在国内通常无法访问。请务必绑定自定义域名,并将域名托管在 Cloudflare,开启“小黄云”代理模式(CDN),即可在国内正常访问。 80 | 81 | --- 82 | 83 | ## ⚙️ 配置说明 (环境变量) 84 | 85 | 本项目主要通过环境变量进行配置,优先级高于代码中的默认值。 86 | 87 | | 变量名 | 必填 | 说明 | 示例 | 88 | | :--- | :---: | :--- | :--- | 89 | | `SECRET_PASSWORD` | 否 | **共享密码**。设置后,用户需输入此密码才能使用您配置的 API Key。适合家人朋友共享。 | `my-secret-pwd` | 90 | | `API_KEYS` | 否 | **API Key 池**。多个 Key 用英文逗号 `,` 分隔,系统会自动轮询使用,实现简单的负载均衡。 | `sk-key1,sk-key2` | 91 | | `MODEL_IDS` | **是** | **模型列表**。定义前端下拉框显示的模型。支持 `ID=显示名称` 格式。 | `gpt-4o,gemini-2.5-pro` | 92 | | `API_BASE` | 否 | **接口地址**。默认为 `https://api.openai.com`。如使用中转服务需修改此项。 | `https://api.openai.com` | 93 | | `TAVILY_KEYS` | 否 | **联网搜索 Key**。配置后前端会出现“联网搜索”选项。获取地址:[tavily.com](https://tavily.com/) | `tvly-xxxx` | 94 | | `TITLE` | 否 | **网站标题**。自定义浏览器标签页标题。 | `我的 AI 助手` | 95 | | `DEMO_PASSWORD` | 否 | **演示密码**。用于公开演示,有频率限制。 | `demo123` | 96 | | `DEMO_MAX_TIMES_PER_HOUR` | 否 | 演示密码每小时最大调用次数,默认 15。 | `20` | 97 | 98 | ### 🔌 常见服务商配置参考 99 | 100 | | 服务商 | API_BASE | API_KEYS 示例 | MODEL_IDS 示例 | 备注 | 101 | | :--- | :--- | :--- | :--- | :--- | 102 | | **OpenAI** | `https://api.openai.com` | `sk-proj-xxx` | `gpt-4o,gpt-4o-mini,o1-preview` | 推荐 Deno 部署 | 103 | | **Gemini** | `https://generativelanguage.googleapis.com` | `AIzaSyxxx` | `gemini-2.5-pro,gemini-2.5-flash` | 推荐 Deno 部署 | 104 | | **心流 AI** | `https://apis.iflow.cn` | `sk-xxx` | `qwen3-max,deepseek-v3` | 国产模型聚合,Cloudflare 部署即可 | 105 | | **OpenRouter** | `https://openrouter.ai/api` | `sk-or-xxx` | `anthropic/claude-sonnet-4.5` | 聚合平台 | 106 | | **DeepSeek** | `https://api.deepseek.com` | `sk-xxx` | `deepseek-chat,deepseek-coder` | 国产之光 | 107 | 108 | > **💡 资源推荐**:如果您需要免费且稳定的国产大模型 API(如 Qwen, DeepSeek),推荐尝试 [心流 AI](https://iflow.cn/?invite_code=vNEjKzbSTbhgWooCw15Bsw%3D%3D&open=setting),官方宣称 API 永久免费(但 API Key 有效期为7天,过期后需手动重置新 Key),支持 Cloudflare Workers 稳定调用。 109 | 110 | --- 111 | 112 | ## 📚 使用指南 113 | 114 | ### Web 界面使用 115 | 1. **访问**:打开您部署的域名。 116 | 2. **认证**: 117 | - 如果配置了 `SECRET_PASSWORD`,输入密码即可使用服务器端的 API Key。 118 | - 如果未配置密码,您可以直接输入自己的 OpenAI API Key 使用。 119 | 3. **对话**:选择模型,输入问题。支持 Markdown、代码高亮。 120 | 4. **功能**: 121 | - **联网搜索**:勾选后,AI 会先搜索网络信息再回答。 122 | - **追问**:一问一答后,支持一次追问,保持上下文。 123 | - **分享**:点击右上角分享按钮,生成长图。 124 | 125 | ### API 代理使用 126 | 本项目也完全兼容 OpenAI API 格式,可作为 API 网关使用。 127 | 128 | - **Endpoint**: `https://your-domain.com/v1/chat/completions` 129 | - **Authorization**: `Bearer YOUR_SECRET_PASSWORD` (如果设置了密码) 或 `Bearer sk-xxx` (直接透传) 130 | 131 | **curl 示例:** 132 | ```bash 133 | curl https://your-domain.com/v1/chat/completions \ 134 | -H "Content-Type: application/json" \ 135 | -H "Authorization: Bearer your-password" \ 136 | -d '{ 137 | "model": "gpt-4o", 138 | "messages": [{"role": "user", "content": "Hello!"}], 139 | "stream": true 140 | }' 141 | ``` 142 | 143 | --- 144 | 145 | ## 🙋‍♂️ 常见问题 (FAQ) 146 | 147 | **Q: 部署需要付费吗?** 148 | A: Deno Deploy 和 Cloudflare Workers 都有免费额度,一般个人使用完全够用。 149 | 150 | **Q: 为什么我的自定义域名在国内无法访问?** 151 | A: Deno Deploy 和 Cloudflare Workers 的默认域名 (`*.deno.dev`, `*.workers.dev`) 在国内通常是被墙的。您必须绑定自己的域名。如果是 Deno Deploy,建议将域名 DNS 托管在 Cloudflare 并开启 CDN(橙色云朵),这样国内用户可以通过 Cloudflare 的节点访问。 152 | 153 | **Q: 为什么只支持两轮对话(提问+追问)?** 154 | A: 这是一个设计选择。为了保持界面极简和 token 消耗可控,我们限制了上下文长度。对于大多数日常查询,两轮对话已经足够。如果需要长对话,建议在“角色设定”中输入背景信息。 155 | 156 | **Q: 历史记录保存在哪里?会泄露吗?** 157 | A: 所有聊天记录仅存储在您浏览器的 **IndexedDB** 中,**绝不会**上传到任何服务器。这意味着如果您清除浏览器缓存或更换设备/浏览器,历史记录会丢失。 158 | 159 | **Q: 为什么推荐 Deno Deploy 而不是 Cloudflare Workers?** 160 | A: 虽然两者都支持,但 Deno Deploy 的出口 IP 质量目前更好,很少被 OpenAI 或 Google 封锁,因此可以直接调用官方 API 而不需要额外的代理层。 161 | 162 | **Q: 如何配置多个 API Key?** 163 | A: 在环境变量 `API_KEYS` 中填入多个 Key,用逗号分隔(如 `key1,key2,key3`)。程序会在每次请求时随机选择一个 Key,实现简单的负载均衡和防封号。 164 | 165 | **Q: 演示密码 (Demo Password) 有什么用?** 166 | A: 如果你想把网站分享给陌生人体验,但又怕 API 被刷爆,可以设置 `DEMO_PASSWORD`。使用该密码登录的用户,每小时只能进行有限次(默认15次)对话。 167 | 168 | **Q: 支持哪些模型?** 169 | A: 理论上支持所有兼容 OpenAI Chat Completion 接口的模型。您只需在 `MODEL_IDS` 环境变量中添加模型 ID 即可。 170 | 171 | **Q: 如何开启联网搜索功能?** 172 | A: 在环境变量中配置 `TAVILY_KEYS`,然后在 Web 界面勾选"联网搜索"选项即可。联网搜索会为 AI 提供实时的网络信息作为上下文,提升回答的时效性和准确性。 173 | 174 | **Q: Tavily API Key 如何获取?** 175 | A: 访问 [Tavily](https://tavily.com/) 注册账号并获取 API Key。可以配置多个 Key 用逗号分隔,系统会自动轮换使用。 176 | 177 | **Q: 如何自定义界面标题和 Favicon?** 178 | A: 通过环境变量 `TITLE` 设置自定义标题,如 `TITLE=My AI Assistant`。标题会同时影响网页标题和 Favicon 的显示样式。 179 | 180 | **Q: TITLE 环境变量是如何影响 Favicon 的?** 181 | A: `TITLE` 中包含 Gemini 或 Qwen 字样时(忽略大小写),网站 Favicon 会自动变为相应的模型 Logo,否则 Logo 默认为 ChatBot 的样式。 182 | 183 | ## 📄 许可证 184 | 185 | 本项目采用 [MIT License](LICENSE) 开源。欢迎 Fork 和 Star! 186 | -------------------------------------------------------------------------------- /README_OLD.md: -------------------------------------------------------------------------------- 1 | # OpenAI WebUI Lite - 自部署的 OpenAI API 代理服务 2 | 3 | [![Deploy to Deno Deploy](https://img.shields.io/badge/Deploy%20to-Deno%20Deploy-00ADD8?style=flat-square&logo=deno)](https://dash.deno.com/) 4 | [![Deploy to Cloudflare Workers](https://img.shields.io/badge/Deploy%20to-Cloudflare%20Workers-orange?style=flat-square&logo=cloudflare)](https://workers.cloudflare.com/) 5 | [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](#license) 6 | [![OpenAI API](https://img.shields.io/badge/Powered%20by-OpenAI%20API-412991?style=flat-square&logo=openai)](https://platform.openai.com/) 7 | 8 | 一个简单易用的 Deno Deploy / Cloudflare Worker 程序,让您能够快速部署自己的 OpenAI API 代理服务。只需要一个域名和 OpenAI API Key,即可免费为家人朋友提供 AI 问答服务。 9 | 10 | > 🎯 **何种情况下推荐使用 Deno Deploy 部署** 11 | > Deno Deploy 部署简单快捷,且在中国境内(及港澳地区)没有边缘节点,因此可以流畅代理请求发往 OpenAI、Gemini 官方 API 而不会因地区原因遭到拒绝。 因此代理上述官方 API 时首选 Deno Deploy 方式部署。 12 | 13 | > ⚠️ **中国大陆访问注意事项** 14 | > 由于 Deno Deploy 的 IPv4 地址在中国大陆地区无法直接访问,即使使用自定义域名 CNAME 解析也无法绕过此限制。如需确保中国大陆地区用户正常访问,建议将域名托管至 Cloudflare,并在 DNS 设置中启用代理模式(橙色云朵图标),通过 Cloudflare CDN 进行流量代理,代理至 Deno Deploy 的 IP。 15 | 16 | > 💡 **推荐使用心流 AI 获取免费 API** 17 | > 推荐使用阿里巴巴旗下的 [心流 AI](https://iflow.cn/?invite_code=vNEjKzbSTbhgWooCw15Bsw%3D%3D&open=setting) 获取免费的国产开源大模型 API Key。 18 | > 19 | > - **API 文档**: [https://platform.iflow.cn/docs/](https://platform.iflow.cn/docs/) 20 | > - **API_BASE**: `https://apis.iflow.cn` 21 | > - **API_KEYS**: 在 [心流 - 我的账户](https://iflow.cn/?invite_code=vNEjKzbSTbhgWooCw15Bsw%3D%3D&open=setting) 注册后申请 22 | > - **可用模型**: Qwen3-Max、Qwen3-Coder-Plus、Qwen3-VL-Plus、GLM-4.6、Kimi-K2、DeepSeek-V3.2-Exp、DeepSeek-R1 等国产大模型 ([完整列表](https://platform.iflow.cn/models)) 23 | > - **注意事项**: 24 | > - 心流的 API Key 会在一段时间(约为七天)后自动过期(防滥用措施),过期后需在设置页面手动重置 25 | > - 每个 Key 最多同时发起一个请求,超出限制会返回 429 错误码 26 | > - 如果使用心流 AI 则更推荐 Cloudflare Workers 部署 27 | 28 | 请合理使用 AI 资源,避免滥用! 29 | 30 | ## ✨ 特性 31 | 32 | - 🚀 **一键部署** - 基于 Deno Deploy / Cloudflare Workers,免费且快速 33 | - 🔐 **密码保护** - 支持共享密码,保护您的 API Key 34 | - 🎯 **演示模式** - 支持临时演示密码,带有调用次数限制 35 | - 💬 **实时对话** - 流式响应,支持打字机效果 36 | - 📱 **响应式设计** - 完美适配桌面端和移动端 37 | - 💾 **本地存储** - 基于 IndexedDB 的持久化历史记录 38 | - 🎨 **极简界面** - 养老版 OpenAI Chat,简洁易用 39 | - 🌐 **多模型支持** - 支持 GPT、Gemini、Qwen 等多种 AI 模型 40 | - 🔍 **联网搜索** - 集成 Tavily 搜索,为 AI 提供实时网络信息 41 | - 📸 **分享问答** - 一键生成问答截图,方便社交分享 42 | - 🏷️ **智能命名** - 根据问答内容自动生成会话标题,便于查找管理 43 | - 🔠 **自定义标题** - 支持自定义界面标题和 Favicon 44 | 45 | ## 🖼️ 截图 46 | 47 | ![openai_webui_lite](https://lsky.useforall.com/pixel/2025/11/03/690882cd3229a.png) 48 | 49 | ![openai_webui_lite-m](https://lsky.useforall.com/pixel/2025/11/03/690882cced092.png) 50 | 51 | ## 🎯 功能说明 52 | 53 | ### 核心功能 54 | 55 | - **代理服务**: 提供标准的 OpenAI API 代理端点 56 | - **Web 界面**: 内置精美的聊天界面 57 | - **密码机制**: 可设置共享密码,避免直接暴露 API Key 58 | - **流式响应**: 实时显示 AI 回答,提升用户体验 59 | 60 | ### 使用特点 61 | 62 | - 支持两轮问答模式:每个会话可以进行一次追问 63 | - 历史记录保存在浏览器本地(注意:更换浏览器无法共享历史) 64 | - 支持角色设定和系统提示词 65 | - 支持 Markdown 渲染和代码高亮 66 | - 支持联网搜索:通过 Tavily API 为 AI 提供实时网络信息作为上下文 67 | - 支持自定义界面标题和 Favicon,打造个性化 AI 助手 68 | 69 | ## 🚀 快速开始 70 | 71 | ### 准备工作 72 | 73 | 1. **获取 OpenAI API Key** 74 | 75 | - 访问 [OpenAI Platform](https://platform.openai.com/api-keys) 76 | - 创建新的 API Key 并妥善保存 77 | 78 | 2. **获取 Tavily API Key(可选,用于联网搜索)** 79 | 80 | - 访问 [Tavily](https://tavily.com/) 81 | - 注册账号并获取 API Key 82 | - 配置后可在问答时勾选"联网搜索",为 AI 提供实时网络信息 83 | 84 | 3. **准备域名** 85 | - 拥有一个域名(可以是免费域名) 86 | - 用于绑定到部署服务 87 | 88 | ### 部署步骤 89 | 90 | **🎯 方式一:Deno Deploy(推荐)** 91 | 92 | > ⚡ 推荐使用 Deno Deploy,部署简单快捷,访问稳定。 93 | 94 | 1. **Fork 项目到您的 GitHub** 95 | 96 | - 将项目代码上传到您的 GitHub 仓库 97 | 98 | 2. **部署到 Deno Deploy** 99 | 100 | - 访问 [Deno Deploy](https://dash.deno.com/) 101 | - 使用 GitHub 账号登录 102 | - 点击 "New Project" 103 | - 选择您的 GitHub 仓库 104 | - 设置入口文件为 `worker.js` 105 | - 点击 "Deploy" 106 | 107 | 3. **配置环境变量(推荐)** 108 | 109 | - 在 Deno Deploy 项目设置中添加环境变量: 110 | - `SECRET_PASSWORD`: 共享密码 111 | - `API_KEYS`: API Key 列表(逗号分隔) 112 | - `MODEL_IDS`: 支持的模型列表(必需,逗号分隔) 113 | - `API_BASE`: OpenAI API 基础地址(可选,默认 `https://api.openai.com`) 114 | - `DEMO_PASSWORD`: 临时演示密码(可选) 115 | - `DEMO_MAX_TIMES_PER_HOUR`: 演示密码每小时调用次数限制(可选,默认 15 次) 116 | - `TAVILY_KEYS`: 用于启用联网搜索特性 117 | - `TITLE`: 用于自定义网站标题及 Favicon 118 | - 环境变量优先级高于代码中的硬编码值 119 | 120 | 4. **绑定自定义域名(推荐)** 121 | 122 | - 在项目设置中点击 "Domains" 123 | - 添加您的自定义域名 124 | - 按照提示配置 DNS 记录 125 | - Deno Deploy 会自动提供 SSL 证书 126 | 127 | 5. **测试部署** 128 | - 访问您的 Deno Deploy 域名(如:`https://your-project.deno.dev`) 129 | - 或访问您的自定义域名 130 | - 输入共享密码测试功能 131 | - 后续为确保国内免科学访问,需套用 Cloudflare CDN 132 | 133 | **🛠️ 方式二:Cloudflare Workers(备选)** 134 | 135 | 1. **创建 Cloudflare Worker** 136 | 137 | ```bash 138 | # 登录 Cloudflare Dashboard 139 | # 进入 Workers & Pages 140 | # 点击 "Create application" -> "Create Worker" 141 | ``` 142 | 143 | 2. **配置代码** 144 | 145 | - 将 `worker.js` 中的 [代码](https://github.com/icheer/openai-webui-lite/blob/main/worker.js) 复制到 Worker 编辑器 146 | - 修改以下配置: 147 | 148 | ```javascript 149 | const SECRET_PASSWORD = 'your-shared-password'; // 设置共享密码 150 | const API_KEYS = 'sk-key1,sk-key2,sk-key3'; // API Key 列表,逗号分隔 151 | const MODEL_IDS = 'gpt-5-pro,gpt-5,gpt-5-mini'; // 支持的模型列表(必需) 152 | const API_BASE = 'https://api.openai.com'; // API 基础地址(可选) 153 | ``` 154 | 155 | - 更推荐以环境变量方式配置以上参数 156 | 157 | 3. **绑定自定义域名** 158 | 159 | - 在 Worker 设置中添加自定义域名 160 | - 配置 DNS 记录(需要域名托管在 Cloudflare) 161 | 162 | 4. **测试部署** 163 | - 访问您的域名 164 | - 输入共享密码测试功能 165 | 166 | ## 📚 API 使用 167 | 168 | ### 基础端点 169 | 170 | ``` 171 | https://your-domain.com/v1/chat/completions 172 | ``` 173 | 174 | ### REST API 调用示例 175 | 176 | ```bash 177 | # 使用共享密码 178 | curl -X POST "https://your-domain.com/v1/chat/completions" \ 179 | -H "Content-Type: application/json" \ 180 | -H "Authorization: Bearer your-shared-password" \ 181 | -d '{ 182 | "model": "gpt-4", 183 | "messages": [ 184 | { 185 | "role": "user", 186 | "content": "你好,请介绍一下自己" 187 | } 188 | ] 189 | }' 190 | 191 | # 也可以使用 query 参数传递密钥 192 | curl -X POST "https://your-domain.com/v1/chat/completions?key=your-shared-password" \ 193 | -H "Content-Type: application/json" \ 194 | -d '{ 195 | "model": "gpt-4", 196 | "messages": [ 197 | { 198 | "role": "user", 199 | "content": "Hello, how can you help me?" 200 | } 201 | ] 202 | }' 203 | 204 | # 使用完整 API Key 205 | curl -X POST "https://your-domain.com/v1/chat/completions" \ 206 | -H "Content-Type: application/json" \ 207 | -H "Authorization: Bearer sk-your-full-api-key" \ 208 | -d '{ 209 | "model": "gpt-5", 210 | "messages": [ 211 | { 212 | "role": "user", 213 | "content": "What is the capital of France?" 214 | } 215 | ] 216 | }' 217 | ``` 218 | 219 | ### 流式请求示例 220 | 221 | ```bash 222 | curl -X POST "https://your-domain.com/v1/chat/completions" \ 223 | -H "Content-Type: application/json" \ 224 | -H "Authorization: Bearer your-password" \ 225 | -d '{ 226 | "model": "gpt-4", 227 | "messages": [ 228 | { 229 | "role": "user", 230 | "content": "写一首关于编程的诗" 231 | } 232 | ], 233 | "stream": true 234 | }' 235 | ``` 236 | 237 | ## 🎨 Web 界面使用 238 | 239 | 1. **访问界面**: 打开 `https://your-domain.com` 240 | 2. **设置密钥**: 在左侧输入共享密码或完整 API Key 241 | 3. **角色设定**: (可选)设置系统提示词或角色设定 242 | 4. **开始对话**: 选择模型并输入问题 243 | 5. **联网搜索**: (可选)勾选"联网搜索"选项,AI 将获取实时网络信息作为回答参考 244 | 6. **追问功能**: 在第一个问题得到回答后,可以继续追问一次 245 | 7. **智能命名**: 系统会根据问答内容自动生成会话标题,便于管理查找 246 | 8. **分享问答**: 点击右上角"分享问答"按钮,生成问答截图 247 | 9. **查看历史**: 左侧会自动保存历史会话 248 | 249 | ### 支持的模型 250 | 251 | 默认支持所有 OpenAI 官方模型,包括但不限于: 252 | 253 | - `gpt-5-pro` - GPT-5-Pro 模型 254 | - `gpt-5` - GPT-5 模型 255 | - `gpt-5-mini` - GPT-5 Mini 模型 256 | - 以及其他 OpenAI 提供的模型 257 | 258 | 可以通过 `MODEL_IDS` 环境变量自定义显示在界面中的模型列表。 259 | 260 | ## ⚙️ 配置说明 261 | 262 | ### 环境变量配置(推荐) 263 | 264 | 项目支持通过环境变量进行配置,这样更安全且便于管理: 265 | 266 | **主要环境变量:** 267 | 268 | - `SECRET_PASSWORD`: 共享密码,用于正常无限制访问 269 | - `API_KEYS`: OpenAI API Key 列表,多个用逗号分隔 270 | - `MODEL_IDS`: 支持的模型列表,多个用逗号分隔(必需) 271 | - `API_BASE`: OpenAI API 基础地址(可选,默认 `https://api.openai.com`) 272 | - `DEMO_PASSWORD`: 临时演示密码,有调用次数限制(可选) 273 | - `DEMO_MAX_TIMES_PER_HOUR`: 演示密码每小时最大调用次数(默认 15 次) 274 | - `TAVILY_KEYS`: Tavily API Key 列表,用于联网搜索功能,多个用逗号分隔(可选) 275 | - `TITLE`: 自定义 Web 界面标题和 Favicon(可选,默认 `OpenAI Chat`) 276 | 277 | ### 不同 API 提供商配置示例 278 | 279 | 以下是常见 API 提供商的配置示例,帮助您快速配置环境变量: 280 | 281 | | API 提供商 | API_BASE | API_KEYS 示例 | MODEL_IDS 示例 | 备注 | 282 | | ----------------- | ------------------------------------------- | --------------------------- | --------------------------------------------------------------------------- | ------------------------------------------- | 283 | | **OpenAI 官方** | `https://api.openai.com` | `sk-proj-xxxxxx` | `gpt-4o,gpt-4o-mini,o1-preview,o1-mini` | 官方 API | 284 | | **Google Gemini** | `https://generativelanguage.googleapis.com` | `AIzaSyxxxxx1,AIzaSyxxxxx2` | `gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite` | 官方 API | 285 | | **心流 AI** | `https://apis.iflow.cn` | `sk-xxxx1,sk-xxxx2` | `qwen3-max,glm-4.6,kimi-k2,deepseek-v3.2-exp=DeepSeek V3.2` | 可以通过 `等号=` 自定义界面上外显的模型名称 | 286 | | **OpenRouter** | `https://openrouter.ai/api` | `sk-or-v1-xxxxxx` | `openrouter/polaris-alpha,minimax/minimax-m2:free` | 官方提供若干免费模型可供调用 | 287 | | **API 中转商 A** | `https://api.example.com` | `sk-xxxxxx` | `claude-sonnet-4.5,gemini-3-pro-preview-11-2025` (根据中转商提供的模型列表) | 第三方中转,注意服务稳定性和隐私 | 288 | 289 | **配置说明:** 290 | 291 | - OpenAI 官方:建议使用 Deno Deploy 部署 worker 292 | - Google AiStudio 官方(Gemini):需要使用 Google AI Studio 获取 API Key,适合使用 Gemini 系列模型,建议使用 Deno Deploy 部署 worker 293 | - 心流 AI:国内免费额度,适合体验国产大模型,Key 有效期约 7 天,Cloudflare Workers 部署即可 294 | - API 中转商:第三方服务,大部分都兼容 OpenAI API 格式 295 | 296 | **Deno Deploy 环境变量设置:** 297 | 298 | 1. 在项目设置页面找到 "Environment Variables" 299 | 2. 添加以下环境变量: 300 | - `SECRET_PASSWORD`: 共享密码,如 `mypassword123` 301 | - `API_KEYS`: API Key 列表,多个用逗号分隔,如 `sk-key1,sk-key2,sk-key3` 302 | - `MODEL_IDS`: 模型列表,如 `gpt-5-pro,gpt-5,gpt-5-mini`(必需) 303 | - `API_BASE`: 如 `https://api.openai.com`(可选) 304 | - `DEMO_PASSWORD`: 演示密码,如 `demo123`(可选) 305 | - `DEMO_MAX_TIMES_PER_HOUR`: 如 `10`(可选,默认 15) 306 | - `TAVILY_KEYS`: Tavily API Key 列表,如 `tvly-key1,tvly-key2`(可选,用于联网搜索) 307 | - `TITLE`: 自定义标题,如 `My AI Chat`(可选) 308 | 309 | **Cloudflare Workers 环境变量设置:** 310 | 311 | 1. 在 Worker 设置中找到 "Variables" 312 | 2. 添加环境变量(同上) 313 | 314 | ### 代码配置(备选) 315 | 316 | 如果不想使用环境变量,也可以直接在 `worker.js` 中修改: 317 | 318 | ```javascript 319 | // ⚠️ 注意: 当您fork项目并且仓库为公开时,请务必谨慎操作,以免您包含OpenAI密钥的Commit被暴露在公网,造成Key泄露的情况 320 | // ⚠️ 注意: 仅当您有密码共享需求时才需要配置这些变量 321 | // 否则无需配置,默认会使用 WebUI 填写的 API Key 进行请求 322 | 323 | // 共享密码 - 您和朋友约定的密码 324 | const SECRET_PASSWORD = 'your-shared-password'; 325 | 326 | // OpenAI API Key 列表 - 多个用逗号分隔,支持自动轮换,不建议这样明文写在代码里,谨防Key泄露! 327 | const API_KEYS = 'sk-key1,sk-key2,sk-key3'; 328 | 329 | // 支持的模型列表 - 多个用逗号分隔(必需) 330 | const MODEL_IDS = 'gpt-5-pro,gpt-5,gpt-5-mini'; 331 | 332 | // OpenAI API 基础地址(可选) 333 | const API_BASE = 'https://api.openai.com'; 334 | 335 | // 临时演示密码 - 有调用次数限制(可选) 336 | const DEMO_PASSWORD = 'demo123'; 337 | 338 | // 演示密码每小时最大调用次数 339 | const DEMO_MAX_TIMES_PER_HOUR = 15; 340 | 341 | // Tavily API Key 列表 - 用于联网搜索功能(可选) 342 | const TAVILY_KEYS = 'tvly-key1,tvly-key2'; 343 | 344 | // 自定义界面标题和 Favicon(可选) 345 | const TITLE = 'OpenAI Chat'; 346 | ``` 347 | 348 | ### 配置优先级 349 | 350 | 1. **环境变量** > **代码硬编码值** 351 | 2. 如果都未配置,将使用默认值: 352 | - `SECRET_PASSWORD`: 随机生成(如 `yijiaren.123`) 353 | - `API_KEYS`: 示例密钥(需要替换) 354 | - `MODEL_IDS`: 默认模型列表(如 `gpt-5-pro,gpt-5,gpt-5-mini`) 355 | - `API_BASE`: `https://api.openai.com` 356 | - `DEMO_PASSWORD`: 默认为空(不开启演示模式) 357 | - `DEMO_MAX_TIMES_PER_HOUR`: 默认为 `15` 358 | - `TAVILY_KEYS`: 默认为空(不开启联网搜索功能) 359 | - `TITLE`: 默认为 `OpenAI Chat` 360 | 361 | ### 使用说明 362 | 363 | **无需配置的情况:** 364 | 365 | - 如果您只是想个人使用,无需配置任何环境变量 366 | - 直接在 Web 界面输入您的 API Key 即可正常使用 367 | 368 | **需要配置的情况:** 369 | 370 | - 想要分享给朋友使用,避免暴露真实 API Key 371 | - 希望配置多个 API Key 实现负载均衡 372 | - 需要统一管理 API Key 373 | - 需要提供临时演示访问,限制调用次数 374 | - 需要开启联网搜索功能,为 AI 提供实时网络信息 375 | - 需要自定义界面标题和 Favicon 376 | 377 | ### 密码类型说明 378 | 379 | **正式密码 (`SECRET_PASSWORD`):** 380 | 381 | - 无调用次数限制 382 | - 适合长期使用 383 | - 建议设置强密码 384 | 385 | **演示密码 (`DEMO_PASSWORD`):** 386 | 387 | - 有调用次数限制(默认 15 次/小时) 388 | - 适合临时演示和测试 389 | - 超出限制后需要等待下一小时重置 390 | - 可通过 `DEMO_MAX_TIMES_PER_HOUR` 调整限制 391 | 392 | ### 安全建议 393 | 394 | - **优先使用环境变量**:避免在代码中硬编码敏感信息 395 | - **使用强密码**:设置复杂的 `SECRET_PASSWORD` 396 | - **定期轮换**:定期更换共享密码和 API Key 397 | - **访问控制**:不要在公开场合分享您的域名 398 | - **多密钥配置**:配置多个 API Key 提高可用性和稳定性 399 | 400 | ## 🔧 自定义修改 401 | 402 | ### 修改界面样式 403 | 404 | Web 界面的 HTML/CSS/JS 代码都在 `getHtmlContent()` 函数中,您可以: 405 | 406 | - 修改主题颜色 407 | - 调整布局结构 408 | - 添加新功能 409 | 410 | ### 添加新模型 411 | 412 | 在 `MODEL_IDS` 环境变量或代码中添加新的模型名称: 413 | 414 | ```javascript 415 | // 通过环境变量 416 | MODEL_IDS = 'gpt-5-pro,gpt-5,gpt-5-mini'; 417 | 418 | // 或在代码中 419 | const MODEL_IDS_DEFAULT = 'qwen3-max,kimi-k2,your-new-model'; 420 | ``` 421 | 422 | ## 📱 移动端支持 423 | 424 | 界面完全适配移动端: 425 | 426 | - 响应式布局 427 | - 触摸友好的操作 428 | - 侧边栏自动收缩 429 | - 优化的输入体验 430 | - 便捷分享功能: 431 | - **微信浏览器**: 显示图片弹窗,支持长按保存/转发 432 | - **其他浏览器**: 自动下载截图文件 433 | 434 | ## 🤝 贡献 435 | 436 | 欢迎提交 Issue 和 Pull Request! 437 | 438 | ## 📄 许可证 439 | 440 | 本项目采用 MIT 许可证,详见 [LICENSE](LICENSE) 文件。 441 | 442 | ## ⚠️ 注意事项 443 | 444 | - 历史记录仅保存在浏览器本地,更换设备或清除浏览器数据会丢失 445 | - 请合理使用 API,避免过度消耗配额 446 | - 建议定期备份重要的对话记录 447 | - 本项目仅供学习和个人使用 448 | 449 | ## 🙋‍♂️ 常见问题 450 | 451 | **Q: 只支持 OpenAI 的模型吗?**
452 | _A: 不是。本项目支持所有兼容 OpenAI API 格式的模型和服务,包括但不限于 OpenAI、Gemini、Qwen、GLM、Kimi、DeepSeek 等。只需配置相应的 `API_BASE` 和 `API_KEYS` 即可使用。_ 453 | 454 | **Q: 为什么推荐 Deno Deploy 而不是 Cloudflare Workers?**
455 | _A: Deno Deploy 部署简单快捷,提供稳定的全球访问。两个平台都适用,根据个人偏好选择即可。_ 456 | 457 | **Q: 两个平台的功能有区别吗?**
458 | _A: 功能完全相同,只是部署方式不同。代码都支持流式响应、密钥轮换、Web 界面等全部特性。_ 459 | 460 | **Q: 可以同时部署到两个平台吗?**
461 | _A: 可以的!`worker.js` 内部判断了当前服务器环境,可以同时部署到两个平台。_ 462 | 463 | **Q: 为什么选择两轮问答模式?**
464 | _A: 在保持简洁的基础上,支持一次追问能够满足大多数场景需求,避免过于复杂的多轮对话造成不可控的额外开销。_ 465 | 466 | **Q: 可以支持更多轮对话吗?**
467 | _A: 目前限制为两轮(一问一答+一次追问),这样设计是为了保持界面简洁和交互清晰。如需更复杂对话,建议在角色设定中添加上下文。_ 468 | 469 | **Q: 会话标题是如何生成的?**
470 | _A: 当您首次在会话中提问并得到回答后,系统会根据问题和回答的内容自动生成一个简洁的标题,方便您后续查找和管理会话。_ 471 | 472 | **Q: 分享功能在哪些环境下可用?**
473 | _A: 所有现代浏览器都支持。微信浏览器会显示图片弹窗供长按保存,其他浏览器会自动下载 PNG 文件。_ 474 | 475 | **Q: 历史记录可以导出吗?**
476 | _A: 目前使用 IndexedDB 存储,可以通过浏览器开发者工具查看和导出数据。_ 477 | 478 | **Q: 部署需要付费吗?**
479 | _A: Deno Deploy 和 Cloudflare Workers 都有免费额度,一般个人使用完全够用。_ 480 | 481 | **Q: 如何配置多个 API Key?**
482 | _A: 在环境变量 `API_KEYS` 中用逗号分隔多个密钥,如 `sk-key1,sk-key2,sk-key3`,系统会自动轮换使用。_ 483 | 484 | **Q: 不配置环境变量可以使用吗?**
485 | _A: 可以!如果不配置环境变量,直接在 Web 界面输入您的 API Key 即可正常使用。环境变量主要用于密码共享场景。_ 486 | 487 | **Q: 环境变量和代码配置的优先级?**
488 | _A: 环境变量优先级更高。如果设置了环境变量,会优先使用环境变量的值,否则使用代码中双竖线`||`后面的默认值。_ 489 | 490 | **Q: 忘记了共享密码怎么办?**
491 | _A: 查看您部署时配置的环境变量,或查看代码中的 `SECRET_PASSWORD` 常量。_ 492 | 493 | **Q: 演示密码和正式密码有什么区别?**
494 | _A: 演示密码 (`DEMO_PASSWORD`) 有调用次数限制,默认每小时最多 15 次,适合临时演示;正式密码 (`SECRET_PASSWORD`) 无限制,适合长期使用。_ 495 | 496 | **Q: 演示密码的调用次数用完了怎么办?**
497 | _A: 需要等待下一个小时重置,或者使用正式密码继续访问。管理员可以通过 `DEMO_MAX_TIMES_PER_HOUR` 环境变量调整限制次数。_ 498 | 499 | **Q: 如何开启联网搜索功能?**
500 | _A: 在环境变量中配置 `TAVILY_KEYS`,然后在 Web 界面勾选"联网搜索"选项即可。联网搜索会为 AI 提供实时的网络信息作为上下文,提升回答的时效性和准确性。_ 501 | 502 | **Q: Tavily API Key 如何获取?**
503 | _A: 访问 [Tavily](https://tavily.com/) 注册账号并获取 API Key。可以配置多个 Key 用逗号分隔,系统会自动轮换使用。_ 504 | 505 | **Q: 如何自定义界面标题和 Favicon?**
506 | _A: 通过环境变量 `TITLE` 设置自定义标题,如 `TITLE=My AI Assistant`。标题会同时影响网页标题和 Favicon 的显示样式。_ 507 | 508 | **Q: TITLE 环境变量是如何影响 Favicon 的?**
509 | _A: `TITLE` 中包含 Gemini 或 Qwen 字样时(忽略大小写),网站 Favicon 会自动变为相应的模型 Logo,否则 Logo 默认为 OpenAI 的样式。_ 510 | 511 | --- 512 | 513 | 如果这个项目对您有帮助,请给个 ⭐ Star! 514 | -------------------------------------------------------------------------------- /openai.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | OpenAI Chat 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 37 | 187 | 1222 | 1223 | 1224 | 1225 |
1226 | 1227 | 1236 | 1237 | 1243 |
1244 | 1245 | 1357 | 1358 |
1359 | 1360 |
1361 |

1362 |
1363 | 1370 | OpenAI Chat 1371 |
1372 |

1373 |
1374 | 1391 | 1401 |
1402 |
1403 | 1411 | 1418 |
1419 |
1420 | 1421 |
1422 |
1426 |

开始与 AI 对话

1427 |

选择一个模型并输入您的问题

1428 |
1429 |
1433 | 1434 |
1438 |

1439 | 1440 | 1450 | 1451 | 1458 |

1459 |
1463 |
1464 | 1465 |
1469 |

1470 | 1471 | 问题 1472 |  {{ formatTimeStr(currentSession.createdAt) 1474 | }} 1476 | 1477 |
1478 | 1486 | 1493 |
1494 |

1495 |
1499 | 1500 | 1515 |
1516 | 1517 |
1521 |

1522 | 1523 | 回答 1524 |  {{ getModelName(currentSession.model) }} 1527 | 1528 |
1529 | 1537 | 1544 |
1545 |

1546 |
1551 |
1552 | 1553 |
1557 |

1558 | 1559 | 追问 1560 |  {{ formatTimeStr(currentSession.createdAt2) 1562 | }} 1564 | 1565 |
1566 | 1574 | 1581 |
1582 |

1583 |
1587 | 1588 | 1603 |
1604 | 1605 |
1609 |

1610 | 1611 | 回答 1612 |  {{ getModelName(currentSession.model2) }} 1615 | 1616 |
1617 | 1624 | 1631 |
1632 |

1633 |
1638 |
1639 |
1640 |
1641 |
1642 | AI 正在思考中... 1643 |
1644 | 1645 |
1646 | {{ errorMessage }} 1647 |
1648 | 1649 | 1650 |
1654 | 1661 |
1662 |
1663 | 1664 |
1665 | 1666 |
1667 |
1672 | 1676 | 图片{{ index + 1 }} 1677 | 1684 |
1685 |
1686 | 1687 |
1688 | 1689 | 1697 | 1704 | 1705 | 1716 | 1724 |
1725 | 1732 | 1739 | 1747 |
1748 |
1749 |
1750 | 1751 | 1752 |
1753 |
1761 | 1762 |
1763 |

1764 | 🔍 搜索查询 1765 |

1766 |
1774 | {{ searchRes.query }} 1777 |
1778 |
1779 | 1780 | 1781 |
1782 |

1783 | 💡 AI 总结 1784 |

1785 |
1796 | {{ searchRes.answer }} 1797 |
1798 |
1799 | 1800 | 1801 |
1802 |
1803 |

1804 | 📚 搜索结果 ({{ searchRes.results.length }} 条) 1805 |

1806 |
1807 | 1808 |
1820 |
1821 | 1833 | {{ index + 1 }} 1834 | 1835 | 1836 | {{ result.title || '无标题' }} 1837 | 1838 |
1839 | 1840 |
1855 | {{ result.content.length > 300 ? result.content.slice(0, 300) + 1856 | '...' : result.content }} 1857 |
1858 | 1859 | 1879 |
1880 |
1881 | 1882 | 1883 |
1892 | 暂无搜索结果 1893 |
1894 |
1895 |
1896 | 1897 | 1898 |
1899 |
1900 |
1901 |

✨ 应用简介

1902 |

1903 | 这是一个简单易用的 OpenAI API 代理服务,基于 Deno Deploy / 1904 | Cloudflare Workers 部署。 只需要一个域名和 OpenAI API 1905 | Key,即可免费为家人朋友提供 AI 问答服务。 1906 |

1907 | 1908 |

🎯 核心功能

1909 |
    1910 |
  • 提供标准的 OpenAI API 代理端点
  • 1911 |
  • 支持密码保护,避免暴露 API Key
  • 1912 |
  • 内置精美的 Web 聊天界面
  • 1913 |
  • PWA 适配,支持移动设备添加到桌面
  • 1914 |
  • 流式响应,实时显示 AI 回答
  • 1915 |
  • 基于 IndexedDB 本地历史记录存储
  • 1916 |
  • 支持模型切换和自定义系统提示词
  • 1917 |
  • 集成 Tavily 搜索,为 AI 提供实时网络信息
  • 1918 |
  • 一键生成问答截图,方便分享
  • 1919 |
  • 智能会话命名,便于查找管理
  • 1920 |
1921 | 1922 |

🔗 GitHub 仓库

1923 |

1924 | 1929 | https://github.com/icheer/openai-webui-lite 1930 | 1931 |

1932 | 1933 |

1934 | 请合理使用 AI 资源,避免滥用! 1935 |

1936 |
1937 |
1938 |
1939 |
1940 | 1941 | 3862 | 3863 | 3864 | --------------------------------------------------------------------------------