前言

​ 本文简单记录介绍一下ChatGPT-to-API项目。

​ ChatGPT-to-API是一个将CHatGPT网页版请求转换成OpenAI API格式的工具,无须使用API KEY就能直接兼容第三方客户端的API使用方式。


正文

一、什么是ChatGPT-to-API

ChatGPT网页版可以免费使用gpt-3.5,但是官方客户端不好用,很多时候需要的是浏览器插件或其他形式的工具,现在第三方工具使用的主要是OpenAI API KEY访问,并且想要开发这类工具也需要接入API访问。但是,众所周知的是,绑定OpenAI API需要信用卡,中国的还不支持,使用API KEY访问ChatGPT在支付费用上计较麻烦,同时我们还要贯彻能白嫖就白嫖,如果能直接用ChatGPT网页版代替API方式岂不是很妙!

这个项目就是干这个的:以兼容OpenAI API的形式访问ChatGPT网页版,无需付费,所有使用API访问的第三方客户端均可使用,前提是api.openai.com的url可以手动替换的。

二、ChatGPT-to-API部署

可以参考中文部署教程完成部署,可以部署在本地个人使用,也可以部署在服务器,用于外部使用。这里不详细介绍部署过程,使用Docker部署很方便。

后端代理

主要介绍一下后端代理部分,ChatGPT-to-API项目是一个前端无界面服务,用于转换外部API格式的请求为ChatGPT网页版的请求格式,所以需要提供ChatGPT的后端代理服务地址,比如说官方的url是https://chat.openai.com/backend-api/conversation,但是直接用这个url几乎是不行的,OpenAI有Cloudflare保护机制(使用PLUS用户的PUID似乎可以过这个防护),所以使用的都是第三方代理或自行搭建。

第三方代理

这里提供了第三方代理地址,可以直接使用,或者使用go-chatgpt-api项目自行搭建代理服务,都挺方便的。

三、ChatGPT-to-API使用

获取AccessToken

使用项目需要ChatGPT网页版账号信息,一般使用AccessToken,可以通过官网获取,提前在浏览器登录好账户,然后访问这个地址就能得到。

使用

在docker-compose.yaml中增加ACCESSTOKEN参数启动容器,就能像OpenAI API一样访问ChatGPT了,比如使用端口8080,就可以使用http://127.0.0.1:8080/v1/chat/completions了,对于第三方客户端,可以在自定义的OpenAI API地址里填上http://127.0.0.1:8080,就能正常使用了,不需要API KEY。

增加验证

直接使用原项目部署在服务器上公开访问会让所有能访问这个地址的人直接使用服务,没有验证信息,所以自己部署前可以增加验证字段,防止他人滥用,比如使用自定义的API KEY作为验证密码,这样接入第三方工具时本应填API KEY的地方可以填上定义好的假KEY,还能顺便作个验证。

验证代码很容易写,这里提供一种思路:

在项目目录的handlers.go文件104行修改代码:

1
2
3
4
5
6
7
8
authHeader := c.GetHeader("Authorization")
customAccessToken := strings.Replace(authHeader, "Bearer ", "", 1)
if customAccessToken != "sk-fake key" {
c.JSON(500, gin.H{
"error": "error key",
})
return
}

然后在docker-compose.yaml中使用build: .代替image: chatgpt-to-api,运行docker-compose up,就能从本地重新编译代码生成容器,此时只有输入的API KEY与自定义的KEY一致才能使用服务。

四、总结

ChatGPT-to-API可以免费使用ChatGPT,并转换成OpenAI API接口,非常方便接入第三方客户端工具。


最后

参考文章:

官方项目

中文部署教程


声明

本文仅作为个人学习记录。