使用ChatGPT api接口,想要一个稳定且快速的独立服务,推荐使用 Deno Deploy。Deno Deploy 是一个分布式系统,允许你在全球范围内靠近用户的边缘运行 JavaScript、TypeScript 和 WebAssembly。你可以把 Deno 程序直接部署到上面运行,它有免费版和按月收费版本,免费版对于个人使用来说已经完全足够了。
代理程序
使用deno写一个代理OpenAI的接口非常简单。启动一个服务,然后把请求转发到目标服务:
import { Server } from "https://deno.land/std/http/server.ts";
const TARGET = "https://api.openai.com";
const handler = async (request: Request) => {
const url = new URL(request.url);
const targetUrl = new URL(TARGET + url.pathname + url.search);
return await fetch(targetUrl.toString(), {
method: request.method,
headers: request.headers,
body: request.body,
});
};
const server = new Server({ handler });
console.log("server listening on http://localhost:80");
await server.listenAndServe();
部署
部署方式主要有3种:
- 通过与GitHub的集成来部署更复杂的项目。您可以将Deno Deploy项目与GitHub存储库链接起来,并使用GitHub Action定义构建步骤,在每次推送到存储库时自动部署。
- 使用deployctl命令行工具部署代码。这种方式可以比上述自动的GitHub集成更加精细地控制部署的细节。
- 通过Deno Deploy Playground来部署一些简单的代码。这是最简单的部署方式。
详细部署方法可以查看How to deploy | Deploy Docs (deno.com)
在这里提供了一键部署,GitHub - wenyikun/deno-proxy: Using Deno as a proxy server.
调用接口
完成部署之后,会有自带域名,可以通过postman等网络请求工具测试,下面提供nodejs测试ChatGPT聊天的接口。
const axios = require('axios')
axios.post("https://xxx.deno.dev/v1/chat/completions", {
"model": "gpt-3.5-turbo",
"messages": [{ "role": "user", "content": "Hello!" }],
"stream": true
}, {
responseType: "stream",
headers: {
"Authorization": 'Bearer $OPENAI_API_KEY'
}
}).then(resp => {
resp.data.on("data", (chunk) => {
console.log(chunk.toString())
})
})
正常输出表示没有问题,同样还可以调用其他接口。