XAgent的部署及运行

news2024/12/25 23:39:37

源代码clone

git clone

config 文件的修改

在XAgent源码目录,运行 vi .env, 修改以下配置条目

CONFIG_FILE=assets/gpt-3.5-turbo_config.yml

python环境

python >=3.10

安装conda,通过conda激活python3.10的环境

wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh

# 修改执行权限
chmod 777 Anaconda3-2023.03-1-Linux-x86_64.sh

# 执行
./Anaconda3-2023.03-1-Linux-x86_64.sh

# 创建python3.10+ 的环境
conda create --name py310 python=3.10

#查看新创建的环境 
conda info --envs
# conda environments:
#
# base                  *  /root/anaconda3
# py310                    /root/anaconda3/envs/py310

# 激活py310环境
activate py310

# 重新进入shell后,查看python的版本
python --version

PIP

安装pip包

# 下载安装脚本
wget https://bootstrap.pypa.io/get-pip.py

# 运行安装脚本
python3 get-pip.py

docker的部署及运行

确保已安装docker,在XAgent源码目录,运行以下命令,从代码builddocker

docker compose build
# 如果不是第一次build,可以加上--no-cache参数,强制不使用缓存,否则build内容可能不会被更新
docker compose build --no-cache

看到以下提示时,运行完毕

=> [ 4/12] RUN apt update && apt install -y build-essential make openjdk-17-jdk-headless curl docker.io docker-compose psmisc sudo                                                                         41.5s
 => [ 5/12] RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple                                                                                                                     1.9s
 => [ 6/12] RUN pip install playwright && playwright install chromium &&  playwright install-deps                                                                                                           83.0s
 => [ 7/12] COPY ToolServer/ToolServerNode/requirements.txt .                                                                                                                                                0.1s
 => [ 8/12] RUN pip install --no-cache-dir -r requirements.txt                                                                                                                                             144.4s
 => [ 9/12] RUN rm -rf /tmp/* /var/tmp/*                                                                                                                                                                     0.4s
 => [10/12] COPY ToolServer/ToolServerNode .                                                                                                                                                                 0.1s 
 => [11/12] RUN mkdir -p assets                                                                                                                                                                              0.2s 
 => [12/12] RUN mkdir -p workspace                                                                                                                                                                           0.2s 
 => exporting to image                                                                                                                                                                                       9.8s 
 => => exporting layers                                                                                                                                                                                      9.8s
 => => writing image sha256:45e525fd5f2f9fbbb7679e96359934cd4b4a0658f6aaa39c0987718c87758b64                                                                                                                 0.0s
 => => naming to docker.io/xagentteam/toolserver-node:latest       

使用 docker images 命令查看,可以看到xagent的几个images已经出现在列表中

REPOSITORY                      TAG       IMAGE ID       CREATED          SIZE
xagentteam/toolserver-node      latest    45e525fd5f2f   18 minutes ago   3.75GB
xagentteam/xagent-server        latest    829edddf670b   19 minutes ago   1.29GB
xagentteam/toolserver-manager   latest    1fab5aa2bb99   22 minutes ago   1.03GB
xagentteam/toolserver-monitor   latest    803d4cd44e84   23 minutes ago   1.02GB

再运行

#  拉取的依赖容器并启动相应的服务
docker compose up

再使用 docker images 命令查看,依赖的images,比如redis,mongo,mysql也出现在列表中。在这里需要注意,系统中的某些端口不能被占用,比如3306,否则就会导致相应的应用启动失败

REPOSITORY                      TAG       IMAGE ID       CREATED          SIZE
xagentteam/toolserver-node      latest    45e525fd5f2f   23 minutes ago   3.75GB
xagentteam/xagent-server        latest    829edddf670b   24 minutes ago   1.29GB
xagentteam/toolserver-manager   latest    1fab5aa2bb99   28 minutes ago   1.03GB
xagentteam/toolserver-monitor   latest    803d4cd44e84   28 minutes ago   1.02GB
redis                           latest    76506809a39f   9 days ago       138MB
mongo                           latest    5acb2131d51f   11 days ago      757MB
mysql                           latest    f7fdab215ab7   7 weeks ago      605MB

同时,一些容器也会在系统中创建成功,可以使用docker ps --no-trunc查看(我的这个列表中mysql容器因为端口原因就启动失败了,需要更改被占用的端口后重启)

[root@opencloudos XAgent-1.0.0]# docker ps --no-trunc
                                NAMES
0c28937576b3036d988d8075c23ca5fa2acd952b0719879e2fd5301d463192bb   xagentteam/toolserver-node:0.2         "uvicorn main:app --host 0.0.0.0 --port 31942"                                                                                                      19 minutes ago   Up 19 minutes (healthy)   31942/tcp                                                                              friendly_darwin
3cf4eb9a46caf8bc774ad731a2dae9f6dffaf67ef6da85b5f8198a117f766dd0   xagentteam/xagent-server:latest        "python start_server.py"                                                                                                                            21 minutes ago   Up 21 minutes             0.0.0.0:5173->5173/tcp, :::5173->5173/tcp, 0.0.0.0:8090->8090/tcp, :::8090->8090/tcp   XAgent-Server
ede01c59c67f61dbbe7e16b984447fcdb9c65df39da264085dc001abb9b31b83   xagentteam/toolserver-node:latest      "uvicorn main:app --host 0.0.0.0 --port 31942"                                                                                                      21 minutes ago   Up 21 minutes             31942/tcp                                                                              xagent-main-ToolServerNode-1
8c5b52f2d082ed74603fa01bf75fbbbdd44301d482843c6e59dbda4f03b25347   xagentteam/toolserver-manager:latest   "gunicorn main:app -b 0.0.0.0:8080 --worker-class uvicorn.workers.UvicornWorker --workers 2 -t 600"                                                 21 minutes ago   Up 21 minutes (healthy)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                              xagent-main-ToolServerManager-1
0c19c715098a7b719eeb427c13f3b0ddc6eacbf059df07bae36553aefc66170e   xagentteam/toolserver-node:0.2         "uvicorn main:app --host 0.0.0.0 --port 31942"                                                                                                      8 hours ago      Up 8 hours (healthy)      31942/tcp                                                                              nice_diffie
41f1b764cbdfce3fe7d2dfad75f90fdaca9e3abd660c8942b040268f4bcb1a34   xagentteam/toolserver-node:0.2         "uvicorn main:app --host 0.0.0.0 --port 31942"                                                                                                      11 hours ago     Up 11 hours (healthy)     31942/tcp                                                                              eager_greider
1a2bfe7c41fad33417ae9528135d3a46c9c24465fc934e5cf9228e8002762de7   mysql                                  "docker-entrypoint.sh --default-authentication-plugin=caching_sha2_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"   11 hours ago     Up 8 hours (healthy)      0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                   xagent-main-xagent-mysql-1
379d82d0c10df5ef2933acffc6529569a390bbd5f79cc4abdd2149ee42ff435a   redis                                  "docker-entrypoint.sh redis-server --requirepass xagent"                                                                                            11 hours ago     Up 8 hours (healthy)      0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                              xagent-main-xagent-redis-1


如果顺利启动,则可以看到以下提示:

INFO:     Register env WebEnv with 2 tools!
xagent-100-ToolServerNode-1     | INFO:     Register env PythonNotebook with 2 tools!
xagent-100-ToolServerNode-1     | INFO:     Register env FileSystemEnv with 3 tools!
xagent-100-ToolServerNode-1     | INFO:     Register tool shell_command_executor!
xagent-100-ToolServerNode-1     | INFO:     Loaded 8 tools and 3 envs!
xagent-100-ToolServerNode-1     | INFO:     Application startup complete.
xagent-100-ToolServerNode-1     | INFO:     Uvicorn running on http://0.0.0.0:31942 (Press CTRL+C to quit)
xagent-100-xagent-mysql-1       | 2023-12-14T05:49:03.879382Z 8 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
XAgent-Server                   | INFO:     Will watch for changes in these directories: ['/app']
XAgent-Server                   | INFO:     Uvicorn running on http://0.0.0.0:8090 (Press CTRL+C to quit)
XAgent-Server                   | INFO:     Started reloader process [1] using StatReload
xagent-100-xagent-mysql-1       | 2023-12-14T05:49:06.192883Z 9 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
XAgent-Server                   | INFO:     Started server process [16]
XAgent-Server                   | INFO:     Waiting for application startup.
XAgent-Server                   | INFO:     Application startup complete.

访问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: <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: 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: save xagent data
XAgent-Server                   |         SqlAlchemy: ORM with MySQL
XAgent-Server                   |         Redis: save 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 available:
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

在这里插入图片描述

部署及启动过程中的一些错误解决

错误列表

ToolServerNode—but the ‘h2’ package is not installed

我是使用的是XAgent-1.0.0版本,启动过程中xagentteam/toolserver-node:latest这个image的容器碰到以下错误:

ImportError: Using http2=True, but the 'h2' package is not installed. Make sure to install httpx using `pip install httpx[http2]`.
xagent-100-ToolServerNode-1     | 
xagent-100-ToolServerNode-1     | ERROR:    Application startup failed. Exiting.

解决方法

# 到\XAgent-1.0.0\dockerfiles\ToolServerNode\目录下
# 修改Dockerfile文件
# 在RUN pip install playwright && playwright install chromium &&  playwright install-deps这段之后添加:
RUN pip install httpx[http2]
# 注意,添加上面这段脚本后,要重新运行docker compose build 和 docker compose up

mysql启动后不停闪现的warning信息

后台服务启动后,如果不停闪现以下错误:

 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

解决方法 请修改mysql的healthcheck段配置:

healthcheck:
     # test: [ "CMD", "mysqladmin","ping", "-h", "localhost" ]
     test: ["CMD-SHELL", "mysql -h localhost -u root -pxagent -e 'SELECT 1'"]
     #interval: 10s
     timeout: 20s
     retries: 20

如果以上配置修改不能解决您的问题,尝试将你的Xagent代码切换到master版本,我在1.00版本碰到该问题,切换到master版本后运行,以上问题应该已经被修复

max_workers must be greater than 0 错误

暂无解决方案,如果你是1.00版本,建议使用master版本尝试该问题是否能修复,总而言之,master版本似乎要比1.00版本稳定不少。

   |   File "/app/XAgent/function_handler.py", line 234, in handle_tool_call
XAgent-Server                   |     command_result = self.long_result_summary(
XAgent-Server                   |   File "/app/XAgent/function_handler.py", line 167, in long_result_summary
XAgent-Server                   |     with ThreadPoolExecutor(max_workers=len(result)) as pool:
XAgent-Server                   |   File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 144, in __init__
XAgent-Server                   |     raise ValueError("max_workers must be greater than 0")
XAgent-Server                   | ValueError: max_workers must be greater than 0

AttributeError: ‘ToolServerInterface’ object has no attribute ‘cookies’

伴随以上错误,同时会有以下异常信息:

 XAgentServer.exts.exception_ext.XAgentRunningError: HTTPConnectionPool(host='localhost', port=8080): Max retries exceeded with url: /get_cookie

解决方法 问题是由localhost的8080端口沟通失败引起的,尝试使用IP地址,请注意打开8080端口的访问权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1322452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nodejs 第二十五章(http)

“http” 模块是 Node.js 中用于创建和处理 HTTP 服务器和客户端的核心模块。它使得构建基于 HTTP 协议的应用程序变得更加简单和灵活。 创建 Web 服务器&#xff1a;你可以使用 “http” 模块创建一个 HTTP 服务器&#xff0c;用于提供 Web 应用程序或网站。通过监听特定的端…

智能优化算法应用:基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑猩猩算法4.实验参数设定5.算法结果6.参考文…

RabbitMQ 基础

1.初识RabbitMQ 1.1.同步调用 我们现在基于OpenFeign的调用都属于是同步调用&#xff0c;那么这种方式存在哪些问题呢&#xff1f; 拓展性差性能下降级联失败 而要解决这些问题&#xff0c;我们就必须用异步调用的方式来代替同步调用。 1.2.异步调用 异步调用方式其实就是基…

SpringBoot接入轻量级分布式日志框架GrayLog

1.前言 日志在我们日常开发定位错误&#xff0c;链路错误排查时必不可少&#xff0c;如果我们只有一个服务&#xff0c;我们可以只简单的通过打印的日志文件进行排查定位就可以&#xff0c;但是在分布式服务环境下&#xff0c;多个环境的日志统一收集、展示则成为一个问题。目…

抓包https请求网络异常/无数据怎么破?

当你测试App的时候&#xff0c;想要通过Fiddler/Charles等工具抓包看下https请求的数据情况&#xff0c;发现大部分的App都提示网络异常/无数据等等信息。 以“贝壳找房”为例&#xff1a; Fiddler中看到的请求是这样的&#xff1a; 你可能开始找证书的问题&#xff1a;是不是…

Axure中继器的使用

目录 一. 中继器 概述 作用 运用场景 二. 中继器的使用 三. 三列表格增删改查案例展示 一. 中继器 概述 在Axure软件中&#xff0c;中继器&#xff08;Repeater&#xff09;是一种特殊的控件&#xff0c;它的作用是允许用户创建重复的数据项&#xff0c;并以列表或表格…

Ebullient第一阶段开发小结

一. 简介 距离Ebullient硬件发布已有一段时间&#xff0c;小一个月吧&#xff0c;在这段时间内在努力的编写代码&#xff0c;现在终于完成了第一阶段的功能设计&#xff0c;算是一个小型的样机吧&#xff0c;基本的代码框架基本确定了&#xff0c;相信后续的会快一点(希望如此…

基于grpc从零开始搭建一个准生产分布式应用(7) - 01 - 附:GRPC拦截器源码

开始前必读&#xff1a;​​基于grpc从零开始搭建一个准生产分布式应用(0) - quickStart​​ 一、源码目录结构 二、GRPC拦截器源码 2.1、com.zd.baseframework.core.core.common.interceptor package com.zd.baseframework.core.core.common.interceptor;import com.zd.ba…

OpenShift 4 - 管理和使用 OpenShift AI 运行环境

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 RHODS 2.50 的环境中验证 文章目录 启停 Notebook Server启动停止 Notebook 镜像Notebook Image 和 ImageStream使用定制的 Notebook Image 定制服务器的运行配置应用和项目用户和访问权…

嵌入式软件测试(黑盒测试)---三年嵌入式软件测试的理解

文章内容为本人这三年来在嵌入式软件测试&#xff08;黑盒&#xff09;上的一些积累吧&#xff0c;说起来也挺快的&#xff0c;毕业三年的时间就这样过去了&#xff0c;在两家公司工作过&#xff08;现在这家是第二家&#xff09;&#xff0c;这几年的测试项目基本都是围绕着嵌…

【java IO】|java NIO总结

在传统的 Java I/O 模型&#xff08;BIO&#xff09;中&#xff0c;I/O 操作是以阻塞的方式进行的。也就是说&#xff0c;当一个线程执行一个 I/O 操作时&#xff0c;它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈&#xff0c;因为需要为每个连…

解决win10下强制设置web浏览器为microsoft edge的方法

目录 问题场景实现方法禁止edge默认选项设置默认浏览器 反思 问题场景 因为一些特殊的原因&#xff0c;我需要第二个浏览器&#xff0c;我的第一个浏览器是google的chrome浏览器&#xff0c;所以我选择的是windows的默认浏览器&#xff0c;就是microsoft edge浏览器&#xff0…

MYSQL中使用IN,在xml文件中怎么写?

MYSQL&#xff1a; Spring中&#xff1a; mysql中IN后边的集合&#xff0c;在后端中使用集合代替&#xff0c;其他的没有什么注意的&#xff0c;还需要了解foreach 语法即可。

AI抠图软件哪个好用?推荐这三款抠图工具给你

AI抠图软件哪个好用&#xff1f;你是否听说过AI抠图这个操作呢&#xff1f;简单来说&#xff0c;抠图就是一种对图像进行处理的技术&#xff0c;它的目的是将图片中的某些区域去除或者替换。比如&#xff0c;如果你有一张背景很杂乱的图片&#xff0c;你想把背景去掉&#xff0…

【Python炫酷系列】一闪一闪亮星星,漫天都是小星星(完整代码)

文章目录 环境需求完整代码详细分析系列文章环境需求 python3.11.4及以上版本PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.…

产品需求分析师的职责内容(合集)

产品需求分析师的职责内容1 职责&#xff1a; 1、根据公司战略规划&#xff0c;负责妇产科相关平台产品的中长期规划; 2、组织需求调研、收集、分析、整理、提炼、用户的需求&#xff0c;分析形成可行性研究报告; 3、深入挖掘产品需求&#xff0c;管理用户及公司内部业务需求&a…

深度卷积神经网络的剪枝方法

深度学习领域的一种剪枝技术是“网络瘦身&#xff08;Network Slimming&#xff09;”&#xff0c;这是一种旨在深度卷积神经网络&#xff08;CNN&#xff09;中实现通道级稀疏性的简单方案。该技术利用批量归一化中的放缩层来有效识别并修剪网络中不重要的通道。本文将详细介绍…

查看CPU的型号方法很多,而且步骤简单

每台计算机至少包含一个处理器&#xff0c;也称为CPU或中央处理单元。你电脑的CPU可能是由英特尔或AMD制造的。以下是如何查看你的CPU以及它的速度。 在设置应用程序中查找你的CPU 要在Windows 10或Windows 11设置应用程序中查找此信息&#xff0c;请导航到“设置”>“系统…

黑盒测试中关键截图如何打点

黑盒测试中关键截图如何打点Android黑盒测试过程中如何进行有效的打点是我们经常遇到的问题&#xff0c;我们一般会在脚本内部进行数据打点&#xff0c;也可以使用其他进程录屏或截图。那我们如何选取合适的方式进行打点记录呢&#xff1f;下图是对常用打点方式的统计&#xff…

全链路压力测试:解析其主要特点

随着信息技术的飞速发展和云计算的普及&#xff0c;全链路压力测试作为一种关键的质量保障手段&#xff0c;在软件开发和系统部署中扮演着至关重要的角色。全链路压力测试以模拟真实生产环境的压力和负载&#xff0c;对整个业务流程进行全面测试&#xff0c;具有以下主要特点&a…