当前位置: 首页 > news >正文

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. 核心工作流程
  1. 接收自然语言指令(如"获取亚马逊iPhone 15前3页价格")

  2. 通过DeepSeek-R1进行意图识别和任务分解

  3. 生成Playwright控制代码并验证安全性

  4. 执行浏览器自动化操作

  5. 结果清洗和结构化处理

  6. 生成最终自然语言报告

三、核心实现阶段

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)
执行流程:
  1. 生成导航到amazon.cn的操作指令

  2. 自动处理搜索框输入和搜索按钮点击

  3. 滚动翻页并提取数据

  4. 使用DeepSeek分析HTML结构并提取信息

  5. 生成包含价格趋势分析的Markdown报告

六、扩展方向建议

  1. 视觉集成:结合Playwright的截图功能+视觉模型进行验证

  2. 身份管理:实现多用户Cookie隔离存储

  3. RPA扩展:集成桌面自动化库(如PyAutoGUI)突破浏览器限制

  4. 知识记忆:使用向量数据库存储历史操作记录

相关文章:

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 协程&#xff0…...

《安富莱嵌入式周报》第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...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...