人工智能代理工具 Browser Use 使用文档之代理配置

发布时间:2025-02-13
4546 字, 需阅读 10 分钟
已被阅读188

人工智能代理工具 Browser Use 使用教程往期文章

概览

Agent 类是 Browser Use 的核心组件,负责浏览器自动化。以下是初始化代理时可以使用的主要配置选项。

基本设置

from browser_use import Agent from langchain_openai import ChatOpenAI agent = Agent( task="搜索关于AI的最新新闻", llm=ChatOpenAI(model="gpt-4o"), )

必需参数

  • task: 代理执行的指令
  • llm: 一个 LangChain 聊天模型实例。请参阅 LangChain 模型 以了解支持的模型。

代理行为

控制代理的操作方式:

agent = Agent( task="你的任务", llm=llm, controller=custom_controller, # 自定义工具调用 use_vision=True, # 启用视觉能力 save_conversation_path="logs/conversation" # 保存聊天日志 )

行为参数

  • controller: 代理可以调用的函数注册表。默认为基本控制器。有关详细信息,请参阅 自定义函数

  • use_vision: 启用/禁用视觉能力。默认为 True

    • 启用时,模型将处理网页中的视觉信息
    • 禁用可以降低成本或使用不支持视觉的模型
    • 对于 GPT-4o,图像处理大约需要 800-1000 个标记(约 $0.002 美元)每张图像(但这取决于定义的屏幕大小)
  • save_conversation_path: 保存完整对话历史的路径。对于调试很有用。

  • system_prompt_class: 自定义系统提示类。请参阅 系统提示 以了解定制选项。

视觉能力推荐用于更好的网页交互理解,但可以禁用以减少成本或在使用不支持视觉的模型时禁用。

(重用) 浏览器配置

您可以配置代理如何与浏览器交互。要查看更多 Browser 选项,请参考 浏览器设置 文档。

重用现有浏览器

browser: 一个 Browser Use 浏览器实例。提供该实例时,代理将重用此浏览器实例,并为每个 run() 自动创建新上下文。

from browser_use import Agent, Browser from browser_use.browser.context import BrowserContext # 重用现有浏览器 browser = Browser() agent = Agent( task=task1, llm=llm, browser=browser # 浏览器实例将被重用 ) await agent.run() # 手动关闭浏览器 await browser.close()

记住:在这种情况下,Browser 不会自动关闭。

重用现有浏览器上下文

browser_context: 一个 Playwright 浏览器上下文。适用于保持持久会话。有关更多细节,请参阅 持久浏览器

from browser_use import Agent, Browser from playwright.async_api import BrowserContext # 使用特定的浏览器上下文(首选方法) async with await browser.new_context() as context: agent = Agent( task=task2, llm=llm, browser_context=context # 使用持久上下文 ) # 运行代理 await agent.run() # 将上下文传递给下一个代理 next_agent = Agent( task=task2, llm=llm, browser_context=context ) ... await browser.close()

有关浏览器上下文如何工作的更多信息,请参阅 Playwright 文档

您可以重用相同的上下文来为多个代理提供服务。如果不做任何操作,浏览器将在 run() 完成时自动创建和关闭。

运行代理

代理通过异步 run() 方法执行:

  • max_steps(默认值:100) 代理在执行过程中可以采取的最大步骤数。此设置可防止无限循环并帮助控制执行时间。

代理历史

该方法返回一个 AgentHistoryList 对象,包含完整的执行历史。这对于调试、分析以及创建可重现的脚本非常有价值。

# 访问历史的示例
history = await agent.run()

# 访问(一些)有用的信息
history.urls()              # 访问的 URL 列表
history.screenshots()       # 截图路径列表
history.action_names()      # 执行的动作名称
history.extracted_content() # 执行过程中提取的内容
history.errors()           # 所发生的任何错误
history.model_actions()     # 所有动作及其参数

AgentHistoryList 提供了许多帮助方法来分析执行情况:

  • final_result():获取最终提取的内容
  • is_done():检查代理是否成功完成
  • has_errors():检查是否发生了任何错误
  • model_thoughts():获取代理的推理过程
  • action_results():获取所有动作的结果

有关所有帮助方法和详细历史分析功能的完整列表,请参阅 AgentHistoryList 源代码

在没有 LLM 的情况下运行初始动作

使用 这个示例,您可以在没有 LLM 的情况下运行初始动作。将动作指定为字典,其中键是动作名称,值是动作参数。您可以在 Controller 源代码中找到我们所有的动作。

initial_actions = [ {'open_tab': {'url': 'https://www.google.com'}}, {'open_tab': {'url': 'https://en.wikipedia.org/wiki/Randomness'}}, {'scroll_down': {'amount': 1000}}, ] agent = Agent( task='页面上展示了哪些理论?', initial_actions=initial_actions, llm=llm, )

使用规划模型运行

您可以配置代理使用一个单独的规划模型进行高层任务规划:

from langchain_openai import ChatOpenAI

# 初始化模型
llm = ChatOpenAI(model='gpt-4o')
planner_llm = ChatOpenAI(model='o3-mini')

agent = Agent(
    task="你的任务",
    llm=llm,
    planner_llm=planner_llm,           # 用于规划的独立模型
    use_vision_for_planner=False,      # 禁用规划模型的视觉功能
    planner_interval=4                 # 每4步进行一次规划
)

规划模型参数

  • planner_llm: 用于高层任务规划的 LangChain 聊天模型实例。可以选择一个比主 LLM 更小/更便宜的模型。
  • use_vision_for_planner: 启用/禁用规划模型的视觉能力。默认为 True
  • planner_interval: 规划阶段之间的步数。默认为 1

使用单独的规划模型可以帮助:

  • 使用较小的模型进行高层规划,从而降低成本
  • 改善任务分解和战略思维
  • 更好地处理复杂的多步骤任务
作者:admin
版权声明:
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
分享到: