基于Browser_Use与LangChain的AI浏览器自动化应用
技术背景与价值主张
Browser_Use与LangChain框架构建了一套自然语言驱动的浏览器自动化应用。
技术架构解析
一、环境配置与初始化
python
from browser_use import Agent, Browser, BrowserConfig
# 浏览器引擎配置(支持Chromium/WebKit/Firefox)
browser_config = BrowserConfig(
headless=False, # 可视化模式便于调试
disable_security=True, # 绕过CSP限制
user_agent="Mozilla/5.0 (辅助操作模式)" # 反爬伪装
)
二、核心功能模块
使用以下代码调用Api接口操作浏览器,需注册硅基流动,该Api提供方会赠送10元免费额度,学习够用。 点击注册硅基流动
1. 任务调度引擎
python
async def task_processor(context, llm):
while True:
# 支持自然语言指令输入
task = await asyncio.to_thread(input, "指令输入:")
agent = Agent(
task=task,
llm=llm,
browser_context=context,
vision_threshold=0.85 # 视觉识别置信度
)
# 自动重试机制(最大3次)
result = await agent.run(max_retries=3)
2. 多模态感知系统
DOM解析:通过XPath/CSS选择器定位元素 视觉识别:基于ResNet-50的控件特征提取 语义理解:LLM驱动的意图识别框架
3. 异常处理机制
python
try:
await agent.execute_action()
except ElementNotFound:
await agent.vision_recovery() # 启动视觉补偿
except TimeoutError:
await context.reload() # 页面刷新恢复
三、典型应用场景
1. 网购助手
python
agent = Agent(
task="在京东搜索血糖仪,按销量排序选前三名加入购物车",
llm=DeepSeek_V3(),
use_vision=True # 启用图像识别
)
2. 学习助手
python
agent = Agent(
task="微积分常用公式有哪些",
llm=DeepSeek_V3(),
use_vision=True # 启用图像识别
)
四、持久化命令操作
Agent打开的浏览器,往往在AI Api调用后自动关闭,所以需生成Browser
python
# 配置浏览器参数
browser_config = BrowserConfig(
headless=False, # 显示浏览器界面
disable_security=True, # 允许跨域操作
# extra_browser_args=["--disable-blink-features=AutomationControlled"] # 反反爬参数
)
browser = Browser(config=browser_config)
五、完整代码
上代码环节
python
# 导入必要的库
from langchain_openai import ChatOpenAI # OpenAI语言模型交互模块
from browser_use import Agent, Browser, BrowserConfig # 浏览器自动化框架
from dotenv import load_dotenv # 环境变量加载工具
import os # 操作系统接口
import asyncio # 异步IO框架
# 加载.env文件中的环境变量(需包含API密钥等信息)
load_dotenv()
# 定义异步交互代理函数
async def interactive_agent():
# 配置浏览器参数
browser_config = BrowserConfig(
headless=False, # 可视化模式运行浏览器(调试时建议开启)
disable_security=True, # 禁用安全策略允许跨域操作
# extra_browser_args=["--disable-blink-features=AutomationControlled"] # 反自动化检测参数
)
# 初始化浏览器实例
browser = Browser(config=browser_config)
# 创建大语言模型实例
llm = ChatOpenAI(
model=os.getenv('Silicon_Cloud_Model'), # 从环境变量获取模型名称
api_key=os.getenv('Silicon_Cloud_API_KEY'), # 从环境变量获取API密钥
base_url=os.getenv('Silicon_Cloud_Base_URL') # 从环境变量获取API基础地址
)
try:
# 创建浏览器上下文(支持多标签页隔离)
async with await browser.new_context() as context:
# 持续接收用户输入
while True:
# 异步获取用户输入的任务描述
task = await asyncio.to_thread(input, "请输入任务描述(输入quit退出):")
print(f'"{task}"') # 回显输入内容
if task.lower() == "quit": # 退出条件判断
break
# 创建AI代理实例
agent = Agent(
task=f'"{task}"', # 用户指定的自然语言任务
llm=llm, # 绑定语言模型
use_vision=False, # 禁用视觉识别模块
browser_context=context # 绑定浏览器上下文
)
try:
# 执行自动化任务
result = await agent.run()
# 输出最终执行结果
print(f"执行结果:\n{result.final_result()}")
except Exception as e:
# 异常处理模块)
print(f"任务失败: {str(e)}")
await context.clear_cache() # 清理浏览器缓存
finally:
# 确保浏览器实例正确关闭
await browser.close()
print("浏览器已安全关闭")
# 主程序入口
if __name__ == "__main__":
# 启动异步事件循环
asyncio.run(interactive_agent())
引用说明
1: Browser_Useg官方文档 2: Browser_Useg Github库 3: ChatOpenAI功能及配置
Api提供方 硅基流动注册: