引言
随着人工智能(AI)技术的快速发展,Prompt Engineering(提示工程)已成为AI模型应用中不可或缺的一部分。吴恩达的Prompt Engineering课程为我们提供了许多实用的策略,帮助我们在与AI互动时更加高效、精确,对于新手入门十分的友好。
在这篇文章中,我们将根据大模型来模拟电商AI客服回复评论的应用场景,带你入门如何设计高效的Prompt。
环境配置
首先,在node.js
环境下我们先在终端输入npm init -y
初始化一个后端项目,再安装所需要的模块包npm i openai dotenv
dotenv
用于在开发过程中保存管理敏感信息,如 API 密钥、数据库连接字符串等。
再创建一个.env文件,用来保存我们的密钥和连接到 OpenAI API 的基本 URL。
ini
OPENAI_API_KEY="your-openai-api-key"
OPENAI_BASE_URL=https://api.302.ai/v1
确保 .env
文件不被提交到远程仓库,你可以将其添加到 .gitignore
文件中。千万记得先添加再上传项目,不然就会像我一样连一美金余额都没了。
创建一个与 OpenAI API 交互的简单接口
js
import dotenv from 'dotenv';
import OpenAI from 'openai';
dotenv.config();
const {
OPENAI_API_KEY,
OPENAI_BASE_URL,
} = process.env
//实例化openai对象
const client = new OpenAI({
apiKey: OPENAI_API_KEY,
baseURL: OPENAI_BASE_URL,
});
//完成一个接口函数的封装 get_completion
const get_completion = async (prompt, model = 'gpt-3.5-turbo') => {
// 创建一个包含用户输入的消息对象
const messages = [
{ role: 'user', content: prompt }
];
// 使用 OpenAI API 获取完成内容
const response = await client.chat.completions.create({
model: model,
messages: messages,
temperature: 0, // 模型输出的温度系数,控制输出的随机程度
});
// 返回完成内容
return response.choices[0].message.content;
};
分析:
-
使用
import ... from
将下载的模块包导入 -
使用
dotenv.config()
从项目根目录下的.env
文件中加载环境变量,使得这些环境变量可以在process.env
中访问。 -
从
process.env
中解构出两个环境变量:OPENAI_API_KEY
和OPENAI_BASE_URL
。这些是 OpenAI API 所需的密钥和基础 URL。 -
使用之前获取的
OPENAI_API_KEY
和OPENAI_BASE_URL
来实例化一个 OpenAI 客户端 (client
),这样就可以通过该客户端与 OpenAI API 进行交互。 -
定义一个异步函数
get_completion
,该函数接受用户输入的prompt
(用户的提问或提示),以及一个可选的model
参数,默认值为gpt-3.5-turbo
。这个函数用于发送请求并获取模型的响应。 -
构建一个消息对象
messages
,它包含用户的输入。在 OpenAI 的 API 中,消息对象是一个数组,每条消息包含role
(角色)和content
(内容)。在这里,角色是'user'
,表示这是用户发送的消息,content
则是用户提供的prompt
。 -
使用
client.chat.completions.create
调用 OpenAI API 的completions
接口,传入以下参数:model
: 指定使用的模型(如'gpt-3.5-turbo'
,或者传入的其他模型名)。messages
: 用户输入的消息数组。temperature
: 模型输出的随机性控制参数。temperature
值越低,模型的回答越确定;值越高,回答就会更随机。这里设置为0
,意味着模型的回答会更加确定,不具有太多随机性。
-
await
关键字用于等待 OpenAI API 响应返回。 -
OpenAI API 返回的响应包含多个
choices
,每个choice
都包含模型生成的内容。在这里,只取第一个choice
(即choices[0]
),然后返回该choice
中message.content
的值,这就是模型生成的响应内容。
设计Prompt
Prompt 的基本规则:
- 任务清晰:为模型定义清晰的任务,使其能够根据输入生成预期的输出。任务必须足够具体,避免模糊指令。
- 结构化格式:为输出定义具体格式(如文本框架、分类标签等),帮助模型理解并按照一定的格式返回信息。
- 约束条件:明确指定需要遵循的约束(如字数限制、语气要求、情感倾向等)。
js
const main =async () =>{
const lamp_review = `
"我最近在你们的网站上购买了一些衣物和配饰,真是一次愉快的购物体验!
首先,网站非常容易导航,找到我喜欢的款式非常简单。
下单后,物流很快,几天内就收到了商品。每件商品的质量都超出了我的预期,材质非常好,款式也非常时尚。
最让我印象深刻的是客服,客服人员非常热情耐心地回答了我关于尺码的问题,并帮助我选择了最适合的尺码。整体体验非常顺利,
我已经推荐给了我的朋友们,肯定还会继续在你们店里购买的!"
`
const prompt = `
任务:根据客户的评论,识别评论者的情绪(积极、消极或中性),并根据情绪做出相应的回答。正面评论要鼓励和感谢;负面评论要道歉、同理并提供解决方案;中性评论要感谢并鼓励提供反馈。
输入:'''${lamp_review}'''
输出:先进行情感分析(积极/消极/中性)
根据情绪类型,生成对应的回应:
1. **积极情绪**:生成感谢、鼓励并增强忠诚度的回复。
2. **消极情绪**:生成道歉、同理并提供解决方案的回应。
3. **中性情绪**:生成感谢并鼓励客户提供更多反馈的回应。
const response = await get_completion(prompt)
console.log(response);
}
main()
输出结果:
情感分析结果:积极情绪。
回复:非常感谢您对我们网站的购物体验给予的好评!
我们很高兴能为您提供到顺畅愉快的购物体验,并为您解决了购买过程中的问题。
您的反馈对我们来说非常重要,也感谢您推荐给您的朋友们。
我们会继续努力,为您提供更好的产品和服务,期待您的再次光临!
我们再用消极情绪的评论试试
js
const main =async () =>{
const lamp_review = `
"我最近在你们店购买了一款蓝色外套,但收到后真的很失望。
首先,物流配送时间比预计的长了很多,导致我在很急的情况下才收到。
其次,外套的质量不如我预期的好,虽然颜色和款式挺不错,但做工上有明显的瑕疵------袖口的缝线处居然有松动,摸上去质感也不如我之前在店里试穿的那件。
最让我不满的是客服的回应。当我联系你们客服说明情况时,得到的回复不仅没有给出有效的解决方案,反而显得有些冷漠,未能提供我所期望的帮助。
总体来说,这是一次非常不愉快的购物经历,觉得服务和质量都不值这个价格。
我很失望,不确定是否还会再购买。"
`
const prompt = `
任务:根据客户的评论,识别评论者的情绪(积极、消极或中性),并根据情绪做出相应的回答。正面评论要鼓励和感谢;负面评论要道歉、同理并提供解决方案;中性评论要感谢并鼓励提供反馈。
输入:'''${lamp_review}'''
输出:先进行情感分析(积极/消极/中性)
根据情绪类型,生成对应的回应:
1. **积极情绪**:生成感谢、鼓励并增强忠诚度的回复。
2. **消极情绪**:生成道歉、同理并提供解决方案的回应。
3. **中性情绪**:生成感谢并鼓励客户提供更多反馈的回应。
`
const response = await get_completion(prompt)
console.log(response);
}
main()
输出结果:
情感分析结果:消极情绪
回复:非常抱歉您在我们店购买的蓝色外套让您感到失望。
我们对您遇到的问题感到十分抱歉,我们会认真对待您提出的意见和建议。
首先,我们会加强物流配送的 管理,以确保您能按时收到商品。
其次,我们会加强产品质量的把控,避免类似问题再次发生。
对于客服回应不及时的问题,我们会进行内部调查并加强培训,以提 高服务质量。
希望您能理解并给我们一次改进的机会,如果有任何其他问题或建议,请随时告诉我们。
再次为给您带来不愉快的购物体验道歉,希望能够重新赢得您 的信任和支持。感谢您的反馈。
可以看到,每个情境下的Prompt设计都围绕着客户的情感状态,确保AI客服能够根据客户的需求进行精准的情感判断和回应,从而提高客户的满意度。
总结
通过本文,我们掌握了如何设计清晰且有效的Prompt,理解了自然语义编程的魅力。自然语义编程的核心在于简化编程过程,让我们通过自然语言与AI模型交互,克服了传统编程中复杂的语法和逻辑障碍,从而更加便捷地实现功能。
在本文中,我们通过一个关于客户评论的情感分析任务,展示了如何通过设计适当的Prompt来让AI识别评论者的情绪,并根据不同的情绪生成不同的回应。通过这种方式,AI能够帮助企业自动化客服流程,提高工作效率并优化客户体验。
希望这篇文章能对大家有所帮助,留个赞支持一下吧