Prompt Engineering 入门与实战:基于 Node.js 的 LLM 应用开发
Prompt Engineering 的基本概念及在 Node.js 环境下的实战应用。内容涵盖项目初始化、OpenAI SDK 集成、环境变量安全配置以及核心代码实现。重点讲解了文本总结与角色扮演的 Prompt 设计技巧,包括少样本学习与思维链方法。此外,还补充了 API 密钥管理、错误处理及成本控制等安全最佳实践,帮助开发者构建稳定高效的 LLM 应用。

Prompt Engineering 的基本概念及在 Node.js 环境下的实战应用。内容涵盖项目初始化、OpenAI SDK 集成、环境变量安全配置以及核心代码实现。重点讲解了文本总结与角色扮演的 Prompt 设计技巧,包括少样本学习与思维链方法。此外,还补充了 API 密钥管理、错误处理及成本控制等安全最佳实践,帮助开发者构建稳定高效的 LLM 应用。

Prompt(提示词)可以理解为向语言模型提出的问题、指令或上下文信息。它是激发模型产生特定类型响应的'触发器'。在大型语言模型(LLM, Large Language Models)的应用中,Prompt 的质量直接决定了输出的准确性、相关性和可用性。
Prompt Engineering(提示工程)是近年来随着 LLM 发展而兴起的重要概念。它指的是通过设计和优化输入给模型的文本,以引导模型生成更符合预期的高质量输出。良好的提示工程能够显著提升模型的表现,减少幻觉,并降低计算成本。
本文将介绍如何使用 Node.js 和 OpenAI SDK 快速构建一个基础的 LLM 应用,并深入探讨提示词设计的最佳实践。
首先,确保你的环境中已安装 Node.js。在终端中使用以下命令初始化一个 Node.js 项目:
npm init -y
该命令会快速创建一个 package.json 文件,这是 Node.js 项目的配置文件,用于管理依赖项和脚本。
通过 npm 安装 OpenAI 提供的官方 JavaScript/TypeScript SDK:
npm i openai
这一步骤会在项目目录中下载必要的库文件,并自动在 package.json 的 dependencies 字段中添加记录,表明该项目依赖于 openai 包。
为了安全起见,API Key 等敏感信息不应直接硬编码在源代码中。我们使用 dotenv 库将密钥存储在项目根目录下的 .env 文件中。
npm install dotenv
.env 文件,内容如下:
OPENAI_API_KEY=YOUR_API_KEY_HERE
require('dotenv').config();
这样可以在不泄露密钥的情况下访问敏感信息,同时减少代码泄露风险。
创建 main.js 文件,导入 OpenAI 模块并初始化客户端实例。注意,baseURL 可以根据实际需求配置为官方地址或第三方代理地址。
require('dotenv').config();
const OpenAI = require('openai');
// 创建实例
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
// 示例使用了第三方代理地址,生产环境请根据需求调整
baseURL: 'https://api.chatanywhere.tech/v1'
});
创建一个异步函数 getChatResponse,用于向指定模型发送请求并获取响应内容。增加错误处理机制以提高稳定性。
const getChatResponse = async function (model, prompt) {
try {
const response = await client.chat.completions.create({
model: model, // 例如 gpt-3.5-turbo 或 gpt-4
messages: [
{
role: 'user',
content: prompt
}
],
temperature: 0.7 // 控制随机性,范围 0-2
});
// 返回第一条消息的 content 部分
return response.choices[0].message.content;
} catch (error) {
console.error('Request failed:', error.message);
throw error;
}
};
在主函数中演示两种典型的 Prompt 场景:文本总结和角色扮演。
async function main() {
// 场景一:文本总结
// 使用 ES6 模板字符串定义多行文本,适合设置复杂的 Prompt
let text = `
您应该提供尽可能清晰、具体的指示,以表达您希望模型执行的任务。
这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。
不要将写清晰的提示词与写简短的提示词混淆。
在许多情况下,更长的提示词可以为模型提供更多的清晰度和上下文信息,
从而导致更详细和相关的输出。
`;
let prompt = `
把用三个反引号括起来的文本总结成一句话,20 字以内。
\`\`\`${text}\`\`\`
`;
const response = await getChatResponse('gpt-3.5-turbo', prompt);
console.log('Summary Result:', response);
// 场景二:角色扮演
// 通过 Few-Shot(少样本)方式引导模型模仿特定风格
let prompt2 = `
您的任务是以一致的风格回答问题。
<孩子>: 教我耐心。
<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。
<孩子>: 教我韧性。
`;
const response2 = await getChatResponse('gpt-3.5-turbo', prompt2);
console.log('Roleplay Result:', response2);
}
main();
调用 main() 函数运行程序:
node main.js
模糊的指令会导致模型产生不可预测的输出。应明确指出任务目标、约束条件和期望格式。
对于复杂任务,提供足够的背景信息至关重要。这可以帮助模型理解任务的边界和领域知识。
通过在 Prompt 中提供几个输入输出的示例,可以显著改善模型对特定格式或风格的遵循能力。如上文中的角色扮演示例所示。
对于逻辑推理任务,要求模型'一步步思考'往往能获得更准确的结果。例如:'请先分析问题,列出关键步骤,最后给出答案。'
.gitignore 忽略 .env 文件。try-catch 块并记录日志。Prompt Engineering 是连接人类意图与 AI 能力的桥梁。通过精心设计提示词,结合 Node.js 等后端技术,开发者可以快速构建强大的智能应用。养成良好的编程习惯,如封装重复代码、管理环境变量、完善错误处理,是构建稳定系统的基础。未来,随着模型能力的演进,提示工程技巧也将不断迭代,持续学习与实践是关键。
本文旨在提供技术参考,不涉及任何商业推广或资源诱导。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online