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 に渡す |
| BrightDataSERP | URL 発見 | 最新の検索結果を取得する |
| BrightDataUnlocker | 本文取得 | 保護や地域差のあるページを取る |
| BrightDataWebScraperAPI | 構造化取得 | Amazon など対応ドメインの定形データを取る |
- 公式 Docs 上の環境変数名は
BRIGHT_DATA_API_KEYです。 - この学習サイトで
BRIGHTDATA_API_KEYを統一している場合は、起動時にBRIGHT_DATA_API_KEY=os.environ["BRIGHTDATA_API_KEY"]のように橋渡しすると混乱を減らせます。
最小実装イメージ
pip install langchain-brightdataimport 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キーを使わず、用途別キーに分離してください。