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


version: '3'services:chatgpt-client:...environment:APP_HOSTNAME: "http://10.11.12.240:8090"...sparrow:...environment:WEB_CLIENT_HOSTNAME: "http://10.11.12.240:8090"...
当完成配置的调整后,我们重新使用up 启动服务,能够看到日志输出的内容中包含了我们新的配置地址:
【让 OpenAI 更 Open,在 ChatGPT 里自由接入数据源】...chatgpt-sparrow-1| Sparrow vv0.10.1chatgpt-sparrow-1| Sparrow Service has been launched chatgpt-chatgpt-client-1| [OpenAI Chat Client] http://10.11.12.240:8090chatgpt-chatgpt-client-1| - Project: https://github.com/soulteary/docker-chatgptchatgpt-chatgpt-client-1| - Release: 2023.05.19 v1
是不是非常简单?当然,这个仅仅是个 Demo,“ API 数据源”在开源的后端代码项目里是这样的,只有不到 40 行:

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

文章插图
package OpenaiAPIimport ("context""fmt""net/http""net/url"openai "github.com/sashabaranov/go-openai""github.com/soulteary/sparrow/internal/define")func GetClient() *openai.Client {config := openai.DefaultConfig(define.OPENAI_API_KEY)if define.ENABLE_OPENAI_API_PROXY {proxyUrl, err := url.Parse(define.OPENAI_API_PROXY_ADDR)if err != nil {panic(err)}transport := &http.Transport{Proxy: http.ProxyURL(proxyUrl)}config.HTTPClient = &http.Client{Transport: transport}}return openai.NewClientWithConfig(config)}func Get(prompt string) string {c := GetClient()resp, err := c.CreateChatCompletion(context.Background(),openai.ChatCompletionRequest{Model:openai.GPT3Dot5Turbo,Messages: []openai.ChatCompletionMessage{{Role: openai.ChatMessageRoleUser, Content: prompt}},},)if err != nil {return fmt.Sprintf("OpenAI API, Chat Completion error: %v\n", err)}return resp.Choices[0].Message.Content}
如果你想有更好的体验,比如完整的会话记录管理、多轮会话上下文保持,欢迎来开源项目中提交你的改进代码 。
基础使用:官方不支持的图文模型
接下来,我们来看看如何在中使用官方原本不支持的数据源或模型 。比如我们先来折腾一个接入获取难度非常低、支持在线申请免费 API 使用的,智源研究院推出的 Flag图文大模型 。
使用的配置文件和使用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# [私有实现的 FlagStudio 服务] *可选# => 启用 FlagStudioENABLE_FLAGSTUDIO: "on"# => 只启用 FlagStudio 数据源ENABLE_FLAGSTUDIO_ONLY: "off"# => FlagStudio API Key# FLAGSTUDIO_API_KEY: "your-flagstudio-api-key", like: `238dc972f6a2ebf15d787aef659cc4d1` (页面上获取)FLAGSTUDIO_API_KEY: "填写你自己的 API KEY"logging:driver: "json-file"options:max-size: "10m"
先将上面的内容保存为 -.yml,接着注册一个账号,访问官方文档页面获取你自己的 API Key,并将它更新到上面配置中的。
每个 API 每天能够调用生成 500 张图,如果生成效果不好,使用自带的“”问题重写、补充连续对话、重新生成按钮都可以重新生成图片 。