Ancrage avec la recherche Web Exa

Exa fournit une API de recherche qui donne accès à des données Web accessibles au public et optimisées pour ancrer les réponses de grands modèles de langage. Cette page explique comment ancrer les réponses Gemini à l'aide d'Exa.

L'ancrage avec la recherche Web Exa sur Gemini Enterprise Agent Platform est une offre distincte (telle que définie dans votre Google Cloud contrat) qui connecte les modèles Gemini aux données Web publiques fournies par l'API de recherche d'Exa.

Cas d'utilisation

L'ancrage avec Exa améliore la précision et réduit les hallucinations en donnant aux modèles accès à des données Web récentes et pertinentes. Vous trouverez ci-dessous des cas d'utilisation courants :

  • Agents et chatbots généraux : récupérez des informations à jour pour générer des réponses plus fiables.
  • Agents de recherche : effectuez des recherches approfondies sur le Web à partir de plusieurs sources.
  • Agents de codage : récupérez les derniers extraits de code, documents et références techniques.
  • Agents vocaux : récupération Web pour prendre en charge les interactions vocales en temps réel et à faible latence.
  • Agents spécifiques à un secteur : récupérez des informations à jour et spécifiques à un domaine, adaptées à un secteur ou à un domaine de connaissances particulier.
  • Enrichissement des données : enrichissez les ensembles de données internes avec le contexte et les métadonnées Web actuels.
  • Workflows automatisés : collectez régulièrement des actualités, des informations sur des personnes, des entreprises ou d'autres données fréquemment mises à jour pour les workflows internes ou de production.

Exemple

Qui a gagné le Super Bowl 2026 ?

Sans ancrage Avec ancrage
Je ne peux pas vous dire qui a gagné le Super Bowl 2026, car cet événement n'a pas encore eu lieu. Les Seahawks de Seattle ont remporté le Super Bowl LX le 8 février 2026, en battant les Patriots de la Nouvelle-Angleterre avec un score final de 29 à 13. Sources : domain1.com, domain2.com, ...

Modèles compatibles

Cette section liste les modèles compatibles avec l'ancrage avec la recherche sur le Web Exa.

Cliquer pour développer les modèles compatibles

Avant de commencer

Pour utiliser l'ancrage avec Exa, vous devez obtenir une clé API sur le site Web d'Exa. Cette clé API est utilisée dans votre requête adressée à Gemini.

Ancrer les réponses Gemini avec Exa

Demandez des réponses ancrées à Gemini à l'aide du SDK Google Gen AI ou de l'API REST. Pour optimiser les performances, nous vous recommandons d'utiliser les paramètres par défaut pour les paramètres facultatifs, sauf si vous avez absolument besoin de valeurs non par défaut.

Avant d'exécuter les exemples, remplissez les conditions préalables, y compris l'obtention d'une clé API Exa.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

Avant d'exécuter l'exemple, effectuez les remplacements suivants :

  • MODEL_ID : ID d'un modèle compatible à utiliser, tel que gemini-2.5-flash.
  • TEXT : prompt textuel à envoyer au modèle.
  • API_KEY : votre clé API pour la recherche sur le Web Exa.
  • SEARCH_TYPE (facultatif) : type de recherche Exa à exécuter. Les valeurs acceptées sont fast et instant. La valeur par défaut est fast, qui fournit des résultats complets avec une latence réduite et convient parfaitement à la recherche visible par l'utilisateur et aux workflows interactifs. Utilisez instant pour les expériences nécessitant la latence la plus faible, telles que le chat, les agents vocaux et la saisie semi-automatique. Cette valeur minimise le temps de réponse en privilégiant la vitesse par rapport à l'étendue de la recherche.
  • EXCLUDE_DOMAINS (facultatif) : liste des domaines à exclure des résultats de recherche. Si cette valeur est spécifiée, aucun résultat n'est renvoyé à partir de ces domaines. Pour exclure plusieurs domaines, ajoutez chaque domaine en tant que chaîne entre guillemets distincte dans la liste (par exemple, ["example.com", "example.net"]). Vous pouvez spécifier jusqu'à 1 200 domaines.
  • INCLUDE_DOMAINS (facultatif) : liste des domaines à inclure dans la recherche. Si cette valeur est spécifiée, les résultats proviennent uniquement de ces domaines. Pour inclure plus d'un domaine, ajoutez chaque domaine en tant que chaîne entre guillemets distincte dans la liste (par exemple, ["example.com", "example.net"]). Vous pouvez spécifier jusqu'à 1 200 domaines.
  • MAX_CHARACTERS (facultatif) : nombre maximal de caractères à renvoyer pour les mises en évidence. Contrôle la longueur totale du texte de mise en évidence renvoyé par URL.
  • NUM_RESULTS (facultatif) : nombre maximal de résultats de recherche à utiliser pour l'ancrage. Si aucune valeur n'est spécifiée, la valeur par défaut est 5.

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="MODEL_ID",
    contents="TEXT",
    config=types.GenerateContentConfig(
        tools=[
            types.Tool(
                exa_ai_search=types.ToolExaAiSearch(
                    # Required. Your API key for Exa web search.
                    api_key="API_KEY",
                    # Optional. Customize the search. Click a placeholder to
                    # enter a value, or remove the line to accept the default.
                    custom_configs={
                        "type": "SEARCH_TYPE",
                        "excludeDomains": ["EXCLUDE_DOMAINS"],
                        "includeDomains": ["INCLUDE_DOMAINS"],
                        "contents": {
                            "highlights": {
                                "maxCharacters": MAX_CHARACTERS,
                            },
                        },
                        "numResults": NUM_RESULTS,
                    },
                )
            )
        ],
    ),
)

print(response.text)

# The grounding metadata contains the web sources used to ground the response.
print(response.candidates[0].grounding_metadata.grounding_chunks)

Java

Découvrez comment installer ou mettre à jour Java.

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

Avant d'exécuter l'exemple, effectuez les remplacements suivants :

  • MODEL_ID : ID d'un modèle compatible à utiliser, tel que gemini-2.5-flash.
  • TEXT : prompt textuel à envoyer au modèle.
  • API_KEY : votre clé API pour la recherche sur le Web Exa.
  • SEARCH_TYPE (facultatif) : type de recherche Exa à exécuter. Les valeurs acceptées sont fast et instant. La valeur par défaut est fast, qui fournit des résultats complets avec une latence réduite et convient parfaitement à la recherche visible par l'utilisateur et aux workflows interactifs. Utilisez instant pour les expériences nécessitant la latence la plus faible, telles que le chat, les agents vocaux et la saisie semi-automatique. Cette valeur minimise le temps de réponse en privilégiant la vitesse par rapport à l'étendue de la recherche.
  • EXCLUDE_DOMAINS (facultatif) : liste des domaines à exclure des résultats de recherche. Si cette valeur est spécifiée, aucun résultat n'est renvoyé à partir de ces domaines. Pour exclure plusieurs domaines, ajoutez chaque domaine en tant que chaîne entre guillemets distincte dans la liste (par exemple, ["example.com", "example.net"]). Vous pouvez spécifier jusqu'à 1 200 domaines.
  • INCLUDE_DOMAINS (facultatif) : liste des domaines à inclure dans la recherche. Si cette valeur est spécifiée, les résultats proviennent uniquement de ces domaines. Pour inclure plus d'un domaine, ajoutez chaque domaine en tant que chaîne entre guillemets distincte dans la liste (par exemple, ["example.com", "example.net"]). Vous pouvez spécifier jusqu'à 1 200 domaines.
  • MAX_CHARACTERS (facultatif) : nombre maximal de caractères à renvoyer pour les mises en évidence. Contrôle la longueur totale du texte de mise en évidence renvoyé par URL.
  • NUM_RESULTS (facultatif) : nombre maximal de résultats de recherche à utiliser pour l'ancrage. Si aucune valeur n'est spécifiée, la valeur par défaut est 5.

import com.google.genai.Client;
import com.google.genai.types.GenerateContentConfig;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.Tool;
import com.google.genai.types.ToolExaAiSearch;
import java.util.List;
import java.util.Map;

public class ExaGroundingSample {
  public static void main(String[] args) {
    try (Client client = Client.builder().build()) {

      GenerateContentConfig config =
          GenerateContentConfig.builder()
              .tools(
                  Tool.builder()
                      .exaAiSearch(
                          ToolExaAiSearch.builder()
                              // Required. Your API key for Exa web search.
                              .apiKey("API_KEY")
                              // Optional. Customize the search. Click a
                              // placeholder to enter a value, or remove the
                              // entry to accept the default.
                              .customConfigs(
                                  Map.of(
                                      "type", "SEARCH_TYPE",
                                      "excludeDomains",
                                      List.of("EXCLUDE_DOMAINS"),
                                      "includeDomains",
                                      List.of("INCLUDE_DOMAINS"),
                                      "contents",
                                      Map.of(
                                          "highlights",
                                          Map.of(
                                              "maxCharacters",
                                              MAX_CHARACTERS)),
                                      "numResults", NUM_RESULTS))
                              .build())
                      .build())
              .build();

      GenerateContentResponse response =
          client.models.generateContent(
              "MODEL_ID", "TEXT", config);

      System.out.println(response.text());

      // The grounding metadata contains the web sources used to ground the response.
      System.out.println(
          response.candidates().get().get(0).groundingMetadata().get().groundingChunks().get());
    }
  }
}

Node.js

Installer

npm install @google/genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

Avant d'exécuter l'exemple, effectuez les remplacements suivants :

  • MODEL_ID : ID d'un modèle compatible à utiliser, tel que gemini-2.5-flash.
  • TEXT : prompt textuel à envoyer au modèle.
  • API_KEY : votre clé API pour la recherche sur le Web Exa.
  • SEARCH_TYPE (facultatif) : type de recherche Exa à exécuter. Les valeurs acceptées sont fast et instant. La valeur par défaut est fast, qui fournit des résultats complets avec une latence réduite et convient parfaitement à la recherche visible par l'utilisateur et aux workflows interactifs. Utilisez instant pour les expériences nécessitant la latence la plus faible, telles que le chat, les agents vocaux et la saisie semi-automatique. Cette valeur minimise le temps de réponse en privilégiant la vitesse par rapport à l'étendue de la recherche.
  • EXCLUDE_DOMAINS (facultatif) : liste des domaines à exclure des résultats de recherche. Si cette valeur est spécifiée, aucun résultat n'est renvoyé à partir de ces domaines. Pour exclure plusieurs domaines, ajoutez chaque domaine en tant que chaîne entre guillemets distincte dans la liste (par exemple, ["example.com", "example.net"]). Vous pouvez spécifier jusqu'à 1 200 domaines.
  • INCLUDE_DOMAINS (facultatif) : liste des domaines à inclure dans la recherche. Si cette valeur est spécifiée, les résultats proviennent uniquement de ces domaines. Pour inclure plus d'un domaine, ajoutez chaque domaine en tant que chaîne entre guillemets distincte dans la liste (par exemple, ["example.com", "example.net"]). Vous pouvez spécifier jusqu'à 1 200 domaines.
  • MAX_CHARACTERS (facultatif) : nombre maximal de caractères à renvoyer pour les mises en évidence. Contrôle la longueur totale du texte de mise en évidence renvoyé par URL.
  • NUM_RESULTS (facultatif) : nombre maximal de résultats de recherche à utiliser pour l'ancrage. Si aucune valeur n'est spécifiée, la valeur par défaut est 5.

import {GoogleGenAI} from '@google/genai';

const ai = new GoogleGenAI({});

const response = await ai.models.generateContent({
  model: 'MODEL_ID',
  contents: 'TEXT',
  config: {
    tools: [
      {
        exaAiSearch: {
          // Required. Your API key for Exa web search.
          apiKey: 'API_KEY',
          // Optional. Customize the search. Click a placeholder to enter a
          // value, or remove the line to accept the default.
          customConfigs: {
            type: 'SEARCH_TYPE',
            excludeDomains: ['EXCLUDE_DOMAINS'],
            includeDomains: ['INCLUDE_DOMAINS'],
            contents: {
              highlights: {
                maxCharacters: MAX_CHARACTERS,
              },
            },
            numResults: NUM_RESULTS,
          },
        },
      },
    ],
  },
});

console.log(response.text);

// The grounding metadata contains the web sources used to ground the response.
console.log(response.candidates[0].groundingMetadata.groundingChunks);

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • LOCATION : région dans laquelle traiter la requête. Pour utiliser le point de terminaison global, excluez l'emplacement du nom du point de terminaison et configurez l'emplacement de la ressource sur `global`.
  • PROJECT_ID : ID de votre Google Cloud projet.
  • MODEL_ID : ID du modèle à utiliser.
  • TEXT : prompt textuel à envoyer au modèle.
  • API_KEY : votre clé API pour la recherche sur le Web Exa.
  • SEARCH_TYPE (facultatif) : type de recherche Exa à exécuter. Les valeurs acceptées sont fast et instant. La valeur par défaut est fast, qui fournit des résultats complets avec une latence réduite et convient parfaitement à la recherche visible par l'utilisateur et aux workflows interactifs. Utilisez instant pour les expériences nécessitant la latence la plus faible, telles que le chat, les agents vocaux et la saisie semi-automatique. Cette valeur minimise le temps de réponse en privilégiant la vitesse par rapport à l'étendue de la recherche.
  • EXCLUDE_DOMAINS (facultatif) : liste des domaines à exclure des résultats de recherche. Si cette valeur est spécifiée, aucun résultat ne sera renvoyé à partir de ces domaines. Vous pouvez spécifier jusqu'à 1 200 domaines.
  • INCLUDE_DOMAINS (facultatif) : liste des domaines à inclure dans la recherche. Si cette valeur est spécifiée, les résultats proviendront uniquement de ces domaines. Vous pouvez spécifier jusqu'à 1 200 domaines.
  • MAX_CHARACTERS (facultatif) : nombre maximal de caractères à renvoyer pour les mises en évidence. Contrôle la longueur totale du texte de mise en évidence renvoyé par URL.
  • NUM_RESULTS (facultatif) : nombre maximal de résultats de recherche à utiliser pour l'ancrage. Si aucune valeur n'est spécifiée, la valeur par défaut est 5.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent

Corps JSON de la requête :

{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "TEXT"
    }]
  }],
  "tools": [{
    "exaAiSearch": {
        "api_key": "API_KEY",
        "customConfigs": {
            "type": "SEARCH_TYPE",
            "excludeDomains": ["EXCLUDE_DOMAINS"],
            "includeDomains": ["INCLUDE_DOMAINS"],
            "contents": {
                "highlights": {
                    "maxCharacters": MAX_CHARACTERS
                }
            },
            "numResults": NUM_RESULTS
        }
    }
}],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON semblable à la suivante.

Quota

Le quota par défaut est de 200 prompts par minute. Si vous devez augmenter vos limites de débit, contactez support@exa.ai et votre équipe de compte Google en indiquant votre cas d'utilisation et vos exigences.

Facturation

L'utilisation de l'ancrage avec Exa entraîne les frais suivants :

  • Consommation de jetons Gemini : jetons de prompt, jetons de raisonnement, jetons de sortie. Pour en savoir plus, reportez-vous à la page Tarifs.
  • Ancrage de Gemini avec vos données : pour en savoir plus, consultez la page Tarifs.
  • Tarifs d'utilisation de l'API de recherche d'Exa : pour en savoir plus, consultez la page des tarifs d'Exa.