Skip to main content
Bright Data 提供强大的 SERP API,支持通过地理定向和高级自定义选项查询搜索引擎(Google、Bing、DuckDuckGo、Yandex),特别适用于需要实时网络信息的 AI 智能体。

概述

集成详情

可序列化JS 支持版本
BrightDataSERPlangchain-brightdataPyPI - Version

工具特性

原生异步返回制品返回数据定价
标题、URL、摘要、排名及其他搜索结果数据需要 Bright Data 账户

设置

该集成位于 langchain-brightdata 包中。 pip install langchain-brightdata

凭证

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

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 工具支持以下参数进行自定义:
参数类型描述
querystr要执行的搜索查询
zonestrBright Data 区域名称(默认:“serp”)
search_enginestr使用的搜索引擎(默认:“google”)
countrystr本地化结果使用的两位国家代码(默认:“us”)
languagestr两位语言代码(默认:“en”)
results_countint返回的结果数量(默认:10)
search_typestr搜索类型:None(网页)、“isch”(图片)、“shop”、“nws”(新闻)、“jobs”
device_typestr设备类型:None(桌面)、“mobile”、“ios”、“android”
parse_resultsbool是否返回结构化 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
for step in agent.stream(
    {"messages": user_input},
    stream_mode="values",
):
    step["messages"][-1].pretty_print()

API 参考