你是否还在繁琐地手动复制数据、填写重复的表单,或者在浩瀚的网页中进行漫无目的的搜索?想象一下,如果你能简单地告诉AI你的需求,它就能自动浏览网页、提取信息,甚至执行各种任务,这将是多么高效便捷!这就是AI浏览器代理(Browser Agent)的强大之处,它由诸如Google Gemini等大语言模型(LLM)驱动,让你能够通过自然语言指令自动化复杂的网络交互。
本文将深入探讨AI浏览器代理(Browser Agent)的核心概念,并通过使用browser-use
Python库的实际演示,手把手地指导你搭建自己的智能代理。
什么是AI浏览器代理(Browser Agent)?
简单来说,AI浏览器代理(Browser Agent)是一个将强大大语言模型(LLM)的智能与浏览器的交互能力相结合的系统。你可以把它想象成赋予大语言模型(LLM)“眼睛”和“手”,让它能够导航和理解互联网。
一个AI浏览器代理(Browser Agent)可以:
- 导航到指定的URL。
- 理解网页的语义内容,而不仅仅是原始HTML。
- 与页面元素交互,例如点击按钮或填写表单(虽然我们的示例将侧重于阅读和总结)。
- 根据你的自然语言指令提取特定的信息。
在这个架构中,大语言模型(LLM)充当代理的“大脑”,解释你的任务并做出决策,指导浏览器如何交互以实现期望的结果。
为什么需要AI浏览器代理(Browser Agent)?
虽然传统的网页抓取工具仍然有其用途,但AI浏览器代理(Browser Agent)提供了显著的优势,尤其是在处理动态和复杂的现代网站时:
-
处理动态和复杂的网站: 传统的抓取工具在网站结构发生变化,或者严重依赖JavaScript进行内容渲染时,通常会失效。而AI浏览器代理(Browser Agent),凭借其大语言模型(LLM)的能力,能够理解上下文和内容,而不仅仅是HTML结构,从而适应这些变化。例如,一个电商网站的商品价格可能会通过JavaScript动态加载,传统的抓取工具可能无法直接获取,但AI浏览器代理(Browser Agent)可以执行JavaScript,等待内容加载完成后再进行提取。
-
自然语言指令: 你无需编写复杂的代码来定位特定的HTML元素(这些元素可能会频繁更改),只需用简单的自然语言描述你想要的结果。例如,你可以说“查找排名前五的MLOps学习资源”,或者“获取Hacker News的最新帖子”。这大大降低了使用的门槛,让非程序员也能轻松地利用AI浏览器代理(Browser Agent)进行数据提取和自动化。
-
自动化繁琐的任务: 从价格比较和信息监控,到数据聚合以生成报告,或从各种来源总结文章,AI浏览器代理(Browser Agent)可以自动化各种重复且耗时的基于Web的工作流程。想象一下,你需要每天监控多个竞争对手网站的价格变化,并生成报告,手动完成这项工作非常耗时,但AI浏览器代理(Browser Agent)可以定时访问这些网站,提取价格数据,并自动生成报告。
-
结构化数据提取: 正如我们将在演示中展示的那样,你可以定义特定的输出格式,代理将相应地提取和构建信息。这对于将数据无缝地馈送到数据库、分析工具或其他应用程序非常强大。例如,你可以要求AI浏览器代理(Browser Agent)从新闻网站提取文章标题、作者、发布日期和正文,并以JSON格式输出,方便后续的数据处理和分析。
演示:使用browser-use
和Gemini自动化Web任务
让我们开始实践,看看如何使用browser-use
Python库和Google的Gemini模型来执行自动化的Web任务。
设置
首先,确保你已设置Python环境。我们将从创建一个虚拟环境并安装必要的库开始:
python -m venv browser_agent_env
source browser_agent_env/bin/activate # 在Windows上使用 `browser_agent_env\Scripts\activate`
pip install browser-use langchain_google_genai python-dotenv
你还需要一个Google AI API密钥。你可以从Google AI Studio网站获取。为了安全处理,将此密钥存储在项目目录中的.env
文件中:
GOOGLE_API_KEY="YOUR_API_KEY_HERE"
演示1:简单任务——总结资源
我们的第一个任务很简单:我们希望代理找到排名前5的MLOps在线学习资源并进行总结,并引用来源。
创建一个Python文件(例如,simpletask.py
)并添加以下代码:
from langchain_google_genai import ChatGoogleGenerativeAI
from browser_use import Agent
import asyncio
from dotenv import load_dotenv
# 从.env文件加载API密钥
load_dotenv()
async def main():
print("Initializing Agent for MLOps resources...")
# 用自然语言定义任务
task = "Get me a list of top 5 MLOps learning resources and summarize the content with citation to the source"
# 使用任务和LLM(Gemini 1.5 Flash效率很高)初始化代理
agent = Agent(
task=task,
llm=ChatGoogleGenerativeAI(model="gemini-1.5-flash"),
)
print("Running Agent...")
# 代理将执行Web搜索、导航页面和提取信息
await agent.run()
print("Agent finished.")
if __name__ == '__main__':
asyncio.run(main())
代码解释:
- 我们导入
ChatGoogleGenerativeAI
以使用Google的Gemini模型,从browser-use
导入Agent
,asyncio
用于异步操作,以及load_dotenv
用于管理环境变量。 load_dotenv()
加载我们的GOOGLE_API_KEY
。- 我们用自然语言清晰地定义我们的任务。
- 创建一个
Agent
实例,将我们的任务和ChatGoogleGenerativeAI
(使用gemini-1.5-flash
)的一个实例作为参数传入。 await agent.run()
启动代理的Web浏览和信息提取过程。代理会将其操作和思维过程打印到控制台。
要运行此程序,请执行:
python simpletask.py
你将在控制台中观察到代理的步骤,包括其搜索、页面导航,以及最终的MLOps资源摘要列表和引文。在这个简单的示例中,AI浏览器代理(Browser Agent)成功地完成了信息的搜索、提取和总结,展示了其在知识获取方面的潜力。
演示2:结构化输出——Hacker News帖子
现在,让我们通过要求特定的结构化输出格式来增强代理的功能。我们将从Hacker News的“Show HN”部分提取前5个帖子。
创建另一个Python文件(例如,structuredOutput.py
):
from pydantic import BaseModel, Field
from langchain_google_genai import ChatGoogleGenerativeAI
from browser_use import Agent, Controller
import asyncio
from dotenv import load_dotenv
load_dotenv()
# 使用Pydantic模型定义所需的输出格式
class Post(BaseModel):
post_title: str = Field(description="The title of the Show HN post")
post_url: str = Field(description="The main URL of the post")
num_comments: int = Field(description="The number of comments on the post")
hours_since_post: int = Field(description="How many hours ago the post was made")
class Posts(BaseModel):
posts: list[Post]
# 创建一个Controller来强制输出模型
controller = Controller(output_model=Posts)
async def main():
task = 'Go to Hacker News Show HN section and give me the first 5 posts listed.'
model = ChatGoogleGenerativeAI(model="gemini-1.5-flash")
# 初始化Agent,传递controller以获得结构化输出
agent = Agent(task=task, llm=model, controller=controller)
print("Running Agent for Hacker News posts...")
history = await agent.run() # 获取包含最终结果的历史记录对象
print("Agent finished. Processing results...")
result = history.final_result() # 检索最终的结构化JSON结果
if result:
try:
# 使用我们的Pydantic模型验证和解析JSON结果
parsed: Posts = Posts.model_validate_json(result)
print("\n--- Extracted Hacker News Posts ---")
for post in parsed.posts:
print('\n--------------------------------')
print(f'Title: {post.post_title}')
print(f'URL: {post.post_url}')
print(f'Comments: {post.num_comments}')
print(f'Hours Ago: {post.hours_since_post}')
print('--------------------------------')
except Exception as e:
print(f"Error parsing result: {e}")
print(f"Raw result: {result}") # 打印原始结果进行调试
else:
print('No result found.')
if __name__ == '__main__':
asyncio.run(main())
代码解释:
- 我们从
pydantic
(一个数据验证库)导入BaseModel
,Field
,并从browser-use
导入Controller
。 - 我们定义了两个Pydantic模型:
Post
描述单个Hacker News帖子的结构(标题,URL,评论,时间),以及Posts
作为Post
对象的列表。Field
的描述至关重要,因为它们指导大语言模型(LLM)提取每个字段的数据。 - 创建一个
Controller
实例,其中output_model
设置为我们的Posts
Pydantic模型。此Controller
负责强制执行输出格式。 - 在初始化
Agent
时,我们现在包括controller
参数。这指示代理根据我们的Posts
模式格式化其最终输出。 - 在
await agent.run()
之后,我们获取历史记录对象,并且history.final_result()
以JSON字符串的形式提供提取的数据。 - 我们使用
Posts.model_validate_json(result)
将此JSON字符串解析为我们的Pydantic对象,从而提供数据的强大且易于使用的结构化表示。
要运行此程序,请执行:
python structuredOutput.py
你将看到代理浏览Hacker News,然后在控制台中,提取的帖子将按照我们定义的Post
和Posts
Pydantic模型整齐地格式化显示。这证明了结构化数据提取的强大功能。这个例子突出了AI浏览器代理(Browser Agent)在信息组织和数据管理方面的优势,尤其是在需要将数据集成到现有系统中的场景下。 假设你需要定期从多个在线论坛收集信息,并将这些信息存储到数据库中,以便进行分析。 使用结构化数据提取功能,你可以轻松地将来自不同论坛的信息转换成统一的格式,并将其导入到数据库中,从而大大简化了数据收集和处理流程。
大语言模型(LLM)的选择:Gemini 的优势
在上述示例中,我们使用了 Google 的 Gemini 1.5 Flash 模型。 选择合适的大语言模型(LLM)对 AI浏览器代理(Browser Agent)的性能至关重要。 Gemini 1.5 Flash 模型因其以下优点而成为一个不错的选择:
- 强大的语言理解能力: Gemini 系列模型拥有强大的自然语言理解能力,能够准确地理解用户指令并有效地导航和理解网页内容。
- 快速的响应速度: Gemini 1.5 Flash 模型在保证性能的前提下,优化了响应速度,能够快速地完成任务,提高效率。
- 较低的成本: 相比于更大规模的 大语言模型(LLM), Gemini 1.5 Flash 模型的成本更低,适合在资源有限的情况下使用。
- 支持长文本处理: Gemini 1.5 Flash 模型支持长文本处理,可以处理包含大量信息的网页,提取关键信息。
当然,在实际应用中, 大语言模型(LLM)的选择需要根据具体的任务需求和预算进行综合考虑。 其他可供选择的模型包括 OpenAI 的 GPT 系列模型、 Anthropic 的 Claude 模型等。
结论
AI浏览器代理(Browser Agent),由browser-use
库和诸如Google的Gemini这样的大语言模型(LLM)提供支持,代表了Web自动化领域的重大飞跃。 它们使开发人员和用户能够使用自然语言与Internet进行交互,从而抽象出传统Web抓取和动态Web环境的复杂性。
从执行智能研究和数据收集到监视信息和自动化重复性任务,AI浏览器代理(Browser Agent)的应用范围非常广泛,并且在不断扩展。 通过将大语言模型(LLM)的会话智能与编程浏览器控制相结合,我们为与数字世界互动开辟了新的可能性领域。
你将使用AI浏览器代理(Browser Agent)自动化哪些Web任务?在下面的评论中分享你的想法!
如果你觉得这有帮助,请与你的网络分享,并考虑订阅以获取有关AI,自动化和前沿开发的更多内容。
有关更多信息,请浏览browser-use
文档及其GitHub存储库:
我们的仓库:https://github.com/TensorNine/LLM-Browser-Automation
浏览器官方仓库:https://github.com/browser-use
有关可视化演练,请观看此视频教程:Browser Agents: Automate Your Web Tasks with AI!