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

章节导航:

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

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

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

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

第六章:Prompt Chaining Prompts(处理输入-Prompt 链提示)

第七章: Check Outputs(检查结果)

第八章:Evaluation(搭建一个带评估的端到端问答系统)

目录

[5 处理输入-思维链推理](#5 处理输入-思维链推理)

[5.1 思维链 Prompt 设计](#5.1 思维链 Prompt 设计)

[5.2 内心独白(Inner monologue)](#5.2 内心独白(Inner monologue))


5 处理输入-思维链推理

5.1 思维链 Prompt 设计

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

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

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

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

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

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

python 复制代码
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} 进行分隔。
"""
python 复制代码
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)

以下是模型的输出:

python 复制代码
步骤 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 **)**是一种可以用来缓解这种情况的策略,这是一种隐藏模型推理过程的高级方法。

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

python 复制代码
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)

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

python 复制代码
您好,实际上 TechPro 台式电脑($999.99)比 BlueWave Chromebook($249.99)贵 $750,而不是 BlueWave Chromebook 比 TechPro 台式电脑贵。希望这能帮助您!如果您有其他问题或需要进一步的帮助,请随时告诉我。
相关推荐
Hello_Embed1 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中1 天前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Grassto1 天前
RAG 从入门到放弃?丐版 demo 实战笔记(go+python)
笔记
Magnetic_h1 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
研梦非凡1 天前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
limengshi1383921 天前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
知识分享小能手1 天前
React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
前端·javascript·vue.js·学习·react.js·react·anti-design-vue
周周记笔记1 天前
学习笔记:第一个Python程序
笔记·学习
丑小鸭是白天鹅1 天前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
潘达斯奈基~1 天前
《大数据之路1》笔记2:数据模型
大数据·笔记