当前位置: 首页 > news >正文

Building Systems with the ChatGPT API 使用 ChatGPT API 搭建系统(第五章学习笔记及总结)

章节导航:

第二章:Language Models, the Chat Format and Tokens(语言模型,提问范式与 Token)

第三章:Classification(评估输入-分类 )

第四章:Moderation(检查输入-监督)

👉第五章:Chain of Thought Reasoning(处理输入-思维链推理 )

目录

5 处理输入-思维链推理

5.1 思维链 Prompt 设计

5.2 内心独白(Inner monologue)


5 处理输入-思维链推理

5.1 思维链 Prompt 设计

语言模型需要进行详细的逐步推理才能回答特定问题。如果过于匆忙得出结论,很可能在推理链中出现错误。因此,我们可以通过“思维链推理”(Chain of Thought Reasoning)的策略,在查询中明确要求语言模型先提供一系列相关推理步骤,进行深度思考,然后再给出最终答案,这更接近人类解题的思维过程。

其实这就是设计Prompt的两个关键原则的结合,形成思维链推理。

两个原则:1.编写清晰、具体的指令。2. 给予模型充足思考时间。

相比直接要求输出结果,这种引导语言模型逐步推理的方法,可以减少其匆忙错误,生成更准确可靠的响应。思维链推理使语言模型更好地模拟人类逻辑思考,是提升其回答质量的重要策略之一。

下面给了一个特别好的案例:

这个案例我觉得完美的融合了前几章所学到的知识点:第三章的评估输入-分类 Classification;第四章的 检查输入-监督 Moderation 

delimiter = "####"
system_message = f"""
请按照以下步骤回答客户的查询。客户的查询将以四个井号(#)分隔,即 {delimiter}。步骤 1:{delimiter} 首先确定用户是否正在询问有关特定产品或产品的问题。产品类别不计入范围。步骤 2:{delimiter} 如果用户询问特定产品,请确认产品是否在以下列表中。所有可用产品:产品:TechPro 超极本
类别:计算机和笔记本电脑
品牌:TechPro
型号:TP-UB100
保修期:1 年
评分:4.5
特点:13.3 英寸显示屏,8GB RAM,256GB SSD,Intel Core i5 处理器
描述:一款适用于日常使用的时尚轻便的超极本。
价格:$799.99产品:BlueWave 游戏笔记本电脑
类别:计算机和笔记本电脑
品牌:BlueWave
型号:BW-GL200
保修期:2 年
评分:4.7
特点:15.6 英寸显示屏,16GB RAM,512GB SSD,NVIDIA GeForce RTX 3060
描述:一款高性能的游戏笔记本电脑,提供沉浸式体验。
价格:$1199.99产品:PowerLite 可转换笔记本电脑
类别:计算机和笔记本电脑
品牌:PowerLite
型号:PL-CV300
保修期:1年
评分:4.3
特点:14 英寸触摸屏,8GB RAM,256GB SSD,360 度铰链
描述:一款多功能可转换笔记本电脑,具有响应触摸屏。
价格:$699.99产品:TechPro 台式电脑
类别:计算机和笔记本电脑
品牌:TechPro
型号:TP-DT500
保修期:1年
评分:4.4
特点:Intel Core i7 处理器,16GB RAM,1TB HDD,NVIDIA GeForce GTX 1660
描述:一款功能强大的台式电脑,适用于工作和娱乐。
价格:$999.99产品:BlueWave Chromebook
类别:计算机和笔记本电脑
品牌:BlueWave
型号:BW-CB100
保修期:1 年
评分:4.1
特点:11.6 英寸显示屏,4GB RAM,32GB eMMC,Chrome OS
描述:一款紧凑而价格实惠的 Chromebook,适用于日常任务。
价格:$249.99步骤 3:{delimiter} 如果消息中包含上述列表中的产品,请列出用户在消息中做出的任何假设,例如笔记本电脑 X 比笔记本电脑 Y 大,或者笔记本电脑 Z 有 2 年保修期。步骤 4:{delimiter} 如果用户做出了任何假设,请根据产品信息确定假设是否正确。步骤 5:{delimiter} 如果用户有任何错误的假设,请先礼貌地纠正客户的错误假设(如果适用)。只提及或引用可用产品列表中的产品,因为这是商店销售的唯一五款产品。以友好的口吻回答客户。使用以下格式回答问题:
步骤 1:{delimiter} <步骤 1 的推理>
步骤 2:{delimiter} <步骤 2 的推理>
步骤 3:{delimiter} <步骤 3 的推理>
步骤 4:{delimiter} <步骤 4 的推理>
回复客户:{delimiter} <回复客户的内容>请确保在每个步骤之间使用 {delimiter} 进行分隔。
"""
user_message = f"""BlueWave Chromebook 比 TechPro 台式电脑贵多少?"""messages =  [  
{'role':'system', 'content': system_message},    
{'role':'user', 'content': f"{delimiter}{user_message}{delimiter}"},  
] response = get_completion_from_messages(messages)
print(response)

以下是模型的输出:

步骤 1:#### 用户正在询问两款特定产品的价格差异,因此是关于特定产品的查询。
步骤 2:#### 用户在消息中提到的两款产品都在提供的列表中:BlueWave Chromebook 和 TechPro 台式电脑。
步骤 3:#### 用户假设 BlueWave Chromebook 比 TechPro 台式电脑贵,并询问贵多少。
步骤 4:#### 根据产品信息,BlueWave Chromebook 的价格是 $249.99,而 TechPro 台式电脑的价格是 $999.99。因此,TechPro 台式电脑实际上比 BlueWave Chromebook 贵 $750。 
回复客户:#### 您好,实际上 TechPro 台式电脑($999.99)比 BlueWave Chromebook($249.99)贵 $750,而不是 BlueWave Chromebook 比 TechPro 台式电脑贵。希望这能帮助您!如果您有其他问题或需要进一步的帮助,请随时告诉我。

上面的这个案例 system_message 和 messages 都使用了delimiter 作为分割符(防止Prompt 注入),system_message 的整个步骤流程进行了对商品类别推断,分类等。

5.2 内心独白(Inner monologue)

对于某些应用程序,模型的推理过程可能不适合与用户共享。例如,在辅导类应用程序中,我们可能希望鼓励学生自行解决问题,但模型对学生解决方案的推理过程可能会泄露答案。

内心独白(Inner monologue是一种可以用来缓解这种情况的策略,这是一种隐藏模型推理过程的高级方法。

内心独白的思想是让模型以一种不会透露答案的方式生成部分输出,这样用户就无法看到完整的推理过程。目标是将这些部分隐藏在一个结构化的格式中,使得传递它们变得容易。然后,在向用户呈现输出之前,对输出进行一些转化,使得只有部分输出是可见的。

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)

经过上面代码的处理,就可以只提供回复客户的内容(如下)。

您好,实际上 TechPro 台式电脑($999.99)比 BlueWave Chromebook($249.99)贵 $750,而不是 BlueWave Chromebook 比 TechPro 台式电脑贵。希望这能帮助您!如果您有其他问题或需要进一步的帮助,请随时告诉我。
http://www.dtcms.com/a/342328.html

相关文章:

  • Vue3源码reactivity响应式篇之Map、Set等代理处理详解
  • OpenCVSharp 核心功能模块详解:从基础操作到实战应用
  • 2025-08-21 Python进阶5——类和对象
  • Visual Studio 在机台上远程调试详细教程
  • LeetCode 反转链表
  • imx6ull-驱动开发篇33——platform 平台驱动模型
  • 【运维进阶】Shell 变量
  • Docker--Docker网络
  • 【学习笔记】网络安全专用产品类别与参考标准
  • 【问题思考】二分查找对比三分查找(任意点查找)的优越性(熵的角度)【gemini完成】
  • 语义分割开山之作:FCN网络从入门到精通
  • 概率论基础教程第5章 连续型随机变量(三)
  • 【复杂网络技术】什么是图神经网络?
  • Elasticsearch 面试题完整笔记
  • 大数据面试常见问题
  • 【网络】http 协议中 Vary 标头的作用
  • UI自动化测试
  • 【力扣 Hot100】滑动窗口巧解字串问题
  • 鸿蒙中基础耗时分析:Time分析
  • Minecraft 1.18.2 或更高版本(如1.19.2、1.20.1)选择模组mod加载器
  • spark数据缓存机制
  • 在没有客户端的客户环境下,如何用 Python 一键执行 MySQL 与达梦数据库 SQL
  • 【开源项目】边浏览边学外语:开源工具 Read Frog 如何用 AI 重构语言学习
  • Java实战:深度解析SQL中的表与字段信息(支持子查询、连接查询)
  • 粗粮厂的基于flink的汽车实时数仓解决方案
  • Elasticsearch Ruby 客户端elasticsearch / elasticsearch-api
  • 小程序UI(自定义Navbar)
  • 【TrOCR】用Transformer和torch库实现TrOCR模型
  • yggjs_rlayout 科技风主题布局使用教程
  • StarRocks不能启动 ,StarRocksFe节点不能启动问题 处理