Importer des exemples

Après avoir créé une instance de magasin d'exemples, vous pouvez commencer à créer et à importer des exemples. Le nombre d'exemples que vous pouvez stocker dans une instance de magasin d'exemples est illimité. Les exemples sont disponibles immédiatement après leur importation dans l'instance de magasin d'exemples.

Voici quelques scénarios dans lesquels vous devrez importer des exemples :

  • Les requêtes ne sont pas pertinentes pour les exemples existants.

  • Le modèle a du mal à raisonner.

  • Les exemples disponibles ne couvrent pas toutes les fonctions, résultats ou raisonnements attendus.

En créant des exemples pertinents au format attendu, vous pouvez obtenir les résultats suivants :

  • Améliorer la capacité du LLM à prêter attention aux exemples et à les utiliser, en évitant les modifications inattendues des schémas de réponse résultant de petites modifications du prompt.

  • Réduire l'impact négatif potentiel de l'ajout d'exemples pour les requêtes non pertinentes.

  • Le LLM se comporte comme prévu pour les requêtes similaires.

Si le LLM présente un comportement ou un raisonnement inattendu, vous pouvez importer une réponse corrigée pour guider le modèle afin qu'il suive le schéma ou le raisonnement attendu dans les requêtes suivantes.

Les exemples de cette page vous permettent de créer des exemples basés sur la sortie du LLM. La création d'exemples basés sur la sortie d'un LLM présente les avantages suivants par rapport à la création manuelle d'exemples :

  • La création d'exemples basés sur la sortie LLM attendue nécessite moins d'efforts manuels.

  • En créant des exemples basés sur un comportement LLM inattendu, vous pouvez corriger directement les cas d'échec.

  • Vous pouvez créer des exemples basés sur les réponses de modèles performants pour améliorer le comportement d'autres modèles. Par exemple, si Gemini 1.5 Pro fournit de meilleures réponses que Gemini 1.5 Flash, mais avec une latence plus élevée, vous pouvez créer des exemples à l'aide de ces réponses pour obtenir des performances similaires avec des latences plus faibles à l'aide de Gemini 1.5 Flash.

Utiliser des exemples pour améliorer les performances des appels de fonction

Vous pouvez utiliser des exemples few-shot pour améliorer les performances des appels de fonction en montrant les éléments suivants : * Quand une fonction particulière est appelée.

  • Comment extraire les arguments à utiliser dans votre appel de fonction.

  • Comment le modèle répond en fonction de la réponse renvoyée par la fonction, ou plusieurs fonctions en cas de raisonnement en plusieurs étapes.

Pour en savoir plus sur les appels de fonction, consultez la documentation sur les appels de fonction.

Prérequis

Avant d'utiliser les exemples Python de cette page, vous devez installer et initialiser le SDK Agent Platform pour le magasin d'exemples dans votre environnement Python local.

  1. Exécutez la commande suivante pour installer le SDK Agent Platform pour le magasin d'exemples.

    pip install --upgrade google-cloud-aiplatform>=1.87.0
  2. Utilisez l'exemple de code suivant pour importer et initialiser le SDK pour le magasin d'exemples.

    import vertexai
    from vertexai.preview import example_stores
    
    vertexai.init(
      project="PROJECT_ID",
      location="LOCATION"
    )
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet

    • LOCATION : votre région. Seule la région us-central1 est compatible.

Importer des exemples

Utilisez les exemples suivants pour importer des exemples dans une instance de magasin d'exemples. Vous pouvez importer jusqu'à cinq exemples par requête.

Python

Les exemples suivants vous permettent d'améliorer le comportement du LLM et les performances des appels de fonction en créant et en important des exemples dans une instance de magasin d'exemples, à l'aide des réponses reçues d'un LLM. Avant d'utiliser les exemples suivants, assurez-vous d'avoir effectué les actions suivantes :

Suivez les instructions de configuration de Python dans les Installer les bibliothèques clientes et configurer l'authentification à l'aide des identifiants par défaut de l'application.

Pour en savoir plus, consultez la documentation de référence de l'API Python Agent Platform .

Importer un exemple basé sur une réponse attendue

Utilisez l'exemple suivant pour créer et importer un exemple dans un scénario où la réponse du LLM est au format attendu. Cet exemple vous permet d'envoyer une requête, de créer un exemple basé sur la réponse, puis d'importer l'exemple dans une instance de magasin d'exemples.

from vertexai.preview.example_stores import ContentsExample, StoredContentsExample

client = genai.Client(
    http_options=genai_types.HttpOptions(api_version="v1"),
    vertexai=True,
    project="PROJECT_ID",
    location="LOCATION")

user_content = genai_types.Content(
    role="user",
    parts=[genai_types.Part(text="EXAMPLE_QUERY")],
)

response = client.models.generate_content(
    model="MODEL_NAME",
    user_content,
    config=genai_types.GenerateContentConfig(
      tools=[FUNCTION_OR_FUNCTION_DECLARATION]
    )
  )

# Upload example.
example = {
  "contents_example": {
    "contents": [user_content.to_json_dict()],
    "expected_contents": [
      {"content": response.candidates[0].content.to_json_dict()},
      {"content": EXPECTED_FUNCTION_RESPONSE.to_json_dict()},
      {"content": EXPECTED_FINAL_MODEL_RESPONSE.to_json_dict()},
    ],
  },
  "search_key": user_content.parts[0].text,
}
example_store.upsert_examples(examples=[example])

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet

  • LOCATION : votre région. Seule la région us-central1 est compatible.

  • EXAMPLE_QUERY : requête ou requête utilisateur adressée au LLM ou à l'agent.

  • MODEL_NAME : nom du modèle. Exemple : gemini-2.0-flash.

  • FUNCTION_OR_FUNCTION_DECLARATION : fonction ou déclaration de fonction à utiliser dans la requête. Pour obtenir de l'aide sur la définition d'une fonction en tant qu'outil, consultez la documentation du SDK GenAI pour les appels de fonction.

  • EXPECTED_FUNCTION_RESPONSE : réponse de fonction attendue (objet FunctionResponse) pour l'appel de fonction attendu. Pour obtenir de l'aide sur la définition d'une réponse de fonction, consultez la documentation du SDK GenAI pour les appels de fonction.

  • EXPECTED_FINAL_MODEL_RESPONSE : réponse finale attendue du modèle (objet Content) pour l'appel de fonction et la réponse attendus.

Importer un exemple pour corriger une réponse inattendue

Si le LLM ne génère pas la réponse comme prévu, vous pouvez créer un exemple basé sur la réponse corrigée. Cela permet au LLM de suivre le raisonnement attendu pour les requêtes suivantes.

Utilisez l'exemple suivant pour importer un exemple avec la réponse corrigée dans l'instance de magasin d'exemples.

user_content = genai_types.Content(
    role="user",
    parts=[genai_types.Part(text="EXAMPLE_QUERY")],
)

example = {
  "contents_example": {
    "contents": [user_content.to_json_dict()],
    "expected_contents": [
      {"content": EXPECTED_FUNCTION_CALL.to_json_dict()},
      {"content": EXPECTED_FUNCTION_RESPONSE.to_json_dict()},
      {"content": EXPECTED_FINAL_MODEL_RESPONSE.to_json_dict()},
    ],
  },
  "search_key": user_content.parts[0].text,
}

example_store.upsert_examples(examples=[example])

Remplacez les éléments suivants :

REST

Pour importer un exemple dans une instance de magasin d'exemples, envoyez une POST requête à l'aide de la exampleStores.upsertExamples méthode.

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

  • PROJECT_ID : ID de votre projet
  • LOCATION : région dans laquelle vous souhaitez créer le magasin d'exemples. La seule région compatible est us-central1.
  • EXAMPLE_STORE_ID : ID de l'instance de magasin d'exemples dans laquelle vous souhaitez importer l'exemple.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:upsertExamples

Corps JSON de la requête :

{
  "examples": [
      {
          "stored_contents_example": {
              "contents_example": {
                  "contents": [
                      {
                          "role": "user",
                          "parts": [
                              {
                                  "text": "Is there a store in Mountain View, CA that I can visit to try the new Pixel 8 Pro?"
                              }
                          ]
                      }
                  ],
                  "expected_contents": [
                      {
                          "content": {
                              "role": "model",
                              "parts": [
                                  {
                                      "text": ""Yes, there is a store located at 2000 N Shoreline Blvd, Mountain View, CA 94043, US."
                                  }
                              ]
                          }
                      }
                  ]
              },
              "search_key_generation_method": {
                  "last_entry": {}
              }
          }
      }
  ]
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:upsertExamples"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, et exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:upsertExamples" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante, où EXAMPLE_ID représente l'ID numérique généré pour l'exemple.

Étape suivante