从产品到 API 的第一次调用

这一篇做入门认知主题的最小实践:用 Node.js 调用一次 LLM API,让模型回答一个问题。

重点不是写出复杂程序,而是理解一个关键差异:当你使用 ChatGPT 时,你使用的是完整产品;当你调用 API 时,你发起的是一次模型请求。产品层的历史记录、按钮、文件、工具、权限和体验,都需要应用自己实现。

准备项目

先安装 SDK:

pnpm add openai

然后在项目根目录创建 .env

OPENAI_API_KEY=你的 API Key

不要把真实 API Key 提交到 Git 仓库。实际项目里应该把 .env 加入 .gitignore,并在部署平台使用环境变量管理密钥。

最小调用

创建 examples/first-call.ts

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

const response = await client.responses.create({
  model: 'gpt-4.1-mini',
  input: '用三句话解释:前端工程师为什么要学习 LLM?',
});

console.log(response.output_text);

运行:

OPENAI_API_KEY=你的 API Key pnpm tsx examples/first-call.ts

如果你不想安装 tsx,也可以先用普通 JavaScript 文件写同样的逻辑。

这段代码发生了什么

这段代码只做了几件事:

  1. 创建一个 OpenAI API Client。
  2. 指定使用的模型。
  3. 传入用户输入。
  4. 等待模型生成结果。
  5. 打印输出文本。

它没有自动创建聊天记录,也没有自动记住历史,更没有自动知道你的业务数据。

这就是 API 和 ChatGPT 产品最重要的区别。

Product 和 API 的区别

在 ChatGPT 产品里,你会自然获得很多体验:

  • 输入框。
  • 对话历史。
  • 多轮上下文。
  • 流式输出。
  • 停止生成。
  • 重新生成。
  • 文件上传。
  • 工具调用。
  • 账号和权限。

但在 API 里,你只是发起一次请求。你想要多轮对话,就要自己保存历史消息,并在下一次请求时重新传入。你想要 Streaming,就要使用流式接口并在前端增量渲染。你想要工具调用,就要定义工具、执行工具、返回工具结果。

换句话说,API 给你模型能力,不给你完整产品。

第一次调用要关注哪些概念

第一次调用时,不需要急着理解所有参数。先关注这些核心概念:

概念含义
model选择哪个模型执行任务
input提交给模型的输入内容
response模型返回的结果对象
output_textSDK 整理后的文本输出
token模型处理文本的基本单位,会影响成本和上下文长度
latency从请求到响应完成的耗时

这些概念后面都会扩展成工程问题。

第二步:把输入变成变量

最小调用写死了问题。稍微改一下,就可以让它接收命令行参数:

import OpenAI from 'openai';

const question = process.argv.slice(2).join(' ');

if (!question) {
  console.error('请传入一个问题');
  process.exit(1);
}

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

const response = await client.responses.create({
  model: 'gpt-4.1-mini',
  input: question,
});

console.log(response.output_text);

运行:

OPENAI_API_KEY=你的 API Key pnpm tsx examples/first-call.ts "什么是 LLM?"

这就是一个最小命令行 AI 问答工具的雏形。

这还不是 Chat

上面的例子只是单轮问答。真正的 Chat 至少需要处理消息历史:

  • 用户第一轮问了什么。
  • 模型第一轮回答了什么。
  • 用户第二轮追问了什么。
  • 哪些历史应该带入下一次请求。

模型本身不会因为你上一次调用过 API 就自动记住你。多轮对话的“记忆感”,来自应用层把历史重新组织进上下文。

这会在 LLM API 与对话模型主题里详细展开。

常见误区

第一个误区:以为模型 API 等于 ChatGPT。

API 只是能力入口。ChatGPT 是产品,里面包含大量应用层设计。

第二个误区:以为 prompt 越长越好。

输入越长,成本越高,延迟越高,也越可能引入干扰信息。

第三个误区:以为模型回答就是真相。

模型输出需要结合业务数据、检索结果、工具校验和用户确认来判断。

第四个误区:一开始就追求复杂架构。

学习早期应该先完成最小请求,理解请求和响应,再逐步加入 messages、streaming、tools、RAG 和 eval。

小结

第一次 API 调用的意义,不是“我终于能让 AI 回答问题了”,而是理解:LLM API 是一次模型推理请求,不是完整 AI 产品。

从这一刻开始,你要逐步把产品缺失的部分补回来:上下文、历史、流式输出、工具、权限、成本、日志、评估和用户体验。

这就是从“会调 API”走向“会设计 AI 系统”的起点。