OpenManus切换搜索引擎

火山方舟向量数据库大模型

原方案

[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): 查看百度新闻  

就可以使用百度搜索引擎了:picture.image

更新方案

使用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不是一个工具人能干的事情😂。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
高性能存储虚拟化方案 NVMe over Fabric 在火山引擎的演进
在云计算中,虚拟化存储扮演着重要角色,其中 iSCSI 协议在业界开放、流行多年。近年来,拥有更优性能的 NVMe over Fabrics 协议也得到了发展。本次分享介绍了 NVMe over Fabrics 在云原生和虚拟化方向的演进工作和成果。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论