当前位置: 首页 > news >正文

LLM学习笔记4——本地部署Docker、vLLM和Qwen2.5-32B-Instruct实现OpenManus的使用

系列文章目录

参考博客
参考博客
参考博客
参考博客


文章目录

  • 系列文章目录
  • 前言
  • 一、OpenManus介绍
  • 二、环境搭建
    • 1.Docker+vLLM
    • 2.搭建OpenManus
      • 1)安装anaconda虚拟环境
      • 2)安装OpenManus
    • 3.下载并配置Qwen2.5-32B-Instruct模型
      • 1)模型下载
      • 2)docker-compose.yml 文件配置
    • 4.配置与运行OpenManus
      • 1)config.toml文件配置
      • 2)OpenManus运行
    • 5.报错与解决
      • 报错一:
      • 报错二:
      • 报错三:
      • 报错四:
  • 三、总结


前言

关于Docker、vLLM的介绍与安装以及更多相关内容可以查看我之前写的博客
LLM学习笔记1——本地部署Meta-Llama-3.2-1B大模型与学习LLaMA模型框架
LLM学习笔记2——使用Docker(Ollama+OpenWebUI)实现本地部署DeepSeek-R1-14B模型
LLM学习笔记3——使用Docker(vLLM+OpenWebUI)实现本地部署DeepSeek-R1-32B模型


一、OpenManus介绍

OpenManus,由 MetaGPT 团队精心打造的开源项目,于2025年3月发布。它致力于模仿并改进 Manus 这一封闭式商业 AI Agent 的核心功能,为用户提供无需邀请码、可本地化部署的智能体解决方案。换句话说,OpenManus 就像一位全能的数字助手,能够在你的本地设备上运行,随时听候差遣,完成各种复杂任务。

它的出现,打破了技术领域的高墙,让每一位开发者都有机会站在同一起跑线上,快速实现诸如代码生成、数据分析、网络信息检索等复杂任务的自动化处理。无论你是独立开发者,还是大型团队的一员,OpenManus 都能为你提供强大的支持,让你专注于创造性的核心工作,而非将时间浪费在重复性任务上。

1.OpenManus的优点
1.1 本地智能体运行
OpenManus 的一大亮点在于其本地智能体运行能力。你只需通过简单的终端指令输入任务,它便能迅速调用预先配置的语言模型(LLM),为你实现自动化的操作流程。无论是生成一段精妙的代码,还是对复杂的数据进行深度分析,亦或是执行网页交互任务,OpenManus 都能轻松应对,让你在数字化世界中游刃有余。

1.2 多工具链协同
为了更好地模拟人类的工作方式,OpenManus 搭建了一个强大的多工具链协同平台:
Python 代码执行器:它能够实时生成并运行 Python 代码,无论是进行数学计算,还是编写自动化脚本,都能一气呵成,大大提高了工作效率。
浏览器自动化工具:这个工具就像你的网络向导,能够模拟人类操作,访问各种网页,提取你需要的信息,让你无需手动在海量的网络数据中大海捞针。
文件处理系统:文档生成、管理以及格式化输出(如生成精美的 HTML 报告)都不在话下,让信息的整理和呈现变得更加专业和便捷。
网络搜索工具:它能自动检索网络上的最新数据,为你的任务提供最前沿的实时支持,确保你的工作始终紧跟时代潮流。

1.3 实时反馈机制
在任务执行的过程中,OpenManus 并非一味地闷头苦干,而是通过实时反馈机制,将思考逻辑、进度更新以及中间结果以可视化日志的形式呈现给你。这样一来,你就能清晰地追踪任务的每一步进展,及时发现并解决问题,让整个工作流程更加透明和可控。

2.技术架构与实现
2.1 模块化设计
OpenManus 采用了先进的模块化设计理念,通过可插拔的工具(Tools)和系统指令(System Prompt)组合,实现了功能模块的快速扩展。就好比搭积木一样,你可以根据自己的需求,轻松地添加或调整各种功能模块,比如浏览器自动化工具、数据分析工具等,让智能体完美适配你的工作场景。

2.2 基于 LLM 的规划系统
其规划系统基于强大的语言模型(LLM),并采用了 ReAct(推理与行动)框架。这一框架能够将复杂的任务巧妙地分解为一系列可执行的子步骤,例如先收集信息,再进行分析,最后生成报告,并且能够动态地协调各个工具的调用,确保任务的高效执行。

2.3 多模型集成
OpenManus 默认支持 GPT-4o 这一主流语言模型,但它的魅力不仅于此。通过简单的配置文件修改,你可以轻松切换到其他模型,如 Claude 3.5、Qwen VL Plus 等。这种多模型集成的方式,让你能够充分利用不同模型的优势,根据具体任务选择最合适的工具,从而达到最佳的效果。


二、环境搭建

1.Docker+vLLM

参考之前的博客:
LLM学习笔记3——使用Docker(vLLM+OpenWebUI)实现本地部署DeepSeek-R1-32B模型

安装好Docker和vLLM镜像

2.搭建OpenManus

1)安装anaconda虚拟环境

国内用户可以从清华大学开源软件镜像站里面获取 Anaconda 3,根据自己的基础配置选择对应的 Linux 86_64 位版本下载。
Anaconda 3下载
在这里插入图片描述

下载好后,终端进入安装包所在的对应目录,执行:

bash Anaconda3-***-Linux-x86_64.sh

然后根据不同要求,选择回车或者yes

检查是否安装
一定要打开一个新的终端,输入以下命令

conda --version

安装成功后你就可以开始创建管理自己的虚拟环境了。

anaconda常用命令参考博客

2)安装OpenManus

在这里插入图片描述

OpenManus的github下载路径

创建一个conda 环境:

conda create -n open_manus python=3.12
source activate open_manus

解压并进入openmanus的文件夹,安装依赖与第三方库:

pip install -r requirements.txt

3.下载并配置Qwen2.5-32B-Instruct模型

1)模型下载

国内使用modelscope网站下载

Qwen2.5-32B-Instruct-GPTQ-Int4模型地址

在下载前,请先通过如下命令安装ModelScope(需要python环境):

pip install modelscope

下载完整模型库到指定文件夹:

modelscope download --model Qwen/Qwen2.5-32B-Instruct-GPTQ-Int4  --local_dir /home/xxx/models/Qwen2.5-32B-Instruct-GPTQ-Int4

2)docker-compose.yml 文件配置

提供一份docker-compose.yml 文件参考,保存在models的同级目录下:

services:vllm:container_name: vllmimage: vllm/vllm-openai:v0.7.2ports:- "8000:8000"volumes:- ./models:/modelsenvironment:- NVIDIA_VISIBLE_DEVICES=all- API_KEY=123456command: ["--model", "/models/Qwen2.5-32B-Instruct-GPTQ-Int4","--served-model-name", "Qwen2.5-32B-Instruct-GPTQ-Int4","--tensor-parallel-size", "4","--max-model-len", "16384","--max-num-seqs", "1","--dtype","auto","--gpu-memory-utilization", "0.80","--enable-auto-tool-choice","--tool-call-parser", "hermes" ]ipc: hostrestart: alwaysdeploy:resources:reservations:devices:- driver: nvidiacount: allcapabilities: [gpu]

参数说明:

1. vllm 服务: container_name: vllm: 容器的名称为 vllm。image: vllm/vllm-openai:v0.7.2: 使用 vllm 提供的官方镜像,版本为 v0.7.2。ports: - "8000:8000": 将容器的 8000 端口映射到宿主机的 8000 端口。volumes: - ./models:/models: 将宿主机的 ./models 目录挂载到容器的 /models 目录,用于存放模型文件。environment:- NVIDIA_VISIBLE_DEVICES=all:使用GPU的设备- API_KEY=123456:设置一个api钥匙command: 运行容器时执行的命令,配置了以下参数:--model "/models/models/Qwen2.5-32B-Instruct-GPTQ-Int4": 使用指定路径下的模型。--served-model-name "models/Qwen2.5-32B-Instruct-GPTQ-Int4": 模型的服务名称为models/Qwen2.5-32B-Instruct-GPTQ-Int4。--tensor-parallel-size "4": 张量并行大小为 4,优化 GPU 计算。--max-model-len "16384": 模型处理的最大长度为 16384 个 token。--max-num-seqs "1": 每次处理的最大序列数为 1。--dtype "auto": 数据类型自动选择。--gpu-memory-utilization "0.80": GPU 内存利用率设为 80%。--enable-auto-tool-choice: 是独立开关参数,无需赋值,和自动选择工具有关,比如在模型支持工具调用时自动启用相关功能--tool-call-parser "hermes" : 解析工具调用的输出

在 docker-compose.yml 所在目录下打开终端,执行:

sudo docker-compose up -d

查看运行状态:

sudo docker-compose ps
或
nvidia-smi

4.配置与运行OpenManus

1)config.toml文件配置

OpenManus 需要配置使用的 LLM API,请按以下步骤设置:

  1. 在 config 目录创建 config.toml文件(可从示例复制):
cp config/config.example.toml config/config.toml
  1. 编辑 config/config.toml添加 API 密钥和自定义设置:
# 全局 LLM 配置
[llm]
model = "Qwen2.5-32B-Instruct-GPTQ-Int4"       # The LLM model to use
base_url = "http://localhost:8000/v1" # API endpoint URL
api_key = "123456"                   # Your API key
max_tokens = 8192                          # Maximum number of tokens in the response
temperature = 0.0                          # Controls randomness# 可选特定 LLM 模型配置
[llm.vision]
model = "Qwen2.5-32B-Instruct-GPTQ-Int4"       # The vision model to use
base_url = "http://localhost:8000/v1" # API endpoint URL for vision model
api_key = "123456"                   # Your API key for vision model
max_tokens = 8192                          # Maximum number of tokens in the response
temperature = 0.0                          # Controls randomness for vision model

2)OpenManus运行

一行命令运行 OpenManus:

python main.py

运行后正常结果:

INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [root] Anonymized telemetry enabled. See https://docs.browser-use.com/development/telemetry for more information.
Enter your prompt:

然后通过终端输入你的创意!

如需使用 MCP 工具版本,可运行:

python run_mcp.py

如需体验不稳定的多智能体版本,可运行:

python run_flow.py

5.报错与解决

报错一:

ERROR    | app.llm:ask_tool:763 - OpenAI API error: Error code: 400 - {'object': 'error', 'message': '"auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set', 'type': 'BadRequestError', 'param': None, 'code': 400}

是因为vLLM调用模型时没有加上 “–enable-auto-tool-choice"和”–tool-call-parser", “hermes” 参数,无法调用工具,在docker-compose.yml文件中加上即可。

报错二:

ERROR | app.llm:ask_tool:250 - API error: Error code: 400 - {‘code’: 20037, ‘message’: ‘Function call is not supported for this model.’, ‘data’: None}

是因为使用的模型不支持工具调用,需要带Instruct后缀的模型才有这个功能,更可用的模型即可。

报错三:

ERROR    | app.llm:ask_tool:769 - API error: Error code: 404 - {'object': 'error', 'message': 'The model `DeepSeek-R1-Distill-Qwen-32B-GPTQ-Int4` does not exist.', 'type': 'NotFoundError', 'param': None, 'code': 404}

docker-compose.yml文件中模型名称和config.toml文件中的模型名称不对应,修改即可。

报错四:

ERROR    | app.llm:ask_tool:763 - OpenAI API error: Error code: 400 - {'object': 'error', 'message': "This model's maximum context length is 8192 tokens. However, you requested 10220 tokens (2028 in the messages, 8192 in the completion). Please reduce the length of the messages or completion.", 'type': 'BadRequestError', 'param': None, 'code': 400}

是因为请求的 ​​Token 总数超出模型最大上下文限制​​导致的,要么缩短问题长度,要么根据使用的模型上下文长度去修改docker-compose.yml文件中的–max-model-len参数,适当修改对应值,config.toml文件中的max_tokens则取–max-model-len参数值的一半,修改即可。


三、总结

OpenManus 的应用场景几乎涵盖了我们工作和生活的方方面面:

自动化办公:无论是生成周计划、整理会议纪要,还是处理 Excel 数据,OpenManus 都能为你一键搞定,让你从繁琐的日常事务中解脱出来。
开发者辅助:对于开发者来说,它就像一位贴心的编程伙伴,能够快速生成代码片段、协助调试程序、规划项目架构,让开发过程更加顺畅高效。
教育与研究:在教育领域,它能够辅助编程教学、生成教学材料;在学术研究中,又能自动整理文献资料,为科研工作提供有力支持。
企业级工具:企业可以利用它定制专属的数据分析工具、客户支持系统,甚至是 SEO 优化报告生成器,助力企业在激烈的市场竞争中脱颖而出。
创意实现:如果你是一位创意工作者,OpenManus 能够根据你的描述生成美观的 HTML 页面,或者对网站进行深度技术分析,比如 SEO 审核,让创意得以快速落地。

在实际体验中OpenManus虽然可以实现全自动的能力,但是这也与调用的模型能力息息相关,模型能力差给出的结果就不好,甚至会出现记忆力遗忘等问题,最好还是搭配最顶级的模型的API使用。

另外编写的提示词也需要的表达清晰准确,否则模型会自由发挥。

相关文章:

  • Qt 中线程使用
  • shell练习题(1)
  • 腾讯云服务器安全——服务防火墙端口放行
  • 哈希表Hash table【C++】
  • CE第二次作业
  • C++学习之游戏服务器开发十七游戏房间容器化
  • KakaoPage中文版:正版授权,一站式阅读体验
  • 遨游三防|30200mAh、双露营灯三防平板,见证堆料天花板
  • 反射,枚举,lambda表达式
  • 《CBOW 词向量转化实战:让自然语言处理 “读懂” 文字背后的含义》
  • 数据库安装和升级和双主配置
  • 使用CNNS和编码器-解码器结构进行人群计数的深度学习模型的设计与实现
  • 13、性能优化:魔法的流畅之道——React 19 memo/lazy
  • Spring—AOP
  • 济南国网数字化培训班学习笔记-第二组-3节-电网工程建设项目部门
  • Python爬虫实战:移动端逆向工具Fiddler经典案例
  • 4.24定时任务_Python
  • 删除elementplus的li标签中的一个class属性?
  • 强化学习核心原理及数学框架
  • Postman设置环境变量与Token
  • 文昌市委原书记龙卫东已任海南省人社厅党组书记
  • 讲座预告|大国博弈与创新破局:如何激励中国企业创新
  • 夜读丨修车与“不凑合”
  • 乌代表团与美特使在伦敦举行会谈,双方同意继续对话
  • 从“龙队”到“龙副主席”,国乒这批退役球员为何不当教练了
  • 威廉·透纳诞辰250周年|他是现代艺术之父