name: openai-api description: OpenAI API的完整指南:Chat Completions (GPT-5.2, GPT-4o), Embeddings, Images (GPT-Image-1.5), Audio (Whisper + TTS + Transcribe), Moderation。包括Node.js SDK和fetch方法。 license: MIT
OpenAI API
包: openai@6.9.1 | 最后更新: 2025-11-21
快速开始
bun add openai
export OPENAI_API_KEY="sk-..."
import OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello!' }]
});
当前模型 (2025)
- gpt-5.2: 最强能力(128k上下文)
- gpt-4o: 快速多模态(128k上下文)
- gpt-4o-mini: 性价比高(128k上下文)
- gpt-4o-transcribe: 音频转录优化
- gpt-4o-mini-transcribe: 性价比高的转录
- o1-preview: 高级推理(128k上下文)
- o1-mini: 快速推理(128k上下文)
聊天完成
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [
{ role: 'system', content: '你是一个有用的助手' },
{ role: 'user', content: '解释AI' }
],
temperature: 0.7,
max_tokens: 1000
});
流式处理
const stream = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: '讲一个故事' }],
stream: true
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
函数调用
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: '天气怎么样?' }],
tools: [{
type: 'function',
function: {
name: 'getWeather',
parameters: {
type: 'object',
properties: { location: { type: 'string' } },
required: ['location']
}
}
}]
});
嵌入
const response = await client.embeddings.create({
model: 'text-embedding-3-small',
input: '你的文本在这里'
});
const embedding = response.data[0].embedding; // 1536维
图像 (GPT-Image-1.5)
const image = await client.images.generate({
model: 'gpt-image-1.5',
prompt: '宁静的风景',
size: '1024x1024',
quality: 'standard' // 或'hd'
});
音频
转录 (Whisper):
const transcription = await client.audio.transcriptions.create({
file: fs.createReadStream('audio.mp3'),
model: 'whisper-1'
});
文本转语音:
const speech = await client.audio.speech.create({
model: 'tts-1',
voice: 'alloy',
input: '你好,世界'
});
常见错误
- 无效API密钥 (401): 验证OPENAI_API_KEY
- 速率限制 (429): 实现指数退避
- 模型未找到 (404): 使用正确的模型名称
- 上下文长度 (400): 减少输入大小
- 无效JSON: 修复函数调用模式
参见: references/error-catalog.md
资源
参考指南
references/models-guide.md- 完整模型比较和选择references/function-calling-patterns.md- 函数调用最佳实践references/structured-output-guide.md- 使用JSON Schema的结构化输出references/embeddings-guide.md- 文本嵌入和向量搜索references/images-guide.md- GPT-Image-1.5图像生成references/audio-guide.md- Whisper转录 + TTSreferences/cost-optimization.md- 令牌优化和定价references/top-errors.md- 前20错误及解决方案references/error-catalog.md- 完整错误参考
模板
templates/basic-usage.ts- 快速开始示例templates/chat-completion-basic.ts- 基础聊天完成templates/chat-completion-nodejs.ts- Node.js实现templates/streaming-chat.ts- 流式响应templates/streaming-fetch.ts- 使用fetch API的流式处理templates/function-calling.ts- 工具和函数调用templates/structured-output.ts- JSON Schema输出templates/vision-gpt4o.ts- GPT-4o的视觉templates/embeddings.ts- 文本嵌入templates/image-generation.ts- GPT-Image-1.5生成templates/image-editing.ts- 图像编辑templates/audio-transcription.ts- Whisper转录templates/text-to-speech.ts- TTS和语音templates/moderation.ts- 内容审核templates/rate-limit-handling.ts- 指数退避templates/cloudflare-worker.ts- Cloudflare Workers集成