OpenManus+DeepSeek体验

news/2025/3/10 1:16:48/文章来源:https://www.cnblogs.com/qq347061329/p/18761730

前言

这篇文章偏技术,如果跟着文章操作有难度,建议找网上找相关视频操作。

什么是OpenManus,为什么要使用

说到OpenManus就不得不先提下Manus,Manus是全球首款真正意义上的通用型AI Agent,由中国的创业公司Monica开发,看官方的演示感觉很6,但是10w的邀请吗告诉我,我不配。

幸好有大佬连夜整出来一个OpenManus,引用官方一句描述: Manus 非常棒,但 OpenManus 无需邀请码即可实现任何创意 !

那么OpenManus能做什么呢

复杂任务规划与执行:它可以把复杂的任务拆解成多个小步骤,自动规划并执行,最后给出完整的成果。

工具调用与自动化:很多工作离不开外部工具。 OpenManus 能灵活调动 各种工具,比如浏览器、数据分析软件等,完全不用你担心技术细节。

智能信息收集与处理:OpenManus 不仅能浏览网页、提取信息,还能进行精准的内容整理。

安装使用

环境

os: archlinux

安装OpenManus

1. 源码下载
git clone https://github.com/mannaandpoem/OpenManus.git2. 进入项目根目录
cd OpenManus3. 创建新的 conda 环境
conda create -n open_manus python=3.124. 等待完成后,设置当前python环境
source /opt/anaconda/bin/activate open_manus5. 安装依赖
pip install -r requirements.txt

购买DeepSeekApi

1. 访问DeepSeek官网 https://www.deepseek.com./ 。2. 点击右上角API开放平台,左边充值即可,测试充个10元就勾了。3. 充值完毕后,点击API Keys,创建自己的key,我这里起名字就是OpenManus(可以看看这玩意儿消耗tokens的量)

配置OpenManus

OpenManus 需要配置使用的 LLM API,请按以下步骤设置:1. 保证当前还在项目跟目录下2. 创建config.toml文件:
cp config/config.example.toml config/config.toml3. 编辑 config/config.toml 添加 API 密钥和自定义设置:(注: model和base_url在deepseek充值界面接口文档就可以看到)# Global LLM configuration
[llm]
model = "deepseek-chat"
base_url = "https://api.deepseek.com"
api_key = "sk-8.....9ff89"
max_tokens = 4096
temperature = 0.0# [llm] #AZURE OPENAI:
# api_type= 'azure'
# model = "YOUR_MODEL_NAME" #"gpt-4o-mini"
# base_url = "{YOUR_AZURE_ENDPOINT.rstrip('/')}/openai/deployments/{AZURE_DEPOLYMENT_ID}"
# api_key = "AZURE API KEY"
# max_tokens = 8096
# temperature = 0.0
# api_version="AZURE API VERSION" #"2024-08-01-preview"# Optional configuration for specific LLM models
[llm.vision]
model = "claude-3-5-sonnet"
base_url = "https://api.openai.com/v1"
api_key = "sk-..."

启动

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): (这里就是发挥创意的地方了)

一些小问题处理

目前内部默认采用的是google搜索,国内不好用,调整为bing搜索

  1. 在app/tool/目录,加bing_search.py
import asyncio
from typing import List
from urllib.parse import quote
import requests
from bs4 import BeautifulSoup
from app.tool.base import BaseToolclass BingSearch(BaseTool):name: str = "bing_search"description: str = """执行必应搜索并返回相关链接列表。
当需要获取国际信息或英文内容时建议使用此工具。
工具返回与搜索查询匹配的URL列表。"""parameters: dict = {"type": "object","properties": {"query": {"type": "string","description": "(必填) 提交给必应的搜索关键词"},"num_results": {"type": "integer","description": "(可选) 返回的搜索结果数量,默认10","default": 10}},"required": ["query"]}async def execute(self, query: str, num_results: int = 10) -> List[str]:"""执行必应搜索并返回URL列表Args:query: 搜索关键词num_results: 返回结果数量Returns:匹配搜索结果的URL列表"""def sync_search():headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36','Accept-Language': 'en-US,en;q=0.9'}url = f'https://www.bing.com/search?q={quote(query)}'links = []for page in range(0, num_results // 10 + 1):resp = requests.get(f'{url}&first={page * 10}',headers=headers,timeout=10)soup = BeautifulSoup(resp.text, 'html.parser')for result in soup.select('.b_algo'):link = result.find('a', href=True)if link and 'href' in link.attrs:links.append(link['href'])if len(links) >= num_results:return linksrst = links[:num_results]return rstloop = asyncio.get_event_loop()return await loop.run_in_executor(None, sync_search)
  1. agent/manus.py 中添加 BingSearch
from pydantic import Fieldfrom app.agent.toolcall import ToolCallAgent
from app.prompt.manus import NEXT_STEP_PROMPT, SYSTEM_PROMPT
from app.tool import Terminate, ToolCollection
from app.tool.browser_use_tool import BrowserUseTool
from app.tool.file_saver import FileSaver
from app.tool.google_search import GoogleSearch
# 一定要先引入
from app.tool.bing_search import BingSearch
from app.tool.python_execute import PythonExecuteclass Manus(ToolCallAgent):"""A versatile general-purpose agent that uses planning to solve various tasks.This agent extends PlanningAgent with a comprehensive set of tools and capabilities,including Python execution, web browsing, file operations, and information retrievalto handle a wide range of user requests."""name: str = "Manus"description: str = ("A versatile agent that can solve various tasks using multiple tools")system_prompt: str = SYSTEM_PROMPTnext_step_prompt: str = NEXT_STEP_PROMPT# Add general-purpose tools to the tool collection# 注意这里添加BingSearchavailable_tools: ToolCollection = Field(default_factory=lambda: ToolCollection(PythonExecute(), GoogleSearch(), BingSearch(), BrowserUseTool(), FileSaver(), Terminate()))
  1. prompt/manus.py 修改GoogleSearch为BingSearch
sed -i 's/GoogleSearch/BingSearch/g'

参考: https://github.com/mannaandpoem/OpenManus/issues/277

测试

  1. 查找中国 前十高校,通过csv格式返回到跟目录,只需要有学校名称 、排名、官网即可

实际测试,这玩意儿还是bug不少,跑了十几分钟结果没出结果,白瞎了我的token 😄。

总结

速度真的是挺慢,但是能够自己主动去搜索解决问题也算是挺牛了,对于技术人员来说又多了一个玩具。

这种主动去思考解决问题的思想比较有意思,在其它平台定义工作流时候可以借鉴这种方案,创建自己的manus,加油!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896184.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2022开发跨平台程序(ubuntu x64/aarch64)

1、目标平台安装编译环境sudo apt install openssh-server g++ gcc gdb gdbserver -y目标平台安装ninjiasudo apt install ninja-build目标平台安装较新版本的cmake ,否则VS提示目标平台版本太旧,不支持远程编译。 2、VS创建CMake项目,会有个默认打印Hello CMake的程序。 指…

软件工程作业2

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023这个作业要求在哪里 https://www.cnblogs.com/huanghi4833/p/18760121这个作业的目标 掌握 GitHub 、Git 的基本使用方法, 积累个人编程项目的经验一、PSP表格PSP2.1 Personal Softw…

How Far Can We Go with Practical Function-Level Program Repair? 论文笔记

介绍 (1) 背景现有的很多基于 LLM 的 APR 方法针对的是 single-line 或者代 hunk-level 的程序修复,但它们通常依靠语句级别的故障定位技术。然而,人们普遍认为,准确识别陈述级的断层基本上可能是代价高昂的,即要求细粒度的输入或强有力的假设,从而有可能限制它们的适用性…

Ubuntu安装最新版本的cmake

1、下载地址 Index of /files/LatestRelease ,目前最新的是3.31.6 或者命令行方式下载wget https://cmake.org/files/LatestRelease/cmake-3.31.6-linux-x86_64.tar.gz2、解压tar -zxvf cmake-3.31.6-linux-x86_64.tar.gz3、替换已有的cmake,mv命令必须目标路径为空,所以使用…

[AI/GPT] Anything-LLM : (MIT)

概述: Anything LLM 简述一体式桌面和Docker AI应用程序,内置RAG、AI代理、无代码代理构建器等。urlhttps://anythingllm.com https://github.com/Mintplex-Labs/anything-llm20250220 : 3.7k fork / 38.1K star创建公司:Mintplex Labs Inc.创立时间:2023年12月(首次公开)…

再次认识java反射

一、概述 在认识java反射之前我们先来认识一下什么是动态语言与静态语言。 动态语言 是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以 被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。 主要…

【问题】HashMap的computeIfAbsent方法丢失数据问题分析

问题背景 前段时间碰到客户问题发现是 ConcurrentHashMap的computeIfAbsent导致死循环(ConcurrentHashMap死循环问题分析)就很好奇HashMap的computeIfAbsent会不会也有问题,一试之下发现确实存在问题,相同的代码在HashMap中会丢失插入的数据。 发生原因 【循环添加】时,如…

CFA学习

定量分析 利率 利率的定义:被认为是 ① 平衡借贷双方的平衡点(equilibrium interest rates)② 贴现率(货币的时间价值)③ 机会成本 利率的组成:通货膨胀➕各种风险 计算【现值/终值】用时间轴确实一目了然! # 经济学 # 财务报表分析 # 公司理财 # 投资组合管理 # 权益投…

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

INFINI Labs 产品更新发布!此次更新,Easysearch 增加了新的功能和数据类型,包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持,Console 新增了日志查询功能。 INFINI Easysearch v1.11.0 INFINI Easysearch 是一个分布…

语法trick

for (int i = 1; i <= n; ++i) {cout << dist[i] << " \n"[i == n];}

百万架构师第四十七课:并发编程的原理(二)|JavaGuide

原文链接 JavaGuide《并发编程的艺术》 并发编程的实现原理 目标上节课内容回顾 synchronized 原理分析 wait 和 notify Lock 同步锁回顾原子性 可见性 有序性JMM ​ JMM 是 JAVA 里边定义的内存模型。定义了多线程和我们内存交互的规范。屏蔽了硬件和操作系统访问内存的差异。…

[极客大挑战 2019]Havefun 1

进网站显示一只猫,于是看源代码 发现下面有注释<!--$cat=$_GET[cat];echo $cat;if($cat==dog){echo Syc{cat_cat_cat_cat};}-->所以在后面加上/index.php?cat=dog即可(小猫可爱捏)