概述
OpenAI API 是目前最流行的 LLM 接口之一,提供了统一的调用方式,支持多种模型和功能。本教程使用 DeepSeek API(兼容 OpenAI API 格式)来构建我们的 AI Agent。
API 基础
认证
1 2 3 4
| const openai = new OpenAI({ apiKey: process.env.DEEPSEEK_API_KEY, baseURL: 'https://api.deepseek.com/v1' });
|
基本调用
1 2 3 4 5 6 7 8 9
| const response = await openai.chat.completions.create({ model: 'deepseek-chat', messages: [ { role: 'system', content: '你是一个有用的助手。' }, { role: 'user', content: '你好!' } ] });
console.log(response.choices[0].message.content);
|
消息格式
角色类型
1 2 3 4 5 6
| type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
interface Message { role: MessageRole; content: string; }
|
消息示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| const messages: Message[] = [ { role: 'system', content: '你是一个编程专家,擅长 TypeScript。' }, { role: 'user', content: '如何用 TypeScript 定义接口?' }, { role: 'assistant', content: '在 TypeScript 中,可以使用 interface 关键字...' }, { role: 'user', content: '能给我一个完整示例吗?' } ];
|
参数说明
核心参数
| 参数 |
类型 |
说明 |
默认值 |
model |
string |
使用的模型 |
- |
messages |
Message[] |
对话历史 |
- |
temperature |
number |
随机性 (0-2) |
1.0 |
max_tokens |
number |
最大输出 token 数 |
- |
stream |
boolean |
是否流式输出 |
false |
tools |
Tool[] |
可用工具列表 |
- |
Temperature
1 2 3 4 5 6 7 8 9 10 11 12 13
| const response1 = await openai.chat.completions.create({ model: 'deepseek-chat', messages: [{ role: 'user', content: '写一个问候语' }], temperature: 0.1 });
const response2 = await openai.chat.completions.create({ model: 'deepseek-chat', messages: [{ role: 'user', content: '写一个故事' }], temperature: 1.5 });
|
Max Tokens
1 2 3 4 5
| const response = await openai.chat.completions.create({ model: 'deepseek-chat', messages: [{ role: 'user', content: '详细介绍 AI' }], max_tokens: 100 });
|
错误处理
常见错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| try { const response = await openai.chat.completions.create({ model: 'deepseek-chat', messages: messages }); } catch (error) { if (error instanceof OpenAI.APIError) { console.error('API 错误:', error.message); console.error('状态码:', error.status); switch (error.status) { case 401: console.error('API Key 无效'); break; case 429: console.error('请求过多,请稍后重试'); break; case 500: console.error('服务器错误,请稍后重试'); break; } } }
|
完整示例
简单对话
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: process.env.DEEPSEEK_API_KEY, baseURL: 'https://api.deepseek.com/v1' });
async function simpleChat() { const response = await openai.chat.completions.create({ model: 'deepseek-chat', messages: [ { role: 'system', content: '你是一个友好的助手。' }, { role: 'user', content: '请介绍一下你自己。' } ] }); console.log('AI:', response.choices[0].message.content); }
simpleChat();
|
多轮对话
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| async function multiTurnChat() { const messages: Message[] = [ { role: 'system', content: '你是一个编程助手。' } ]; messages.push({ role: 'user', content: 'TypeScript 是什么?' }); let response = await openai.chat.completions.create({ model: 'deepseek-chat', messages }); messages.push({ role: 'assistant', content: response.choices[0].message.content }); messages.push({ role: 'user', content: '它和 JavaScript 有什么区别?' }); response = await openai.chat.completions.create({ model: 'deepseek-chat', messages }); console.log('AI:', response.choices[0].message.content); }
|
下一步
理解了 OpenAI API 的基本使用后,我们将在下一节实现第一个 AI 对话程序。
导航
上一篇: 1.4 本教程学习路径
下一篇: 2.2 第一个 AI 对话程序