项目介绍:OpenAI Node API 库
OpenAI Node API 库是一个面向开发者的工具包,专门用于在Node.js或浏览器环境中,通过TypeScript或JavaScript调用OpenAI的REST API。它基于OpenAPI规范生成,为开发者提供了一种直接、便捷的方式来与OpenAI的多模型交互,例如GPT-3.5和GPT-4。
安装
要使用这个库,开发者只需运行以下命令以安装:
npm install openai
安装后,可以通过以下方式引入库:
import OpenAI from 'openai';
基本用法
如果你希望了解如何使用这个库的详细信息,可以查看api.md文件和代码示例。以下是一个简单的使用范例:
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env['OPENAI_API_KEY'],
});
async function main() {
const chatCompletion = await client.chat.completions.create({
messages: [{ role: 'user', content: '这是一项测试任务' }],
model: 'gpt-3.5-turbo',
});
}
main();
流响应支持
OpenAI Node API 库支持流响应,通过服务器发送事件(SSE)来处理数据流。
import OpenAI from 'openai';
const client = new OpenAI();
async function main() {
const stream = await client.chat.completions.create({
model: 'gpt-4',
messages: [{ role: 'user', content: '这是一个测试' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
}
main();
如果需要中断流,可以通过在循环中使用break
或调用stream.controller.abort()
。
请求和响应类型
该库为所有请求参数和响应字段提供了TypeScript类型定义,这有助于确保开发过程中参数和响应的正确性。
高级功能
自动分页
对于API中需要分页的方法,可以方便地使用for await … of
语法遍历所有页面的项目:
async function fetchAllFineTuningJobs(params) {
const allFineTuningJobs = [];
for await (const fineTuningJob of client.fineTuning.jobs.list({ limit: 20 })) {
allFineTuningJobs.push(fineTuningJob);
}
return allFineTuningJobs;
}
处理错误
当库无法连接到API时,或者如果API返回非成功状态码(如4xx或5xx响应),将抛出APIError
的子类。例如:
async function main() {
const job = await client.fineTuning.jobs
.create({ model: 'gpt-3.5-turbo', training_file: 'file-abc123' })
.catch(async (err) => {
if (err instanceof OpenAI.APIError) {
console.log(err.status); // 400
console.log(err.name); // BadRequestError
console.log(err.headers); // {server: 'nginx', ...}
} else {
throw err;
}
});
}
main();
Microsoft Azure OpenAI
若要在Microsoft Azure上使用此库,只需引入AzureOpenAI
类,而不是OpenAI
类,并根据Azure文档进行配置。
版本和支持
该库支持最新的Node.js、Deno、Bun,以及云环境如Cloudflare Workers和Vercel Edge Runtime。Web浏览器的支持默认为关闭状态,以避免暴露敏感的API密钥,不过可以通过设置dangerouslyAllowBrowser
为true
来启用。
通过这些功能,OpenAI Node API库为开发者提供了一个灵活且全面的工具套件,能够在不同平台和应用场景下流畅使用OpenAI的强大模型。