Créer un Agent capable d’effectuer des recherches web
Lors de la création d’un Agent de recherche web, deux stratégies principales sont à envisager :
- Tools de recherche natifs du LLM : certains modèles de langage proposent des capacités de recherche web intégrées, prêtes à l’emploi.
- Implémenter un Tool de recherche personnalisé : développez votre propre intégration avec l’API d’un fournisseur de recherche pour traiter les requêtes et récupérer les résultats.
PrérequisLien direct vers Prérequis
- Node.js
v22.13.0ou version ultérieure est installé - Une clé API d’un fournisseur de modèles pris en charge
- Un projet Mastra existant (suivez le guide d’installation pour configurer un nouveau projet)
Utiliser des Tools de recherche natifsLien direct vers Utiliser des Tools de recherche natifs
Certains fournisseurs de LLM incluent des capacités de recherche web intégrées, utilisables directement sans intégration API supplémentaire. Les modèles d’OpenAI et de Google proposent tous deux des Tools de recherche natifs que le modèle peut appeler pendant la génération.
Installez les dépendances.
- OpenAI
- Gemini
- npm
- pnpm
- Yarn
- Bun
npm install @ai-sdk/openaipnpm add @ai-sdk/openaiyarn add @ai-sdk/openaibun add @ai-sdk/openai- npm
- pnpm
- Yarn
- Bun
npm install @ai-sdk/googlepnpm add @ai-sdk/googleyarn add @ai-sdk/googlebun add @ai-sdk/googleCréez un fichier
src/mastra/agents/searchAgent.tset définissez votre Agent :- OpenAI
- Gemini
src/mastra/agents/searchAgent.tsimport { 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',})src/mastra/agents/searchAgent.tsimport { 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',})Configurez le Tool :
- OpenAI
- Gemini
src/mastra/agents/searchAgent.tsimport { 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(),},})src/mastra/agents/searchAgent.tsimport { 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',}),},})Dans votre fichier
src/mastra/index.ts, enregistrez l’Agent :src/mastra/index.tsimport { Mastra } from '@mastra/core'import { searchAgent } from './agents/searchAgent'export const mastra = new Mastra({agents: { searchAgent },})Vous pouvez tester votre Agent avec Studio en utilisant la commande
mastra dev:mastra devDans Studio, accédez à « Search Agent » et demandez-lui : « Quelles sont les actualités IA de la semaine dernière ? »
Utiliser des API de rechercheLien direct vers Utiliser des API de recherche
Pour mieux contrôler le comportement de recherche, vous pouvez intégrer des API de recherche externes sous forme de Tools personnalisés. Exa est un moteur de recherche conçu spécifiquement pour les applications IA, qui propose une recherche sémantique, des filtres configurables, tels que la catégorie, le domaine et la plage de dates, ainsi que la récupération du contenu complet des pages. L’API de recherche est encapsulée dans un Tool Mastra qui définit le schéma d’entrée, le format de sortie et la logique d’exécution.
Installez les dépendances.
- npm
- pnpm
- Yarn
- Bun
npm install exa-jspnpm add exa-jsyarn add exa-jsbun add exa-jsCréez un fichier
src/mastra/agents/searchAgent.tset définissez votre Agent :src/mastra/agents/searchAgent.tsimport { 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',})Configurez le Tool.
src/mastra/tools/searchTool.tsimport { 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,}))},})Ajoutez-le à votre Agent.
src/mastra/agents/searchAgent.tsimport { 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,},})Dans votre fichier
src/mastra/index.ts, enregistrez l’Agent :src/mastra/index.tsimport { Mastra } from '@mastra/core'import { searchAgent } from './agents/searchAgent'export const mastra = new Mastra({agents: { searchAgent },})Vous pouvez tester votre Agent avec Studio en utilisant la commande
mastra dev:mastra devDans Studio, accédez à « Search Agent » et demandez-lui : « Quelles sont les actualités IA de la semaine dernière ? »