概述
本指南介绍使用 OpenAI 语言模型的基本概念,这些概念构成了构建 AI 智能体(Agent)的基础。
什么是 OpenAI API?
OpenAI API 提供了对 GPT-4o 和 GPT-3.5-turbo 等强大语言模型的编程访问。你无需在本地运行模型,只需向 OpenAI 的服务器发送请求并接收响应。
核心特性:
- 基于云端(Cloud-based):模型运行在 OpenAI 的基础设施上
- 按使用付费(Pay-per-use):按 token 消耗计费
- 生产就绪(Production-ready):企业级的可靠性和性能
- 最新模型:可即时访问最新发布的模型
与本地大语言模型的对比
| 方面 | OpenAI API | 本地大语言模型 |
|---|---|---|
| 安装配置 | 仅需 API 密钥 | 需要下载模型,需要 GPU/内存 |
| 成本 | 按 token 付费 | 初始设置后免费 |
| 性能 | 稳定、高质量 | 取决于你的硬件 |
| 隐私 | 数据发送到 OpenAI | 完全本地/私密 |
| 可扩展性 | 无限制(需付费) | 受硬件限制 |
聊天补全 API(Chat Completions API)
请求-响应周期
关键点:每次请求都是独立的。API 不会存储对话历史。
消息角色:对话结构
每条消息都有一个 role 属性,用于确定其用途。
1. 系统消息(System Message)
{ role: 'system', content: 'You are a helpful Python tutor.' }
用途:定义 AI 的行为、人格和能力
- AI 的"职位描述"
- 对终端用户不可见
- 设定约束和指导方针
2. 用户消息(User Message)
{ role: 'user', content: 'How do I use async/await?' }
用途:代表人类的输入或问题
3. 助手消息(Assistant Message)
{ role: 'assistant', content: 'Async/await is a way to handle promises...' }
用途:代表 AI 之前的响应,提供对话历史和上下文。
对话流程示例
[
{ role: 'system', content: 'You are a math tutor.' },
{ role: 'user', content: 'What is 15 * 24?' },
{ role: 'assistant', content: '15 * 24 = 360' },
{ role: 'user', content: 'What about dividing that by 3?' },
{ role: 'assistant', content: '360 / 3 = 120' },
]
无状态性:一个关键概念
最重要的原则:OpenAI 的 API 是无状态的(Stateless)。
什么是无状态?
每次 API 调用都是独立的。模型不会记住之前的请求。
如何维护上下文
你必须发送完整的对话历史:
const messages = [];
// 第一轮
messages.push({ role: 'user', content: 'My name is Alice' });
const response1 = await client.chat.completions.create({
model: 'gpt-4o',
messages: messages
});
messages.push(response1.choices[0].message);
// 第二轮 - 包含完整历史
messages.push({ role: 'user', content: "What's my name?" });
const response2 = await client.chat.completions.create({
model: 'gpt-4o',
messages: messages // 完整对话!
});
温度参数(Temperature):控制随机性
温度参数控制模型输出的"创造性"或"随机性"。
技术原理
在生成每个 token 时,模型会为可能的下一个 token 分配概率:
实用指南
| 温度范围 | 适用任务 | 示例 |
|---|---|---|
| 0.0 - 0.3 | 代码生成、数据提取、事实性问答 | temperature: 0.1 |
| 0.5 - 0.9 | 一般对话、客户支持、内容摘要 | temperature: 0.7 |
| 1.0 - 2.0 | 故事写作、头脑风暴、创意内容 | temperature: 1.3 |
流式传输(Streaming):实时响应
非流式传输(默认)
流式传输
何时使用哪种方式
- 使用非流式传输:批处理脚本、简单命令行工具、API 端点
- 使用流式传输:聊天界面、交互式应用、面向用户的应用
Token(令牌):大语言模型的货币
什么是 token?
Token 是语言模型处理的基本单位。它们不完全等于单词,而是文本的片段。
为什么 token 很重要
- 成本:按 token 付费(输入 + 输出)
- 上下文限制:每个模型有最大 token 限制
- 性能:更多 token = 更长的处理时间和更高的成本
模型选择:选择合适的工具
👑
GPT-4o
最强大的模型,适合复杂推理、代码生成、技术内容等对质量要求高的应用。
⚖
GPT-4o-mini
性能良好、成本适中、响应速度快,是许多应用的最佳选择。
⚡
GPT-3.5-turbo
非常快、成本最低,适合分类、提取等简单任务和高吞吐量处理。
混合方案:结合专有模型和开源模型
在实际项目中,最佳方案往往是在 OpenAI 和本地大语言模型之间策略性地同时使用两者。
常见的混合架构
成本效益分析
| 方案 | 月成本 | 优点 | 缺点 |
|---|---|---|---|
| 仅 OpenAI | $750-1500 | 最高质量、零基础设施 | 大规模时昂贵 |
| 仅本地模型 | $100-500 | 成本可预测、私密 | 设置复杂、质量较低 |
| 混合方案 | $250-800 | 成本效益高、灵活 | 架构更复杂 |
大多数项目的最佳选择:混合方案
关键洞察
- 无状态性既是优势也是负担:你控制上下文,但必须自行管理
- 系统提示词是你的秘密武器:相同模型 → 不同行为
- 温度参数改变一切:根据任务类型匹配
- Token 是真正的货币:监控并优化使用量
- 模型选择很重要:不要用大锤砸钉子
- 流式传输改善用户体验:面向用户的应用请使用它
- 错误处理不是可选项:网络会出故障,为此做好准备