从零实现反思Agent

从零实现反思Agent

微信
ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署 | AI工具导航 | Tripo 3D | Meshy AI

大家好,欢迎来到另一篇关于构建多智能体AI系统的精彩文章。在这篇文章中,我们将深入探讨如何从头开始用Python实现一个反思代理。

从我上一篇文章《多智能体系统中的多智能体架构》中,我提到了我们在多智能体系统中可以实现的不同模式。大多数这些模式已经被不同的包如LangGraph、LangChain以及其他现有的AI代理Python包预先构建好了。根据我在处理智能体AI系统方面的经验,有时你真的需要对代码有完全的控制权,或者只是想做一些现有包无法自由支持的事情。学习如何亲自动手并深入研究自己的代码是一项基本且至关重要的技能。

我想使用LangGraph来实现我们在这篇文章中讨论的所有现有模式。仔细想想,不,我希望为你提供构建自己自定义类和包的基本技能,无论是出于某种需求,还是为了支持这些包目前不支持的用例。这样你可以对自己的代码和实现有更精细的控制。

让我们开始吧!

首先,我想让我们从基础层面理解我们要构建的东西。让我们回答“什么是反思代理?”这个问题。

反思模式是一种允许代理反思自身行为和决策的模式。它由两个主要组件组成:

  1. 生成代理:这个代理负责生成反思提示。
  2. 反思代理:这个代理负责反思代理的行为和决策。反思提示用于引导反思代理。

为了让这一点更加清楚,如果你一直跟着我的话,你知道我喜欢视觉化。让我们来看一下反思代理的可视化图示:

从零实现反思Agent

从上面的图像中可以看到,用户提示被发送到生成块,生成块生成响应。生成块可以是一个代理,这里我并没有特别将其称为代理,因为在LLM中我没有添加任何工具。回到正题,生成块生成的响应被发送到反思块(或代理,如果给LLM提供了工具)。

反思块反思(reflect)生成的响应并提供反馈。然后将此反馈再次发送回生成块。生成块接收反馈或批评,并根据需要进行必要的更新。这种更新随后被发送回反思代理,反思代理再次对其进行检查,生成反馈或批评。

这个循环会持续进行X次迭代,之后返回最终响应。这样,我们可以让AI系统反思自己的工作,并在某种程度上优化到接近完美的程度后再返回最终响应。这已被证明比单一提示合成能产生更好的结果。

在这篇文章中,我的目标是创建一个数据分析师代理,我可以用来分析数据。我们将实现一个反思代理来帮助我们完成这项任务。这个代理应该能够生成自己的代码,反思它并根据需要做出改进和修正。

以下是几张图片:

没有反思:

从零实现反思Agent

有反思:

从零实现反思Agent

为了实现这一点,我们将从一个新的文件夹开始,并随着我们的进展逐步添加不同的代码。我们首先开始安装必要的包和依赖项。

我们将首先创建一个虚拟环境,首先创建一个名为的文件夹:


然后使用相同的文件夹名称创建虚拟环境,这是我需要环境的方式,以免忘记它们的名字。


从零实现反思Agent

然后可以通过以下命令激活此虚拟环境:


从零实现反思Agent

为了节省时间,现在你已经看到了如Agent 智能体何创建文件夹。按照相同的步骤创建这个文件夹结构,我们将在整个课程中使用它。


现在我们可以安装所有需要的包和依赖项:


从零实现反思Agent

要开始实现反思代理,我们将从生成块开始。打开笔记本(lesson_01.ipynb),我们将在这里编写代码实现。

让我们先导入基本模块:


对于接下来的代码,创建OpenAI模型时,你需要在文件中设置OpenAI API密钥,设置后重启笔记本并再次运行上述单元格。



要测试模型设置,可以运行以下代码:


我想创建一个数据分析师,它可以帮我生成一些数据的代码。这是我要为生成块使用的提示:


让我们调用它并看看我们能得到什么:


从零实现反思Agent

我们可以使输出看起来更好,因为它实际上是Markdown文本:


从零实现反思Agent

我复制了生成的代码并执行了它,请小心这样做。仔细阅读确保没有恶意代码:

从零实现反思Agent

既然我们现在能够生成反思块的代码,让我们继续生成反思块,改进就在其中。

反思块提示:


然后我们可以用这些提示调用LLM:


从零实现反思Agent

现在我们有了反馈,我们需要将其传递给生成器块。


从零实现反思Agent

让我们在反思反馈后执行生成的代码:

从零实现反思Agent

这是得到的图表响应。我们可以看到标签得到了改进,颜色也改变了,还有很多其他改进。

好的部分是这只是这个流程的一次迭代:

从零实现反思Agent

你可以想象经过3-4次迭代后的输出。注意,更多的迭代并不总是意味着更好的输出。花点时间去实验。

我们将实现自己的自定义类,以便在项目其他部分中使用这个反思代理。我们将在这里包含步数。

以下是这个Python类的内容。我创建了以下项目结构:


文件的内容如下:


文件的内容如下:


在文件中,代码如下:


在文件中,代码如下:


生成的输出如下:

从零实现反思Agent

然后我在笔记本中执行了代码,输出如下:

从零实现反思Agent

恭喜你坚持到了最后!希望你觉得这很有帮助,并学会了如何实现自己的反思代理。在下一篇文章中,我们将再次从头开始用Python实现另一个代理模式。


原文链接:Multi-agent System Design Patterns From Scratch In Python | Reflection Agents

汇智网翻译整理,转载请标明出处

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/237465.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 上午11:32
下一篇 2026年3月16日 上午11:33


相关推荐

关注全栈程序员社区公众号