前言
最近,AI智能体特别火,尤其是Manus这个产品,感觉大家都在讨论它。不过,Manus的邀请码被炒到天价,一般人根本玩不起。还好有个叫OpenManus的开源项目,虽然功能没那么强大,但也能让我们体验一下类似的技术。今天,咱们就来聊聊Manus和OpenManus到底是个啥,以及它们背后的技术到底有什么不同。
多智能体和端到端:到底啥是啥?
先说Manus,它用的是多智能体架构,简单来说,就是把一个复杂任务拆成好几个小任务,然后让不同的“小助手”去完成。比如,一个任务可能需要“搜索信息”、“分析数据”、“生成报告”,那就会有三个不同的“小助手”分别负责这些事。这种架构的好处是,每个“小助手”都很专业,而且如果其中一个出了问题,也不会影响整个系统。但问题是,这些“小助手”之间得配合得很好,不然就会出岔子。有研究说,Manus的失败案例里,78%都是因为这些“小助手”没配合好。
再看看OpenManus,它用的是单智能体架构,简单来说,就是让一个“全能选手”来搞定所有任务。这种架构的好处是简单,但问题是,这个“全能选手”可能在某些方面不够专业,而且如果它出问题了,整个任务就黄了。
还有一种叫端到端模型的架构,就是让一个“超级大脑”来搞定所有事情,从理解任务到执行任务,全都自己来。这种架构的好处是效率高,而且有时候还能做出一些让人意想不到的好东西。但问题是,训练这个“超级大脑”特别难,而且如果它在某个地方出问题了,整个系统就完了。
LLM:智能体的“大脑”
不管是Manus还是OpenManus,它们的核心都是大语言模型(LLM)。这个LLM就像是智能体的“大脑”,负责思考、规划、执行、调整,总之就是啥都管。
比如,你让智能体去知乎上找点关于Manus的帖子,然后整理成一个好看的网页。LLM就会先分析你的需求,然后规划出怎么去知乎、怎么找帖子、怎么整理数据、怎么生成网页这些步骤。接着,它会调用不同的工具,比如浏览器工具去访问网页,Python工具去处理数据。最后,它还会根据中间的结果调整策略,确保最后的网页看起来不错。
实测:从知乎热榜到小红书风格网页
为了看看OpenManus到底行不行,我让它干了一件事:去知乎上找关于Manus的帖子,然后整理成一个像小红书风格的网页。这个任务听起来简单,但其实挺复杂的,因为涉及到网页访问、数据提取、数据处理、网页生成这些步骤。
结果呢,虽然OpenManus最后真的生成了一个网页,但过程有点坎坷,速度也挺慢的。不过,最后的网页看起来还不错,至少比我自己写一个要强。这说明,OpenManus在处理复杂任务上还是有点潜力的,只是稳定性和效率还需要提升。
未来:多智能体和端到端能一起玩吗?
短期内,多智能体架构还是解决复杂任务的好办法,毕竟它专业性强,而且出问题了也好修。但长期来看,端到端模型的潜力更大,因为它效率高,而且有时候还能做出一些让人眼前一亮的东西。
不过,这两者也不是完全对立的。未来,可能会有一种新的架构,把多智能体和端到端的优点结合起来。比如,用多智能体来处理一些需要专业能力的任务,用端到端模型来处理需要创造力的任务。
总结
总的来说,Manus和OpenManus代表了AI智能体发展的两个方向。Manus更像是一个豪华的瑞士军刀,功能强大但价格昂贵;OpenManus则是一个便宜的国产替代品,虽然功能没那么多,但也能满足基本需求。未来,不管是多智能体还是端到端,都有自己的优势和挑战。对于我们这些普通用户来说,只要能用上这些技术,让生活更方便,那就够了。
实战
前提条件安装好conda环境
anaconda与miniconda都行
准备Python环境
conda create -n open_manus python=3.12
conda activate open_manus
下载项目,开源地址
https://github.com/mannaandpoem/OpenManus
如下,我下载并解压到D盘
D:\Information_Technology\workspace_ai\OpenManus-main
使用conda命令行,并进入项目路径
(open_manus) D:\Information_Technology\workspace_ai\OpenManus-main>d:
(open_manus) D:\Information_Technology\workspace_ai\OpenManus-main>cd D:\Information_Technology\workspace_ai\OpenManus-main
安装依赖,执行命令
pip install -r requirements.txt
出现报错
打开 trae 把报错信息输入
版本问题,根据给出的建议修改
继续重复步骤,直到依赖安装成功
准备一个配置大语言模型接口的文件
cp config/config.example.toml config/config.toml
修改文件中的三个参数为你的API参数(model、base_url、api_key)
# Global LLM configuration
[llm]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..." # Replace with your actual API key
max_tokens = 4096
temperature = 0.0
# Optional configuration for specific LLM models
[llm.vision]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..." # Replace with your actual API key
如果是deepseek可以如下配置
# Global LLM configuration
[llm]
api_type = "deepseek"
model = "deepseek-chat" # DeepSeek Chat 模型
base_url = "https://api.deepseek.com/v1" # DeepSeek API 端点
api_key = "sk-xxx" # 替换为您的 DeepSeek API key
max_tokens = 4096 # 最大令牌数
temperature = 0.0 # 温度参数
# Optional configuration for specific LLM models
[llm.vision]
model = "deepseek-vision" # DeepSeek Vision 模型
base_url = "https://api.deepseek.com/v1" # DeepSeek API 端点
api_key = "sk-xxxx" # 替换为您的 DeepSeek API key
max_tokens = 8192 # Maximum number of tokens in the response
temperature = 0.0 # Controls randomness for vision model
# [llm.vision] #OLLAMA VISION:
# api_type = 'ollama'
# model = "llama3.2-vision"
# base_url = "http://localhost:11434/v1"
# api_key = "ollama"
# max_tokens = 4096
# temperature = 0.0
# Optional configuration for specific browser configuration
# [browser]
# Whether to run browser in headless mode (default: false)
#headless = false
# Disable browser security features (default: true)
#disable_security = true
# Extra arguments to pass to the browser
#extra_chromium_args = []
# Path to a Chrome instance to use to connect to your normal browser
# e.g. '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
#chrome_instance_path = ""
# Connect to a browser instance via WebSocket
#wss_url = ""
# Connect to a browser instance via CDP
#cdp_url = ""
# Optional configuration, Proxy settings for the browser
# [browser.proxy]
# server = "http://proxy-server:port"
# username = "proxy-username"
# password = "proxy-password"
# Optional configuration, Search settings.
# [search]
# Search engine for agent to use. Default is "Google", can be set to "Baidu" or "DuckDuckGo" or "Bing".
#engine = "Google"
# Fallback engine order. Default is ["DuckDuckGo", "Baidu", "Bing"] - will try in this order after primary engine fails.
#fallback_engines = ["DuckDuckGo", "Baidu", "Bing"]
# Seconds to wait before retrying all engines again when they all fail due to rate limits. Default is 60.
#retry_delay = 60
# Maximum number of times to retry all engines when all fail. Default is 3.
#max_retries = 3
# Language code for search results. Options: "en" (English), "zh" (Chinese), etc.
#lang = "en"
# Country code for search results. Options: "us" (United States), "cn" (China), etc.
#country = "us"
## Sandbox configuration
#[sandbox]
#use_sandbox = false
#image = "python:3.12-slim"
#work_dir = "/workspace"
#memory_limit = "1g" # 512m
#cpu_limit = 2.0
#timeout = 300
#network_enabled = true
# MCP (Model Context Protocol) configuration
[mcp]
server_reference = "app.mcp.server" # default server module reference
执行main
python main.py
输入提示词
执行中
抓取知乎
需要人工介入登录。
有一定失败概率
成品
流程拆解
OpenManus是一个开源的AI智能体项目,它的核心在于通过大语言模型(LLM)来完成复杂任务。从用户输入指令到最终输出结果,整个过程就像一场精密的交响乐,而LLM就是这场交响乐的指挥家。下面,我们就来拆解一下OpenManus是如何一步步完成任务的。
1. 启动系统:任务的起点
当用户输入指令,比如“分析知乎热搜”时,OpenManus就开始工作了。它会启动一个叫“智能助手”的实例,这个实例就像是一个全能助手,负责接收和处理用户的指令。简单来说,这就是任务的起点。
2. 分析和规划:LLM的“大脑”开始运转
接下来,LLM开始分析用户的指令。它会先理解用户的需求,比如“分析知乎热搜”到底是要干什么。然后,它会思考解决方案,制定一个详细的执行计划,比如“先访问知乎热搜页面,再提取数据,最后生成报告”。最后,它会决定每一步需要用到什么工具,比如浏览器工具、Python执行工具等。
3. 工具调度与执行:调用合适的工具
根据规划好的计划,LLM会从工具箱中挑选出最合适的工具,比如用浏览器工具访问知乎热搜页面。工具执行后会返回结果,比如网页内容。LLM会分析这些结果,并评估下一步该做什么。如果结果不理想,它会调整计划,重新尝试。
4. 数据处理与代码生成:LLM的“创造力”
如果任务需要处理数据,比如提取知乎热搜的标题、热度和分类,LLM会自动生成Python代码来完成这些工作。它会清洗数据、统计分析,甚至生成可视化图表。这个过程就像LLM在“写作业”,只不过它写的是代码。
5. 结果保存与反馈:任务的终点
当任务完成时,LLM会决定是否需要保存结果,比如将数据保存为文件。最后,它会生成一个总结报告,告诉用户任务完成了,并等待用户的下一个指令。
LLM的关键作用:它是整个系统的“大脑”
在整个过程中,LLM的作用至关重要。它不仅是任务的“指挥中心”,负责理解需求和规划任务,还负责“工具调度”,挑选合适的工具并生成参数。它还能“自动生成代码”,处理数据并生成报告。最重要的是,它会“反思”和“调整”,在遇到问题时重新规划,确保任务顺利完成。
用例图
流程图
时序图
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标 ⭐ ~谢谢你看我的文章,我们,下次再见。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。