Openai+Deeplearning.AI: ChatGPT Prompt Engineering(五)

news2024/11/24 23:04:16

想和大家分享一下最近学习的Deeplearning.AI和openai联合打造ChatGPT Prompt Engineering在线课程.以下是我写的关于该课程的前四篇博客:

ChatGPT Prompt Engineering(一)
ChatGPT Prompt Engineering(二)
ChatGPT Prompt Engineering(三)
ChatGPT Prompt Engineering(四)


今天我们来学习第五部分内容:扩展(Expanding)。

今天我们让ChatGPT成为一个AI助理来帮助人类自主回复客户邮件。首先我们需要设置通过API来访问ChatGPT的主要代码:

import openai
 
openai.api_key ='YOUR_OPENAI_API_KEY'
def get_completion(prompt, model="gpt-3.5-turbo", temperature=0): 
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, 
    )
    return response.choices[0].message["content"]

自定义对客户电子邮件的自动回复

这里我们会给出一段客户关于商品的负面评论,和一个事先定义好的sentiment等于negative的情绪变量, 然后我们要求ChatGPT根据这段负面评论和情绪变量来写一份客户邮件,以表达对客户的歉意。

#情绪变量
sentiment = "negative"

# 关于搅拌器的客户评论
review = f"""
So, they still had the 17 piece system on seasonal \
sale for around $49 in the month of November, about \
half off, but for some reason (call it price gouging) \
around the second week of December the prices all went \
up to about anywhere from between $70-$89 for the same \
system. And the 11 piece system went up around $10 or \
so in price also from the earlier sale price of $29. \
So it looks okay, but if you look at the base, the part \
where the blade locks into place doesn’t look as good \
as in previous editions from a few years ago, but I \
plan to be very gentle with it (example, I crush \
very hard items like beans, ice, rice, etc. in the \ 
blender first then pulverize them in the serving size \
I want in the blender then switch to the whipping \
blade for a finer flour, and use the cross cutting blade \
first when making smoothies, then use the flat blade \
if I need them finer/less pulpy). Special tip when making \
smoothies, finely cut and freeze the fruits and \
vegetables (if using spinach-lightly stew soften the \ 
spinach then freeze until ready for use-and if making \
sorbet, use a small to medium sized food processor) \ 
that you plan to use that way you can avoid adding so \
much ice if at all-when making your smoothie. \
After about a year, the motor was making a funny noise. \
I called customer service but the warranty expired \
already, so I had to buy another one. FYI: The overall \
quality has gone done in these types of products, so \
they are kind of counting on brand recognition and \
consumer loyalty to maintain sales. Got it in about \
two days.
"""

#翻译版本
review1="""
因此,他们在11月份仍然以49美元左右的价格出售17套系统,大约是半价,
但由于某种原因(称之为价格欺诈),在12月的第二周左右,同一套系统的价格
都上涨到了70美元到89美元之间。11件套装的价格也从之前的29美元上涨了10美元左右。
所以看起来不错,但如果你看看基地,刀片锁到位的部分看起来不一样从几年前在以前的版本,
但我计划很温柔(示例中,我很努力粉碎物品,如豆类,冰,大米,等搅拌机第一然后粉碎他们的
用量我希望在搅拌机然后切换到细面粉搅拌叶片,并使用交叉刀片首先做冰沙时,然后如果
我需要更细/更少的浆糊,使用平刀片)。制作冰沙时的特别提示,将水果和蔬菜切成细碎
并冷冻(如果用菠菜,稍微炖一下,使菠菜变软,然后冷冻直到可以使用;如果做冰沙,
使用小型到中型的食品加工机),你打算用这种方法来避免在制作冰沙时添加太多的冰。
大约过了一年,发动机发出了一种奇怪的声音。我打电话给客服,但是保修期已经过了,
所以我不得不再买一个。仅供参考:这类产品的整体质量已经不行了,所以
他们依靠品牌认知度和消费者忠诚度来维持销售。大概两天就拿到了。
"""

从这段用户评论中我们不难发现客户是在抱怨商品存在质量问题。接下来我们要告诉ChatGPT它的角色是什么(这个很重要),因为只有当ChatGPT知道自己的角色是什么以后,它的回复才会显得更加专业和更有针对性。然后我们要求ChatGPT根据情绪变量的值来做相应的内容回复,如果情绪变量是正面的,则表达感谢,如果情绪变量是负面的则表达歉意,并且在回复客户时需要引用客户评论中的一些细节,以及需要使用简洁和专业的风格来回复客户,最后以“AI客服助理”作为签名。

prompt = f"""
You are a customer service AI assistant.
Your task is to send an email reply to a valued customer.
Given the customer email delimited by ```, \
Generate a reply to thank the customer for their review.
If the sentiment is positive or neutral, thank them for \
their review.
If the sentiment is negative, apologize and suggest that \
they can reach out to customer service. 
Make sure to use specific details from the review.
Write in a concise and professional tone.
Sign the email as `AI customer agent`.
Customer review: ```{review}```
Review sentiment: {sentiment}
"""

#翻译版本
prompt1="""
你是一位客服AI助理。
您的任务是向尊贵的客户发送电子邮件回复。
给定由 ``` 分隔的客户电子邮件,\
生成回复以感谢客户的评论。
如果情绪是积极的或中立的,感谢他们的评论。
如果情绪是负面的,请道歉并建议他们联系客户服务。
确保使用评论中的具体细节。
以简洁和专业的语气写作。
将电子邮件签名为“AI 客户代理”。
客户评论:```{review}```
评论情绪:{sentiment}
"""


response = get_completion(prompt)
print(response)

 下面是客服AI助理回复email的翻译版本:

这里我们告知ChatGPT它的角色是:一位客服AI助理,因此ChatGPT的回复将会带有客服AI助理的风格和语气。从回复的内容质量上来看,ChatGPT表现的还是非常的专业,完全按照我们对它的要求来做回复。

提醒模型使用客户电子邮件中的详细信息

我们在调用ChatGPT模型时会使用一个默认温度参数:temperature,该参数的默认值我们把它定义为0,0表示ChatGPT每次只从所有可能的结果中获取一个可能性最高的结果,或者是概率最高的结果。该参数的取值范围为0-1之间,为此我们可以调节temperature参数,temperature的值越大,则回复内容的随机性就越大,反之则随机性越小,因此如果我们想让ChatGPT回复有一定的随机性,可以将temperature值设置为0.5或者0.7,这里我们将temperature设置为0.7,看看ChatGPT的回复和之前有什么差异:

prompt = f"""
You are a customer service AI assistant.
Your task is to send an email reply to a valued customer.
Given the customer email delimited by ```, \
Generate a reply to thank the customer for their review.
If the sentiment is positive or neutral, thank them for \
their review.
If the sentiment is negative, apologize and suggest that \
they can reach out to customer service. 
Make sure to use specific details from the review.
Write in a concise and professional tone.
Sign the email as `AI customer agent`.
Customer review: ```{review}```
Review sentiment: {sentiment}
"""
response = get_completion(prompt, temperature=0.7)
print(response)

   

 下面我们将该程序执行多次,看看每次回答的差异:

 

 

 从上面回复的内容上看,ChatGPT每次回复的内容侧重点都有所不同,但主要还是以表达歉意为主要内容,因此如果我们需要让ChatGPT每次回复的时候都有一定的多样性(随机性),那么可以调节温度参数temperature,调高temperature会让回复有更多的随机性。

尝试做一些改变

前面我们的定义了一个情绪变量sentiment=“negative”,那如果我们把sentiment定义为“positive”,结果会怎么样呢?

sentiment = "positive"

prompt = f"""
You are a customer service AI assistant.
Your task is to send an email reply to a valued customer.
Given the customer email delimited by ```, \
Generate a reply to thank the customer for their review.
If the sentiment is positive or neutral, thank them for \
their review.
If the sentiment is negative, apologize and suggest that \
they can reach out to customer service. 
Make sure to use specific details from the review.
Write in a concise and professional tone.
Sign the email as `AI customer agent`.
Customer review: ```{review}```
Review sentiment: {sentiment}
"""
response = get_completion(prompt)
print(response)

下面是回复翻译版本: 

 

 与之前将sentiment定义为“negative”的结果相比,"positive"版的回复多了很多感谢的话语,但同时也提到了产品质量的问题并向客户表达了歉意,从大体上看是正面和反面的话语各占一般,这可能是因为评论本身就是负面的,但是我们又要求ChatGPT以正面的立场来做回复,因此实在是为难ChatGPT了,ChatGPT只能选择部分正面部分是反面的方式来做回复。

接下来我们让ChatGPT来自己识别评论的情绪,然后更加识别的结果来做出回复,这就需要我们修改一下prompt:

prompt = f"""
You are a customer service AI assistant.
Your task is to send an email reply to a valued customer.
Given the customer email delimited by ```, \
Generate a reply to thank the customer for their review.
Identify the sentiment of their review,
If the sentiment is positive or neutral, thank them for \
their review.
If the sentiment is negative, apologize and suggest that \
they can reach out to customer service. 
Make sure to use specific details from the review.
Write in a concise and professional tone.
Sign the email as `AI customer agent`.
Customer review: ```{review}```
"""
response = get_completion(prompt)
print(response)

 下面是回复的翻译版本:

 这里我们在prompt中告知ChatGPT要首先识别客户评论中的情绪“Identify the sentiment of their review”,然后根据识别出来的情绪做相应的回复。从ChatGPT回复的内容上看,主要是以表达歉意和道歉为主要内容,这说明ChatGPT已经识别出评论的情绪是负面的,所以回复的内容侧重点在表达歉意上面。

总结

今天我们学习了如果让ChatGPT来代替人类来回复客户邮件,根据客户邮件的内容做出恰当的回复,如果客户评论是正面的,则回复以表达感谢为主,如果客户评论是负面的,则回复以表达歉意为主。同时我们还学习了通过调整temperature参数来使得chatGPT的回复更具多样性(随机性)。

参考资料

Courses - DeepLearning.AI

如果你觉得我的博文对你有帮助,请帮我买杯咖啡!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微星笔记本618大促至高直降5000元,泰坦GP78 HX爆款配置10999拿下

在万众玩家的期待下,微星笔记本618大促如约而至!不仅覆盖今年全新13代酷睿HX RTX40系显卡的高能游戏本,还特别在618同步推出新品:泰坦GP78 HX,承袭“泰坦系列”旗舰的满血基因极致性能体验外,更有i9-13980…

自学web前端能找到工作吗?是否有必要参加前端培训?

是的,自学前端可以帮助您找到工作,参加培训是根据个人学习能力和经济实力来自己决定的。前端开发是一个相对容易入门的领域,并且许多人通过自学成功地找到了前端开发的工作。以下是好程序员的一些建议,可以帮助您在自学前端时提高…

头顶“米链代工厂”标签,德尔玛上市之后怎么走?

截至5月29日上午收盘,德尔玛股价当前为14.10、成交量55272手、成交额为7820.32万,总市值65.08亿元,总股本为4.62亿。 曲折的股价走势背后,德尔玛未来的增长潜力成疑。德尔玛表示,此次上市将有助于公司在创新家电市场保…

诚迈科技携智达诚远出席高通汽车技术与合作峰会

5月25日至26日,诚迈科技及旗下的智能汽车操作系统及中间件产品提供商智达诚远作为高通生态伙伴,亮相首届“高通汽车技术与合作峰会”,通过产品展示和主题演讲呈现了基于高通骁龙数字底盘的最新智能座舱技术成果,共同展望智能网联汽…

Java代码命名规范是真优雅呀!代码如诗

Java 命名规范 一、Java总体命名规范 1、项目名全部小写. 2、包名全部小写. 3、类名首字母大写,其余组成词首字母依次大写. 4、变量名,方法名首字母小写,如果名称由多个单词组成,除首字母外的每个单词首字母都要大写. 5、常量名全部大写. 6、所有命名规则必须遵循以下规则 : …

Java - ThreadLocal数据存储和传递方式的演变之路

Java - ThreadLocal数据存储和传递方式的演变之路 前言一. InheritableThreadLocal - 父子线程数据传递1.1 父子线程知识预热和 InheritableThreadLocal 实现原理1.2 InheritableThreadLocal 的诟病 二. TransmittableThreadLocal (TTL) 横空出世2.1 跨线程变量传递测试案例2.2…

代码随想录二刷 day06 | 哈希表之 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

day06 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和 哈希表能解决什么问题呢?一般哈希表都是用来快速判断一个元素是否出现集合里。 242.有效的字母异位词 题目链接 解题思路: 题目的意思就是 判断两个字符串是否由相同字母组成。 字…

【Java|基础篇】内部类

文章目录 1.什么是内部类?2.实例内部类3.静态内部类4.局部内部类5.匿名内部类6.结语 1.什么是内部类? 内部类就是在一个类中再定义一个类,内部类也是封装的体现.它可以被声明为 public、protected、private 或默认访问控制符。内部类可以访问外部类的所有成员变量和方法&…

【WebRTC】音视频通信

WebRTC对等体还需要查找并交换本地和远程音频和视频媒体信息,例如分辨率和编解码器功能。 交换媒体配置信息的信令通过使用被称为SDP的会话描述协议格式来交换,被称为提议和应答的元数据块 WebRTC 音视频通信基本流程 一方发起调用 getUserMedia 打开本…

线程池在业务中的实践-美团技术团队分享

原文地址:Java线程池实现原理及其在美团业务中的实践 场景1:快速响应用户请求 描述:用户发起的实时请求,服务追求响应时间。比如说用户要查看一个商品的信息,那么我们需要将商品维度的一系列信息如商品的价格、优惠、…

从小白到大神之路之学习运维第31天

第二阶段基础 时 间:2023年5月29日 参加人:全班人员 内 容: Rsync服务 目录 一、基本信息 二、rsync命令 三、rsyncinotfy实时同步 一、基本信息 (一)概述 rsync是linux 下一个远程数据同步工具 他可通过…

拼多多获取整站实时商品详情数据|商品标题|商品链接,数据采集,数据分析提取教程

拼多多是一个基于社交电商的购物平台,它通过通过价格和优惠吸引大量用户,使用户形成消费场景和消费共同体,最终实现规模效应。在拼多多运营中,API接口起到了重要的作用,它可以实现不同系统之间的信息共享和数据传递&am…

EasyDSS使用OBS推流成功,但不显示播放按钮是什么原因?

EasyDSS支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访问量的要求。 有用户反馈,使…

如何找到高清照片,4K高清风景照片,建议收藏!

想找些高清的风景图来做本个性杂志给朋友或者只是想用做壁纸使用,结果崩溃于互联网图片的图海中。 如何找到高清照片? 1. 图片分享网站 如果你想查找高清的风景图片,那么图片分享网站是一个不错的选择。这些网站通常提供大量的高清图片供用…

VS2019 WPF制作OTA上位机(三)串口打开

先在UI上添加控件 首先&#xff0c;改变一下原来的方法&#xff0c; 原来的三个控件是没有布局的&#xff0c;添加一下布局。 布局用简单的行布局&#xff0c;也就是说从&#xff0c;上到下&#xff0c;分成一行一行的&#xff0c;如下图 将上一篇文章的代码修改 <Window …

【MYSQL】通过存储过程调用事务方法

假设有表test_1&#xff1a; BEGINDECLARE err int DEFAULT 0;declare continue handler for sqlexception set err1;#当sqlexception handler捕捉到异常时&#xff0c;设置err1START TRANSACTION;#开始事务update test_1 set value 50 where id 58;IF (err0) THENcommit;#增…

打包ios-App之使用Appuploader

appuploader教程 一.申请个人开放者账号&#xff1a;https://idmsa.apple.com 网站内申请即可 注意&#xff1a;申请付费开发者账号需要付费688&#xff0c;付费之后就直接申请证书即可 未付费 二.申请ios测试证书&#xff08;p12&#xff09; 1.打开Appuploader&#xff0c;用…

建行对接微信支付

1、获取配置信息&#xff0c;基础代码设置 1.1 建行支付、退款需要商户提供以下信息&#xff1a; 商户代码支付使用商户柜台代码支付使用分行代码支付使用公钥外联平台使用、支付使用操作员号外联平台使用操作员号交易密码外联平台使用证书外联平台使用证书密码外联平台使用 …

python-import request失败

mac电脑 vscode。 &#xff01;&#xff01;&#xff01;踩坑&#xff0c;搞了2天 烦了哦 1&#xff1a;python安装&#xff1a; 下载地址&#xff1a;https://cdn.npmmirror.com/binaries/python/3.12.0/python-3.12.0a7-macos11.pkg 2: python配置PATH terminal指令打which …

JVM学习(十二):执行引擎

目录 一、执行引擎概述 二、执行引擎的工作过程 三、Java代码编译和执行 3.1 过程概述 3.1 javac前端编译 3.2 Java字节码的执行 3.3 编译和解释概述 3.4 高级语言理解与执行过程&#xff08;机器码、指令、汇编&#xff09; 3.4.1 机器码 3.4.2 指令 3.4.3 指…