> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Web を検索できる Agent の構築 Web 検索 Agent を構築する際には、主に次の 2 つの方法があります。 1. **LLM のネイティブ検索 Tool**:一部の言語モデルが提供する、すぐに利用できる統合 Web 検索機能を使用します。 2. **カスタム検索 Tool の実装**:検索 Provider の API と独自に連携し、クエリの処理と結果の取得を行います。 ## 前提条件 - Node.js `v22.13.0` 以降がインストールされていること - サポートされている [Model Provider](https://mastra.zisheng.pro/ja/models) の API キー - 既存の Mastra プロジェクト(新しいプロジェクトをセットアップするには、[インストールガイド](https://mastra.zisheng.pro/ja/guides/getting-started/quickstart)に従ってください) ## ネイティブ検索 Tool の使用 一部の LLM Provider には、追加の API 連携なしで直接使用できる Web 検索機能が組み込まれています。OpenAI と Google のモデルは、いずれも生成中にモデルが呼び出せるネイティブ検索 Tool を提供しています。 1. 依存関係をインストールします **OpenAI**: **npm**: ```bash npm install @ai-sdk/openai ``` **pnpm**: ```bash pnpm add @ai-sdk/openai ``` **Yarn**: ```bash yarn add @ai-sdk/openai ``` **Bun**: ```bash bun add @ai-sdk/openai ``` **Gemini**: ```bash npm install @ai-sdk/openai ``` **Tab 3**: ```bash pnpm add @ai-sdk/openai ``` **Tab 4**: ```bash yarn add @ai-sdk/openai ``` **Tab 5**: ```bash bun add @ai-sdk/openai ``` **Tab 6**: **npm**: ```bash npm install @ai-sdk/google ``` **pnpm**: ```bash pnpm add @ai-sdk/google ``` **Yarn**: ```bash yarn add @ai-sdk/google ``` **Bun**: ```bash bun add @ai-sdk/google ``` **Tab 7**: ```bash npm install @ai-sdk/google ``` **Tab 8**: ```bash pnpm add @ai-sdk/google ``` **Tab 9**: ```bash yarn add @ai-sdk/google ``` **Tab 10**: ```bash bun add @ai-sdk/google ``` 2. 新しいファイル `src/mastra/agents/searchAgent.ts` を作成し、Agent を定義します。 **OpenAI**: ```ts import { Agent } from '@mastra/core/agent' export const searchAgent = new Agent({ id: 'search-agent', name: 'Search Agent', instructions: 'You are a search agent that can search the web for information.', model: 'openai/gpt-5.6-sol', }) ``` **Gemini**: ```ts import { Agent } from '@mastra/core/agent' export const searchAgent = new Agent({ id: 'search-agent', name: 'Search Agent', instructions: 'You are a search agent that can search the web for information.', model: 'google/gemini-2.5-flash', }) ``` 3. Tool をセットアップします。 **OpenAI**: ```ts import { openai } from '@ai-sdk/openai' import { Agent } from '@mastra/core/agent' export const searchAgent = new Agent({ id: 'search-agent', name: 'Search Agent', instructions: 'You are a search agent that can search the web for information.', model: 'openai/gpt-5.6-sol', tools: { webSearch: openai.tools.webSearch(), }, }) ``` **Gemini**: ```ts import { google } from '@ai-sdk/google' import { Agent } from '@mastra/core/agent' export const searchAgent = new Agent({ id: 'search-agent', name: 'Search Agent', instructions: 'You are a search agent that can search the web for information.', model: 'google/gemini-2.5-flash', tools: { webSearch: google.tools.googleSearch({ mode: 'MODE_DYNAMIC', }), }, }) ``` 4. `src/mastra/index.ts` ファイルで Agent を登録します。 ```ts import { Mastra } from '@mastra/core' import { searchAgent } from './agents/searchAgent' export const mastra = new Mastra({ agents: { searchAgent }, }) ``` 5. `mastra dev` コマンドを使い、[Studio](https://mastra.zisheng.pro/ja/docs/studio/overview) で Agent をテストできます。 ```bash mastra dev ``` Studio で **「Search Agent」** を開き、「先週の AI ニュースでは何がありましたか?」と質問します。 ## 検索 API の使用 検索動作をより細かく制御するには、外部の検索 API をカスタム Tool として統合できます。[Exa](https://exa.ai/) は AI アプリケーション専用に構築された検索エンジンで、セマンティック検索、設定可能なフィルター(カテゴリ、ドメイン、日付範囲)、ページ全体の内容を取得する機能を提供します。検索 API は、入力スキーマ、出力形式、実行ロジックを定義する Mastra Tool でラップします。 1. 依存関係をインストールします **npm**: ```bash npm install exa-js ``` **pnpm**: ```bash pnpm add exa-js ``` **Yarn**: ```bash yarn add exa-js ``` **Bun**: ```bash bun add exa-js ``` 2. 新しいファイル `src/mastra/agents/searchAgent.ts` を作成し、Agent を定義します。 ```ts import { Agent } from '@mastra/core/agent' export const searchAgent = new Agent({ id: 'search-agent', name: 'Search Agent', instructions: 'You are a search agent that can search the web for information.', model: 'openai/gpt-5.6-sol', }) ``` 3. Tool をセットアップします ```ts import { createTool } from '@mastra/core/tools' import z from 'zod' import Exa from 'exa-js' export const exa = new Exa(process.env.EXA_API_KEY) export const webSearch = createTool({ id: 'exa-web-search', description: 'Search the web', inputSchema: z.object({ query: z.string().min(1).max(50).describe('The search query'), }), outputSchema: z.array( z.object({ title: z.string().nullable(), url: z.string(), content: z.string(), publishedDate: z.string().optional(), }), ), execute: async inputData => { const { results } = await exa.searchAndContents(inputData.query, { livecrawl: 'always', numResults: 2, }) return results.map(result => ({ title: result.title, url: result.url, content: result.text.slice(0, 500), publishedDate: result.publishedDate, })) }, }) ``` 4. Agent に追加します ```ts import { webSearch } from './tools/searchTool' export const searchAgent = new Agent({ id: 'search-agent', name: 'Search Agent', instructions: 'You are a search agent that can search the web for information.', model: 'openai/gpt-5.6-sol', tools: { webSearch, }, }) ``` 5. `src/mastra/index.ts` ファイルで Agent を登録します。 ```ts import { Mastra } from '@mastra/core' import { searchAgent } from './agents/searchAgent' export const mastra = new Mastra({ agents: { searchAgent }, }) ``` 6. `mastra dev` コマンドを使い、[Studio](https://mastra.zisheng.pro/ja/docs/studio/overview) で Agent をテストできます。 ```bash mastra dev ``` Studio で **「Search Agent」** を開き、「先週の AI ニュースでは何がありましたか?」と質問します。