在当今自动化需求日益增长的背景下,智能Agent能够代替人类执行重复性网页操作任务。本文将介绍如何使用browser-usr
库构建一个航班搜索Agent,自动完成航班查询并返回最优价格。
核心组件与技术栈
- Browser-usr:基于Playwright的网页自动化库
- LangChain:大语言模型应用开发框架
- Qwen-32B大模型:本地部署的视觉语言模型
- 异步执行框架:Python asyncio
实现步骤详解
1. 环境配置与初始化
import asyncio
import os
from browser_use import Agent
from langchain_openai import ChatOpenAI
# 关键环境变量设置(即使使用本地模型)
os.environ["OPENAI_API_KEY"] = "empty" # 绕过官方API检查
2. Agent核心构建
async def main():
# 创建浏览器智能体
agent = Agent(
task="查找2025年1月12日巴厘岛飞阿曼的单程航班,返回最便宜选项",
llm=ChatOpenAI(
base_url="http://localhost:8000/v1", # 本地模型API端点
api_key="empty", # 与环境变量保持一致
model="vllm-qwen3-32b" # 32B参数视觉语言模型
),
use_vision=False # 禁用视觉功能(纯文本操作)
)
# 执行任务
result = await agent.run()
print("最优航班结果:", result)
# 启动异步任务
asyncio.run(main())
完整代码:
from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio
import os
async def main():
#设置环境变量(关键步骤)
os.environ["OPENAI_API_KEY"] = "empty" # 即使使用本地模型也需要设置
# 创建Agent
agent = Agent(
task="帮我查找2025年1月12日从巴厘岛飞往阿曼的单程航班,并返回最便宜的选项。",
llm=ChatOpenAI(
base_url="http://localhost:8000/v1",
api_key="empty",
model="vllm-qwen3-32b"
),
use_vision=False
)
result = await agent.run()
print(result)
asyncio.run(main())
3. Agent工作流程解析
- 任务解析:Qwen模型理解自然语言任务需求
- 策略生成:自动规划网页操作路径(打开浏览器→访问航司网站→输入查询条件等)
- 页面交互:
- 自动填写出发地/目的地
- 选择日期(2025-01-12)
- 设置单程航班选项
- 数据处理:
- 爬取航班结果
- 价格比较算法
- 提取最低价选项
- 结果返回:结构化输出最优航班信息
关键技术亮点
本地模型集成
ChatOpenAI(base_url="http://47.117.169.37:8000/v1", model="vllm-qwen3-32b")
- 通过修改base_url接入自托管大模型
- 避免OpenAI官方API调用费用
- 支持私有化部署保障数据安全
视觉能力开关
use_vision=False # 可切换为True启用OCR和图像识别
- 禁用时可提升30%执行速度
- 启用时可处理验证码等复杂场景
异步执行引擎
asyncio.run(main()) # 高效管理浏览器并行操作
- 非阻塞式网页操作
- 支持多页面并发控制
实际应用场景扩展
- 电商比价系统:自动监控多个平台价格波动
- 竞品分析:定期抓取竞品网站更新
- 数据填报机器人:自动登录系统填写表单
- 动态监控:实时追踪股票/加密货币价格
性能优化建议
- 缓存复用:重用浏览器实例减少启动开销
- 智能等待:添加DOM状态检测替代固定sleep
- 错误重试:实现操作失败自动恢复机制
- 分布式部署:多个Agent实例并行执行不同任务
结语
通过browser-usr构建的智能Agent将自然语言指令转化为精准的网页操作,解决了传统爬虫难以处理动态网页的痛点。结合本地部署的大语言模型,既保障了数据隐私又降低了使用成本。这种技术组合为自动化办公、数据采集等领域提供了新的解决方案。
提示:完整项目需安装依赖:
pip install browser-usr langchain-openai playwright playwright install # 初始化浏览器环境