在 AI 技术飞速发展的当下,基于 Generative AI(生成式人工智能)的应用开发成为开发者的重要方向。本文将结合英伟达证书相关技术栈,详细讲解如何基于 Node.js 搭建规范、安全的 Generative AI 后端项目,涵盖环境配置、依赖管理、异步编程等核心环节,并提供完整的代码示例。
一、项目初始化与依赖管理
1. 初始化 Node.js 项目
首先需要将项目初始化为标准的 Node.js 后端项目,执行以下命令生成package.json文件:
bash
运行
npm init -y
2. 高效的包管理工具:pnpm
传统npm安装依赖时会在每个项目重复下载,占用大量磁盘空间。pnpm通过软链接复用依赖,仅需安装一次即可在多个项目中使用,安装方式如下:
bash
运行
npm install -g pnpm
3. 核心依赖安装
开发 Generative AI 项目需安装openai(行业事实标准的 AI 交互模块)和dotenv(环境变量读取模块),使用pnpm安装:
bash
运行
pnpm i openai dotenv
二、安全管理 API 密钥
API Key 是访问 AI 服务的核心凭证,绝对不能提交到代码仓库,需通过环境变量安全管理。
1. 创建.gitignore 文件
在项目根目录创建.gitignore文件,声明忽略.env文件(环境变量配置文件),避免敏感信息泄露:
plaintext
# .gitignore
.env
node_modules/
2. 配置.env 文件
在项目根目录创建.env文件,按KEY=VALUE(键大写)的格式配置 API 密钥和服务地址,示例如下:
env
# .env
DEEPSEEK_API_KEY="sk-7d77d7f6d20f4798b49a0891bfeb9774"
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
3. 读取环境变量
dotenv库默认读取根目录的.env文件,并将变量注入process(Node.js 全局进程对象)。在代码中只需引入dotenv即可自动加载:
javascript
运行
// 加载环境变量
import dotenv from 'dotenv';
dotenv.config();
// 验证环境变量是否加载成功
console.log('API Key加载状态:', !!process.env.DEEPSEEK_API_KEY);
console.log('API地址:', process.env.DEEPSEEK_BASE_URL);
三、模块化配置与开发效率优化
1. 启用 ES6 模块化
Node.js 默认使用 CommonJS 模块化方案,若想使用 ES6 的import/export语法,有两种方式:
- 将文件后缀改为
.mjs; - 在
package.json中添加"type": "module"(推荐,可保留.js后缀):
json
// package.json
{
"type": "module",
"name": "generative-ai-demo",
"version": "1.0.0",
"main": "index.js"
}
2. 自动重启工具:nodemon
开发过程中修改代码后需手动重启进程,nodemon可监听文件变化并自动重启,提升开发效率。安装与使用方式:
bash
运行
# 全局安装nodemon
npm install -g nodemon
# 启动项目(以index.js为例)
nodemon index.js
四、核心业务代码实现(Chat Completion API 调用)
Generative AI 项目核心是调用 AI 的对话补全接口,由于 API 请求是异步操作,需使用 ES8 新增的async/await语法控制执行流程,保证代码可读性和执行顺序。
完整代码示例(index.js)
javascript
运行
// 1. 加载环境变量
import dotenv from 'dotenv';
import OpenAI from 'openai';
dotenv.config();
// 2. 实例化OpenAI客户端(适配DeepSeek服务)
const client = new OpenAI({
apiKey: process.env.DEEPSEEK_API_KEY,
baseURL: process.env.DEEPSEEK_BASE_URL
});
// 3. 核心对话函数(异步函数)
async function chatWithAI(prompt) {
try {
// 调用Chat Completion API(异步操作,await卡住流程等待结果)
const completion = await client.chat.completions.create({
model: "deepseek-chat", // DeepSeek对话模型
messages: [{ role: "user", content: prompt }],
temperature: 0.7, // 生成内容的随机性
});
// 返回AI回复内容
return completion.choices[0].message.content;
} catch (error) {
console.error('API调用失败:', error.message);
throw error;
}
}
// 4. 入口函数(单点入口,规范项目执行流程)
async function main() {
try {
const userPrompt = "请解释Generative AI的核心原理";
const aiResponse = await chatWithAI(userPrompt);
console.log('用户提问:', userPrompt);
console.log('AI回复:', aiResponse);
} catch (error) {
console.error('程序执行失败:', error);
}
}
// 执行入口函数
main();
五、AIGC 工程化开发核心总结
- 项目类型:AI/Agent 项目几乎都是后端项目,需按 Node.js 后端规范初始化;
- 依赖管理:优先使用 pnpm 提升安装效率、节省磁盘空间;
- 安全规范:API Key 必须通过.env 文件管理,且.gitignore 忽略.env;
- 异步控制:利用 async/await 规范异步代码执行顺序,提升可读性;
- 开发效率:使用 nodemon 自动重启进程,ES6 模块化简化代码结构;
- 入口规范:采用
main单点入口函数 / 文件,统一项目执行入口。
通过以上工程化实践,可搭建出规范、安全、高效的 Generative AI 后端项目,既保证了敏感信息的安全,又提升了开发和维护效率。