前言
OpenAI官网:OpenAI
API文档:文档
环境搭建
Node依赖安装
// 安装依赖
// 提供服务器
npm i express
// OpenAI相关依赖
npm i openai
// 环境变量注入
npm i dotenv
开启服务
// index.js
import express from "express";
import openai from "openai";
import dotenv from "dotenv";
const app = express();
app.post("/chat", (req, res) => {
res.send("6666");
});
app.listen(3000, () => {
console.log("正在监听3000端口...");
});
使用nodemon index.js开启服务
访问接口
// index.http
POST http://localhost:3000/chat HTTP/1.1
Content-Type: application/json
{
"message": "你好"
}
发送请求之后发现返回666,OK的也是成功调通接口
Express 默认不支持 POST 参数的接收,使用
app.use(express.json())即可。使用
vscode插件Rest Client即可通过http后缀的文件发送请求访问接口,具体使用请自行查阅。
创建 OpenAI 实例
// index.js
// 注入环境变量
dotenv.config()
// 创建 OpenAI 实例
// 由于 apiKey 需要保密,使用 dotenv 进行注入
const openai = new OpenAI({
apiKey: process.env["API-KEY"], // openai 官网申请(没额度)或代理openkey.cloud
baseURL: "https://openkey.cloud/v1" // 使用代理需要填写
})
// .env
API-KEY = "apiKey"
使用
dotenv注入变量,需要在根目录下创建文件.env
完善接口
// 具体使用请参考前言的 API 文档
app.post("/chat", async (req, res) => {
const result = await openai.chat.completions.create({
model: "gpt-4-turbo",
messages: [
{
role: "user",
content: req.body.message
}
]
});
res.json({
message: result.choices[0].message.content
});
});
生成图片接口
app.use("/create/image", async (req, res) => {
const result = await openai.images.generate({
model: "dall-e-3",
quality: "hd",
n: 1,
prompt: req.body.message
});
res.json({
message: result.data[0].url
});
})
完整代码
import express from "express";
import OpenAI from "openai";
import dotenv from "dotenv";
// 注入环境变量
dotenv.config()
// 创建 OpenAI 实例
// 由于 apiKey 需要保密,使用 dotenv 进行注入
const openai = new OpenAI({
apiKey: process.env["API-KEY"], // openai 官网申请(没额度)或代理openkey.cloud
baseURL: "https://openkey.cloud/v1" // 使用代理需要填写
})
const app = express();
// express 默认不支持 POST 参数的接收
app.use(express.json());
// req.body 接收 POST 参数
// req.query 接收 GET 参数
// req.params 接收动态参数
app.post("/chat", async (req, res) => {
const result = await openai.chat.completions.create({
model: "gpt-4-turbo",
messages: [
{
role: "user",
content: req.body.message
}
]
});
res.json({
message: result.choices[0].message.content
});
});
app.use("/create/image", async (req, res) => {
const result = await openai.images.generate({
model: "dall-e-3",
quality: "hd",
n: 1,
prompt: req.body.message
});
res.json({
message: result.data[0].url
});
})
app.listen(3000, () => {
console.log("正在监听3000端口...");
});