最近Manus非常的火,很多人都想体验下Manus,但是想想Manus的邀请码都抄到了以万为单位了,还是放弃了。不过很快OpenManus就横空出世了,免费开源,不需要邀请码。下面记录下OpenManus实战的整个过程
github地址:GitHub - mannaandpoem/OpenManus: No fortress, purely open ground. OpenManus is Coming.
按照github上的说明,OpenManus提供了两种安装方式。推荐使用方式二(uv),因为它能提供更快的安装速度和更好的依赖管理。所以这里直接用uv来安装。
这里说明下,本机是win10系统,如果是linux或者mac系统,请直接看官方文档:
独立安装 uv(一个快速的 Python 包管理器):
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 如果通过独立安装程序安装,uv 可以更新到最新版本:
uv self update
这里安装可能会失败,多试几次
或者从 Pypi 安装
# pip
pip install uv
# pipx
pipx install uv
克隆仓库:
git clone https://github.com/mannaandpoem/OpenManus.git cd OpenManus
创建并激活虚拟环境:
创建python 3.12.0虚拟环境
uv venv --python 3.12.0
激活环境
# macOS / Linux
# source .venv/bin/activate
# windows
.venv\Scripts\activate
在OpenManus目录下创建配置文件pyproject.toml,内容如下:
[project]
name = "myproject"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = []
安装依赖:
uv pip install -r requirements.txt
OpenManus 需要配置使用的 LLM API,请按以下步骤设置:
在 config
目录创建 config.toml
文件(可从示例复制):
cp config/config.example.toml config/config.toml
编辑 config/config.toml
添加 API 密钥和自定义设置:
# 全局 LLM 配置 [llm] model = "gpt-4o" base_url = "https://api.openai.com/v1" api_key = "sk-..." # 替换为真实 API 密钥 max_tokens = 4096 temperature = 0.0 # 可选特定 LLM 模型配置 [llm.vision] model = "gpt-4o" base_url = "https://api.openai.com/v1" api_key = "sk-..." # 替换为真实 API 密钥
我这里通过阿里百炼平台,申请了api key,配置如下
这里有点需要注意,OpenManus执行搜索的时候,默认用的谷歌,但是国内因为都知道的原因,根本访问不了,所以需要把搜索引擎换成百度,将下面的代码替换/app/tool/google_search.py:
import asyncio
from typing import List
from baidusearch.baidusearch import search
from app.tool.base import BaseTool
class GoogleSearch(BaseTool):
name: str = "baidu_search"
description: str = """Perform a Baidu search and return a list of relevant links.
Use this tool when you need to find information on the web, get up-to-date data, or research specific topics.
The tool returns a list of URLs that match the search query.
"""
parameters: dict = {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "(required) The search query to submit to Baidu.",
},
"num_results": {
"type": "integer",
"description": "(optional) The number of search results to return. Default is 10.",
"default": 10,
},
},
"required": ["query"],
}
async def execute(self, query: str, num_results: int = 10) -> List[str]:
"""
Execute a Baidu search and return a list of URLs.
Args:
query (str): The search query to submit to Baidu.
num_results (int, optional): The number of search results to return. Default is 10.
Returns:
List[str]: A list of URLs matching the search query.
"""
# Run the search in a thread pool to prevent blocking
loop = asyncio.get_event_loop()
links = await loop.run_in_executor(
None, lambda: [result['url'] for result in search(query, num_results=num_results)]
)
return links
然后在执行命令安装baidusearch包即可:
uv add baidusearch
最后,一行命令运行 OpenManus:
python main.py
下面我们就来试试看效果如何吧
先来一个简单的:
这个任务比较简单,最终也生成了txt文档,但是大模型把保存到桌面理解为在当前目录下创建desktop目录在保存,勉强算完成了吧
在来一个复杂的:
这里有三个问题
1,我让大模型查询2025年的数据,结果他说当前时间是2023年,搜不到未来的数据,所以他采用另外的路子,造假数据,好吧,这是大模型本身的问题,没招
2,第二个问题是需要本机电脑安装谷歌浏览器,我没有安装,所以报错了,所以需要事先安装
3,当大模型尝试将生成的数据写入到ppt文档中的是,发现没有安装python-pptx这个包,所以他最终给我生成的是一个txt文档,-_-||,完全不是我想要的啊
那么我这里首先安装下谷歌浏览器,这个就不多说了
然后需要安装python-pptx包,执行以下命令即可:
uv add python-pptx
然后我们在试一次:
这次没有出现上次报的第二和第三个问题,但是生成的代码有问题,执行不了,大模型也尝试修复代码,但是尝试几次都没有成功,最后他放弃了,给出了代码,让我自己调试,我也是醉了
那只能换个模型试试了,换DeepSeek-R1看看行不行:
直接报错,提示不支持function call,DeepSeek官方文档也明确指出,当前DeepSeek-R1模型暂不支持Function Call
最后在换最近强的可怕,性能媲美DeepSeek-R1的 通义千问qwq-32b:
可惜也是报错,说是qwq-32b目前只支持流式响应,这个问题应该是OpenManus本身不支持流式响应导致的,如果有哪位大佬知道怎么解决,麻烦告知下