掘金 人工智能 06月23日 13:58
Minion-Agent + Smolagents + DeepSeek-R1 实战教程:打造智能网页数据采集机器人
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Minion-Agent 框架解决了 AI 智能体开发中的框架碎片化问题,通过统一接口,支持多种 AI 框架,并集成丰富的工具集和多智能体协作机制。结合 DeepSeek-R1 模型和 Smolagents 工具,本教程演示了如何构建一个强大的智能网页数据采集机器人,实现自动浏览、数据提取、问题回答和报告生成。该框架采用"信息流"设计,包含浏览器使用智能体、深度研究智能体和智能体大脑等核心组件。

🤖 Minion-Agent 框架核心优势在于**多框架统一支持**,能够兼容 OpenAI、LangChain 等主流 AI 框架,简化了开发流程。

🛠️ 该框架预集成了**网页浏览、文件操作等实用工具**,并支持自定义工具扩展,增强了智能体的功能灵活性和可定制性。

👥 Minion-Agent 支持**多智能体协作机制**,能够创建多个子智能体协同工作,实现分布式智能处理,提高效率。

⚙️ 系统采用了**“信息流”设计模式**,包含浏览器使用智能体、深度研究智能体和智能体大脑三个核心组件,确保任务处理的完整闭环。

💡 教程展示了如何结合 Minion-Agent、Smolagents 和 DeepSeek-R1 模型,构建**智能网页数据采集机器人**,实现自动浏览、数据提取和报告生成。

最近,AI 智能体开发领域出现了一个引人注目的新框架——Minion-Agent。这个框架的出现解决了当前 AI 智能体开发中的一个关键痛点:框架碎片化问题。

在传统的开发模式中,想要构建一个功能完整的 AI 智能体,开发者往往需要在 OpenAI、LangChain、Google AI、Smolagents 等多个框架之间来回切换,因为每个框架都有自己的优势和局限性。这种碎片化不仅增加了开发复杂度,也成为了 AI 智能体大规模应用的主要障碍。

与此同时,DeepSeek 刚刚发布了 R1 系列推理模型的最新版本——DeepSeek-R1-0528。这个拥有 685 亿参数的模型在思考深度和推理能力方面有了显著提升,整体性能已经可以与 o3 和 Gemini-2.5-Pro 等国际顶级模型相媲美。

本教程将结合 Minion-Agent 框架、Smolagents 工具和 DeepSeek-R1 模型,手把手教你构建一个强大的智能网页数据采集机器人。这个机器人不仅能自动浏览网页、提取数据,还能基于采集到的信息回答用户问题,甚至生成结构化的对比分析报告。

Minion-Agent 框架深度解析

核心概念和优势

Minion-Agent 是一个简单而强大的 AI 智能体框架,它的设计理念是让用户能够轻松使用 AI 技术完成复杂任务。与传统方案相比,它具有以下核心优势:

多框架统一支持:Minion-Agent 兼容 OpenAI、LangChain、Google AI、Smolagents 等主流 AI 框架。通过统一的接口,开发者可以无缝调用不同框架的能力,避免了重复学习和适配的成本。

丰富的内置工具集:框架预集成了网页浏览、文件操作、任务自动化等实用工具,同时支持扩展机制,允许开发者根据需求添加自定义工具。

多智能体协作机制:支持创建多个子智能体并让它们协同工作。Minion-Agent 会自动分配和管理这些智能体的任务,实现真正的分布式智能处理。

智能网页操作能力:集成了先进的浏览器自动化功能,能够处理复杂的网页交互、数据抓取和信息提取任务。

深度研究功能:内置了专门的 DeepResearch 智能体,能够围绕特定主题进行深入研究,自动组织和总结信息。

系统架构设计

Minion-Agent 采用了先进的"信息流"设计模式,实现了从用户指令到最终结果的完整闭环处理。系统主要包含三个核心组件:

浏览器使用智能体 (BrowserUseAgent) :这个组件包装了 browser-use 库,通过动态加载 LangChain 模型和懒加载 Chrome 浏览器实例,在 MinionAgent 框架内提供自动化网页浏览功能。其关键创新是动态任务更新机制,允许同一智能体实例通过修改内部状态来处理多个不同的任务提示。

深度研究智能体 (DeepResearcher) :执行多阶段研究工作流程,包括主题澄清、搜索查询生成、并行搜索执行、内容总结、迭代研究循环等。它使用专门的模型 (如 DeepSeek-R1-Distill-Llama-70B) 来合成综合性答案。

智能体大脑 (MinionBrain) :作为抽象基类,通过工厂模式为不同智能体框架提供统一接口。它动态导入特定实现,处理同步/异步执行,并维护框架抽象。

核心库介绍

项目使用了以下核心库:

Smolagents:一个轻量级但功能强大的智能体框架,只需几行代码就能创建复杂的智能体。它提供了简洁的 API 和丰富的功能模块。

Minion-Agent:新一代开源 AI 智能体开发框架,专门设计来解决当前 AI 智能体开发中的框架碎片化问题。通过集成多个 AI 框架,提供统一的开发体验。

核心功能模块实现

工具参数解析模块

首先实现工具参数解析功能,这是确保智能体正确调用各种工具的基础:

"""Minion Agent 使用示例"""import asynciofrom dotenv import load_dotenvimport osfrom PIL import Imagefrom io import BytesIOfrom time import sleepfrom smolagents import ChatMessagefrom smolagents.models import parse_json_if_neededfrom minion_agent import MinionAgent, AgentConfig, AgentFrameworkfrom smolagents import CodeAgent, ActionStepdef parse_tool_args_if_needed(message: ChatMessage) -> ChatMessage:    for tool_call in message.tool_calls:        tool_call.function.arguments = parse_json_if_needed(tool_call.function.arguments)    return message

这个函数的作用是处理智能体的工具调用消息。它接收一个 ChatMessage 对象,检查是否包含工具调用。如果有工具调用,就遍历每个调用,将 JSON 字符串格式的参数转换为 Python 字典,确保参数格式正确。

截图功能实现

接下来实现截图功能,这对于调试和记录智能体的操作过程非常重要:

def save_screenshot(memory_step: ActionStep, agent: CodeAgent) -> None:    sleep(1.0)  # 等待页面加载完成        browser_tool = agent.tools.get("browser")    if browser_tool:        # 清理旧截图以节省内存        for previous_memory_step in agent.memory.steps:            if isinstance(previous_memory_step, ActionStep) and previous_memory_step.step_number <= memory_step.step_number - 2:                previous_memory_step.observations_images = None        # 使用 Playwright 截图        result = browser_tool(action="screenshot")        if result["success"] and "screenshot" in result.get("data", {}):            screenshot_bytes = result["data"]["screenshot"]            image = Image.open(BytesIO(screenshot_bytes))            print(f"截取浏览器截图: {image.size} 像素")            memory_step.observations_images = [image.copy()]        # 获取当前URL        state_result = browser_tool(action="get_current_state")        if state_result["success"] and "url" in state_result.get("data", {}):            url_info = f"当前URL: {state_result['data']['url']}"            memory_step.observations = (                url_info if memory_step.observations is None else memory_step.observations + "\n" + url_info            )

这个函数负责在智能体执行过程中捕获浏览器截图。它首先等待页面完全加载,然后清理旧的截图以节省内存,接着使用 Playwright 工具截图并保存到内存步骤中。同时,它还会获取当前页面的 URL 信息。

智能体配置模块

智能体的配置是整个系统的核心,需要仔细设计:

# 配置主智能体agent_config = AgentConfig(    model_id="deepseek/deepseek-reasoner",    name="research_assistant",    description="专业的研究助手",    model_args={        "api_key": os.environ.get("DEEPSEEK_API_KEY"),     },    tools=[        "minion_agent.tools.browser_tool.browser",        "minion_agent.tools.generation.generate_pdf",        "minion_agent.tools.generation.generate_html",        "minion_agent.tools.generation.save_and_generate_html",    ],    agent_type="CodeAgent",    agent_args={        "additional_authorized_imports": "*",        "planning_interval": 3,        "step_callbacks": [save_screenshot]    })

这个配置定义了一个名为"research_assistant"的智能体,使用 DeepSeek 推理模型。智能体配备了浏览器工具、PDF 生成工具、HTML 生成工具等。重要参数包括:

多智能体协作配置

为了处理复杂任务,我们还可以配置多个专门的子智能体:

managed_agents = [    AgentConfig(        name="search_web_agent",        model_id="deepseek/deepseek-reasoner",        description="专门用于网页搜索和导航的智能体",        tools=["minion_agent.tools.browser_tool.browser"],        model_args={            "api_key": os.environ.get("DEEPSEEK_API_KEY"),         },        agent_type="ToolCallingAgent",    ),    AgentConfig(        name="visit_webpage_agent",        model_id="deepseek/deepseek-reasoner",        description="专门用于访问网页的智能体",        tools=["minion_agent.tools.web_browsing.visit_webpage"],        model_args={            "api_key": os.environ.get("DEEPSEEK_API_KEY"),         },    )]

这里定义了两个专门的智能体:一个负责网页搜索和导航,另一个专门负责访问网页。这种分工合作的方式能够提高系统的效率和稳定性。

主程序逻辑实现

最后实现主程序逻辑,整合所有功能模块:

async def main():    try:        # 创建并运行智能体        agent = await MinionAgent.create(AgentFramework.SMOLAGENTS, agent_config)        result = agent.run(            "我想购买 MEK AI-Enhanced Gaming PC Desktop Computer - " \            "NVIDIA GeForce RTX 5090, AMD Ryzen 7 9700X 5.5GHz, 32GB DDR5 RGB, 2TB NVME M.2 SSD, 1300W 80+ Gold PSU, WiFi 7, Windows 11。" \            "请帮我找到更好的价格并与其他笔记本电脑进行比较,将结果制成表格形式。"        )        print("智能体回复:", result)        print("任务完成!")    except Exception as e:        print(f"错误: {str(e)}")        raiseif __name__ == "__main__":    asyncio.run(main())

这个主函数使用异步方式运行,能够处理网页浏览等耗时操作而不阻塞程序。它创建智能体后,给出一个具体的任务:查找特定电脑的更优价格并与其他产品进行比较。

系统工作流程详解

任务规划和分解

当用户提出查询需求时,智能体的规划系统会自动启动,每三步制定一次策略。对于价格比较任务,系统会分解为以下步骤:

    产品规格理解:首先分析用户指定的产品详细规格多渠道价格搜索:在多个零售商网站搜索价格信息同类产品对比:查找配置相似的竞品进行比较数据整理和展示:将结果组织成表格形式

总结

Minion-Agent 的出现为 AI 智能体开发领域带来了新的活力。它不仅是一个技术框架,更代表了开放协作的开发理念。

通过本教程,我们看到了如何将 Minion-Agent、Smolagents 和 DeepSeek-R1 结合起来,构建功能强大的智能数据采集系统。这种组合充分发挥了各个组件的优势:

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Minion-Agent AI 智能体 DeepSeek-R1 Smolagents
相关文章