走进Prompt Engineering:解锁LLM潜能的金钥匙
前言
什么是Prompt?Prompt Engineering? Prompt可以理解为向语言模型提出的问题或者指令,它是激发模型产生特定类型响应的“触发器”。 Prompt Engineering,即提示工程,是近年来随着大型语言模型(LLM,Large Language Models)的发展而兴起的一个重要概念
接下来,让我们学习如何使用Prompt Engineering。
1. 初始化项目:
使用npm init -y
命令在终端(快捷键Ctrl+`)快速创建一个package.json
文件,这是Node.js项目的配置文件。
- npm init -y
2. 安装OpenAI SDK:
通过npm i openai
命令安装OpenAI提供的官方SDK。这一步骤不仅会在你的项目目录中下载必要的库文件,还会自动在package.json
的dependencies
字段添加一条记录,表明该项目依赖于openai
包。
- npm i openai
3. 创建.env文件
利用dotenv
库(通过dotenv.config()
方法)可以将API Key等敏感信息存储在项目根目录下的.env
文件中。这样可以避免将密钥直接写入源代码,减少泄露风险。
- OPENAI_API_KEY =YOUR_API_KEY
4.创建main.js
① 环境变量配置
require('dotenv').config();
// 环境变量
// console.log(process.env, '------');
② 导入OpenAI模块并创建实例
const OpenAI = require('openai')//导入模块
// 创建实例
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: 'https://api.chatanywhere.tech/v1'
})
③ 创建异步函数getChatResponse
// 模型和prompt作为参数
const getChatResponse = async function (model, prompt) {
// 向指定模型发送请求
const response = await client.chat.completions.create({
model: model, // 适合聊天的模型 很多种
messages: [
{
role: 'user',
content: prompt
}
]
})返回
// 第一条消息的content部分
return response.choices[0].message.content
}
④ 主函数main()
- 第一个prompt是一个关于总结文本的请求,要求将一个较长的段落总结成少于20字的一句话。
- 第二个prompt是一个角色扮演场景,要求模型以一致的风格回答一个关于“教我韧性”的问题,模仿对孩子的教导。
async function main() {
// es6 模板字符串 比"" '' 动态解析
// 多行 特别适合详细的设置prompt
let text = `
您应该提供尽可能清晰、具体的指示,以表达您希望模型执行的任务\
这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。\
不要将写清晰的提示词与写简短的提示词混淆。\
在许多情况下,更长的提示词可以为模型提供更多的清晰度和上下文信息,
从而导致更详细和相关的输出。
`
// llm 的 nlp 总结能力
// 转译
let prompt = `
把用三个反引号括起来的文本总结成一句话,20字以内。
\`\`\`${text}\`\`\`
`
const response = await getChatResponse('gpt-3.5-turbo', prompt)
console.log(response);
let prompt2 = `
您的任务是以一致的风格回答问题。
<孩子>: 教我耐心。
<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。
<孩子>: 教我韧性。
`
const response2 = await getChatResponse('gpt-3.5-turbo', prompt2);
console.log(response2)
}
⑤ 运行
调用main()函数运行程序。
main()
总结
把时间花在设计prompt上,提供清晰、明确的提示,同时利用dotenv.config()
方法存储api密码,注意将重复使用的代码进行封装,拒绝重复复制粘贴。养成良好的编程习惯并结合好prompt进行编程。
转载自:https://juejin.cn/post/7371311256630280218