Node.js + OpenAI:写代码的我,也成为了薛之谦

296 阅读4分钟

用 Node.js 写一首薛之谦的“深夜情歌”:AI 作词实战全攻略

在深夜的屏幕前,代码的光亮就像城市最后一盏街灯。
有时,我们写的不是程序,而是情绪。
今天,让我们用 Node.js 调用 OpenAI 的接口,让“薛之谦”在 AI 的世界里,写出一首属于他风格的歌——一首关于错过与思念的深夜情歌。


一、为什么用 Node.js 来写歌?

Node.js 是一个奇妙的存在。
它既是程序员的工具,又是创作者的画笔。

在后端领域,它与 Go、Java 并列,是构建现代 Web 服务的重要语言。
但与 Go 的“高效”、Java 的“稳重”不同,Node.js 的最大特点是——快、轻、灵活

如果你想快速搭建一个 AI 调用 Demo、或者做一个“AI 作词网页”,Node.js 是最顺手的选择。

它有以下几个优势:

  • 🧩 生态强大:大部分 AI 平台(如 OpenAI)都有 Node SDK;
  • 异步能力强:AI 请求往往需要等待,而 Node 天生支持异步;
  • 🌐 天然适合 Web 项目:与前端共享 JavaScript 语言,部署方便。

这篇文章将用 Node.js 带你一步步完成从“写代码”到“生成歌词”的全过程。


二、准备 API Key

在使用 OpenAI SDK 前,你需要一个 API Key(访问凭证)。
拿到 Key 后,将其存放在 .env 文件中,防止泄露。

示例 .env 文件内容:

OpenAI_API_KEY=你的API密钥

⚠️ 千万别把 .env 上传到 GitHub,否则你的额度可能被他人使用。


三、初始化 Node.js 项目

在命令行执行以下命令,创建一个新项目并安装依赖:

mkdir song
cd song
npm init -y
npm install openai dotenv

安装完毕后,项目目录如下:

song/
 ├── main.mjs
 ├── .env
 ├── package.json

四、编写主程序:让 AI 变身薛之谦

打开 main.mjs,写下以下完整代码:

import OpenAI from 'openai';
import dotenv from 'dotenv';

// 加载 .env 文件中的配置
dotenv.config();

// 实例化 OpenAI 客户端
const client = new OpenAI({
  apiKey: process.env.OpenAI_API_KEY,
  baseURL: process.env.OPENAI_API_BASE_URL || 'https://api.openai.com/v1' // 使用代理接口
});

// 调用 AI 接口
const response = await client.completions.create({
  model: 'gpt-3.5-turbo-instruct', // 文本生成模型
  max_tokens: 256,
  prompt: `
  假如你是薛之谦,
  请你写一首150字的歌词,
  主题是关于错过的爱情与深夜的思念,
  歌词要真挚、细腻、有一点点心酸。
  `,
});

// 输出结果
const result = response.choices[0].text;
console.log('歌词是:' + result);

五、运行结果:AI 写的薛之谦风格歌词

执行命令:

node main.mjs

终端可能输出如下(结果会有一定随机性):

歌词是:
雨滴打在没关的窗台,
我才想起你离开的那天也下着雨,
咖啡凉了,话没说完,
连再见都像句玩笑。

午夜两点的歌单,还停在那首《演员》,
我一遍遍循环,假装你还在听,
所有的遗憾都藏在键盘声里,
我敲的不是歌,是没说完的心情。

是不是那种熟悉的“薛式心碎”?
一半是冷静,一半是情绪。
GPT 模型擅长模仿这种细腻笔触。


六、代码解析:让每一行都“唱”出来

代码说明
dotenv.config()读取 .env 文件中的密钥配置
new OpenAI({...})创建客户端实例,用于访问模型
baseURL指定代理接口,兼容 OpenAI SDK
completions.create()调用文本生成接口
prompt核心提示词,决定歌词风格与情绪
max_tokens限制生成的长度(256 token ≈ 150 字)
response.choices[0].text获取生成的歌词文本

在这里,**prompt(提示词)**就像“词牌名”,写得越具体,模型生成的歌词就越贴近你的预期。


七、Node.js、Go、Java:谁更适合做 AI 服务?

语言特点适合场景
Node.js快速开发、生态丰富个人项目、Web 服务、AI Demo
Go高性能、低内存占用大规模并发服务、API 网关
Java稳定、成熟的企业框架企业级 AI 平台、业务系统集成

总结一句话:

想快 → Node.js
想稳 → Java
想顶性能 → Go


八、AI 作词背后的“人味”

薛之谦的歌词,往往是“冷静地表达崩溃”。
而 AI 模型可以学会这种表达方式,但它的情绪是模仿的,需要人类提供情感底色。

写 prompt,本质上就是“写词”的另一种形式。
你告诉模型情绪、场景、对象,它就能给出回响。
AI 不是创作的终点,而是创作的延伸。


九、进阶玩法:让歌词更有风格

你可以在 prompt 里加入更具体的说明,例如:

假如你是薛之谦,
请你写一首150字的歌词,
主题是“旧城与未寄出的信”,
歌词要带有故事感,每段都押韵,
最后一句要有转折。

或者约束排版:

歌词分为两段主歌和一段副歌,
用“---”分隔,
风格接近《绅士》和《你还要我怎样》。

AI 会根据要求生成押韵、分行的歌词,这就是 prompt 设计的魅力——
你写 prompt,就像导演在给演员指路。


十、结语:当深夜有了回声

我们用 Node.js 写下了一段代码,
AI 回应了一首歌。
这一来一回之间,
也许就是“人机共创”的最美瞬间。

技术有尽头,情感无止境。
你敲下的每一行代码,
都有可能成为某首未完成的歌词。