使用大型语言模(LLM)构建系统(三):思维链推理

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。

下面是我们访问大型语言模(LLM)的主要代码:

import openai#您的openai的api key
openai.api_key ='YOUR-OPENAI-API-KEY' def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0, max_tokens=500):response = openai.ChatCompletion.create(model=model,messages=messages,temperature=temperature, max_tokens=max_tokens, )return response.choices[0].message["content"]

连锁思维提示(Chain-of-Thought Prompting)

当人类遇到一些复杂的逻辑问题时,我们会有一套逻辑推理的思维逻辑,同样我们也希望ChatGPT也能像人类那样具备基本的逻辑推理能力,为了达到这个目的,我们有时候需要教导ChatGPT按照人类的思维方式来处理某些较为复杂的逻辑问题,我们来看下面一个例子,在这个例子中我们有5个产品,我们要让ChatGPT来充当客服来回答客户提出的各种关于特定产品的问题。

delimiter = "####"
system_message = f"""
Follow these steps to answer the customer queries.
The customer query will be delimited with four hashtags,\
i.e. {delimiter}. Step 1:{delimiter} First decide whether the user is \
asking a question about a specific product or products. \
Product cateogry doesn't count. Step 2:{delimiter} If the user is asking about \
specific products, identify whether \
the products are in the following list.
All available products: 
1. Product: TechPro UltrabookCategory: Computers and LaptopsBrand: TechProModel Number: TP-UB100Warranty: 1 yearRating: 4.5Features: 13.3-inch display, 8GB RAM, 256GB SSD, Intel Core i5 processorDescription: A sleek and lightweight ultrabook for everyday use.Price: $799.992. Product: BlueWave Gaming LaptopCategory: Computers and LaptopsBrand: BlueWaveModel Number: BW-GL200Warranty: 2 yearsRating: 4.7Features: 15.6-inch display, 16GB RAM, 512GB SSD, NVIDIA GeForce RTX 3060Description: A high-performance gaming laptop for an immersive experience.Price: $1199.993. Product: PowerLite ConvertibleCategory: Computers and LaptopsBrand: PowerLiteModel Number: PL-CV300Warranty: 1 yearRating: 4.3Features: 14-inch touchscreen, 8GB RAM, 256GB SSD, 360-degree hingeDescription: A versatile convertible laptop with a responsive touchscreen.Price: $699.994. Product: TechPro DesktopCategory: Computers and LaptopsBrand: TechProModel Number: TP-DT500Warranty: 1 yearRating: 4.4Features: Intel Core i7 processor, 16GB RAM, 1TB HDD, NVIDIA GeForce GTX 1660Description: A powerful desktop computer for work and play.Price: $999.995. Product: BlueWave ChromebookCategory: Computers and LaptopsBrand: BlueWaveModel Number: BW-CB100Warranty: 1 yearRating: 4.1Features: 11.6-inch display, 4GB RAM, 32GB eMMC, Chrome OSDescription: A compact and affordable Chromebook for everyday tasks.Price: $249.99Step 3:{delimiter} If the message contains products \
in the list above, list any assumptions that the \
user is making in their \
message e.g. that Laptop X is bigger than \
Laptop Y, or that Laptop Z has a 2 year warranty.Step 4:{delimiter}: If the user made any assumptions, \
figure out whether the assumption is true based on your \
product information. Step 5:{delimiter}: First, politely correct the \
customer's incorrect assumptions if applicable. \
Only mention or reference products in the list of \
5 available products, as these are the only 5 \
products that the store sells. \
Answer the customer in a friendly tone.Use the following format:
Step 1:{delimiter} <step 1 reasoning>
Step 2:{delimiter} <step 2 reasoning>
Step 3:{delimiter} <step 3 reasoning>
Step 4:{delimiter} <step 4 reasoning>
Response to user:{delimiter} <response to customer>Make sure to include {delimiter} to separate every step.
"""

下面我们将system_message翻译成中文,以便大家能更好的理解。

delimiter = "####"
system_message = f"""
按照以下步骤回答客户查询。
客户查询将用四个主题标签分隔,即 {delimiter}。步骤1:{delimiter} 首先判断用户问的是关于一个或多个特定产品的问题。 产品类别不算数。步骤2:{delimiter} 如果用户询问的是特定产品,请确定产品是否在以下列表中。
所有可用产品:
1.产品:TechPro超极本
类别:电脑和笔记本电脑
品牌: TechPro
型号:TP-UB100
质保:1年
评分:4.5
特点:13.3 英寸显示屏,8GB 内存,256GB 固态硬盘,英特尔酷睿 i5 处理器
描述:适合日常使用的时尚轻巧的超极本。
价格:799.99 美元2.产品:BlueWave游戏笔记本电脑
类别:电脑和笔记本电脑
品牌:蓝波
型号:BW-GL200
质保:2年
评分:4.7
特点:15.6 英寸显示屏,16GB RAM,512GB SSD,NVIDIA GeForce RTX 3060
描述:高性能游戏笔记本电脑,带来身临其境的体验。
价格:1199.99 美元3.产品:PowerLite敞篷车
类别:电脑和笔记本电脑
品牌:PowerLite
型号:PL-CV300
质保:1年
评分:4.3
特点:14 英寸触摸屏、8GB RAM、256GB SSD、360 度铰链
描述:一款带有灵敏触摸屏的多功能可转换笔记本电脑。
价格:699.99 美元4. 产品:TechPro Desktop
类别:电脑和笔记本电脑
品牌: TechPro
型号:TP-DT500
质保:1年
评分:4.4
特点:英特尔酷睿 i7 处理器、16GB 内存、1TB 硬盘、NVIDIA GeForce GTX 1660
描述:一款功能强大的台式电脑,适合工作和娱乐。
价格:999.99 美元5. 产品:BlueWave Chromebook
类别:电脑和笔记本电脑
品牌:蓝波
型号:BW-CB100
质保:1年
评分:4.1
特点:11.6 英寸显示屏、4GB 内存、32GB eMMC、Chrome 操作系统
描述:一款小巧实惠的 Chromebook,适合日常任务。
价格:249.99 美元步骤3:{delimiter} 如果消息包含上面列表中的产品,请列出用户在消息中所做的任何假设,
例如 笔记本电脑 X 比笔记本电脑 Y 大,或者笔记本电脑 Z 有 2 年保修。步骤4:{delimiter}:如果用户做出了任何假设,根据你的产品信息判断假设是否成立。步骤5:{delimiter}:首先,如果适用,礼貌地纠正客户的错误假设。 
仅提及或参考 5 种可用产品列表中的产品,因为这是商店销售的仅有的 5 种产品。 
用友好的语气回答客户。使用以下格式:
步骤1:{delimiter}
步骤2:{delimiter}
步骤3:{delimiter}
步骤4:{delimiter}
对用户的响应:{delimiter}确保包括 {delimiter} 以分隔每个步骤。
"""

这里我们指导ChatGPT形成像人类那样逻辑推理的思维链,即在解决一个复杂问题时候我们需要有若干个步骤,其中每个步骤解决一个小问题,且各个步骤存在前后逻辑关系即只有完成了之前的步骤才能执行后面的步骤,当完成所有的步骤后就可以解决这个复杂问题。下面我们看看ChatGPT是用逻辑推理来解决用户的各种问题的。

user_message = f"""
by how much is the BlueWave Chromebook more expensive \
than the TechPro Desktop"""messages =  [  
{'role':'system', 'content': system_message},    
{'role':'user', 'content': f"{delimiter}{user_message}{delimiter}"},  
] response = get_completion_from_messages(messages)
print(response)

 这里客户向ChatGPT提出的问题是:“BlueWave Chromebook 比 TechPro Desktop贵多少”。首先BlueWave Chromebook和TechPro Desktop都在我们的产品名单中,步骤1ChatGPT判断正确,在步骤2中ChatGPT列出了这两个商品对应的价格,这也符合我们对它的要求,在步骤3中,ChatGPT也安装我们对它的要求列举出了用户的假设,即:BlueWave Chromebook 比 TechPro Desktop 要贵。在步骤4中ChatGPT基于产品信息判断出用户的假设不正确,因为BlueWave Chromebook要比TechPro Desktop便宜而不是更贵。在最后回复客户时ChatGPT纠正了用户的错误的假设,并给出了两个产品的实际价格加以佐证。

下面我们将ChatGPT的回复翻译成中文:

 下面我们再询问一个产品问题,但它并不在目前的产品名单中:

user_message = f"""
do you sell tvs"""
messages =  [  
{'role':'system', 'content': system_message},    
{'role':'user', 'content': f"{delimiter}{user_message}{delimiter}"},  
] 
response = get_completion_from_messages(messages)
print(response)

 

 这里可以看到,当用户询问的商品不在名单中时,步骤3没有执行,当用户没有做假设时步骤4没有被执行,所以此时ChatGPT只执行了我们给他设计好的步骤1,步骤2,和步骤5,这完成正确。

格式化输出结果

由于我们要求 LLM 用分隔符分隔其推理步骤,但是对于用户来说他们并不需要知道ChatGPT的思维链的推理过程,因此我们需要在最终的输出结果中隐藏掉步骤1至步骤4的消息:

try:final_response = response.split(delimiter)[-1].strip()
except Exception as e:final_response = "Sorry, I'm having trouble right now, please try asking another question."print(final_response)

 总结

 今天我们学习了如何指导ChatGPT像人类那样形成逻辑推理的思维逻辑,我们让ChatGPT将解决复杂问题的过程拆分成若干个步骤,每个步骤解决一个小问题,且各个步骤存在前后逻辑关系即只有完成了之前的步骤才能执行后面的步骤,当完成了所有的步骤后就可以解决这个复杂问题。最后我们还学习了如何来隐藏ChatGPT的逻辑推理过程。

参考资料

DLAI - Learning Platform Beta

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某跨境出口电商APP参数解密

工具 jadxfrida-15.1.1charlespostman包名&#xff08;Y29tLmRoZ2F0ZS5idXllcm1vYg&#xff09; 抓包 使用postman测试发现以上参数只需要sign和deviceId两个参数&#xff1b; 看sign参数位数猜测可能是MD5&#xff0c;deviceId的形式类似于uuid4&#xff08;此处只是猜测&am…

海外跨境电商商城源码-进出口电商平台网站-多语言多商户平台

欢迎探讨&#xff0c;名片交流 一、海外跨境电商系统源码包括以下几个部分&#xff1a; 前端&#xff1a;React框架、Bootstrap 后端&#xff1a;Node.js&#xff0c;Express框架、NoSQL数据库 支付系统&#xff1a;Stripe、PayPal等主流支付平台 物流系统&#xff1a;DHL…

黑白照片上色变彩色?狂飙大嫂竟美成这样?人工智能太可怕了(11)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 欢迎和猫妹一起&#xff0c;趣味学Python。 今日主题 如何利用人工智能API&#xff0c;给黑白图片上色。 智能识别黑白图像内容并填充色彩&#xff0c;使黑白图像变得鲜活。 我…

开发任务拆分方法

一、背景 任务总和应该能反馈为完成某个目标需要做的所有工作总量。WBS中也讲了很多分解的原则、标准和方法&#xff0c;但是在实际工作中&#xff0c;做任务拆分时候往往只看到了关键任务而忽略了其他细节&#xff0c;或者任务粒度过大&#xff0c;导致任务长时间处于执行中状…

多图详解WBS任务分解法

专业项目管理知识请点击下方关注项目管理精英 更多推荐 一位项目经理的深刻反思 项目经理如何正确使用鱼骨图&#xff1f; 从助理到总监&#xff0c;项目经理的成长之路 一图了解通俗易懂的项目管理 免责声明&#xff1a; 本公众号部分分享的资料来自网络收集和整理&am…

任务分解的五个步骤

近期有不少新同事入职&#xff0c;深感任务分解能力对职场新手太过重要&#xff0c;旧文再次分享。 以下正文&#xff1a; 写OKR&#xff08;Objectives and Key Results&#xff0c;是一套明确和跟踪目标及其完成情况的管理工具和方法&#xff09;深层次的问题就是掌握任务定…

使用腾讯tapd工具,进行创建迭代任务、任务拆解、、制定整体发布计划、多维度甘特图进度把控

举例操作1、创建迭代---》每一个项目可以有多个迭代任务&#xff0c;一般一个迭代任务时间安排可以保持在2周&#xff0c;敏捷开发2、创建任务 ---》创建任务时一定要关联迭代&#xff0c;这样后面甘特图才会将多维度项目进度才会展示出来 3、甘特图进度管理 视图切换有一下…

谷歌地球不能用了?我敢说大部分人不知道真实原因

Google earth 大家知道谷歌地球由于某些原因已经退出国内市场&#xff0c;但是一直以一种隐蔽的方式服务着大家&#xff0c;换句话说还是可以使用的。 但近日小编发现调用谷歌地球的国产地图软件统统不能用了&#xff1f;哪些软件我就不一一列举了&#xff0c;重点是为什么不…

地球周围的小行星,陨石。如何消除他们在未来对地球撞击而带来的灾难

我是在NASA网站上看到的关于2022年5月6日早上8点34分小行星会撞击地球的概念。而NASA推算出的概率是3800分之一。在此之前NASA就做过类似的研究&#xff0c;希望能用炸弹或者其他物质将其毁灭。但是&#xff0c;抱歉&#xff0c;就算小行星被炸飞&#xff0c;但他依旧是一个小行…

为什么入侵地球的总是火星人,是别的星球不够努力吗?

不知道大家是否注意过&#xff0c;在我们的小说、电影甚至音乐等流行文化中&#xff0c;提到外星人的具体形象&#xff0c;最常见的往往是“火星人”。那么金星人、木星人、水星人等为什么偏偏就不受地球人待见呢&#xff1f; 这其中不仅关系到火星距离地球较近&#xff0c;在夜…

chatgpt赋能python:Python导入数据

Python导入数据 Python是一门功能强大的编程语言&#xff0c;可以用来处理各种数据。在Python中&#xff0c;导入数据是非常常见的操作。但是&#xff0c;对于初学者&#xff0c;可能还不太了解如何导入数据。本篇文章将会介绍如何在Python中导入数据。 为什么要导入数据&…

最新Wordpress网站因重装宝塔而导致数据库崩溃无法访问的终极解决办法

在当今数字化时代&#xff0c;拥有自己的网站已成为越来越多人展示个人或企业信息的重要方式。虽然建立并维护自己网站看起来是一个简单的过程&#xff0c;但如果出现问题&#xff0c;比如数据丢失、网站无法正常运行等情况时&#xff0c;往往会令用户感到十分懊恼和无助。在这…

视频分享平台PeerTube的搭建

老苏下载了吴恩达的 Prompt for developer 课程&#xff0c;不管是否有兴趣&#xff0c;都可以看看&#xff0c;早晚我们都得学会使用 ChatGPT 虽然课程对话是英文&#xff0c;但有中文字幕&#xff0c;课程地址&#xff1a;https://www.aliyundrive.com/s/H3CpaapD87Z 这个软…

chatgpt赋能Python-python_board

Python Board - 一个强大的开源论坛系统 简介 Python Board是一个基于Django框架的开源论坛系统&#xff0c;具有用户管理、帖子管理、分类管理、评论管理、站内信等功能&#xff0c;支持Markdown格式的文本编辑&#xff0c;并且代码开放&#xff0c;可以由其他开发者进行二次…

记计算机三级网络技术考试经历(附题库)

有教学视频和题库&#xff08;见文末&#xff09;&#xff0c;零基础跟着题库复习两天能过&#xff0c;亲身经历&#xff0c;朋友圈和证书为证。以下时考完后写的总结&#xff1a; 眼见24日的考试步步紧逼也不能白花钱当水军吧&#xff0c;就向同学要来了题库看看视频做做题&a…

chatgpt赋能python:Python题库选择指南

Python题库选择指南 Python 是一种高级编程语言&#xff0c;非常受开发者们的欢迎&#xff0c;它易于学习&#xff0c;语法简洁&#xff0c;广泛应用于数据科学、机器学习、人工智能、自动化、Web开发等多个领域。为了掌握 Python 编程的技能和知识&#xff0c;你需要在练习中…

如何写好周报并建立周报模板

作为一个刚入门的打工人&#xff0c;开始工作后&#xff0c;才发现写周报真的很重要。华为对于新员工有相关的培训&#xff0c;但等我看到那里时已经是我正式工作的第二周了&#xff0c;回首第一周自己freestyle的周报就很...惨不忍睹。所以在此做一个总结&#xff0c;如何写好…

QT-登录界面的实现

QT-登录界面的实现 一、登录界面设计要求 ​ 创建一个窗体&#xff0c;设计用户登录的界面&#xff08;含有用户名、密码&#xff09;&#xff0c;并实现用户登录的功能&#xff0c;要求用户提交的登录按钮时能获取界面中的用户名、密码数据并与数据库中的数据进行匹配&#…

tkinter UI界面模板

写在前面 之前也有写过一篇关于tkinter交互界面的文档&#xff0c;那也是第一次接触&#xff0c;准确说是实际工作用到这个东西&#xff0c;也是现学现卖。当时考虑的也是不多&#xff0c;各种东西都是基于当时特定需求的设定&#xff0c;随着用的越多&#xff0c;越发的发掘之…

QT 做的仿QQ UI界面 登录注册聊天

下载地址:x​​​​​​​QT仿QQ聊天实时IMUI-C文档类资源-CSDN下载 1. 登录 2.主页面 3. 聊天页面 参考了不少人的东西,做出来的. 代码结构如下: