Anchor는 AI Agentic 브라우저 자동화를 위한 플랫폼으로, API가 없거나 API 커버리지가 제한적인 웹 애플리케이션의 워크플로우 자동화 문제를 해결합니다. 브라우저 기반 자동화의 생성, 배포 및 관리를 단순화하여 복잡한 웹 상호작용을 간단한 API 엔드포인트로 변환합니다. 이 가이드는 Anchor Browser 도구를 시작하기 위한 빠른 개요를 제공합니다. Anchor Browser에 대한 자세한 정보는 Anchorbrowser.io 또는 Anchor Browser Docs를 참조하세요.

개요

Integration 세부사항

LangChain용 Anchor Browser package는 langchain-anchorbrowser이며, 현재 최신 버전은 PyPI - Version입니다.

Tool 기능

Tool NamePackageDescriptionParameters
AnchorContentToollangchain-anchorbrowser웹 페이지에서 텍스트 콘텐츠 추출url, format
AnchorScreenshotToollangchain-anchorbrowser웹 페이지 스크린샷 캡처url, width, height, image_quality, wait, scroll_all_content, capture_full_height, s3_target_address
AnchorWebTaskToolKitlangchain-anchorbrowserAI를 사용하여 지능형 웹 작업 수행 (Simple & Advanced 모드)아래 참조
langchain-anchorbrowser에서 허용되는 parameter는 Anchor Browser API reference에 나열된 것의 일부입니다: Get Webpage Content, Screenshot Webpage, Perform Web Task. Info: Anchor는 현재 browser_use agent와 함께 langchain용 SimpleAnchorWebTaskToolAdvancedAnchorWebTaskTool tool을 구현합니다.

AnchorWebTaskToolKit Tools

이 toolkit의 각 tool 간의 차이점은 pydantic configuration 구조입니다.
Tool NamePackageParameters
SimpleAnchorWebTaskToollangchain-anchorbrowserprompt, url
AdvancedAnchorWebTaskToollangchain-anchorbrowserprompt, url, output_schema

설정

이 integration은 langchain-anchorbrowser package에 포함되어 있습니다.
pip install --quiet -U langchain-anchorbrowser pydantic

Credentials

Anchor Browser Credentials를 사용하세요. 필요에 따라 Anchor Browser API Keys page에서 가져올 수 있습니다.
import getpass
import os

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

인스턴스화

Anchor Browser tool instance를 쉽게 인스턴스화할 수 있습니다.
from langchain_anchorbrowser import (
    AnchorContentTool,
    AnchorScreenshotTool,
    AdvancedAnchorWebTaskTool,
)

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

호출

인자와 함께 직접 호출

사용 가능한 전체 인자 목록은 위의 tool 기능 표에 나와 있습니다.
# 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로 호출

model이 생성한 ToolCall로 tool을 호출할 수도 있으며, 이 경우 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)

체이닝

먼저 tool-calling model에 바인딩한 다음 호출하여 chain에서 tool을 사용할 수 있습니다:

Agent 내에서 사용

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

model = init_chat_model(model="gpt-4o", 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 reference


Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I