---
title: "ブライトデータによるローカル・ディープ・リサーチ・エージェントの構築"
slug: build-a-local-research-agent
date: 2025-10-22T07:29:23+00:00
modified: 2025-10-28T10:18:03+00:00
permalink: https://brightdata.jp/blog/ai/build-a-local-research-agent
type: blog
---

[ ブログ ](https://brightdata.jp/blog "ブログ") / [AI](https://brightdata.jp/blog/ai)







 [AI](https://brightdata.jp/blog/ai)

# ブライトデータによるローカル・ディープ・リサーチ・エージェントの構築

Bright Data API、Streamlit、ローカルAIを統合してウェブリサーチを自動化する方法を学びましょう。このステップバイステップガイドに従って、プライベートリサーチアシスタントを構築しましょう。

 4 分読





 [ ![Arindam Majumder](https://media.brightdata.jp/2025/07/Arindam-Majumder-50x50.jpg) ](https://brightdata.com/blog/authors/arindam-majumder)

 [Arindam Majumder

Technical Writer

 ](https://brightdata.com/blog/authors/arindam-majumder)





 ![Local Deep Research App with Bright Data blog iamge](https://media.brightdata.jp/2025/10/Local-Deep-Research-App-with-Bright-Data-blog-iamge.png)





このガイドでは、以下のことがわかります：

- リサーチエージェントとは何か、なぜ従来の方法では失敗するのか
- 信頼性の高いデータ収集のためのBright Dataの設定方法
- Streamlit UIを使用したローカルAIリサーチエージェントの構築方法
- 構造化された洞察のために[Bright Data APIと](/products)ローカルモデルを統合する方法

インテリジェントなリサーチアシスタントの構築に飛び込んでみましょう。また、データベースのようにウェブを検索できるBright DataのAI搭載検索エンジン、[Deep Lookupを](https://deeplookup.com/)チェックすることをお勧めします。

## 業界の問題

- 研究者は、多くのソースからあまりにも多くの情報に直面しており、手作業によるレビューが現実的ではありません。
- 従来のリサーチでは、検索、抽出、合成に時間がかかり、手作業に頼らざるを得なかった。
- 結果は不完全で、バラバラで、整理されていないことが多い。
- 単純なスクレイピングツールは、信頼性や文脈のない生データを提供する。

## 解決策リサーチエージェント

ディープリサーチエージェントは、収集から報告までのリサーチを自動化するAIシステムです。コンテキストを処理し、タスクを管理し、構造化された洞察を提供します。

主なコンポーネント

- プランナーエージェント：リサーチをタスクに分割
- リサーチサブエージェント: 検索を実行し、データを抽出します。
- ライターエージェント: 構造化されたレポートを作成します。
- 条件エージェント: 品質をチェックし、必要に応じてより深いリサーチをトリガーします。

このガイドでは、Bright Data の API、[Streamlit UI](https://streamlit.io/)、プライバシーとコントロールのためのローカル LLM を使用して、ローカルリサーチシステムを構築する方法を紹介します。

## 前提条件

- APIキーを持つBright Dataアカウント
- Python 3.10 以上
- 依存関係
- `リクエスト`
- `faiss`または`chromadb`
- `python-dotenv`
- `streamlit`
- `ollama`(ローカルモデル用)

## Bright Dataの設定

Bright Dataアカウントの作成

- [Bright Dataに](/)サインアップする
- [ API認証情報セクションに](https://docs.brightdata.com/api-reference/authentication)移動する
- APIトークンを生成する

環境変数を使用してAPI認証情報を安全に保存します。.envファイルを作成して認証情報を保存し、機密情報をコードから分離します。

```none
BRIGHT_DATA_API_KEY="your_bright_data_api_token_here"
```

## 環境のセットアップ

```none
# venvを作成する
python -m venv venv
ソース venv/bin/activate

# 依存関係のインストール
pip install requests openai chromadb python-dotenv streamlit
```

## 実装

### ステップ1：リサーチ

これが我々のリサーチタスクとなる。

```none
query = "ヘルスケアにおけるAIのユースケース"
```

### ステップ2：データの取得

このステップでは、Bright DataのData Collection APIを使ってウェブからデータをプログラムで取得する方法を示します。このコードでは、リサーチクエリを送信し、APIクレデンシャルを安全に扱いながら関連するデータを取得します。

```none
import requests, os
from dotenv import load_dotenv

load_dotenv()

url = "https://api.brightdata.com/dca/trigger"
payload = {"query": query, "limit"：20}
headers = {"Authorization": f "ベアラ{os.getenv('BRIGHT_DATA_API_KEY')}"}"}。

res = requests.post(url, json=payload, headers=headers)
print(res.json())
```

### ステップ 3: 処理と埋め込み

このステップでは、取得したリサーチデータを処理し、意味検索と類似性マッチングを可能にするベクトルデータベースであるChromaDBに格納する。これにより、研究結果から検索可能な知識ベースが作成され、ヘルスケアやその他の研究トピックにおけるAIのユースケースを検索することができます。

```none
インポート chromadb
from chromadb.config import Settings

# ChromaDBの初期化
client = chromadb.PersistentClient(path="./research_db")
コレクション = client.get_or_create_collection("research_data")

# リサーチ結果の保存
def store_research_data(results)：
    ドキュメント = [].
    メタデータ = [].
    ids = [].

    for i, item in enumerate(results)：
        documents.append(item.get('content', ''))
        metadatas.append({
            'source': item.get('source', '')、
            'query': query、
            'timestamp': item.get('タイムスタンプ', '')
        })
        ids.append(f "doc_{i}")

    collection.add(
        documents=documents、
        metadatas=metadatas、
        ids=ids
    )
```

### ステップ4：ローカルモデルの要約

このステップでは、Ollamaを通じてローカルで実行される大規模言語モデル（LLM）を活用し、研究内容の簡潔な要約を生成する方法を示します。このアプローチはデータ処理を非公開にし、オフライン要約機能を可能にします。

```none
インポートサブプロセス
インポート json

def summarize_with_ollama(content, model="llama2")：
    """ローカルのOllamaモデルを使って研究内容を要約する"""
    try：
        result = subprocess.run(
            ['ollama', 'run', model, f "この研究内容を要約する：{capture_output=True、
            capture_output=True、
            text=True、
            タイムアウト=120
        )
        return result.stdout.strip()
    except Exception as e：
        return f "要約に失敗しました：{str(e)}""要約に失敗しました。

# 使用例
research_data = res.json().get('results', [])
for item in research_data：
    summary = summarize_with_ollama(item.get('content', ''))
    print(f "Summary: {summary}")
```

```none
ollama run llama2 "ヘルスケアにおけるAIのユースケースを要約する"
```

## ストリームリットUI

最後に、Bright Dataからのデータ収集とOllamaによるローカルのAI要約を組み合わせた完全なウェブUIを作成する。このインターフェースにより、ユーザーは直感的なダッシュボードを通じて、リサーチパラメーターの設定、データ収集の実行、AI要約の生成を行うことができる。

`app.pyの`作成

```none
stとしてstreamlitをインポート
import requests, os
from dotenv import load_dotenv
インポートサブプロセス
インポート json

load_dotenv()

st.set_page_config(page_title="Deep Research Agent", page_icon="ᔎ")

st.title("ᔎ明るいデータを持つローカル・ディープ・リサーチ・エージェント")

# サイドバーの設定
st.sidebarを使用します：
    st.header("設定")
    api_key = st.text_input(
        "Bright Data API Key"、
        type="パスワード"、
        value=os.getenv('BRIGHT_DATA_API_KEY', '')
    )
    model_choice = st.selectbox(
        "Ollamaモデル"、
        ["llama2", "mistral", "codellama"]。
    )
    research_depth = st.slider("研究の深さ", 5, 50, 20)

# メインリサーチインターフェース
query = st.text_input("研究トピックを入力してください:", "AI use cases in healthcare")

col1, col2 = st.columns(2)

col1：
    if st.button("🚀リサーチの実行", type="primary")：
        if not api_key：
            st.error("ブライトデータのAPIキーを入力してください")
        elif not query：
            st.error("リサーチトピックを入力してください")
        else：
            with st.spinner("Collecting research data...")：
                # Bright Dataからデータを取得する
                url = "https://api.brightdata.com/dca/trigger"
                payload = {"query": query, "limit": research_depth}.
                headers = {"Authorization": f "ベアラ{api_key}"}。

                res = requests.post(url, json=payload, headers=headers)

                if res.status_code == 200：
                    st.success(f "Successfully collected {len(res.json().get('results', []))} sources!")
                    st.session_state.research_data = res.json()

                    # 結果を表示する
                    for i, item in enumerate(res.json().get('results', []))：
                        with st.expander(f "Source {i+1}：st.expander(f "ソース{i+1}: {item.get('タイトル', 'タイトルなし')}")：
                            st.write(item.get('content','コンテンツなし'))
                else：
                    st.error(f "データの取得に失敗しました: {res.status_code}")

col2：
    if st.button("🤖 Ollamaで要約")：
        if 'research_data' in st.session_state：
            with st.spinner("Generating AI summaries...")：
                for i, item in enumerate(st.session_state.research_data.get('results', []))：
                    content = item.get('コンテンツ', '')[:1500]: # コンテンツの長さを制限する。  # コンテンツの長さを制限する
                    を試す：
                        result = subprocess.run(
                            ['ollama', 'run', model_choice, f "このコンテンツを要約します：{content}"]、
                            capture_output=True、
                            text=True、
                            タイムアウト=60
                        )
                        summary = result.stdout.strip()

                        st.expander(f "AIサマリー{i+1}")を使用する：
                            st.write(summary)
                    except Exception as e：
                        st.error(f "Summarization failed for source {i+1}：{str(e)}")。
        else：
            st.warning("データを収集するために最初にリサーチを実行してください")

# 生データがあれば表示する
if 'research_data' in st.session_state：
    with st.expander("View Raw Research Data")：
        st.json(st.session_state.research_data)
```

アプリケーションを実行します：

```none
streamlit run app.py
```

アプリケーションを実行し、ポート 8501 にアクセスすると、このような UI になるはずです：

![The final UI of the deep research agent](https://media.brightdata.com/2025/10/image-144-1024x679.png)## ディープリサーチエージェントの実行

アプリケーションを実行し、AI による包括的な調査を開始します。ターミナルを開き、プロジェクトディレクトリに移動します。

```none
streamlit run app.py
```

システムのインテリジェントなマルチエージェントワークフローが、あなたのリサーチリクエストを処理する様子を見ることができます：

- **データ収集フェーズ**：エージェントは、Bright Dataの信頼性の高いAPIを使用して、多様なウェブソースから包括的なリサーチデータを取得し、関連性と信頼性を自動的にフィルタリングします。
- **コンテンツ処理：**各ソースはインテリジェントな分析を受け、システムは主要な情報を抽出し、主要なテーマを特定し、意味理解を用いてコンテンツの品質を評価します。
- **AI要約：**ローカルのOllamaモデルが収集されたデータを処理し、重要な洞察を保持しながら簡潔な要約を生成し、すべてのソースにわたって文脈の正確性を維持します。
- **知識の統合：**複数のソースにまたがる情報を同時に分析することで、繰り返し発生するパターンを特定し、関連する概念を結びつけ、新たな傾向を検出します。
- **構造化された報告：**最後に、エージェントはすべての調査結果を、適切な構成、明確な引用、専門的な書式を備えた包括的な調査レポートにまとめ、重要な発見や洞察を強調します。

## 強化されたリサーチパイプライン

より高度なリサーチ機能については、実装を拡張してください。
この強化されたパイプラインは、単純な要約にとどまらず、収集したリサーチデータから構造化された分析、重要な洞察、実用的な発見を提供する完全なリサーチワークフローを作成します。このパイプラインは、情報収集のための Bright Data と、インテリジェントな分析のためのローカル Ollama モデルを統合します。

```none
# advanced_research.py
def comprehensive_research_pipeline(query, api_key, model="llama2")：
    """データ収集とAIのための分析を含む完全なリサーチパイプライン"""

    # ステップ1: Bright Dataからデータを取得する
    url = "https://api.brightdata.com/dca/trigger"
    payload = {"query": query, "limit"：20}
    headers = {"Authorization": f "ベアラ{api_key}"}。

    response = requests.post(url, json=payload, headers=headers)

    if response.status_code != 200：
        return {"error"：「データ収集に失敗しました。｝

    research_data = response.json()

    # ステップ2: Ollamaを使った処理と分析
    insights = [].
    for item in research_data.get('results', [])：
        content = item.get('content', '')

        # 各ソースに対してインサイトを生成する
        analysis_prompt = f""
        このコンテンツを分析し、重要な洞察を提供します：
        {コンテント[:2000]}」。

        焦点を当てる
        - 要点と発見
        - 主要データと統計
        - 潜在的なアプリケーション
        - 言及された限界
        """

        を試す：
            result = subprocess.run(
                ['ollama', 'run', model, analysis_prompt]、
                capture_output=True、
                text=True、
                タイムアウト=90
            )
            insights.append({
                'source': item.get('source', '')、
                'analysis': result.stdout.strip()、
                'title': item.get('title', '')
            })
        except Exception as e：
            insights.append({
                'source': item.get('source', '')、
                'analysis': f "解析に失敗しました：{'タイトル': item.get('title')、
                'title': item.get('title', '')
            })

    return {
        'research_data': research_data、
        'ai_insights': insights、
        'query': クエリ
    }
```

## まとめ

このローカルディープリサーチエージェントは、Bright Dataの信頼性の高いウェブデータ収集とOllamaを使用したローカルAI処理を組み合わせた自動リサーチシステムの構築方法を示している。この実装は以下を提供する：

- プライバシー第一のアプローチ：すべてのAI処理はOllamaを使用してローカルで行われます。
- 信頼性の高いデータ収集：Bright Dataが高品質で構造化されたウェブデータを確保
- ユーザーフレンドリーなインターフェース：Streamlit UIにより、複雑なリサーチにもアクセス可能
- カスタマイズ可能なワークフロー：様々な研究領域や要件に適応可能

このシステムは、データ収集、処理、分析を自動化することで、業界の主要な課題に対応しています。

お客様のリサーチ能力をさらに高めるために、業界に特化したデータのための[Bright Dataのデータセットソリューションや](/products/datasets)、世界最大のウェブデータベースのクエリと検索のための[Deep Lookupの](https://deeplookup.com/)ご利用をご検討ください。

独自のリサーチエージェントを構築する準備はできましたか？[無料のブライトデータアカウントを](/)作成して、信頼性の高いウェブデータ収集を始めましょう。



お問い合わせ無料トライアル![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 目次







Data for AI

Supercharge your AI with instant and reliable access to web data. No blockers. No hassle.

Talk to an expert

Bright Data MCP

Get started with Bright Data’s Web MCP Server today with 5000 free monthly requests and unlock your AI’s full potential.

Start free now







 [ ](https://news.ycombinator.com/submitlink?t=%E3%83%96%E3%83%A9%E3%82%A4%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%BB%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%BB%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%81%E3%83%BB%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%AE%E6%A7%8B%E7%AF%89&u=https://brightdata.jp/blog/ai/build-a-local-research-agent) [ ](https://www.linkedin.com/shareArticle?mini=true&title=%E3%83%96%E3%83%A9%E3%82%A4%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%BB%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%BB%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%81%E3%83%BB%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%AE%E6%A7%8B%E7%AF%89&url=https://brightdata.jp/blog/ai/build-a-local-research-agent) [ ](http://www.reddit.com/submit?title=%E3%83%96%E3%83%A9%E3%82%A4%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%BB%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%BB%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%81%E3%83%BB%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%AE%E6%A7%8B%E7%AF%89&url=https://brightdata.jp/blog/ai/build-a-local-research-agent)







##  あなたは下記にもご興味がおありかもしれません

 [ ![OpenHuman with Bright Data](https://media.brightdata.jp/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.jp/blog/ai/openhuman-with-bright-data "Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス")

 [AI



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス

Bright Data CLIをOpenHumanに統合して、AIエージェント向けの本番対応ウェブアクセスとデータ収集を実現します。



 09-Sep-2026

 3 分読

 ](https://brightdata.jp/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.jp/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax "MiniMaxによるマルチモーダルウェブスクレイピング")

 [ウェブデータ



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### MiniMaxによるマルチモーダルウェブスクレイピング

Bright Data Web UnlockerとMiniMax M3ビジョンを組み合わせて、画像やウェブページのスクリーンショットから構造化データを抽出します。



 09-Sep-2026

 1 分読

 ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.jp/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex "2026年版 Codex向けCLIツール10選 – テスト＆ランキング")

 [AI



 ![Daniel Shashko](https://media.brightdata.jp/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### 2026年版 Codex向けCLIツール10選 – テスト＆ランキング

Codexをより速く、より有能にする10のCLIツール。サンドボックス内から実際のウェブアクセスを提供するBright Data CLIから始まります。



 06-Sep-2026

 4 分読

 ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex)
