原方案
在《[OpenManus](https://mp.weixin.qq.com/s?__biz=MzIyOTkzNTkwNQ==&mid=2247485162&idx=1&sn=b4bc8299533a23ac609c0ceb225890ab&scene=21#wechat_redirect)
智能体之旅》,我首次尝试使用OpenManus
时,main
分支项目代码中尚未合并使用其他搜索引擎的代码。当时,我想使用百度搜索引擎替代默认的谷歌搜索引擎,于是在它的issues
中找到一个大佬提供的代码解决方案:https://github.com/mannaandpoem/OpenManus/issues/333
此方案具体分三步:
- 安装依赖
pip install baidusearch
- 在
tool
目录下创建baidu\_search.py
import asyncio
from typing import List
from baidusearch.baidusearch import search
from app.tool.base import BaseTool
class BaiduSearch(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"],
}
asyncdef 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
if \_\_name\_\_ == '\_\_main\_\_':
result = search("测试", num\_results=10)
print(result)
- 替换
manus.py
中的GoogleSearch
搜索工具为BaiduSearch
class Manus(ToolCallAgent):
name: str = "Manus"
description: str = (
"A versatile agent that can solve various tasks using multiple tools"
)
system\_prompt: str = SYSTEM\_PROMPT
next\_step\_prompt: str = NEXT\_STEP\_PROMPT
# Add general-purpose tools to the tool collection
available\_tools: ToolCollection = Field(
default\_factory=lambda: ToolCollection(
PythonExecute(),
# GoogleSearch(), # 注释默认搜索引擎
BaiduSearch(), # 启用百度搜索引擎
BrowserUseTool(),
FileSaver(),
Terminate()
)
)
然后运行:
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 (or 'exit'/'quit' to quit): 查看百度新闻
就可以使用百度搜索引擎了:
更新方案
使用OpenManus
时加入了项目使用交流群,很多网友都在反映默认搜索引擎的问题,今天,再去看项目代码时,已经合并了百度、DuckDuckGo
搜索引擎代码,具体启用步骤是在OpenManus-main/config/config.example.toml
配置文件中启用[search]
配置项:
[search]
#engine = "Google"
engine = "Baidu" # 或使用engine = "DuckDuckGo"
当然,大模型的配置也不要忘了。 启用这个配置项后,运行:
$ 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: 查看百度新闻
到这里,然后。。。。。。浏览器出现闪退,好吧,翻车了,执行结果:
2025-03-14 14:08:10.337 | WARNING | \_\_main\_\_:main:15 - Processing your request...
2025-03-14 14:08:10.337 | INFO | app.agent.base:run:137 - Executing step 1/20
2025-03-14 14:08:19.340 | INFO | app.agent.toolcall:think:54 - ✨ Manus's thoughts:
2025-03-14 14:08:19.341 | INFO | app.agent.toolcall:think:55 - 🛠️ Manus selected 1 tools to use
2025-03-14 14:08:19.341 | INFO | app.agent.toolcall:think:59 - 🧰 Tools being prepared: ['web\_search']
2025-03-14 14:08:19.342 | INFO | app.agent.toolcall:execute\_tool:145 - 🔧 Activating tool: 'web\_search'...
2025-03-14 14:08:20.222 | INFO | app.agent.toolcall:act:118 - 🎯 Tool 'web\_search' completed its mission! Result: Observed output of cmd `web\_search` executed:
发现,执行任务执行步骤从之前的30
步到现在的20
步了,不知道官方在优化时是不是弄出了新的bug
,在交流群也看见很多网友也存在一样的情况,等待后面官方修复吧,毕竟从代码找bug
不是一个工具人能干的事情😂。