以编程方式使用文档

Anchor 是一个用于 AI 代理浏览器自动化的平台,它解决了自动化缺乏 API 或 API 覆盖有限的 Web 应用程序工作流程的挑战。它简化了基于浏览器的自动化创建、部署和管理,将复杂的 Web 交互转换为简单的 API 端点。

本指南提供了 Anchor Browser 工具快速入门概述。有关 Anchor Browser 的更多信息,请访问 Anchorbrowser.ioAnchor Browser 文档

概述

集成详情

LangChain 的 Anchor Browser 包是 langchain-anchorbrowser,当前最新版本是 !PyPI - 版本.

工具特性

工具名称描述参数
AnchorContentToollangchain-anchorbrowser从网页提取文本内容url, format
AnchorScreenshotToollangchain-anchorbrowser对网页进行截图url, width, height, image_quality, wait, scroll_all_content, capture_full_height, s3_target_address
AnchorWebTaskToolKitlangchain-anchorbrowser使用 AI 执行智能 Web 任务(简单和高级模式)见下文

中允许的参数只是 Anchor Browser API 参考中列出的参数子集: langchain-anchorbrowser 中允许的参数只是相应 Anchor Browser API 参考中列出的参数子集: 获取网页内容, 网页截图执行 Web 任务.

Info: Anchor 目前为 langchain 实现了 SimpleAnchorWebTaskToolAdvancedAnchorWebTaskTool 工具。对于 browser_use 工具。对于

AnchorWebTaskToolKit 工具

此工具包中每个工具的区别在于 pydantic 配置结构。

工具名称参数
SimpleAnchorWebTaskToollangchain-anchorbrowserprompt, url
AdvancedAnchorWebTaskToollangchain-anchorbrowserprompt, url, output_schema

设置

集成位于 langchain-anchorbrowser package.

pip install --quiet -U langchain-anchorbrowser pydantic

凭据

使用您的 Anchor Browser 凭据。在 Anchor Browser 获取它们 API 密钥页面 根据需要。

if not os.environ.get("ANCHORBROWSER_API_KEY"):
    os.environ["ANCHORBROWSER_API_KEY"] = getpass.getpass("ANCHORBROWSER API key:\n")

实例化

轻松实例化 Anchor Browser 工具。

from langchain_anchorbrowser import (
    AnchorContentTool,
    AnchorScreenshotTool,
    AdvancedAnchorWebTaskTool,
)

anchor_content_tool = AnchorContentTool()
anchor_screenshot_tool = AnchorScreenshotTool()
anchor_advanced_web_task_tool = AdvancedAnchorWebTaskTool()

调用

使用参数直接调用

完整的可用参数列表出现在上方的工具特性表中。

# Get Markdown Content for https://www.anchorbrowser.io
anchor_content_tool.invoke(
    {"url": "https://www.anchorbrowser.io", "format": "markdown"}
)

# Get a Screenshot for https://docs.anchorbrowser.io
anchor_screenshot_tool.invoke(
    {"url": "https://docs.anchorbrowser.io", "width": 1280, "height": 720}
)
# Define a Pydantic model for the web task output schema

from pydantic import BaseModel
from typing import List

class NodeCpuUsage(BaseModel):
    node: str,
    cluster: str,
    cpu_avg_percentage: float

class OutputSchema(BaseModel):
    nodes_cpu_usage: List[NodeCpuUsage]

# Run a web task to collect data from a web page
anchor_advanced_web_task_tool.invoke(
    {
        "prompt": "Collect the node names and their CPU average %",
        "url": "https://play.grafana.org/a/grafana-k8s-app/navigation/nodes?from=now-1h&to=now&refresh=1m",
        "output_schema": OutputSchema.model_json_schema()
    }
)

使用 ToolCall 调用

我们也可以使用模型生成的 ToolCall 来调用工具,在这种情况下将返回 ToolMessage:

# This is usually generated by a model, but we'll create a tool call directly for demo purposes.
model_generated_tool_call = {
    "args": {"url": "https://www.anchorbrowser.io", "format": "markdown"},
    "id": "1",
    "name": anchor_content_tool.name,
    "type": "tool_call",
}
anchor_content_tool.invoke(model_generated_tool_call)

链接

我们可以通过首先将其绑定到 工具调用模型 然后调用它来在链中使用我们的工具:

在代理中使用

pip install -qU langchain langchain-openai
from langchain.chat_models import init_chat_model

model = init_chat_model(model="gpt-5.5", model_provider="openai")
if not os.environ.get("OPENAI_API_KEY"):
    os.environ["OPENAI_API_KEY"] = getpass.getpass("OPENAI API key:\n")
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableConfig, chain

prompt = ChatPromptTemplate(
    [
        ("system", "You are a helpful assistant."),
        ("human", "{user_input}"),
        ("placeholder", "{messages}"),
    ]
)

# specifying tool_choice will force the model to call this tool.
model_with_tools = model.bind_tools(
    [anchor_content_tool], tool_choice=anchor_content_tool.name
)

model_chain = prompt | model_with_tools


@chain
def tool_chain(user_input: str, config: RunnableConfig):
    input_ = {"user_input": user_input}
    ai_msg = model_chain.invoke(input_, config=config)
    tool_msgs = anchor_content_tool.batch(ai_msg.tool_calls, config=config)
    return model_chain.invoke({**input_, "messages": [ai_msg, *tool_msgs]}, config=config)


tool_chain.invoke(input())

API 参考