在后端项目中集成 OpenAI 大模型:从零实现 LLM 调用
随着生成式人工智能(AIGC)的迅猛发展,大型语言模型(Large Language Models, LLMs)已成为现代应用开发的核心能力之一。OpenAI 作为行业标杆,其 GPT 系列模型通过简洁高效的 API 接口,为开发者提供了强大的文本生成、对话理解与内容创作能力。本文将手把手教你如何在 Node.js 后端项目中集成 OpenAI 的 LLM 模型(如 gpt-3.5-turbo-instruct),并通过官方 SDK 安全、高效地调用其 Completion 接口,实现智能文本生成功能。
一、为什么选择 Node.js 与 OpenAI 结合?
Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时,以其非阻塞 I/O、事件驱动架构和轻量级特性,成为构建高性能 Web 后端服务的首选之一。尤其适合中小型项目、API 服务、微服务架构以及需要快速迭代的 AI 应用场景。
而 OpenAI 提供的官方 openai SDK(JavaScript/TypeScript 版本)完美兼容 Node.js 环境,封装了底层 HTTP 请求细节,让开发者只需关注业务逻辑,即可轻松接入大模型能力。
✅ 优势总结:
- 开发效率高,生态丰富(npm 包管理)
- 与前端 JavaScript 技术栈无缝衔接
- OpenAI SDK 提供类型安全、自动重试、流式响应等高级功能
二、初始化 Node.js 后端项目
步骤 1:创建项目目录并初始化
mkdir my-openai-backend
cd my-openai-backend
npm init -y
npm init -y 会自动生成 package.json 文件,包含项目元信息。
步骤 2:安装 OpenAI 官方 SDK
npm install openai
该命令会将 openai 包及其依赖下载到 node_modules 目录,并更新 package.json。
💡 注意:确保使用 Node.js 18+ 版本,以支持现代 ES 模块语法和 fetch API。
三、获取 OpenAI API 密钥
- 访问 platform.openai.com
- 登录或注册账号
- 进入「API Keys」页面,点击「Create new secret key」
- 复制生成的密钥(形如
sk-xxxxxx),切勿泄露!
🔒 安全建议:将 API Key 存储在环境变量中,而非硬编码在代码里。
创建 .env 文件(需先安装 dotenv 包):
npm install dotenv
.env 内容:
OPENAI_API_KEY=sk-your-real-api-key-here
在代码顶部加载:
require('dotenv').config();
四、实例化 OpenAI 客户端
OpenAI SDK 提供了 OpenAI 类,用于配置连接参数并发起请求。
const OpenAI = require('openai');
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
// 若使用代理或非官方 endpoint(如 Azure OpenAI),可设置 baseURL
// baseURL: 'https://your-custom-endpoint.openai.azure.com'
});
apiKey:从环境变量读取,保障安全。baseURL:默认为https://api.openai.com/v1,一般无需修改。若使用私有部署或第三方兼容接口(如 Ollama、FastChat),可自定义。
五、调用 Completion 接口:文本生成实战
OpenAI 提供两类主要接口:
/completions:适用于指令式模型(如gpt-3.5-turbo-instruct),输入提示词(prompt),返回连续文本。/chat/completions:适用于对话模型(如gpt-3.5-turbo),支持多轮对话格式。
本文以 Completion 接口为例,使用 gpt-3.5-turbo-instruct 模型进行单次文本生成。
示例:生成一段产品描述
// client.mjs
import OpenAI from 'openai';
import datenv from 'dotenv';
dotenv . config(); //.env 文件中的配置添加到环境变量中
// 方式 1:直接写死(仅测试用)
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: 'https://api.302.ai/v1'
});
//异部的操作
//AIGC
const response = await client.completions.create({
//openai模型 文本模型 价格亲民
model:'gpt-3.5-turbo-instruct',
max_tokens : 256,
//提示词是和LLM交流的方式
// es6 字符串模版 多行文本 详细且清晰地LLM需要完成的任务
prompt:`
加入你是林俊杰这样的爱情歌曲作词家
请你写一首100字,为蒋凯,写一首他爱上张财如的歌曲
森林北是位美丽勇敢会骑马的女孩
`
})
// llm 一次性给出多返回让我们选择
const result=response.choices[0].text
console.log('歌词是:'+result);
关键参数说明:
| 参数 | 说明 |
|---|---|
model | 指定模型,gpt-3.5-turbo-instruct 是专为指令任务优化的版本 |
prompt | 用户输入的提示文本,决定生成内容方向 |
max_tokens | 限制生成文本的最大 token 数(1 token ≈ 0.75 个英文单词) |
temperature | 控制输出多样性,值越高越“有创意”,越低越“确定” |
n | 一次请求生成多少个独立结果 |
📌 返回结构:
completion.choices[0].text即为生成的文本内容。
结果如下图:按照提示词生成的歌词

六、构建 RESTful API 供前端调用
为了让前端或其他服务能使用此能力,我们可将其封装为 HTTP 接口。
使用轻量级框架 express:
npm install express
完整服务代码 server.js:
const express = require('express');
const OpenAI = require('openai');
require('dotenv').config();
const app = express();
app.use(express.json());
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
app.post('/generate', async (req, res) => {
const { prompt } = req.body;
if (!prompt) {
return res.status(400).json({ error: '缺少 prompt 参数' });
}
try {
const completion = await openai.completions.create({
model: "gpt-3.5-turbo-instruct",
prompt: prompt,
max_tokens: 200,
temperature: 0.8
});
const result = completion.choices[0].text.trim();
res.json({ success: true, result });
} catch (error) {
console.error('API 错误:', error);
res.status(500).json({ success: false, error: '生成失败' });
}
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});
启动服务:
node server.js
前端可通过 POST 请求调用:
fetch('http://localhost:3000/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt: "写一首关于春天的五言诗" })
})
.then(res => res.json())
.then(data => console.log(data.result));
七、注意事项与最佳实践
1. 成本控制
- OpenAI 按 token 计费,合理设置
max_tokens避免超额。 - 使用
echo: false(默认)避免返回重复 prompt。
2. 错误处理
- 捕获网络错误、配额超限(
429)、无效模型(404)等异常。 - 实现重试机制(SDK 已内置简单重试)。
3. 安全性
- 绝不将 API Key 暴露给前端。
- 对用户输入做长度和内容过滤,防止 prompt injection 攻击。
4. 模型选择
gpt-3.5-turbo-instruct适合单轮指令任务;- 多轮对话请使用
gpt-3.5-turbo+chat.completions.create()。
八、扩展方向
- 流式响应(Streaming):使用
stream: true实现实时逐字输出,提升用户体验。 - 函数调用(Function Calling):让模型调用外部工具(如数据库、API)。
- 本地部署替代方案:结合 Ollama 或 vLLM,在私有环境中运行开源 LLM(如 Llama 3、Qwen),通过相同 SDK 接口调用。
结语
将 OpenAI 大模型嵌入后端系统,不再是巨头公司的专利。借助 Node.js 的敏捷性与 OpenAI SDK 的易用性,任何开发者都能在数小时内构建出具备 AI 能力的应用。无论是智能客服、内容生成、代码辅助还是教育工具,LLM 都将成为你产品差异化的关键引擎。
记住:技术是工具,创意才是核心。
用好 OpenAI,让你的后端不止于“处理数据”,更能“创造价值”。