プログラマー向けモードで表示中ビジネスユーザー向けへ
Bright Data 学習ポータル
UC-DEV-005DeveloperLv4

LangChain 連携エージェント

LangChain のツールとして Bright Data を組み込み、Web 検索エージェントを作る。

LangChainSERP APIWeb Unlocker

KPI 例

  • ツール呼出回数
  • 成功率
  • 回答品質

LangChain 連携では、Bright Data を「外部 Web 取得の道具箱」として agent に渡す設計が中心になります。公式 Docs では langchain-brightdata パッケージが案内されており、SERP、Unlocker、Web Scraper API をそれぞれ LangChain のツールとして組み込めます。

誰の課題か

  • LLM だけでは最新情報が足りず、検索やページ取得を agent に持たせたい AI 開発者
  • クエリ発見、本文取得、構造化データ取得を 1 つの LangChain アプリで扱いたいチーム
  • MCP ほど大きなツール面は不要で、Python アプリの中で必要な機能だけ持ち込みたい担当者

推奨製品セット

製品役割このページでの使い方
LangChainエージェント基盤Bright Data のツールを agent に渡す
BrightDataSERPURL 発見最新の検索結果を取得する
BrightDataUnlocker本文取得保護や地域差のあるページを取る
BrightDataWebScraperAPI構造化取得Amazon など対応ドメインの定形データを取る
  • 公式 Docs 上の環境変数名は BRIGHT_DATA_API_KEY です。
  • この学習サイトで BRIGHTDATA_API_KEY を統一している場合は、起動時に BRIGHT_DATA_API_KEY=os.environ["BRIGHTDATA_API_KEY"] のように橋渡しすると混乱を減らせます。

最小実装イメージ

pip install langchain-brightdata
import os
from langchain_brightdata import BrightDataSERP, BrightDataUnlocker
 
if os.getenv("BRIGHTDATA_API_KEY") and not os.getenv("BRIGHT_DATA_API_KEY"):
    os.environ["BRIGHT_DATA_API_KEY"] = os.environ["BRIGHTDATA_API_KEY"]
 
serp_tool = BrightDataSERP(
    bright_data_api_key=os.environ["BRIGHT_DATA_API_KEY"]
)
 
unlocker_tool = BrightDataUnlocker(
    bright_data_api_key=os.environ["BRIGHT_DATA_API_KEY"]
)
 
search_results = serp_tool.invoke("latest AI research papers")
page_content = unlocker_tool.invoke("https://example.com")
 
print(search_results)
print(page_content)
  • BrightDataSERP は検索結果取得、BrightDataUnlocker はページ取得の役割分担です。
  • 検索だけで十分なタスクと、URL をたどって本文取得まで必要なタスクを分けて設計すると、コストとレイテンシの見通しが良くなります。

対応ドメインなら構造化データを優先する

from langchain_brightdata import BrightDataWebScraperAPI
 
scraper_tool = BrightDataWebScraperAPI(
    bright_data_api_key=os.environ["BRIGHT_DATA_API_KEY"]
)
 
results = scraper_tool.invoke({
    "url": "https://www.amazon.com/dp/B08L5TNJHG",
    "dataset_type": "amazon_product",
})
 
print(results)
  • 対応ドメインであれば、HTML を自前解析するより dataset_type で定形データを取るほうが実装は安定します。
  • LangChain 側では、SERP で探すか、Unlocker で取るか、Web Scraper API を使うかを tool description で分岐させるのが実践的です。

運用ポイント

  • agent には何でも検索させるのではなく、どの tool をいつ使うかを system prompt と tool description で絞ってください。
  • SERP は URL 発見、Unlocker は本文取得、Web Scraper API は構造化取得、と役割を明確に分けたほうが障害解析しやすくなります。
  • 失敗時はまず SERP の結果件数、次に本文取得の成功率を見ると、どこで止まっているか切り分けやすいです。
  • 取得した本文をそのまま LLM に流すと長すぎることが多いため、Markdown 化、チャンク化、引用 URL 保持を最初から設計に入れておくべきです。
  • 権限面では通常の API 実行に ADMIN キーを使わず、用途別キーに分離してください。

関連リンク