DeepSeek与浏览器自动化AI Agent构建指南
文章使用到的模型可以用硅基流动中的:
注册链接:硅基流动统一登录邀请码:FytHp9Xa
一、技术选型阶段
1. 基础组件选择
-
AI模型:DeepSeek-R1开放API(对话/推理)或DeepSeek-Coder(代码生成)
-
浏览器控制:Playwright(比Selenium更快的现代浏览器自动化库)
-
编排框架:LangChain或Autogen(用于构建AI Agent工作流)
-
后端服务:FastAPI(轻量级API框架)+ RabbitMQ(任务队列)
2. 开发环境搭建
# 创建虚拟环境
python -m venv agent_env
source agent_env/bin/activate# 安装核心依赖
pip install deepseek-api playwright langchain python-dotenv
playwright install chromium
二、架构设计阶段
1. 系统架构图
[用户接口]↓
[API网关] → (身份验证/请求分发)↓
[任务队列] → RabbitMQ(保证任务有序执行)↓
[AI Agent核心]├─ 自然语言理解 → DeepSeek-R1├─ 代码生成 → DeepSeek-Coder└─ 浏览器控制 → Playwright Driver
2. 核心工作流程
-
接收自然语言指令(如"获取亚马逊iPhone 15前3页价格")
-
通过DeepSeek-R1进行意图识别和任务分解
-
生成Playwright控制代码并验证安全性
-
执行浏览器自动化操作
-
结果清洗和结构化处理
-
生成最终自然语言报告
三、核心实现阶段
1. 初始化模块
# config.py
import os
from dotenv import load_dotenvload_dotenv()DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
BROWSER_HEADLESS = os.getenv("HEADLESS", "true").lower() == "true"
2. DeepSeek集成模块
# deepseek_integration.py
import requestsclass DeepSeekClient:def __init__(self, api_key):self.base_url = "https://api.deepseek.com/v1"self.headers = {"Authorization": f"Bearer {api_key}","Content-Type": "application/json"}def generate_response(self, prompt, model="deepseek-r1"):payload = {"model": model,"messages": [{"role": "user", "content": prompt}],"temperature": 0.7}response = requests.post(f"{self.base_url}/chat/completions",json=payload,headers=self.headers)return response.json()["choices"][0]["message"]["content"]
3. 浏览器控制模块
# browser_controller.py
from playwright.sync_api import sync_playwright
import jsonclass BrowserAgent:def __init__(self, headless=True):self.playwright = sync_playwright().start()self.browser = self.playwright.chromium.launch(headless=headless)self.context = self.browser.new_context(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")self.page = self.context.new_page()def execute_actions(self, actions_json):try:for action in actions_json["steps"]:method = getattr(self.page, action["action"])if action["type"] == "click":method(action["selector"])elif action["type"] == "input":method(action["selector"], action["value"])self.page.wait_for_timeout(1000) # 适当等待return self.page.content()except Exception as e:print(f"执行错误: {str(e)}")return Nonedef close(self):self.context.close()self.browser.close()self.playwright.stop()
4. 任务编排模块
# task_orchestrator.py
from deepseek_integration import DeepSeekClient
from browser_controller import BrowserAgent
import jsonclass TaskOrchestrator:def __init__(self):self.ai_client = DeepSeekClient(os.getenv("DEEPSEEK_API_KEY"))self.browser = BrowserAgent()def process_task(self, user_input):# 步骤1:生成浏览器操作指令prompt = f"""用户请求:{user_input}请生成Playwright操作步骤,格式要求:{{"steps": [{{"action": "goto|click|fill","type": "navigation|click|input","selector": "CSS选择器","value": "输入内容(可选)"}},// 更多步骤...]}}"""# 步骤2:获取结构化操作指令action_plan = self.ai_client.generate_response(prompt)# 步骤3:执行浏览器操作try:actions = json.loads(action_plan)result_html = self.browser.execute_actions(actions)# 步骤4:结果分析analysis_prompt = f"""原始网页内容:{result_html[:5000]}...(截断)用户需求:{user_input}请提取结构化数据并生成自然语言报告"""final_report = self.ai_client.generate_response(analysis_prompt)return final_reportexcept json.JSONDecodeError:return "操作指令生成失败,请重新尝试"
四、优化迭代阶段
1.性能优化技巧
-
使用Playwright的异步API
-
实现智能等待(替代固定等待时间):
self.page.wait_for_selector(selector, state="attached", timeout=5000)
五、典型用例演示
场景:商品价格监控
orchestrator = TaskOrchestrator()
result = orchestrator.process_task("请访问亚马逊中国,搜索'iPhone 15',获取前3页商品的价格和评价数"
)
print(result)
执行流程:
-
生成导航到amazon.cn的操作指令
-
自动处理搜索框输入和搜索按钮点击
-
滚动翻页并提取数据
-
使用DeepSeek分析HTML结构并提取信息
-
生成包含价格趋势分析的Markdown报告
六、扩展方向建议
-
视觉集成:结合Playwright的截图功能+视觉模型进行验证
-
身份管理:实现多用户Cookie隔离存储
-
RPA扩展:集成桌面自动化库(如PyAutoGUI)突破浏览器限制
-
知识记忆:使用向量数据库存储历史操作记录
相关文章:

DeepSeek与浏览器自动化AI Agent构建指南
文章使用到的模型可以用硅基流动中的: 注册链接:硅基流动统一登录 邀请码:FytHp9Xa 一、技术选型阶段 1. 基础组件选择 AI模型:DeepSeek-R1开放API(对话/推理)或DeepSeek-Coder(代码生成&#…...

面试中常问的mysql数据库指令【杭州多测师_王sir】
数据库中的修改表结构、增删改查、用户权限操作DDL 》数据库定义语言 create database,create table drop tableDML 》数据库操作语言 insert into,delete from,update set,DQL 》数据库查询语言 select .... from....crea…...

深度学习驱动的智能化革命:从技术突破到行业实践
第一章 深度学习的技术演进与核心架构 1.1 从浅层网络到深度学习的范式转变 深度学习的核心在于通过多层次非线性变换自动提取数据特征,其发展历程可划分为三个阶段:符号主义时代的规则驱动(1950s-1980s)、连接主义时代的浅层网络(1990s-2000s)以及深度学习时代的端到端…...

基于编译器特性浅析C++程序性能优化
最近在恶补计算机基础知识,学到CSAPP第五章的内容,在这里总结并且展开一下C程序性能优化相关的内容。 衡量程序性能的方式 一般而言,程序的性能可以用CPE(Cycles Per Element)来衡量,其指的是处理每个元素…...

服务器上通过ollama部署deepseek
2025年1月下旬,DeepSeek的R1模型发布后的一周内就火了,性能比肩OpenAI的o1模型,且训练成本仅为560万美元,成本远低于openAI,使得英伟达股票大跌。 下面我们来看下如何个人如何部署deepseek-r1模型。 我是用的仙宫云的…...

Android Coil总结
文章目录 Android Coil总结概述添加依赖用法基本用法占位图变形自定义ImageLoader取消加载协程支持缓存清除缓存监听 简单封装 Android Coil总结 概述 Coil 是一个用于 Android 的 Kotlin 图像加载库,旨在简化图像加载和显示的过程。它基于 Kotlin 协程࿰…...

《安富莱嵌入式周报》第351期:DIY半导体制造,工业设备抗干扰提升方法,NASA软件开发规范,小型LCD在线UI编辑器,开源USB PD电源,开源锂电池管理
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV16C95YEEZs 《安富莱嵌入式周报》第351期:DIY半导体…...

Redis在人员管理系统中的应用示例
用户会话管理 场景:用户登录后存储会话信息,支持多服务器共享 实现: 用户登录成功后,生成唯一Token(如JWT),作为Redis的Key Value存储用户ID、角色、权限等信息,设置过期时间&…...

The Wedding Juicer POJ - 2227
采取从外层边界,一步一步向内部拓展的策略,具体来说,一开始将最外面一层的点加入队列,并标记这些点的坐标已经被访问 取出队列中高度最低的点,将其弹出,查看其上下左右的点,如果新点没有被访问…...

# 深入理解RNN(一):循环神经网络的核心计算机制
深入理解RNN:循环神经网络的核心计算机制 RNN示意图 引言 在自然语言处理、时间序列预测、语音识别等涉及序列数据的领域,循环神经网络(RNN)一直扮演着核心角色。尽管近年来Transformer等架构逐渐成为主流,RNN的基本原理和思想依然对于理…...

分布式锁—6.Redisson的同步器组件
大纲 1.Redisson的分布式锁简单总结 2.Redisson的Semaphore简介 3.Redisson的Semaphore源码剖析 4.Redisson的CountDownLatch简介 5.Redisson的CountDownLatch源码剖析 1.Redisson的分布式锁简单总结 (1)可重入锁RedissonLock (2)公平锁RedissonFairLock (3)联锁MultiL…...

同步 Fork 仓库的命令
同步 Fork 仓库的命令 要将您 fork 的仓库的 main 分支与原始仓库(fork 源)同步,您可以使用以下命令: 首先,确保您已经添加了原始仓库作为远程仓库(如果尚未添加): git remote add…...

基于PySide6的CATIA零件自动化着色工具开发实践
引言 在汽车及航空制造领域,CATIA作为核心的CAD设计软件,其二次开发能力对提升设计效率具有重要意义。本文介绍一种基于Python的CATIA零件着色工具开发方案,通过PySide6实现GUI交互,结合COM接口操作实现零件着色自动化。该方案成…...

OpenManus 的提示词
OpenManus 的提示词 引言英文提示词的详细内容工具集的详细说明中文翻译的详细内容GitHub 仓库信息背景分析总结 引言 OpenManus 是一个全能 AI 助手,旨在通过多种工具高效地完成用户提出的各种任务,包括编程、信息检索、文件处理和网页浏览等。其系统提…...

Ubuntu-docker安装mysql
只记录执行步骤。 1 手动下载myql镜像(拉去华为云镜像) docker pull swr.cn-east-3.myhuaweicloud.com/library/mysql:latest配置并启动mysql 在opt下创建文件夹 命令:cd /opt/ 命令:mkdir mysql_docker 命令:cd m…...

Electron桌面应用开发:自定义菜单
完成初始应用的创建Electron桌面应用开发:创建应用,随后我们就可以自定义软件的菜单了。菜单可以帮助用户快速找到和执行命令,而不需要记住复杂的快捷键,通过将相关功能组织在一起,用户可以更容易地发现和使用应用程序…...

理解 JavaScript 中的浅拷贝与深拷贝
在 JavaScript 开发中,我们经常需要复制对象或数组。然而,复制的方式不同,可能会导致不同的结果。本文将详细介绍 浅拷贝 和 深拷贝 的概念、区别以及实现方式,帮助你更好地理解和使用它们。 1. 什么是浅拷贝? 定义 …...

【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建
读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 前言Maven Tomcat Web应用程序搭建1、使用Maven构建新项目2、单击项目,连续按两次shift键,输入"添加",选择"添加框架支持"3、选择Java Web程序4、点击&…...

从0到1入门Linux
一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…...

golang 从零单排 (一) 安装环境
1.下载安装 打开网址The Go Programming Language 直接点击下载go1.24.1.windows-amd64.msi 下载完成 直接双击下一步 下一步 安装完成 环境变量自动设置不必配置 2.验证 win r 输入cmd 打开命令行 输入go version...

如何下载和使用Git:初学者指南
🌟 如何下载和使用Git:初学者指南 在当今的软件开发中,Git已经成为不可或缺的版本控制系统。无论你是独立开发者还是团队成员,掌握Git的基本操作都能帮助你更高效地管理代码。今天,我将详细介绍如何下载和使用Git&…...
SQL_语法
1 数据库 1.1 新增 create database [if not exists] 数据库名; 1.2 删除 drop database [if exists] 数据库名; 1.3 查询 (1) 查看所有数据库 show databases; (2) 查看当前数据库下的所有表 show tables; 2 数据表 2.1 新增 (1) 创建表 create table [if not exists…...

基于Python实现的智能旅游推荐系统(Django)
基于Python实现的智能旅游推荐系统(Django) 开发语言:Python 数据库:MySQL所用到的知识:Django框架工具:pycharm、Navicat 系统功能实现 总体设计 系统实现 系统首页模块 统首页页面主要包括首页,旅游资讯,景点信息…...

安孚科技携手政府产业基金、高能时代发力固态电池,开辟南孚电池发展新赛道
安孚科技出手,发力固态电池。 3月7日晚间,安孚科技(603031.SH)发布公告称,公司控股子公司南孚电池拟与南平市绿色产业投资基金有限公司(下称“南平绿色产业基金”)、高能时代(广东横…...

p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳
向 豆包 提问:编写一个 p5.js 脚本,模拟 42 个彩色小球在一个3D大球体内部弹跳。每个小球都应留下一条逐渐消失的轨迹。大球体应缓慢旋转,并显示透明的轮廓线。请确保实现适当的碰撞检测,使小球保持在球体内部。 cd p5-demo copy…...

Kali WebDAV 客户端工具——Cadaver 与 Davtest
1. 工具简介 在 WebDAV 服务器管理和安全测试过程中,Cadaver 和 Davtest 是两款常用的命令行工具。 Cadaver 是一个 Unix/Linux 命令行 WebDAV 客户端,主要用于远程文件管理,支持文件上传、下载、移动、复制、删除等操作。Davtest 则是一款…...

MySQL复习笔记
MySQL复习笔记 1.MySQL 1.1什么是数据库 数据库(DB, DataBase) 概念:数据仓库,软件,安装在操作系统(window、linux、mac…)之上 作用:存储数据,管理数据 1.2 数据库分类 关系型数据库&#…...

六十天前端强化训练之第十四天之深入理解JavaScript异步编程
欢迎来到编程星辰海的博客讲解 目录 一、异步编程的本质与必要性 1.1 单线程的JavaScript运行时 1.2 阻塞与非阻塞的微观区别 1.3 异步操作的性能代价 二、事件循环机制深度解析 2.1 浏览器环境的事件循环架构 核心组件详解: 2.2 执行顺序实战分析 2.3 Nod…...

集合论--形式化语言里的汇编码
如果一阶逻辑是数学这门形式化语言里的机器码,那么集合论就是数学这门形式化语言里的汇编码。 基本思想:从集合出发构建所有其它。 构建自然数构建整数构建有理数构建实数构建有序对、笛卡尔积、关系、函数、序列等构建确定有限自动机(DFA) 全景图 常…...

2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB
一、山羊优化算法 山羊优化算法(Goat Optimization Algorithm, GOA)是2025年提出的一种新型生物启发式元启发式算法,灵感来源于山羊在恶劣和资源有限环境中的适应性行为。该算法旨在通过模拟山羊的觅食策略、移动模式和躲避寄生虫的能力&…...