Gestion des requêtes

Vertex AI propose des outils pour vous aider à gérer les modèles et les données de requêtes. Les modèles d'invite peuvent être versionnés et utilisés en tandem avec des modèles génératifs sur Vertex AI. Chaque requête peut être assemblée et versionnée dans Vertex AI Studio ou le SDK Vertex AI.

Le SDK Vertex AI inclut le module vertexai.preview.prompts afin que les requêtes puissent fonctionner avec les modèles génératifs. Le module vertexai.preview.prompts permet de définir, d'enregistrer et de gérer des requêtes pour générer du texte avec Gemini.

Prompt

La classe Prompt représente une invite pouvant être utilisée pour générer du texte à l'aide d'une méthode Gemini, qui encapsule les données d'invite, les variables, la configuration de génération et d'autres informations pertinentes.

Pour créer un objet Prompt, utilisez le constructeur vertexai.preview.prompts.Prompt(). Vous pouvez définir les données d'invite, les variables et d'autres configurations dans cet objet.

Créer une requête locale et générer du contenu

SDK Vertex AI pour Python

Python

import vertexai
from vertexai.preview import prompts
from vertexai.preview.prompts import Prompt

# from vertexai.generative_models import GenerationConfig, SafetySetting # Optional

# Initialize vertexai
vertexai.init(project=PROJECT_ID, location="us-central1")

# Create local Prompt
local_prompt = Prompt(
    prompt_name="movie-critic",
    prompt_data="Compare the movies {movie1} and {movie2}.",
    variables=[
        {"movie1": "The Lion King", "movie2": "Frozen"},
        {"movie1": "Inception", "movie2": "Interstellar"},
    ],
    model_name="gemini-1.5-pro-002",
    system_instruction="You are a movie critic. Answer in a short sentence.",
    # generation_config=GenerationConfig, # Optional,
    # safety_settings=SafetySetting, # Optional,
)

# Generate content using the assembled prompt for each variable set.
for i in range(len(local_prompt.variables)):
    response = local_prompt.generate_content(
        contents=local_prompt.assemble_contents(**local_prompt.variables[i])
    )
    print(response)

# Save a version
prompt1 = prompts.create_version(prompt=local_prompt)

print(prompt1)

# Example response
# Assembled prompt replacing: 1 instances of variable movie1, 1 instances of variable movie2
# Assembled prompt replacing: 1 instances of variable movie1, 1 instances of variable movie2
# Created prompt resource with id 12345678910.....
  • project : l'ID de votre projet. Vous pouvez trouver ces ID sur la page d'accueil de la console Google Cloud.
  • location: consultez les emplacements de Vertex AI.
  • prompt_name: nom à afficher de l'invite créée par l'utilisateur, si elle est stockée dans une ressource en ligne.
  • prompt_data: requête PartsType, qui peut être un modèle avec des variables ou une requête sans variables.
  • variables: liste de dictionnaires contenant les noms et les valeurs des variables.
  • generation_config: objet GenerationConfig contenant des paramètres de génération.
  • model_name: nom de la ressource de modèle Model Garden. Vous pouvez également fournir un nom de ressource de point de terminaison de modèle affiné. Si aucun modèle n'est fourni, le dernier modèle par défaut est utilisé.
  • safety_settings: objet SafetySetting contenant des paramètres de sécurité pour la génération.
  • system_instruction: objet PartsType représentant l'instruction système.

Une fois un objet Prompt créé, les données et les propriétés de l'invite représentant différentes configurations peuvent être utilisées pour générer du contenu.

Les requêtes sont également compatibles avec l'appel de fonctions. Pour en savoir plus, consultez la section Présentation des appels de fonction.

Enregistrer une requête

Pour enregistrer une requête dans une ressource en ligne accessible dans la console Google Cloud, utilisez la méthode vertexai.preview.prompts.create_version(). Cette méthode prend un objet Prompt en entrée et crée une nouvelle version de l'invite dans la boutique en ligne. Un nouvel objet Prompt est renvoyé, qui est associé à la ressource en ligne. Toutes les mises à jour apportées à un objet Prompt sont locales jusqu'à l'appel de create_version(). L'exemple de code suivant montre comment enregistrer une requête:

SDK Vertex AI pour Python

from vertexai.preview import prompts

# Save Prompt to online resource.
# Returns a new Prompt object associated with the online resource.
prompt1 = prompts.create_version(prompt=prompt)

Charger une requête enregistrée

Pour charger une invite enregistrée dans la ressource en ligne, utilisez la méthode vertexai.preview.prompts.get(). Cette méthode utilise l'ID d'invite en entrée et renvoie l'objet Prompt correspondant. Cet exemple de code montre comment charger une requête enregistrée:

SDK Vertex AI pour Python

from vertexai.preview import prompts 

# Get prompt
prompt = prompts.get(prompt_id="123456789")

Récupérer l'invite créée dans la console Google Cloud

Pour mettre à jour une invite enregistrée, commencez par la charger à l'aide de la méthode get(), modifiez ses propriétés si nécessaire, puis enregistrez l'invite mise à jour à l'aide de la méthode create_version(). Une nouvelle version de l'invite est créée avec les informations mises à jour.

SDK Vertex AI pour Python

from vertexai.preview import prompts
from vertexai.preview.prompts import Prompt

# Get prompt
prompt = prompts.get(prompt_id="123456789")

# Generate content using the assembled prompt (a prompt without variables)
prompt.generate_content(
  contents=prompt.assemble_contents()
)

# Update prompt (changes are local until create_version is called)
prompt.prompt_data = "new prompt"

# Save Prompt to online resource. Since the prompt is associated with a prompt resource, it creates a new version under the same prompt_id. Returns a new Prompt object associated with the online resource
prompt1 = prompts.create_version(prompt=prompt)

Requêtes de liste

Pour afficher les noms à afficher et les ID d'invite de toutes les invites enregistrées dans le projet Google Cloud actuel, utilisez la méthode list_prompts().

SDK Vertex AI pour Python

from vertexai.preview import prompts

prompts_metadata = prompts.list()

# Get a prompt from the list
prompt1 = prompts.get(prompt_id=prompts_metadata[0].prompt_id)

Lister les versions d'invite

Pour afficher les noms à afficher et les ID de version de toutes les versions d'invite enregistrées dans l'invite, utilisez la méthode list_versions() .

SDK Vertex AI pour Python

from vertexai.preview import prompts

prompt_versions_metadata = prompts.list_versions(prompt_id="123456789")

# Get a specific prompt version from the versions metadata list
prompt1 = prompts.get(
    prompt_id=prompt_versions_metadata[3].prompt_id,
    version_id=prompt_versions_metadata[3].version_id
)

Restaurer une version d'invite

Une ressource d'invite contient également un historique des versions qui stocke les versions précédentes enregistrées de l'invite. Vous pouvez utiliser la méthode restore_version() pour restaurer une version antérieure en tant que dernière version de l'invite. Cela renvoie PromptVersionMetadata, qui peut être utilisé avec un appel get() pour récupérer la version nouvellement restaurée.

SDK Vertex AI pour Python

from vertexai.preview import prompts

# Restore to prompt version id 1 (original)
prompt_version_metadata = prompts.restore_version(prompt_id="123456789", version_id="1")

# Fetch the newly restored latest version of the prompt
prompt1 = prompts.get(prompt_id=prompt_version_metadata.prompt_id)

Supprimer une requête

Pour supprimer la ressource en ligne associée à un ID d'invite, utilisez la méthode delete().

SDK Vertex AI pour Python

from vertexai.preview import prompts

prompts.delete(prompt_id="123456789")