游乐游手机版
首页/AI热点日报/热点详情

Self Discover框架实战:AI大模型Agent推理新思路

类型:热点整理2026-05-30
```html Self-Discover概念详解:AI Agent自主推理框架 Self-Discover是Google研究团队提出的一种前沿AI Agent框架,其核心亮点在于:引导大语言模型自主发现并构建推理结构,从而高效解决各类推理任务。简单来说,该框架允许模型在没有明确标签指引的情况下,从
```html

Self-Discover概念详解:AI Agent自主推理框架

Self-Discover是Google研究团队提出的一种前沿AI Agent框架,其核心亮点在于:引导大语言模型自主发现并构建推理结构,从而高效解决各类推理任务。简单来说,该框架允许模型在没有明确标签指引的情况下,从一组原子推理模块(例如批判性思维、逐步思考)中主动挑选合适的模块,再组合成一个完整的推理结构。

整个框架分为两大阶段:首先自主发现特定任务的推理结构,随后应用该结构去解决问题。完整流程如下图所示:

阶段一:自主发现特定任务的推理结构

这一阶段包含三个关键动作:选择、适应和实施。

选择:模型从一组原子推理模块(例如“批判性思维”“逐步思考”)中,选出对当前任务最有用的模块。这一步通过一个元提示来引导,元提示会结合任务示例和模块描述,让模型判断哪些推理方法能够发挥作用。

适应:选定模块后,需要将通用描述调整为更贴近任务的具体描述。比如对于算术问题,“分解问题”这一模块可能会被调整为“按顺序计算每个算术操作”。这一步同样依靠元提示驱动模型生成任务相关的模块描述。

实施:最后,把适应后的模块描述转化成一个结构化的可执行计划——通常以键值对(类似JSON)的形式呈现,便于模型理解和执行。过程中除了元提示,还会提供一个人类编写的推理结构示例,帮助模型将自然语言描述转换为结构化计划。

阶段二:应用推理结构

完成阶段一后,模型便拥有了一套专为当前任务定制的推理结构。面对具体问题时,模型只需按照该结构一步步填充JSON中的值,直到得出最终答案。整个过程就像照着菜谱做菜,每一步都清晰无误。

Self-Discover的代码实现流程

下面通过实际代码来拆解Self-Discover模式的实现方法。完整源代码可在文章末尾获取(本文已去除推广内容,读者可自行搜索相关资源)。

第一步:定义Select、Adapt和Implement函数

第一步对应阶段一,需要定义好select、adapt和implement这三个函数。

Select:给模型的提示词为:“对于给定的任务,找出最相关的推理模块,即确定通过什么方法来解决任务”。

def select_reasoning_modules(task_description, reasoning_modules):
    """第一步,为任务选择相关的推理方法."""
    prompt = f"Given the task: {task_description}, which of the following reasoning modules are relevant? Do not elaborate on why.\n\n" + "\n".join(reasoning_modules)
    selected_modules = query_openai(prompt)
    return selected_modules

Adapt:提示词为:“在不需要给出完整解决方案的情况下,让大模型调整上一步得到的推理模块,以更好地适应任务”。

def adapt_reasoning_modules(selected_modules, task_example):
    """第二步:调整所选推理模块,使其更贴合任务."""
    prompt = f"Without working out the full solution, adapt the following reasoning modules to be specific to our task:\n{selected_modules}\n\nOur task:\n{task_example}"
    adapted_modules = query_openai(prompt)
    return adapted_modules

Implement:提示词为:“在不需要给出完整解决方案的情况下,利用上一步优化后的推理模块,创建一个可执行的推理结构”。

def implement_reasoning_structure(adapted_modules, task_description):
    """第三步:将调整后的推理模块实施为可操作的推理结构."""
    prompt = f"Without working out the full solution, create an actionable reasoning structure for the task using these adapted reasoning modules:\n{adapted_modules}\n\nTask Description:\n{task_description}"
    reasoning_structure = query_openai(prompt)
    return reasoning_structure

第二步:执行推理结构

这一步对应阶段二——应用结构获得最终答案。

def execute_reasoning_structure(reasoning_structure, task_instance):
    """执行推理结构来解决特定的任务实例."""
    prompt = f"Using the following reasoning structure: {reasoning_structure}\n\nSolve this task, providing your final answer: {task_instance}"
    solution = query_openai(prompt)
    return solution

第三步:提出问题,启动推理

最后,将整个过程串联起来进行推理。这段代码非常关键,值得逐条细看:

# Example usage
if __name__ == "__main__":
    reasoning_modules = [
        "1. 我该如何设计一个实验来解决这个问题?",
        "2. 列出解决这个问题的想法,然后逐一应用它们来解决这个问题,看看是否可以取得任何进展。",
        "3. 我怎样才能衡量这个问题的进展?",
        "4. 我怎样才能简化这个问题以便于解决?",
        "5. 这个问题背后的关键假设是什么?",
        "6. 每种解决方案的潜在风险和缺点是什么?",
        "7. 对于这个问题,还有哪些其他的观点或看法?",
        "8. 这个问题及其解决方案的长期影响是什么?",
        "9. 我怎样才能将这个问题分解成更小、更易于管理的部分?",
        "10. 批判性思维:这种思维方式包括从不同角度分析问题、质疑假设以及评估现有证据或信息。它侧重于逻辑推理、基于证据的决策以及识别思维中的潜在偏见或缺陷。",
        "11. 尝试创造性思维,产生创新和突破常规的想法来解决问题。探索非常规解决方案,超越传统界限思考,鼓励想象力和独创性。",
        "12. 寻求他人的意见和合作来解决问题。强调团队合作、开放的沟通,并利用团队的不同观点和专业知识来提出有效的解决方案。",
        "13. 使用系统思维:将问题视为更大系统的一部分,并了解各种元素之间的相互联系。重点是确定影响问题的根本原因、反馈回路和相互依赖关系,并制定解决整个系统的整体解决方案。",
        "14. 使用风险分析:评估与问题的不同解决方案或方法相关的潜在风险、不确定性和权衡。强调评估成功或失败的潜在后果和可能性,并根据风险和收益的平衡分析做出明智的决策。",
        "15. 使用反思性思维:远离问题,花时间进行内省和自我反省。检查可能影响解决问题的个人偏见、假设和思维模式,并乐于从过去的经验中学习,以改进未来的方法。",
        "16. 需要解决的核心问题是什么?",
        "17. 导致该问题的根本原因或因素是什么?",
        "18. 是否有任何潜在的解决方案或策略曾经被尝试过?如果有,结果和经验教训是什么?",
        "19. 解决这个问题可能出现哪些潜在障碍或挑战?",
        "20. 是否有相关数据或信息可以洞悉问题?如果有,有哪些数据源可用,如何分析这些数据?",
        "21. 是否有任何利益相关者或个人直接受到该问题的影响?他们的观点和需求是什么?",
        "22. 需要哪些资源(财力、人力、技术等)来有效解决该问题?",
        "23. 如何衡量或评估解决问题的进展或成功?",
        "24. 可以使用什么指标或度量?",
        "25. 这个问题是技术问题还是实践问题,需要特定的专业知识或技能?还是更多的是概念问题或理论问题?",
        "26. 该问题是否涉及物理限制,例如资源、基础设施或空间有限?",
        "27. 该问题是否与人类行为有关,例如社会、文化或心理问题?",
        "28. 问题是否涉及决策或计划,需要在不确定或相互竞争的目标下做出选择?",
        "29. 该问题是否是需要数据分析、建模或优化技术的分析问题?",
        "30. 这个问题是否是一个需要创造性解决方案和创新的设计挑战?",
        "31. 这个问题是否需要解决系统性或结构性问题,而不仅仅是个别问题?",
        "32. 该问题是否具有时效性或紧急性,需要立即关注和采取行动?",
        "33. 针对这种问题规范通常会产生什么样的解决方案?",
        "34. 给定问题规范和当前最佳解决方案,猜测其他可能的解决方案。",
        "35. 让我们想象一下当前的最佳解决方案是完全错误的,还有哪些其他方式来思考问题规范?",
        "36. 鉴于您对此类问题规范的了解,修改当前最佳解决方案的最佳方法是什么?",
        "37. 忽略当前的最佳解决方案,为问题创建一个全新的解决方案。",
        "38. 让我一步步思考",
        "39. 让我们制定一个逐步的计划,并用良好的注释和解释来实施它。"
    ]
    task_example = "Lisa有10个苹果,她给了朋友3个苹果,然后从商店买了5个苹果。Lisa现在有多少个苹果?"
    selected_modules = select_reasoning_modules(task_example, reasoning_modules)
    print("Stage 1 SELECT: Selected Modules:\n", selected_modules)
    adapted_modules = adapt_reasoning_modules(selected_modules, task_example)
    print("\nStage 1 ADAPT: Adapted Modules:\n", adapted_modules)
    reasoning_structure = implement_reasoning_structure(adapted_modules, task_example)
    print("\nStage 1 IMPLEMENT: Reasoning Structure:\n", reasoning_structure)
    result = execute_reasoning_structure(reasoning_structure, task_example)
    print("\nStage 2: Final Result:\n", result)

这段代码逻辑非常直观。首先定义了39种推理方法(即reasoning modules),读者也可以根据自身需求提炼更多推理方法,通过prompt告知Agent。然后给出一个具体的推理任务:

“Lisa有10个苹果。她给了朋友3个苹果,然后从商店买了5个苹果。Lisa现在有多少个苹果?”

大模型会自动选出最合适的推理方法。实际运行中发现,模型选择了方法9和10:

第1阶段选择:选定模块:
9. 我如何将这个问题分解成更小、更易于管理的部分?
这个问题可以分解成两个部分:首先,计算Lisa在送出一些苹果后有多少个苹果,其次,计算她购买更多苹果后有多少个苹果。这种方法简化了问题并使其更容易解决。
此外,10. 批判性思维:这种风格涉及从不同角度分析问题、质疑假设以及评估可用的证据或信息。它侧重于逻辑推理、基于证据的决策以及识别思维中的潜在偏见或缺陷。
批判性思维在解决问题中始终很重要,因为它有助于确保解决方案基于合理的推理和证据。在这种情况下,它可以帮助确认问题被正确解释并且解决方案合乎逻辑且准确。
因此,9和10都是此问题的相关推理模块。

接着,大模型自动优化推理方法的描述:

第1阶段适应:改编模块:
1. 分解问题:
问题可以分解为两个较小的任务:
a) 计算Lisa送给朋友3个苹果后还有多少个苹果。
b) 计算Lisa从商店购买5个苹果后还有多少个苹果。
通过将问题分解为这些较小的任务,解决问题会变得更容易。
2. 批判性思维:
运用批判性思维确保问题得到正确解释,解决方案合乎逻辑且准确。这包括:
a) 确认问题得到正确理解(Lisa从10个苹果开始,赠送3个,然后购买5个)。
b) 确保正确遵循操作顺序(在添加购买的苹果之前减去赠送的苹果)。
c) 仔细检查计算以确保准确性。
通过运用批判性思维,您可以确信解决方案基于合理的推理和证据。

然后,大模型自动生成了具体的推理结构:

第1阶段实施:推理结构:
1. 分解问题:
a) 计算Lisa送给朋友3个苹果后还剩下多少个苹果:
- Lisa一开始有10个苹果
- 她送出了3个苹果
- 从最初的苹果数量中减去送出的苹果数量
b) 计算Lisa从商店购买5个苹果后还剩下多少个苹果:
- 送出3个苹果后,Lisa还剩下一定数量的苹果(来自任务a)
- 然后她又买了5个苹果
- 将购买的苹果数量加到剩余的苹果数量中
2. 批判性思维:
a) 确认问题理解正确:
- Lisa一开始有10个苹果
- 她送出了3个苹果
- 她又买了5个苹果
b) 确保操作顺序正确:
- 首先,减去送出的苹果
- 然后,加上苹果购买
c) 仔细检查计算结果:
- 确认减去的苹果数量正确
- 确认添加了的苹果数量正确
通过遵循此推理结构,您可以通过将问题分解为较小的任务、运用批判性思维和仔细检查计算结果来解决问题。最终答案应准确且基于合理的推理。

最后,执行推理结构,得出最终结果:

最终答案:Lisa现在有12个苹果。

至此,Self-Discover的原理与流程就介绍完了。

在尝试这个案例之前,确实没想到大模型还能在给定的推理方法中,自主选择最契合特定问题的推理方法,并完成推理结构与推理语言的输出。这项能力令人眼前一亮。通过这种推理方式,未来Agent将能够解决更加多样化的问题——因为任何类型的问题,总能找到对应的推理和思考方式。

总结

整个Self-Discover的关键在于:它允许模型在没有人类干预的情况下,自主生成适合特定任务的推理结构。这一机制不仅显著提升了模型的推理能力,还大大增强了推理过程的可解释性。凭借这种方式,模型能够更高效地处理复杂和多样化的任务。

当然,本文所举的例子虽然结构清晰,但不足之处在于没有使用外部工具。对于那些需要搜索工具、数学工具等外部资源的场景,完全可以让大模型在adapt环节也给出适合目标任务的工具信息,然后在后续执行中调用。这一点值得进一步探索与实践。

```
来源:https://www.53ai.com/news/LargeLanguageModel/2024091164725.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。