Exemples d'importation

Après avoir créé une instance de magasin d'exemples, vous pouvez commencer à créer et à y 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, tous les résultats ni tous les raisonnements que vous attendez.

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 modèles de réponse résultant de petites modifications du prompt.

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

  • Le LLM se comporte comme prévu pour des 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 modèle 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 attendue du LLM nécessite moins d'efforts manuels.

  • En créant des exemples basés sur un comportement inattendu du LLM, 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 par 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 Vertex AI pour Python pour le magasin d'exemples dans votre environnement Python local.

  1. Exécutez la commande suivante pour installer le SDK Vertex AI pour Python 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 un maximum de 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 opérations suivantes :

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 = Content(
    role="user",
    parts=[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. Consultez la documentation du SDK GenAI pour l'appel de fonction afin d'obtenir de l'aide pour définir une fonction en tant qu'outil.

  • EXPECTED_FUNCTION_RESPONSE : réponse de fonction attendue (objet FunctionResponse) pour l'appel de fonction attendu. Consultez la documentation du SDK GenAI pour l'appel de fonction afin d'obtenir de l'aide pour définir une réponse 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 = Content(
    role="user",
    parts=[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