以编程方式使用文档

Bright Data 提供了一个强大的 SERP API,允许您查询搜索引擎(Google、Bing、DuckDuckGo、Yandex),支持地理定位和高级自定义选项,特别适用于需要实时网络信息的 AI 代理。

概述

集成详情

|类|包|可序列化|JS 支持|版本| |:--|:--|:-:|:-:|:-:| |BrightDataSERP|langchain-brightdata|✅|❌|!PyPI - 版本|

工具特性

|原生异步|返回产物|返回数据|定价| |:-:|:-:|:--|:-:| |❌|❌|标题、URL、摘要、排名及其他搜索结果数据|需要 Bright Data 账户|

设置

该集成位于 langchain-brightdata package. pip install langchain-brightdata

凭证

您需要 Bright Data API 密钥才能使用此工具。您可以将其设置为环境变量:

os.environ["BRIGHT_DATA_API_KEY"] = "your-api-key"

或者在初始化工具时直接传递它:

from langchain_brightdata import BrightDataSERP

serp_tool = BrightDataSERP(bright_data_api_key="your-api-key")

实例化

这里展示如何实例化 BrightDataSERP 工具。该工具允许您使用 Bright Data 的 SERP API 执行搜索引擎查询,支持多种自定义选项,包括地理定位、语言偏好、设备类型模拟和特定搜索类型。

该工具在实例化期间接受各种参数:

  • - bright_data_api_key (必填,str):用于身份验证的 Bright Data API 密钥。
  • - zone (可选,str):SERP API 的 Bright Data 区域名称。默认为 "serp"。您可以在您的 Bright Data 控制面板.
  • - search_engine (可选,str):用于查询的搜索引擎。默认为 "google"。其他选项包括 "bing"、"yahoo"、"yandex"、"duckduckgo" 等。
  • - country (可选,str):用于本地化搜索结果的两位国家代码(例如 "us"、"gb"、"de"、"jp")。默认为 "us"。
  • - language (可选,str):搜索结果的两位语言代码(例如 "en"、"es"、"fr"、"de")。默认为 "en"。
  • - results_count (可选,int):要返回的搜索结果数量。默认为 10。最大值为 100。
  • - search_type (可选,str):要执行的搜索类型。选项包括:
  • - None(默认):常规网络搜索
  • - "isch":图片搜索
  • - "shop":购物搜索
  • - "nws":新闻搜索
  • - "jobs":职位搜索
  • - device_type (可选,str):要模拟的搜索设备类型。选项包括:
  • - None(默认):桌面设备
  • - "mobile":通用移动设备
  • - "ios":iOS 设备(iPhone)
  • - "android":Android 设备
  • - parse_results (可选,bool):是否返回解析后的 JSON 结果。默认为 False,返回原始 HTML 响应。

调用

基本用法

from langchain_brightdata import BrightDataSERP

# Initialize the tool
serp_tool = BrightDataSERP(
    bright_data_api_key="your-api-key"  # Optional if set in environment variables
)

# Run a basic search
results = serp_tool.invoke("latest AI research papers")

print(results)

带参数的高级用法

from langchain_brightdata import BrightDataSERP

# Initialize with default parameters
serp_tool = BrightDataSERP(
    bright_data_api_key="your-api-key",
    search_engine="google",  # Default
    country="us",  # Default
    language="en",  # Default
    results_count=10,  # Default
    parse_results=True,  # Get structured JSON results
)

# Use with specific parameters for this search
results = serp_tool.invoke(
    {
        "query": "best electric vehicles",
        "country": "de",  # Get results as if searching from Germany
        "language": "de",  # Get results in German
        "search_type": "shop",  # Get shopping results
        "device_type": "mobile",  # Simulate a mobile device
        "results_count": 15,
    }
)

print(results)

自定义选项

BrightDataSERP 工具接受多个自定义参数:

|参数|类型|描述| |:--|:--|:--| |query|str|要执行的搜索查询| |zone|str|Bright Data 区域名称(默认值:"serp")| |search_engine|str|要使用的搜索引擎(默认值:"google")| |country|str|用于本地化结果的双字母国家代码(默认值:"us")| |language|str|双字母语言代码(默认值:"en")| |results_count|int|返回的结果数量(默认值:10)| |search_type|str|搜索类型:无(网页)、"isch"(图片)、"shop"(购物)、"nws"(新闻)、"jobs"(工作)| |device_type|str|设备类型:无(桌面)、"mobile"(移动)、"ios"(iOS)、"android"(安卓)| |parse_results|bool|是否返回结构化 JSON(默认值:False)|

区域配置

Bright Data 使用“区域”来管理不同的 API 配置。您可以在初始化时设置区域,也可以在每个请求中覆盖它。

在初始化时设置区域

from langchain_brightdata import BrightDataSERP

# Initialize with a custom zone
serp_tool = BrightDataSERP(
    bright_data_api_key="your-api-key",
    zone="my_custom_serp_zone"
)

在每个请求中覆盖区域

# Override zone for a specific request
results = serp_tool.invoke({
    "query": "AI news",
    "zone": "different_zone"
})

区域名称必须与您在 Bright Data 仪表板.

在代理中使用

from langchain_brightdata import BrightDataSERP
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.agents import create_agent


# Initialize the LLM
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash", google_api_key="your-api-key")

# Initialize the Bright Data SERP tool
serp_tool = BrightDataSERP(
    bright_data_api_key="your-api-key",
    search_engine="google",
    country="us",
    language="en",
    results_count=10,
    parse_results=True,
)

# Create the agent
agent = create_agent(llm, [serp_tool])

# Provide a user query
user_input = "Search for 'best electric vehicles' shopping results in Germany in German using mobile."

# Stream the agent's output step-by-step
stream = agent.stream_events({"messages": user_input}, version="v3")
for snapshot in stream.values:
    snapshot["messages"][-1].pretty_print()

API 参考