微信扫码
添加专属顾问
我要投稿
自动化是人工智能的一个重要方面,它旨在减轻人类在工作中的负担,提高工作效率和质量。在过去的几年里,自动化技术的一个热门领域是流程自动化(Process Automation),它旨在自动化各种复杂的业务流程,包括数据处理、文档处理、客户服务等。
Agent 在机器人流程自动化 (Robotic Process Automation,RPA) 领域扮演了革命性的角色。
XAgent 是一个开源、基于大型语言模型(LLM)的通用自主智能体,可以自动解决各种复杂任务。
XAgent 采用双环机制,外循环用于高层任务管理,起到规划(Planning)的作用,内循环用于底层任务执行,起到执行(Execution)的作用。
XAgent 特点:
• 自主性:可以在无人类参与的情况下自动解决各种任务。
• 安全性:支持安全运行,所有的行为都被限制在一个docker容器内,无需担心主机环境受到影响。
• 可扩展性:支持可扩展,可以添加新的工具(甚至新的智能体)来增强智能体的能力。
• GUI:支持通过GUI,或者使用命令行界面与智能体交互。
• 与人类的合作:可以与人类合作解决任务。它不仅有支持在行进中遵循人类的指导来解决复杂的任务,而且在遇到挑战时还可以寻求人类的帮助。
XAgent 原理
在XAgent中,规划和任务执行过程通过双循环机制(外循环和内循环)进行编排。其本质上,外循环处理高层次的任务管理和分配,内循环专注于每个子任务的低层次执行和优化。
外循环
外循环作为高层规划器和整个问题解决序列的主要协调者,充当整个问题解决序列的管理。它的职责可以分解如下:
• 初始计划生成:PlanAgent首先生成一个初始计划,为任务执行制定基本策略。该部分会将给定的复杂任务分解为更小、更易管理的子任务,其表现为一个任务队列,可以直接地执行。
• 迭代式计划优化:在初始规划之后,PlanAgent通过从任务队列中释放出第一个任务,然后将该子任务传递给内循环。PlanAgent持续监视任务的进展和状态。在每个子任务执行后,内循环会返回来自ToolAgent的反馈。根据反馈,PlanAgent触发适当的处理机制,如优化计划或继续执行后续子任务。直到队列中没有剩余的子任务为止,外循环结束。
内循环内循环负责执行外循环分配的各个子任务。基于外循环给定的子任务,内循环会指定一个合适的ToolAgent,确保任务达到预期的结果。内循环的关键点包括:
• 智能体调度和工具获取:根据子任务的性质,派遣合适的ToolAgent,该Agent具备完成任务所需的能力。
• 工具执行:ToolAgent首先从外部系统中获取工具以帮助完成任务。然后,智能体使用ReACT来解决子任务。ReACT会寻找最佳的一系列动作(工具调用)来完成子任务。
• 反馈和反思:在一系列动作之后,ToolAgent可以发出一个名为“subtask_submit”的特定动作,以完成当前子任务的处理,并将反馈和反思传递给PlanAgent。这个反馈可以指示子任务是否成功完成,或者强调潜在的改进。
PlanAgent:动态规划和迭代改进
PlanAgent赋予智能体不断制定和修订计划的能力,以适应多变的环境和突发需求。这些能力对于确保灵活性、弹性和效率以应对未预见的挑战至关重要。PlanAgent专用于外循环,其通过生成初始计划和不断修订计划来实现这一目标。PlanAgent包含四个函数来优化计划:
• 子任务拆分:使系统能够将特定的子任务分解为粒度更细、更易管理的单元。只有当前正在执行或尚未启动的子任务才有资格进行此操作。
• 子任务删除:删除尚未开始的子任务。已经在进行中或已完成的子任务不具备删除资格。这确保了一定的灵活性,可以修剪多余或不相关的任务,以优化整体执行。
• 子任务修改:修改子任务的内容。要修改的子任务不能是已经开始或已经完成,以保持整体计划的完整性。
• 子任务添加:在特定子任务之后插入新的子任务。只能在当前处理的子任务或其后继任务之后添加子任务。这确保了新任务按顺序编排,简化了执行流程,并保持了一致性。
ToolAgent:在函数调用中协同推理和行动
ToolAgent使用ReACT会寻找最佳的一系列动作(工具调用)来完成子任务。在每一轮中,智能体根据先前的交互生成一个动作,对于每个动作,在同一个函数调用中将智能体的推理和行动协同起来,即推理跟踪(“思考”)和将要执行的动作都被视为特定函数的参数。具体而言,每个(函数调用)具有以下组件:
• 思考:智能体关于任务的洞察力的概括。
• 推理:跟踪智能体通过的逻辑轨迹,以得出其思考。
• 批评:捕捉智能体对其行动的自我反思,作为一个反馈回路。它强调潜在的疏忽或改进的领域。
• 指令:根据推理决定智能体下一步要采取的动作。
• 参数:列举要执行的动作的具体参数或细节。
ToolServer包括三个关键组件:
• ToolServerManager管理Docker容器(即节点)的生命周期,处理它们的创建、监控和关闭。当一个新会话开始时,管理器可以创建一个新节点。定期检查这些节点的状态,以确保它们健康运行。
• ToolServerMonitor检查节点的状态,更新它们的状态,并确保它们有效地执行。如果一个节点在长时间内空闲,监视器可以停止它以节省资源。
• ToolServerNode是执行单元,其中执行动作(如API调用、文件上传、工具检索等)。
git clone https://github.com/OpenBMB/XAgent.gitcd XAgent# 安装依赖 python 版本 >= 3.10pip install -r requirements.txt
运行之前在assets/config.yml中配置XAgent
在assets/config.yml中提供至少一个OpenAI key用于访问OpenAI API。
如果想更换XAgentServer的config_file路径,需要修改*.env文件中CONFIG_FILE*的值并重启docker容器。
ToolServer作为docker容器,为XAgent运行提供安全的环境。(如果修改了配置,需要重新执行下述命令)
docker compose up --build
docker exec XAgent-Server systemctl start nginx
XAgent-Server启动后,默认的访问地址是 http://localhost:5173, 要确保端口是对外开放的,首次访问该地址,会看到上个步骤的控制台上会打印访问的日志信息:
XAgent-Server | XAgent Service Startup Param:XAgent-Server | app: app:appXAgent-Server | prod: FalseXAgent-Server | base_dir: XAgentServerXAgent-Server | use_redis: FalseXAgent-Server | recorder_root_dir: running_recordsXAgent-Server | default_login: TrueXAgent-Server | check_running: FalseXAgent-Server | host: 0.0.0.0XAgent-Server | port: 8090XAgent-Server | debug: TrueXAgent-Server | reload: TrueXAgent-Server | workers: 1XAgent-Server | share_url: https://x-agent.net/api/conv/communityXAgent-Server | DB: <class 'XAgentServer.application.core.envs.XAgentServerEnv.DB'>XAgent-Server | Redis: <class 'XAgentServer.application.core.envs.XAgentServerEnv.Redis'>XAgent-Server | Email: <class 'XAgentServer.application.core.envs.XAgentServerEnv.Email'>XAgent-Server | Upload: <class 'XAgentServer.application.core.envs.XAgentServerEnv.Upload'>XAgent-Server | XAgent Service Init Dependence.XAgent-Server | init a thread pool executor, max_workers: 1XAgent-Server | XAgent Service Init Dependence: Complete!XAgent-Server | Default user: Guest, token: xagent, you can use it to loginXAgent-Server | XAgent Server Dependences:XAgent-Server | Python: 3.10+ XAgent-Server | FastAPI: Http serverXAgent-Server | Websocket: long connect with clientXAgent-Server | MySQL: save xagent dataXAgent-Server | SqlAlchemy: ORM with MySQLXAgent-Server | Redis: save status of interactionXAgent-Server | Threading: run interactionXAgent-Server | APScheduler: send data to client and keep aliveXAgent-Server | FastAPI APIRouter: manage websocket routeXAgent-Server | XAgentError: XAgentServer.exts.exception_extXAgent-Server | XAgent Server Version:XAgent-Server | V 1.1.0XAgent-Server | Notes:XAgent-Server | Since V 1.1.0, XAgent-Server | Local storage will no longer be supported, replaced by Mysql.XAgent-Server | The service depends on Redis and Mysql, XAgent-Server | so you need to install Redis and Mysql before using it.XAgent-Server | Before you use this service, please ensure that the following services are available:XAgent-Server | 1. Redis on docker, port: 6379, you can start it by docker, default password: xagentXAgent-Server | 2. Mysql on docker, port: 3306, you can start it by dockerXAgent-Server | 3. XAgent Tool Server is runnning on port 8080XAgent-Server | 4. Port 8090 is not occupied
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-01
2025-01-01
2024-07-25
2025-02-04
2024-08-13
2024-04-25
2024-06-13
2024-08-21
2024-09-23
2024-04-26
2025-04-19
2025-04-19
2025-04-18
2025-04-18
2025-04-17
2025-04-16
2025-04-16
2025-04-16