Aller au contenu principal

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 :

  1. 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.
  2. 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érequis
Lien direct vers Prérequis

Utiliser des Tools de recherche natifs
Lien 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.

  1. Installez les dépendances.

    npm install @ai-sdk/openai
  2. Créez un fichier src/mastra/agents/searchAgent.ts et définissez votre Agent :

    src/mastra/agents/searchAgent.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. Configurez le Tool :

    src/mastra/agents/searchAgent.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(),
    },
    })
  4. Dans votre fichier src/mastra/index.ts, enregistrez l’Agent :

    src/mastra/index.ts
    import { Mastra } from '@mastra/core'
    import { searchAgent } from './agents/searchAgent'

    export const mastra = new Mastra({
    agents: { searchAgent },
    })
  5. Vous pouvez tester votre Agent avec Studio en utilisant la commande mastra dev :

    mastra dev

    Dans Studio, accédez à « Search Agent » et demandez-lui : « Quelles sont les actualités IA de la semaine dernière ? »

Utiliser des API de recherche
Lien 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.

  1. Installez les dépendances.

    npm install exa-js
  2. Créez un fichier src/mastra/agents/searchAgent.ts et définissez votre Agent :

    src/mastra/agents/searchAgent.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. Configurez le Tool.

    src/mastra/tools/searchTool.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. Ajoutez-le à votre Agent.

    src/mastra/agents/searchAgent.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. Dans votre fichier src/mastra/index.ts, enregistrez l’Agent :

    src/mastra/index.ts
    import { Mastra } from '@mastra/core'
    import { searchAgent } from './agents/searchAgent'

    export const mastra = new Mastra({
    agents: { searchAgent },
    })
  6. Vous pouvez tester votre Agent avec Studio en utilisant la commande mastra dev :

    mastra dev

    Dans Studio, accédez à « Search Agent » et demandez-lui : « Quelles sont les actualités IA de la semaine dernière ? »