【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent

这篇具有很好参考价值的文章主要介绍了【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在MetaGPT中定义的一个agent运行示例如下:
【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent,大模型,python,人工智能,chatgpt,python,gpt,AIGC

  • 一个agent在启动后他会观察自己能获取到的信息,加入自己的记忆中
  • 下一步进行思考,决定下一步的行动,也就是从Action1,Action2,Action3中选择执行的Action
  • 决定行动后,紧接着就执行对应行动,得到这个环节的结果

以Task3 作业为例,来看下使用MetaGPT 实现Agent的思路。Task3任务如下:

经过上面的学习,我想你已经对 MetaGPT 的框架有了基本了解,现在我希望你能够自己编写这样一个 agent

  • 这个 Agent 拥有三个动作 打印1 打印2 打印3(初始化时 init_action([print,print,print]))
  • 重写有关方法(请不要使用act_by_order,我希望你能独立实现)使得 Agent 顺序执行上面三个动作
  • 当上述三个动作执行完毕后,为 Agent 生成新的动作 打印4 打印5 打印6 并顺序执行,(之前我们初始化了三个 print 动作,执行完毕后,重新 init_action([…,…,…]),然后顺序执行这个新生成的动作列表)

实现思路

用最通俗的话来总结:

  1. 要实现一个Agent,其实就是定义一个Role。该Role应该包含自己的Action。
  2. 在Role的初始化中初始化Actions
  3. Role重写_act函数或_react函数,Role run的时候会调用该函数
    • _react函数重写,一般是先思考_think下一步用哪个action,然后再_act
  4. Action重写run函数,这里面决定了我们对传入的内容到底要做什么样的处理,例如调用大模型得到结果

Task3 - 完整代码及注释

  • 先看执行结果:顺序打印1-6,然后结束

【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent,大模型,python,人工智能,chatgpt,python,gpt,AIGC

  • 完整代码及细节注释
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

from metagpt.actions import Action
from metagpt.logs import logger
import asyncio        
from metagpt.roles import Role
from metagpt.schema import Message

## 1. 定义Action
class PrintAction(Action):
    def __init__(self, name: str = "", number: int = 0, *args, **kwargs):
        super().__init__(name, *args, **kwargs)
        self._number = number
        
    ## 1.1 run方法中定义具体的处理操作,这里只是打印一个数
    async def run(self):
        logger.info(self._number)
        return self._number


## 2. 定义Role
class Printer(Role):
    def __init__(
        self,
        name: str = "Printer",
        profile: str = "Printer",
    ):
        super().__init__(name, profile)
        
        ## 2.1 初始化中初始化该Role的Actions,这里首先初始化了3个Action,将会按顺序执行
        self._init_actions([PrintAction(number=1), PrintAction(number=2), PrintAction(number=3)])
        
    async def _think(self) -> None:
        """Determine the next action to be taken by the role."""
        logger.info(self._rc.state)
        logger.info(self,)
        logger.info(f"{self._setting}: ready to {self._rc.todo}")
        if self._rc.todo is None:
            self._set_state(0) # 这里回到了第一个Action
            logger.debug("reset state to 0")
            return

		## 这里决定下一个action是什么,_rc.state表示要执行的action的下标,_states记录了所有actions及其下标
        if self._rc.state + 1 < len(self._states):
            logger.debug(f"set state to {self._rc.state + 1}")
            self._set_state(self._rc.state + 1) # todo变为下一个action
        else:
            self._rc.todo = None     
            
    async def _act(self):
        todo = self._rc.todo
        if type(todo) is PrintAction:
            ret = await todo.run()
            if 3 == ret: # 这里判断下是第几个action了,根据任务描述,第三个任务完成后动态添加4,5,6 action
                actions = [PrintAction(number=4), PrintAction(number=5), PrintAction(number=6)]
                self._init_actions(actions) # 动态添加4,5,6 action,这时候action4变成了第一个action
                self._rc.todo = None # _think中会设置为第一个Action,也就是action4
            
        return "Continue"
        
    ## 3. 重写_react函数    
    async def _react(self):
        while True:
            logger.info("react")
            await self._think() ## 首先思考下一步执行哪个action
            if self._rc.todo is None:
                break
            result = await self._act() ## 执行action,这里的action是_think里决定

async def main():
    msg = "start" ## 给一个msg,必须给一个非空的msg,否则run不起来,待研究
    role = Printer()
    await role.run(msg) ## 开始运行agent,会调用role里的_react

asyncio.run(main())

先写到这,展示个结果和总体步骤,后面有时间会详细拆解每一步的实现和细节,以及过程中遇到的坑及解决方法。文章来源地址https://www.toymoban.com/news/detail-807076.html

到了这里,关于【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI的未来 - AI Agent系列】【MetaGPT】4.1 细说我在ActionNode实战中踩的那些坑

    上篇文章 【AI的未来 - AI Agent系列】【MetaGPT】4. ActionNode从理论到实战 中我们学习了MetaGPT中ActionNode的理论和基本用法,跑通了一个简单程序。 原理和代码实现都很简单,但是谁知道当时我遇到了多少坑… 本文带你看看我在上文中遇到的坑,希望能帮到你! 下面说下我遇到的

    2024年01月22日
    浏览(41)
  • 【AI Agent系列】【MetaGPT】9. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体(2)

    0.1 前置推荐阅读 订阅智能体实战 【AI的未来 - AI Agent系列】【MetaGPT】3. 实现一个订阅智能体,订阅消息并打通微信和邮件 【AI Agent系列】【MetaGPT】8. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体 ActionNode基础与实战 【AI的未来 - AI Agent系列】【MetaG

    2024年02月22日
    浏览(57)
  • MetaGPT( The Multi-Agent Framework):颠覆AI开发的革命性多智能体元编程框架

    一个多智能体元编程框架,给定一行需求,它可以返回产品文档、架构设计、任务列表和代码。这个项目提供了一种创新的方式来管理和执行项目,将需求转化为具体的文档和任务列表,使项目管理变得高效而智能。对于需要进行规划和协调的项目,这个框架提供了强大的支

    2024年01月20日
    浏览(54)
  • AI 编程的机会和未来:从 Copilot 到 Code Agent

    大模型的快速发展带来了 AI 应用的井喷。统计 GPT 使用情况,编程远超其他成为落地最快、使用率最高的场景。如今,大量程序员已经习惯了在 AI 辅助下进行编程。数据显示,GitHub Copilot 将程序员工作效率提升了 55%,一些实验中 AI 甚至展示出超越普通程序员的能力。目前

    2024年01月21日
    浏览(45)
  • 探索生成式AI的未来:Chat与Agent的较量与融合

    近年来,生成式人工智能(AI)不仅在技术界引起了广泛关注,更成为了推动多个行业革新的关键力量。这种技术之所以备受瞩目,不仅在于其独特的创造性和高效性,还在于它对未来商业模式和社会结构可能产生的深远影响。在这篇文章中,我们将全面介绍生成式AI的概念、

    2024年04月09日
    浏览(43)
  • 使用飞桨实现的第一个AI项目——波士顿的房价预测

    part1.首先引入相应的函数库: 值得说明的地方: (1)首先,numpy是一个python库,主要用于提供线性代数中的矩阵或者多维数组的运算函数,利用import numpy as np引入numpy,并将np作为它的别名 part2.(一步步慢慢来,从0到1,只要突破了,就会有1到100的发生,所以,慢慢来)下面

    2024年02月11日
    浏览(45)
  • 智能体AI(Agent AI),多模态交互(MultiModal Interaction), 现阶段综述及未来展望

    本文覆盖了在不同领域和应用程序中的,可进行感知和对应行动的Agent AI系统概述。 Agent AI正在成为通用人工智能(AGI)的一个有前途的路径。 人工智能训练已经证明了在物理世界中进行多模态理解的能力。它通过利用生成人工智能和多个独立的数据源,为现实不可知的训练

    2024年04月17日
    浏览(59)
  • 发布自己的第一个抖音小程序

    结构与微信小程序一样 内嵌H5网页,适用于任何平台,同样也是使用web-view组件 相比起来,它比微信小程序更加简化,开发会更方便了。 API查询地址:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/component/open-capacity/web-view/

    2024年02月11日
    浏览(51)
  • AGI时代的奠基石:Agent+算力+大模型是构建AI未来的三驾马车吗?

     ★AI Agent;人工智能体,RPA;大语言模型;prompt;Copilot;AGI;ChatGPT;LLM;AIGC;CoT;Cortex;Genius;MetaGPT;大模型;人工智能;通用人工智能;数据并行;模型并行;流水线并行;混合精度训练;梯度累积;Nvidia;A100;H100;A800;H800;L40s;混合专家;910B;HGX H20;L20 PCIe;L2 PCIe

    2024年02月04日
    浏览(42)
  • 把通过autogen构建的AI agent接入到自己的应用程序中

    同志们,我很高兴的告诉大家我们有了一个比langchain更好用的构建AI agent的工具。众所周知,langchain主要就是一堆字符串提示模板构成的,这导致,当我们的模型性能不够强大(比如说gpt3.5)时会因为上下文的干扰而产生幻觉,从而无法完成我们所需要让其完成的任务(之前想让

    2024年02月04日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包