让 OpenAI 更 Open,在 ChatGPT 里自由接入数据源

本篇文章中,我们简单聊聊如何在的Web 客户端中,自由的接入和使用各种数据源 。
写在前面
三月以来,我在官方客户端上做了不少实践,也做过一些技术分享 。也在网上晒过一些折腾的有趣的事情:
有不少朋友好奇其中的实现,也有一些朋友觉得Web 客户端是一个很棒的载体,拥有着不错的交互形式,希望能够使用这种方式来玩,节约大量不必要的系统开发成本,以及期待能够一起进行开源共建 。
最近,在一位合作伙伴的推动下,从五一假期开始,我们陆陆续续进行了“”后端服务的代码重写,以及部分敏感信息的剥离:把的前端封装成了独立的容器,并重写了一套兼容客户端的后端服务 。
让任何人都可以在本地启动一套和官方交互体验一致的客户端,并能够根据自己需求接入合适的信息源来玩:
目前,这两个项目分别开放在了上:
或许等待后端相对完善之后,我会重写一套完全开源的前端客户端,让整个项目变的真的完整起来 。
基础使用: API
在项目的示例目录中,我们能够找到一些开箱即用的使用 Demo,先来看看最简单的接入API 的配置示例:
version: '3'services:# 能够私有化部署的 ChatGPT Web 客户端chatgpt-client:image: soulteary/chatgptrestart: alwaysports:- 8090:8090environment:# 容器中的服务使用的端口APP_PORT: 8090# 前端使用的 ChatGPT 客户端域名,需要和 `sparrow` 中的 `WEB_CLIENT_HOSTNAME` 中的设置保持一致APP_HOSTNAME: "http://localhost:8090"# 客户端使用的服务端地址,如果你使用这个配置文件,可以保持下面的数值,否则需要调整为 `sparrow` 部署的实际地址APP_UPSTREAM: "http://sparrow:8091"# 开源实现的后端服务sparrow:image: soulteary/sparrowrestart: alwaysenvironment:# [基础设置]# => ChatGPT Web 客户端使用的域名,需要和 `chatgpt-client` 的 `APP_HOSTNAME` 保持一致WEB_CLIENT_HOSTNAME: "http://localhost:8090"# => 服务端口,默认端口: 8091# APP_PORT: 8091# [私有使用 OpenAI API 服务设置] *可选配置# => 启用 OpenAI APIENABLE_OPENAI_API: "on"# => OpenAI API Key,填写你自己的 KEYOPENAI_API_KEY: "sk-123456789012345678901234567890123456789012345678"# => 启用访问 API 的代理,如果你不是在海外服务器使用# OPENAI_API_PROXY_ENABLE: "on"# => 设置 API 代理地址, eg: `"http://127.0.0.1:1234"` or ""# OPENAI_API_PROXY_ADDR: "http://127.0.0.1:1234"logging:driver: "json-file"options:max-size: "10m"
我们将上面的文件保存为 -.yml ,访问的 API Key 管理页面,将自己的 API 更新到配置中 。接着,使用up 启动程序,将看到类似下面的日志输出:
# docker compose down && docker compose up[+] Running 9/9? sparrow 2 layers [??]0B/0BPulled41.5s ? 178ce6ca3c2d Pull complete2.6s ? 6e49bc84596f Pull complete6.1s ? chatgpt-client 5 layers [?????]0B/0BPulled25.7s ? 2408cc74d12b Already exists0.0s ? 53e036a1e5c8 Pull complete2.9s ? b6a24d60453c Pull complete3.7s ? a5072006fa7c Pull complete6.3s ? 8a30712078cf Pull complete6.3s [+] Running 3/1? Network chatgpt_defaultCreated0.1s ? Container chatgpt-sparrow-1Created0.0s ? Container chatgpt-chatgpt-client-1Created0.0s Attaching to chatgpt-chatgpt-client-1, chatgpt-sparrow-1chatgpt-sparrow-1| Sparrow vv0.10.1chatgpt-sparrow-1| Sparrow Service has been launched chatgpt-chatgpt-client-1| [OpenAI Chat Client] http://localhost:8090chatgpt-chatgpt-client-1| - Project: https://github.com/soulteary/docker-chatgptchatgpt-chatgpt-client-1| - Release: 2023.05.19 v1
等待服务启动完毕,我们在浏览器中打开 :8090 (或你自定义的地址) 就能够使用自己搭建的服务了 。
如果你希望将服务搭建在其他的机器上,只需要调整上面配置中的两个环境变量即可(比如 :8090):