共计 1717 个字符,预计需要花费 5 分钟才能阅读完成。
一、什么是 ChatGPT API
除了平时我们在 openai 官网上在线对话使用,官方还提供了另一种接入 gpt 的方式——通过网络请求发送对话内容,并得到 gpt 的回复。可以在个人控制台(https://platform.openai.com/organization/api-keys)申请 apikey,然后会得到一串格式为 sk-xxxxxxxx 的字符串。对于 api 的使用,官方也提供了详细的文档说明(https://platform.openai.com/docs/api-reference/chat)。事实上,ChatGPT API 的功能不仅限于对话,也支持图像生成、语音转文字、文字转语音等多种功能。而即使是对话功能,官方也提供了不同版本的模型,例如 gpt-4o、gpt-3.5-turbo、gpt-3.5-turbo-0125 等等,不同的模型的能力略有差异(价格也有差异)。
不过,这个功能是收费的,并且国内的网络也无法直接访问 openai 的接口。因此,有许多灰产当起了“中转站”,以某种方式赚取差价,并且给出了不少新用户注册免费 x 刀余额的活动,这就给我们白嫖提供了机会。
二、提供 GPT API 中转服务的网站
由于理论上这些不属于合法产业,网站运营方大多也是肉身在外个人老板,因此注册时 请不要留下任何有关实名、手机号等个人信息,尽量避免充值。
笔者所使用过的网站有:
https://www.gptapi.us/(注册有 0.2 刀的体验额度)
https://api.openai-ch.top/(目前正在使用的)
https://www.dwyu.top/(也接入了 mid-journey 等其他 AI)
总之,感觉这些网站就像机场一样随时都会跑路的样子,毕竟也不是正规企业,随便用用就好。好在 GPT 接口使用方式都较为统一,可以在各网站提供的接口之间快速切换。
三、API 使用方法
大多接口都使用 POST 方法进行请求。一个请求需要包含请求地址(URL)、请求头(headers)、请求体(body)。对于 openai 官方的 GPT API 而言,如果使用 chat 功能,请求地址为
https://api.openai.com/v1/chat/completions
请求头包含了 apikey 的信息,例如:
$headers = array(
"Authorization: sk-PC96K8nFlMSBMWwL1cAa6f416d86401283Ec620376A1180c",
"Content-Type: application/json"
);
请求体包含了模型版本、以及模型所需要的参数(比如对话内容、对话预设、历史记录),例如:
$data = array("model" => "gpt-3.5-turbo",
"messages" => array(
array("role" => "system",
"content" => "你是一名昆曲专家,正在穿着戏服唱完了《游园惊梦》。现在你将接受学生们的提问,回答字数在 50 字以内。"
),
array("role" => "user",
"content" => $ask
)
)
);
然后发送请求,即可得到回复,响应内容为 json,可以自行提取需要的内容。
四、中转站 API 使用的差异
没什么差异,一般就是把请求头换成中转站的网址,apikey 使用中转站上申请的 sk 就好了。但有些模型版本可能不支持,具体需要看每个站点提供的文档说明,但基本都是通用的。
例如笔者正在使用 https://api.openai-ch.top/ 的 API,那请求地址就做出如下更改:
// 官方地址
https://api.openai.com/v1/chat/completions
// 更改地址
https://api.openai-ch.top/v1/chat/completions
// 后面的后缀一般不变,只是前面的地址变了
这里贴出一个星云 API 的文档链接,其实就是 openai 官方文档的汉化版,以及改了请求地址而已(https://apifox.com/apidoc/shared-9d166c52-faf7-4310-9a6f-51bcc62ecfa9/endpoint-134405488)。