一篇文章带你入门吴恩达的Prompt Engineering😎

引言

随着人工智能(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_KEYOPENAI_BASE_URL。这些是 OpenAI API 所需的密钥和基础 URL。

  • 使用之前获取的 OPENAI_API_KEYOPENAI_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]),然后返回该 choicemessage.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能够帮助企业自动化客服流程,提高工作效率并优化客户体验。

希望这篇文章能对大家有所帮助,留个赞支持一下吧

相关推荐
itwangyang52032 分钟前
AIGC drug design 人工智能生成式药物设计:基于 GPT 的 SMILES 生成与应用
人工智能·gpt
势如po竹33 分钟前
如何与GPT更高效的问答
人工智能·gpt·chatgpt
视觉语言导航40 分钟前
CoRL-2024 | 具身智能体无师自通!LeLaN:从无标签视频中学习语言条件下的导航策略
人工智能·具身智能
goomind1 小时前
OpenCV与Qt5开发卡尺找圆工具
人工智能·qt·opencv
古希腊掌管学习的神1 小时前
[机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)
人工智能·python·算法·机器学习
haha_qasim1 小时前
音频声音太小怎么调大?调大音频声音的几种方法
人工智能·音视频·语音识别
deephub1 小时前
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
人工智能·python·机器学习·缺失值·时间序列
勤劳的进取家2 小时前
高斯混合模型及最大期望算法(EM)聚类
人工智能·python·算法·机器学习
一个没有本领的人2 小时前
ubuntu24.04、win11配置pysot
人工智能·python·ubuntu·pycharm
涡能增压发动积2 小时前
Java不能搞大模型应用开发?SpringAI拯救你
java·人工智能·后端