0Pricing
AI Agents · レッスン

Webブラウジング調査エージェント

検索ツール、取得ツール、LLMを組み合わせてテーマを調査し、出典付きの要約を作成します。

「Webブラウジング調査エージェント」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

プロジェクトの目標

Webを検索し、ページを取得し、出典付きの要約を書くことでトピックを調査するエージェントを構築します。Perplexityの小型版のようなものです。

必要なツール

  1. search — 検索API(Tavily、Serper、Brave)にクエリを送り、結果を返す
  2. fetch_url — ページをダウンロードし、クリーニング済みのテキストを返す
  3. answer — エージェントが引用付きの最終要約を書く

Step 1: Search Tool

import requests

def search(query: str, k: int = 5) -> list[dict]:
    r = requests.post(
        'https://api.tavily.com/search',
        json={'api_key': TAVILY_KEY, 'query': query, 'max_results': k}
    )
    return r.json()['results']   # list of {url, title, snippet}

Step 2: Fetch Tool

from bs4 import BeautifulSoup

def fetch_url(url: str) -> str:
    r = requests.get(url, timeout=10)
    soup = BeautifulSoup(r.text, 'html.parser')
    for tag in soup(['script', 'style', 'nav', 'footer']):
        tag.decompose()
    return soup.get_text(separator='\n', strip=True)[:5000]   # truncate

Step 3: Tool Definitions

tools = [
    {'type': 'function', 'function': {
        'name': 'search',
        'description': 'Search the web for a query, return top results with URLs',
        'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
    }},
    {'type': 'function', 'function': {
        'name': 'fetch_url',
        'description': 'Download the text of a URL',
        'parameters': {'type': 'object', 'properties': {'url': {'type': 'string'}}, 'required': ['url']}
    }}
]
import json
print(json.dumps(tools, indent=2))

Step 4: The Agent Loop

def research(question, max_steps=8):
    messages = [
        {'role': 'system', 'content': 'You are a research agent. Use search and fetch_url to gather facts. Cite each claim with a URL.'},
        {'role': 'user', 'content': question}
    ]
    for _ in range(max_steps):
        r = oai.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=tools)
        msg = r.choices[0].message
        messages.append(msg)
        if not msg.tool_calls:
            return msg.content
        for tc in msg.tool_calls:
            result = dispatch(tc)
            messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})
    return 'Step limit reached'

Tool Dispatcher

def dispatch(tc):
    args = json.loads(tc.function.arguments)
    if tc.function.name == 'search':
        return search(**args)
    if tc.function.name == 'fetch_url':
        return fetch_url(**args)
    return {'error': 'unknown tool'}

ステップ上限を追加する

上限がないと、エージェントが無限に処理を続ける可能性があります。max_steps=8は妥当なデフォルト値です。

取得したページを切り詰める

ほとんどのページは50KB以上あり、大きすぎます。5000文字(約1300トークン)に切り詰めます。モデルがそれ以上を必要とすることはほとんどありません。

robots.txtを尊重する

本番環境でのブラウジングでは、robots.txtとサイトの利用規約を遵守する必要があります。判断に迷う場合は、管理型の検索・取得サービスを利用します。

結果をキャッシュする

同じクエリやURLが頻繁にリクエストされます。結果をRedisに1時間キャッシュします:

@lru_cache(maxsize=1000)
def cached_fetch(url):
    return fetch_url(url)

失敗を処理する

ネットワークエラーは日常的に発生します。エージェントが別のソースを試せるよう、エラーをモデルに返します:

try:
    return fetch_url(url)
except Exception as e:
    return {'error': f'Could not fetch {url}: {e}'}

引用を強制する

システムプロンプトの末尾に「最終回答には、[1] https://...のように、すべての主張に対応するURLを含めてください」と記述し、出力スキーマのチェックも検討します。

コストを監視する

調査エージェントは高コストです。1つの質問で5〜15回のツール呼び出しが発生し、それぞれでキロバイト単位のデータを取得します。クエリごとに予算上限を設定します。

ステップ上限

エージェントループにmax_stepsの上限を設定するのはなぜでしょうか?

まとめ

検索 + 取得 + LLM + ステップ上限で、50行の動作する調査エージェントが完成します。3つ目のプロジェクトとして最適です。

よくある質問

「Webブラウジング調査エージェント」レッスンは無料ですか?

はい。「Webブラウジング調査エージェント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。

「Webブラウジング調査エージェント」で何を学びますか?

検索ツール、取得ツール、LLMを組み合わせてテーマを調査し、出典付きの要約を作成します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Webブラウジング調査エージェント」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agentsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ドキュメントを対象にしたQ&Aボット
  2. コード説明エージェント
  3. Webブラウジング調査エージェント
  4. DB向けSQLアシスタント
← AI Agentsに戻る