大模型 | XAgent 的部署及运行
自动化技术正在重塑我们的工作方式,尤其是流程自动化(Process Automation),它试图让那些复杂的业务处理——数据处理、文档流转、客户服务等——变得像流水线一样高效。在这个背景下,Agent(智能体)在机器人流程自动化(RPA)领域扮演了革命性的角色,而一个名为XAgent的开源项目尤为引人注目。

XAgent简介
XAgent
通用自主智能体
外循环
规划(Planning)
内循环
执行(Execution)
XAgent的几个关键特点值得关注:
- :无需人类参与,自动解决各种任务,真正意义上的“放手”。
自主性
- :所有行为都被限制在Docker容器内,主机环境不受影响,跑起来放心。
安全性
- :支持添加新工具,甚至新智能体,能力可以不断扩充。
可扩展性
- :既可以通过图形界面,也能通过命令行与智能体交互,使用门槛低。
GUI
- :它不仅能遵循人类指令完成任务,遇到棘手问题时还会主动求助,很懂协作。
与人类的合作
XAgent原理
XAgent的规划和任务执行通过双循环机制编排。简单来说,外循环负责高层次的全局管理,内循环专注于每个子任务的底层执行和优化。
外循环
外循环作为高层规划器和整个问题解决序列的主要协调者。它的职责可以分解为两步:
- :PlanAgent先生成一个初始计划,把复杂任务拆解成更小、更好管理的子任务,放在任务队列里,直接排队等待执行。
初始计划生成
- :初始计划落地后,PlanAgent从队列中释放第一个任务,交给内循环。它持续监视进展和状态,每个子任务完成后,内循环会返回ToolAgent的反馈。PlanAgent根据反馈动态调整——优化计划或继续执行后续子任务,直到队列清空为止。
迭代式计划优化
内循环
内循环负责执行外循环分配的子任务。基于外循环给定的任务,它会指定一个合适的ToolAgent,确保结果靠谱。内循环的几个关键点:
- :根据子任务的性质,派遣具备相应能力的ToolAgent,并从外部系统获取必要工具。
智能体调度和工具获取
- :ToolAgent采用ReACT模式——寻找最佳的动作序列(工具调用)来完成子任务。这一步类似人类解题时的“思考→行动”循环。
工具执行
- :在完成一系列动作后,ToolAgent会发出一个名为“subtask_submit”的特定动作,将反馈和反思传递给PlanAgent。反馈会说明子任务是否成功,或者哪里可以改进。
反馈和反思
PlanAgent:动态规划和迭代改进
PlanAgent赋予智能体不断制定和修订计划的能力,以应对多变的环境和突发需求。它专门用于外循环,通过生成初始计划和不断修订计划来实现目标。PlanAgent包含四个关键函数:
- :将特定子任务进一步分解为更细粒度的单元,只有当前正在执行或尚未启动的子任务才有资格拆分。
子任务拆分
- :删除尚未开始的子任务,进行中的或已完成的不能动。这保证了灵活性,可以裁剪多余或不相关的任务。
子任务删除
- :修改子任务的内容,同样不能修改已经开始或已经完成的,保持整体计划的完整性。
子任务修改
- :在特定子任务之后插入新任务,只能插在当前处理的子任务或其后续任务之后,确保执行顺序不乱。
子任务添加
ToolAgent:在函数调用中协同推理和行动
ToolAgent使用ReACT模式,在每一轮中根据先前交互生成一个动作。关键是把推理和行动捆绑在同一个函数调用里——也就是说,“思考”过程和将要执行的动作都被视为特定函数的参数。每个函数调用包含以下组件:
- :智能体对任务的洞察力概括。
思考
- :跟踪智能体得出思考的逻辑轨迹。
推理
- :捕捉智能体对自身行动的反思,作为一个反馈回路,强调潜在疏忽或改进方向。
批评
- :根据推理决定下一步要采取的动作。
指令
- :列举要执行的动作的具体细节。
参数
ToolServer:多样化的支持工具
ToolServer包括三个关键组件:
- :管理Docker容器(即节点)的生命周期,处理创建、监控和关闭。新会话开始时,管理器可以创建一个新节点,并定期检查节点状态确保健康运行。
ToolServerManager
- :检查节点状态,更新状态,确保它们有效执行。如果节点长时间空闲,监视器会停止它以节省资源。
ToolServerMonitor
- :执行单元,在里面执行具体的动作,比如API调用、文件上传、工具检索等。
ToolServerNode
部署
1. 环境搭建
1.1 基本环境安装
git clone https://github.com/OpenBMB/XAgent.git cd XAgent # 安装依赖,python版本 >= 3.10 pip install -r requirements.txt
1.2 配置
运行之前,在 assets/config.yml 中配置XAgent。需要至少提供OpenAI key用于访问OpenAI API。如果想更换XAgentServer的config_file路径,需要修改 .env 文件中 CONFIG_FILE* 的值并重启Docker容器。
1.3 编译和运行ToolServer
ToolServer作为Docker容器,为XAgent运行提供安全环境。如果修改了配置,需要重新执行下面的命令:
docker compose up --build
4. 运行XAgent
docker exec XAgent-Server systemctl start nginx
5. 访问XAgent-Server
XAgent-Server启动后,默认访问地址是 http://localhost:5173,需要确保端口对外开放。首次访问时,控制台会打印日志信息,类似这样:
XAgent-Server | XAgent Service Startup Param: XAgent-Server | app: app:app XAgent-Server | prod: False XAgent-Server | base_dir: XAgentServer XAgent-Server | use_redis: False XAgent-Server | recorder_root_dir: running_records XAgent-Server | default_login: True XAgent-Server | check_running: False XAgent-Server | host: 0.0.0.0 XAgent-Server | port: 8090 XAgent-Server | debug: True XAgent-Server | reload: True XAgent-Server | workers: 1 XAgent-Server | share_url: https://x-agent.net/api/conv/community XAgent-Server | DB:XAgent-Server | Redis: XAgent-Server | Email: XAgent-Server | Upload: XAgent-Server | XAgent Service Init Dependence. XAgent-Server | init a thread pool executor, max_workers: 1 XAgent-Server | XAgent Service Init Dependence: Complete! XAgent-Server | Default user: Guest, token: xagent, you can use it to login XAgent-Server | XAgent Server Dependences: XAgent-Server | Python: 3.10+ XAgent-Server | FastAPI: Http server XAgent-Server | Websocket: long connect with client XAgent-Server | MySQL: sa ve xagent data XAgent-Server | SqlAlchemy: ORM with MySQL XAgent-Server | Redis: sa ve status of interaction XAgent-Server | Threading: run interaction XAgent-Server | APScheduler: send data to client and keep alive XAgent-Server | FastAPI APIRouter: manage websocket route XAgent-Server | XAgentError: XAgentServer.exts.exception_ext XAgent-Server | XAgent Server Version: XAgent-Server | V 1.1.0 XAgent-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 a vailable: XAgent-Server | 1. Redis on docker, port: 6379, you can start it by docker, default password: xagent XAgent-Server | 2. Mysql on docker, port: 3306, you can start it by docker XAgent-Server | 3. XAgent Tool Server is runnning on port 8080 XAgent-Server | 4. Port 8090 is not occupied
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名