Prompt 提示词工程
提示词工程本身就是一个为了让大模型 答复得更完美 的方法论,它更像一个 AI 世界的向导。
文档参考:提示工程指南 – Nextra
零样本提示
直接与大模型进行对话
如今,经过大量数据训练并调整指令的LLM能够执行零样本任务。以下是我们使用的一个示例:
提示:
将文本分类为中性、负面或正面。文本:我认为这次假期还可以。情感:输出:
中性请注意,在上面的提示中,我们没有向模型提供任何示例——这就是零样本能力的作用。
少样本提示
通过提供一个示例,引导大模型生成内容
虽然大型语言模型展示了惊人的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术,以启用上下文学习,我们在提示中提供演示以引导模型实现更好的性能。演示作为后续示例的条件,我们希望模型生成响应。
在这个例子中,任务是在句子中正确使用一个新词。
提示:
“whatpu”是坦桑尼亚的一种小型毛茸茸的动物。 一个使用whatpu这个词的句子的例子是:我们在非洲旅行时看到了这些非常可爱的whatpus。 “farduddle”是指快速跳上跳下。 一个使用farduddle这个词的句子的例子是:输出:
当我们赢得比赛时,我们都开始庆祝跳跃。我们可以观察到,模型通过提供一个示例已经学会了如何执行任务。
链式思考(CoT)提示
针对一个案例,提供思路式的示例加入提示词中,引导大模型生成内容
提示:
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。 A:将所有奇数相加(9、15、1)得到25。答案为False。 这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。 A:将所有奇数相加(17、19)得到36。答案为True。 这组数中的奇数加起来是偶数:16、11、14、4、8、13、24。 A:将所有奇数相加(11、13)得到24。答案为True。 这组数中的奇数加起来是偶数:17、9、10、12、13、4、2。 A:将所有奇数相加(17、9、13)得到39。答案为False。 这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。 A:输出:
将所有奇数相加(15、5、13、7、1)得到41。答案为False。提供推理步骤来实现对大模型应答的应答
零样本 COT 提示
在链式思考的基础上,去掉思路式的示例,改成“让我们逐步思考”这样的话术,提醒 ai 自己去逐步思考,就好像期末复习,老师不给考试范围,只告诉学生们自己好好复习。
按照链式思考的思路,但是这次不给大模型具体的推理步骤,只是提醒大模型要去逐步思考,比如将“让我们逐步思考”添加到原始提示中
提示:
我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。 我还剩下多少苹果?输出:
11个苹果答案是不正确的!现在让我们尝试使用特殊提示。
提示:
我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。 我还剩下多少苹果?让我们逐步思考。输出:
首先,您从10个苹果开始。您给了邻居和修理工各2个苹果,所以您还剩下6个苹果。 然后您买了5个苹果,所以现在您有11个苹果。 最后,您吃了1个苹果,所以您还剩下10个苹果。自动思维链(Auto-CoT)
ai 自己找找相似案例,来自动生成推理示范
如果我们想让AI学会“一步步思考”(也就是思维链),我们需要人工去给它写很多高质量的“示范题”和“解题步骤”。这不仅费时费力,而且人工写出来的例子可能不够丰富,导致AI学得不完美。为了解决这个麻烦,研究人员发明了Auto-CoT,让AI利用“让我们一步一步地思考”这种提示,自己去生成推理过程。
Auto-CoT 主要由两个阶段组成:
- 阶段1:问题聚类:将给定问题划分为几个聚类
- 阶段2:演示抽样:从每组数组中选择一个具有代表性的问题,并使用带有简单启发式的 Zero-Shot-CoT 生成其推理链
这两个阶段,通俗一点翻译就是:一个“出题+做题”的自动化流水线
- 第一步:问题聚类(给题目分类)。就像老师整理试卷一样,先把一堆杂乱的问题按照类型分好类。
- 第二步:演示抽样(挑代表并写解析)。从每个类别里挑出一道最典型、最具代表性的题目,然后让AI用“零样本思维链(Zero-Shot-CoT)”的方式,自己把这道题的推理步骤写出来,当作示范。
因为AI自己生成的推理步骤偶尔也会出错,所以我们需要给它定一些“简单但有效”的筛选标准(启发式方法)。比如,我们可以规定:
- 挑出来的代表性问题,长度要适中(比如60个词左右,不要太长也不要太短)。
- AI生成的推理步骤,数量要合理(比如5步左右,清晰明了)。
通过这种“长度+步骤数”的简单限制,可以鼓励AI生成简单、准确、高质量的示范,从而避免它在推理时“胡言乱语”或把简单问题复杂化。
自我一致性
多想几个思路,内部投票看谁的思路更好
自我一致性(Self-Consistency)是一种高级解码策略,主要用于提升大语言模型(LLMs)在复杂推理任务上的准确性。
用通俗的话来解释,它的核心思想是:“三个臭皮匠,顶个诸葛亮”。模型在解决复杂问题时,单一的思考路径可能会出错,但如果让模型从多个不同的角度、生成多条不同的推理路径,最后通过“少数服从多数”的投票机制来得出最终答案,准确率就会大幅提升。
具体来说,自我一致性包含以下三个核心步骤:
- 生成多样化的推理路径(Diverse Reasoning Paths)
在传统的思维链(CoT)中,模型通常只生成一条推理过程。而在自我一致性中,我们会让模型对同一个问题生成多条(比如 N 条)不同的推理链。这通常通过调高模型的采样温度(Temperature)来实现,鼓励模型在每一步推理时探索不同的可能性,而不是总是选择概率最高的那个词。 - 提取最终答案(Extract Final Answers)
模型生成多条推理链后,系统会分别提取出每条推理链最终得出的答案。 - 边缘概率投票(Marginal Probability Voting)
这是最关键的一步。系统会统计这些最终答案,采用多数投票(Majority Voting)的方式选出出现频率最高的答案作为最终结果。即使某条推理链中间出现了小错误,只要最终答案与其他正确的推理链一致,它依然能为正确答案“投票”。
案例:
提示:
Q:林中有15棵树。林业工人今天将在林中种树。完成后,将有21棵树。林业工人今天种了多少棵树?A:我们从15棵树开始。后来我们有21棵树。差异必须是他们种树的数量。因此,他们必须种了21-15 = 6棵树。答案是6。Q:停车场有3辆汽车,又来了2辆汽车,停车场有多少辆汽车?A:停车场已经有3辆汽车。又来了2辆。现在有3 + 2 = 5辆汽车。答案是5。Q:Leah有32块巧克力,她的姐姐有42块。如果他们吃了35块,他们总共还剩多少块?A:Leah有32块巧克力,Leah的姐姐有42块。这意味着最初有32 + 42 = 74块巧克力。已经吃了35块。因此,他们总共还剩74-35 = 39块巧克力。答案是39。Q:Jason有20个棒棒糖。他给Denny一些棒棒糖。现在Jason只有12个棒棒糖。Jason给Denny多少棒棒糖?A:Jason有20个棒棒糖。因为他现在只有12个,所以他必须把剩下的给Denny。他给Denny的棒棒糖数量必须是20-12 = 8个棒棒糖。答案是8。Q:Shawn有五个玩具。圣诞节,他从他的父母那里得到了两个玩具。他现在有多少个玩具?A:他有5个玩具。他从妈妈那里得到了2个,所以在那之后他有5 + 2 = 7个玩具。然后他从爸爸那里得到了2个,所以总共他有7 + 2 = 9个玩具。答案是9。Q:服务器房间里有9台计算机。从周一到周四,每天都会安装5台计算机。现在服务器房间里有多少台计算机?A:从周一到周四有4天。每天都添加了5台计算机。这意味着总共添加了4 * 5 =20台计算机。一开始有9台计算机,所以现在有9 + 20 = 29台计算机。答案是29。Q:Michael有58个高尔夫球。星期二,他丢失了23个高尔夫球。星期三,他又丢失了2个。星期三结束时他还剩多少个高尔夫球?A:Michael最初有58个球。星期二他丢失了23个,所以在那之后他有58-23 = 35个球。星期三他又丢失了2个,所以现在他有35-2 = 33个球。答案是33。Q:Olivia有23美元。她用每个3美元的价格买了五个百吉饼。她还剩多少钱?A:她用每个3美元的价格买了5个百吉饼。这意味着她花了15美元。她还剩8美元。Q:当我6岁时,我的妹妹是我的一半年龄。现在我70岁了,我的妹妹多大?A:输出 1:
当我6岁时,我的妹妹是我的一半年龄,也就是3岁。现在我70岁了,所以她是70-3 = 67岁。答案是67。输出 2:
当叙述者6岁时,他的妹妹是他年龄的一半,也就是3岁。现在叙述者70岁了,他的妹妹应该是70-3 = 67岁。答案是67。输出 3:
当我6岁时,我的妹妹是我的一半年龄,也就是3岁。现在我70岁了,所以她是70/2 = 35岁。答案是35。这种提示方式,要注意API 成本与延迟, 因为一个问题需要让模型回答 N 次(通常 N=3 到 5),所以消耗的 Token 数量和时间是普通提示的 N 倍。建议只在高难度、高价值的推理任务中使用。
生成知识提示
就好像你要写一个名人的作文,那你就需要回忆一下这个名人都有什么经历
核心思想可以通俗地概括为:“在给出最终答案之前,先让AI把脑子里相关的背景知识梳理一遍。”这种方法解决了模型“不知道自己知道什么”的问题,帮助它将零散的内部知识连接起来,从而得出更准确的结论
核心工作机制:两阶段认知过程
与直接提问不同,GKP 将任务拆解为两个连续的子过程:
- 阶段一:知识生成(Knowledge Generation)
在这个阶段,模型扮演“知识生成器”的角色。针对用户的原始问题,模型会首先生成多个(例如20个)与主题相关的背景事实或知识片段。这些知识是模型内部隐式记忆的激活,且不应直接包含最终答案。 - 阶段二:知识整合与答案形成(Knowledge Integration)
在这个阶段,模型扮演“推理模型”的角色。系统会将原始问题与阶段一生成的多个知识片段进行组合(查询增强)。然后,模型会基于这些丰富的上下文信息,评估各种可能的答案,并最终选择概率最高、最合理的答案作为输出
可以把传统的提示工程比作闭卷考试,模型必须凭直觉直接给出答案;而“生成知识提示”则相当于开卷考试。在答题前,模型被允许先查阅一下自己脑海中的“参考资料”(生成相关知识),然后再结合这些资料和题目,经过深思熟虑后写下最终答案。这种“先思考并阐述你对这个主题的了解”的元认知过程,显著提升了回答的质量。
链式提示(Prompt Chaining)
链式提示(Prompt Chaining)是一种将复杂任务分解为一系列更小、更明确的子任务,并按顺序执行的设计模式。每个子任务都有一个专门的提示词,前一个子任务的输出会成为下一个子任务的输入。
可以把它想象成一条智能化的流水线:每个环节(提示)都专注于做好一件事,并将成果传递给下一环节。与试图让AI一次解决所有问题相比,这种方法能显著提高输出的可靠性和质量。
链式提示与思维链(Chain-of-Thought)这两个概念容易混淆,但核心区别在于结构:
- 链式提示 (Prompt Chaining):将任务分解为多个独立的提示词,分步进行。上一步的输出是下一步的输入,整个过程是外部可见且可分步调试的。
- 思维链 (Chain-of-Thought):在单个提示词中,引导模型展示其内部的推理步骤。它像要求AI“把思考过程写下来”,整个过程在模型内部完成。
简单来说,链式提示是你将任务分解后,分步骤交给AI完成;而思维链是让AI自己在内部一步步推理并展示给你看。
链式提示的价值在于将不可控的“黑盒”变得可控、可靠。
- 提升准确性与可靠性:通过拆分任务,每一步的认知负荷降低,AI可以更专注于单一目标,减少出错概率。
- 过程透明,易于调试:你能清晰地看到每个环节的输入和输出。如果最终结果不理想,可以精准定位到有问题的环节并进行优化。
- 模块化与可复用性:每个子任务的提示词都是独立的模块,可以在不同的工作流中被复用和组合。
- 支持复杂工作流:你可以在步骤之间插入验证、调用外部工具(如搜索API、数据库),构建强大的AI应用。
根据任务复杂度,链式提示有多种变体:
类型 | 核心特点 | 适用场景 |
顺序链 (Sequential Chain) | 最基础的“流水线”模式,一步接一步线性推进。 | 有明确先后顺序的任务,如“生成大纲→撰写内容→翻译润色”。 |
分支链 (Branching Chain) | 一个步骤的输出,可以同时作为多个并行步骤的输入。 | 需要从不同角度分析同一信息,如“分析用户评论→分别提取正面、负面、中性反馈”。 |
迭代链 (Iterative Chain) | 重复执行某个步骤或整个链条,直到结果满足特定条件。 | 需要持续优化的任务,如“生成文案→评估质量→若不达标则修改重试”。 |
条件链 (Conditional Chain) | 根据上一步的输出结果,动态决定下一步执行哪个分支。 | 包含决策逻辑的任务,如“判断用户意图→若为‘投诉’则转接客服,若为‘咨询’则提供信息”。 |
实践案例:撰写市场分析报告
假设你需要一份AI行业市场分析报告,可以这样设计链式提示:
- 步骤1:收集信息
提示:“请列出当前人工智能领域最受关注的五个主要发展方向。”
- 步骤2:深度分析
提示:“基于以上列出的五个方向([此处插入步骤1的输出]),请分析每个方向当前的市场规模和技术成熟度。”
- 步骤3:趋势预测
提示:“根据你对市场规模和技术成熟度的分析([此处插入步骤2的输出]),预测未来3-5年这五个方向各自的发展趋势。”
- 步骤4:整合报告
提示:“请将以上所有信息([此处插入步骤3的输出])整合成一份结构清晰、适合向管理层汇报的PPT大纲。”
思维树(ToT)
思维树(Tree of Thoughts, ToT)可以看作是链式提示(Prompt Chaining)和思维链(Chain of Thought, CoT)的全面升级版。
如果说思维链是让AI沿着一条路“走到黑”,那么思维树就是让AI像一位深谋远虑的棋手,在走每一步时都同时构思多种可能的走法,评估每种走法的优劣,并随时准备探索、评估、回溯和规划。
- 思维链 (CoT):线性推理。模型按部就班地生成一个推理链条。
- 链式提示 (Prompt Chaining):任务分解。将大任务拆成线性序列,每一步的输出是下一步的输入。
- 思维树 (ToT):树状搜索。在每个决策点,模型都生成多个可能的“想法”(树的枝干),评估它们,并只沿着最有希望的路径继续探索,必要时还会“回溯”
ToT的工作流程是一个循环,包含四个核心步骤:
- 思维分解 (Thought Decomposition):将复杂问题拆解成一系列更小、可管理的“思维步骤”或“子问题”。
- 思维生成 (Thought Generation):针对当前问题状态,生成多个可能的下一步“想法”。
- 采样法 (Sampling):适用于开放性问题,独立生成多个不同想法。
- 提议法 (Proposing):适用于逻辑性强的问题,基于前一步顺序生成后续想法。
- 状态评估 (State Evaluation):对生成的每个“想法”进行评估,判断其通往最终解决方案的潜力。
- 赋值法 (Value):给每个状态打分(如1-10分)。
- 投票法 (Vote):比较多个方案,选出最佳的一个。
- 搜索算法 (Search Algorithm):决定如何探索这棵“思维树”。
- 广度优先搜索 (BFS):逐层探索,先评估同一层的所有想法,再进入下一层。
- 深度优先搜索 (DFS):沿一个最有希望的分支深入探索,直到得出结论或碰壁后回溯
手动引导AI模拟ToT过程:
提示词模板:
请使用“思维树”方法来解决以下问题:[在这里描述你的问题]
第一轮:生成阶段
请提出3个不同的解决思路。
第二轮:评估阶段
对以上每个思路,从可行性、效率等角度进行评分(1-10分),并简要说明理由。
第三轮:选择与深入阶段
选择评分最高的思路,并基于它,再提出3个更具体的下一步行动计划。
重复“评估-选择-深入”的过程,直到找到最终的解决方案。
检索增强生成 (RAG)
通用语言模型通过微调就可以完成几类常见任务,比如分析情绪和识别命名实体。这些任务不需要额外的背景知识就可以完成。要完成更复杂和知识密集型的任务,可以基于语言模型构建一个系统,访问外部知识源来做到。这样的实现与事实更加一性,生成的答案更可靠,还有助于缓解“幻觉”问题。
RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。
简单来说,RAG就是让AI在回答问题时,先“翻书查资料”,再根据资料来回答。
一个典型的RAG系统遵循“检索-增强-生成”的三阶段流程:
- 检索 (Retrieve):当用户提问时,系统会去知识库中搜索与问题最相关的信息片段。
- 增强 (Augment):将检索到的信息作为“上下文”(Context),拼接到用户的原始问题中,形成一个“增强提示”。
- 生成 (Generate):将增强后的提示词发送给大模型,让它基于提供的资料生成最终答案。
这个流程看似简单,但构建一个高性能的RAG系统,关键在于离线阶段的知识库准备工作:
- 数据准备与清洗:将来自PDF、Word、网页等各种来源的原始数据加载进来。
- 文档分块 (Chunking):把长文档切成语义完整的小块。这是最关键步骤之一。块太大(信息稀释)或太小(丢失上下文)都会影响效果,一般初始可设为300-800个中文字符。
- 向量化与索引:用“嵌入模型”将每个文本块转换成能表示其语义的数学向量,并存入专门的向量数据库(如Milvus, Pinecone, Chroma等)
自动推理并使用工具 (ART)
自动推理与工具使用(Automatic Reasoning and Tool-use,简称ART),是将这些思考能力与
行动能力相结合,让AI不仅能“想”,还能自主地“用工具做事”。
ART的运作主要分为离线准备和在线推理两个阶段:
- 准备阶段:建立“经验库”
- 任务库 (Task Library):预先存入各种复杂任务的“示范解法”。例如,对于“计算增长率”这类任务,库中会存有“先查数据,再计算”的示范步骤。
- 工具库 (Tool Library):集成AI可以调用的外部工具,如搜索引擎、计算器、代码解释器、各种API等。
- 在线推理阶段:自主解决问题
- 接收任务:用户提出一个复杂问题。
- 匹配与分解:ART从任务库中检索最相似的“示范”,并以此为指导,将新任务分解为一系列子步骤。这个过程是零样本(Zero-shot)的,即不需要为每个新任务都提供新示例。
- 动态执行:模型开始一步步执行子步骤。当需要外部信息或计算时(如“查询今天的股价”),它会自动暂停文本生成。
- 调用工具:ART框架根据模型指令,调用工具库中相应的工具(如股票API)。
- 整合与继续:工具执行后返回结果(如“股价为150元”),ART将结果“喂”回给模型。模型恢复生成,基于这个新信息继续推理,直到完成所有步骤,输出最终答案。
自动提示工程师(APE)
自动提示工程师(Automatic Prompt Engineer,简称APE)是一种让AI自动为你编写和优化提示词(Prompt)的技术。它的核心思想是将提示工程这个原本依赖人类经验和直觉的过程,转变为一个由AI驱动的、自动化的优化问题。
APE的工作流程是一个典型的“生成-评估-迭代”循环,就像一个AI在“自己考自己”:
- 候选指令生成 (Propose):首先,向一个“生成模型”(可以是任意的LLM)提供一些任务示例(输入和期望的输出)。这个模型会根据这些示例,批量生成各种可能的提示词候选。
- 指令性能评估 (Score):然后,将上一步生成的所有候选提示词,逐一传递给“目标模型”(通常就是你要优化的那个LLM)去执行任务。系统会根据预定义的评分函数(如准确率、完整度,或使用另一个LLM来打分)来评估每个提示词的效果。
- 迭代优化与选择 (Select & Iterate):系统会选出当前评分最高的提示词。在更高级的流程中,这个过程会进入迭代循环。系统会让生成模型基于当前的最优提示词,去创造它的“变体版本”,然后再次进行评估和选择。通过这种方式,提示词的质量会在一轮轮的“进化”中不断提升
主动学习(Active-Prompt)
Active-Prompt是一种先进提示词工程技术,旨在解决思维链(CoT)方法中的一个核心痛点:依赖于一套固定的人工标注示例,而这些示例可能并非针对特定任务的最优选择。
它通过引入主动学习(Active Learning)的思想,让模型自己“找出”哪些问题是它最不擅长的,然后由人工专门为这些“难题”编写思维链示例。这就像一个“查漏补缺”的智能助手,能显著提升示例的利用效率和模型的推理表现。
Active-Prompt 的工作流程形成了一个高效的闭环,主要包含以下四个步骤:
- 候选答案生成:首先,针对一批任务问题(不含答案),让模型生成
k个可能的答案。这就像是让模型进行一次“模拟考”,并给出多种解题思路。 - 不确定性计算:接着,系统会分析模型对这同一个问题生成的
k个答案。如果答案之间分歧很大,说明模型对此问题“心里没底”,不确定性高。常用的度量指标包括答案的分歧度(Disagreement)或概率熵值(Entropy)。 - 人工精选标注:系统会根据不确定性得分,选出最让模型“困惑”的一批问题,交由人工进行思维链(CoT)标注。这确保了宝贵的人力能精准投入到最能提升模型性能的“刀刃”上。
- 推理与迭代:最后,用这些新标注的、针对性极强的示例来构建新的提示词,引导模型进行推理。整个过程可以迭代进行,持续优化
与思维链与自动提示工程师对比:
- 对比思维链 (CoT):CoT依赖人工预先选定的固定示例;而Active-Prompt是模型主动选择哪些问题需要示例,是CoT的一个进化版本。
- 对比自动提示工程师 (APE):两者都旨在优化提示词,但路径完全不同。APE的目标是自动化地生成和搜索最优的提示词指令本身;而Active-Prompt的目标是自动化地筛选出最值得人工去标注思维链示例的问题。你可以理解为,APE在找“怎么问最好”,而Active-Prompt在找“针对什么问题去准备示例最好”。
方向性刺激提示
因材施教
方向性刺激提示(Directional Stimulus Prompting,简称DSP)。它的核心思想是,不直接修改“黑盒”大模型本身,而是训练一个轻量级的“策略模型”,来为每个具体问题动态生成一条“定制线索”,从而引导大模型生成更精准、更符合要求的输出
DSP的工作流程分为两个阶段:
1、训练阶段:培养你的“高级助理”(策略模型)
监督微调(SFT):首先,准备一个小型数据集,其中包含输入和对应的“伪刺激”。例如,对于“新闻摘要”任务,“伪刺激”可能就是摘要中应包含的关键词。然后用这些数据训练一个小型策略模型(如T5)。
强化学习(RL)优化:为进一步提升效果,还会采用强化学习。根据大模型在使用“刺激”后输出的质量给予“奖励”或“惩罚”,让策略模型学会生成更有效的提示。
2、推理阶段:执行任务
动态生成刺激:当用户提出新问题(例如,一篇长文章)时,训练好的策略模型会为其生成一条“方向性刺激”。
组合并输入大模型:这条刺激(例如,几个核心关键词)会与原始问题组合成一个增强的提示词。
生成最终结果:大模型根据这个包含“定制线索”的提示,生成更准确、更符合预期的最终答案
程序辅助语言模型(PAL)
PAL(Program-Aided Language Models,程序辅助语言模型)是一种创新的方法,旨在解决大语言模型(LLM)在算术和逻辑推理上的“偏科”问题。它的核心思想:让LLM只负责将问题“翻译”成代码,而把具体的计算和执行过程,交给专业的“计算器”(如Python解释器)来完成
PAL的核心是构建一个“LLM + 代码解释器”的组合,让它们各司其职:
- 大语言模型 (LLM):担任“翻译官”和“规划师”的角色。它负责理解用自然语言描述的问题,并将推理步骤转化为结构化的Python代码。
- 代码解释器 (如Python Interpreter):担任“计算器”和“执行者”的角色。它负责执行LLM生成的代码,并返回精确的计算结果
PAL的执行流程清晰直接:
- 问题输入:用户向系统提出一个需要推理或计算的自然语言问题。
- 代码生成:LLM分析问题,生成解决该问题的Python代码。此过程通常会结合思维链(CoT)技术,让模型逐步推理,但将推理的每一步都转化为代码。
- 代码执行与输出:Python解释器执行这段代码,计算出最终答案并返回给用户
ReAct 框架
思维链(CoT)是教AI“在脑中如何一步步想”,那么ReAct就是教AI“想完之后如何去查、去做,并根据环境反馈继续调整”。它将推理与行动交织成一个闭环,是现代AI智能体系统最常见的执行骨架之一。
ReAct的核心灵感来源于人类的决策过程:我们不只是被动思考,而是通过思考制定计划、执行行动、观察结果,并据此调整策略。ReAct将这一过程应用到LLM中,打破了传统模型“输入-输出”的单向链路,构建了“感知-决策-执行-反馈”的智能闭环。
ReAct的工作流程是一个不断循环的“思考-行动-观察”(Thought-Action-Observation)过程,也被称为TAO循环。
- 思考 (Thought):模型首先分析当前状态,推理并规划下一步的行动。例如:“我需要先搜索一下这家公司的背景信息。”
- 行动 (Action):根据思考结果,模型执行一个具体的操作。这可以是调用一个外部工具,如搜索引擎、计算器、数据库或API等。
- 观察 (Observation):模型接收并分析行动执行后返回的结果。例如:“搜索结果返回了三条相关新闻。”
- 循环迭代:模型将“观察”到的新信息作为“思考”的输入,进入下一轮循环。这个过程会不断重复,直到模型认为任务完成为止。
自我反思(Reflexion)
自我反思(Reflexion)是一种让AI智能体(Agent)通过语言反馈进行自我完善的框架。它解决的核心问题是:传统的强化学习依赖“+1/-1”这样的数值奖励,智能体虽然知道做得好不好,但不知道“为什么”和“怎么改”。而Reflexion通过让AI用自然语言进行“复盘”,生成具体的改进建议,从而在下一轮任务中表现得更好。
- 传统微调:为了改进,需要重新训练模型,成本高昂。
- Reflexion:将一次尝试的失败经验,用自然语言总结成“教训”,存入一个“经验库”(情景记忆)。下次遇到类似任务时,模型会先参考这些“教训”,从而避免重蹈覆辙。
一个形象的比喻:这就像人类学习骑自行车,摔倒了(失败),不是去“更新”自己的身体硬件,而是记住了“下次转弯时速度要慢一点”这条经验(语言反馈)。
Reflexion框架通过三个核心组件的协同工作,形成一个闭环。
- 参与者 (Actor):负责执行任务。它根据当前任务和任何可用的“经验”,生成思考和行动(通常会结合ReAct或思维链(CoT)等技术)。
- 评估者 (Evaluator):负责对参与者的表现进行打分。它会评估任务执行的结果(如代码是否通过测试),并给出一个分数或评价。
- 自我反思 (Self-Reflection):这是核心步骤。如果评估者认为结果不理想,反思模块会分析失败原因,并生成具体的、用自然语言描述的改进建议。例如,它可能会生成:“在步骤3中忽略了边界条件,下次应补充输入验证逻辑”。