在后端项目中集成 OpenAI 大模型:从零实现 LLM 调用

34 阅读5分钟

在后端项目中集成 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 密钥

  1. 访问 platform.openai.com
  2. 登录或注册账号
  3. 进入「API Keys」页面,点击「Create new secret key」
  4. 复制生成的密钥(形如 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 即为生成的文本内容。

结果如下图:按照提示词生成的歌词 ba05bf674ddcb8f0b1c31b449f953d0e.png

六、构建 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,让你的后端不止于“处理数据”,更能“创造价值”。