Optimiseur zero-shot

L'optimiseur zero-shot vous permet d'affiner et d'améliorer automatiquement les requêtes rédigées par les utilisateurs. Souvent, une requête peut ne pas produire la réponse du modèle que vous souhaitez en raison d'un langage ambigu, d'un manque de contexte ou de l'inclusion d'informations non pertinentes. Cet optimiseur analyse et réécrit une requête existante pour la rendre plus claire, plus efficace et mieux adaptée aux capacités du modèle, ce qui permet d'obtenir des réponses de meilleure qualité.

L'optimiseur zero-shot est particulièrement utile pour :

  • S'adapter aux mises à jour des modèles : lorsque vous passez à une version plus récente d'un modèle, il est possible que vos requêtes existantes ne fonctionnent plus de manière optimale.

  • Améliorer la compréhension des requêtes : lorsque la formulation d'une requête est complexe ou peut être mal interprétée, l'outil peut la reformuler pour une clarté et une précision maximales, ce qui réduit le risque de résultat indésirable.

Vous pouvez utiliser l'optimiseur de deux façons :

  • Génération d'instructions : au lieu d'écrire des instructions système complexes à partir de zéro, vous pouvez décrire votre objectif ou votre tâche en langage clair. L'optimiseur générera ensuite un ensemble complet et bien structuré d'instructions système conçues pour atteindre votre objectif.

  • Affiner les requêtes : vous avez une requête qui fonctionne, mais la sortie du modèle est incohérente, légèrement hors sujet ou manque de détails. L'optimiseur peut vous aider à améliorer votre requête pour obtenir un meilleur résultat.

L'optimiseur est compatible avec l'optimisation des requêtes dans toutes les langues acceptées par Gemini. Il est disponible via le SDK Vertex AI.

Avant de commencer

Pour vous assurer que le compte de service Compute Engine par défaut dispose des autorisations nécessaires pour optimiser les requêtes, demandez à votre administrateur d'attribuer au compte de service Compute Engine par défaut les rôles IAM suivants dans le projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Votre administrateur peut également attribuer au compte de service Compute Engine par défaut les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Optimiser un prompt

# Import libraries
import vertexai
import logging

# Google Colab authentication
from google.colab import auth
PROJECT_NAME = "PROJECT"
auth.authenticate_user(project_id=PROJECT_NAME)

# Initialize the Vertex AI client
client = vertexai.Client(project=PROJECT_NAME, location='us-central1')

# Input original prompt to optimize
prompt = """You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.

Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.
"""

# Optimize prompt
output = client.prompt_optimizer.optimize_prompt(prompt=prompt)

# View optimized prompt
print(output.model_dump_json(indent=2))

Cet objet output est de type OptimizeResponse et fournit des informations sur le processus d'optimisation. La partie la plus importante est suggested_prompt, qui contient la requête optimisée que vous pouvez utiliser pour obtenir de meilleurs résultats de votre modèle. Les autres champs, en particulier applicable_guidelines, sont utiles pour comprendre pourquoi et comment votre requête a été améliorée, ce qui peut vous aider à rédiger de meilleures requêtes à l'avenir. Voici un exemple de résultat :

{
  "optimization_mode": "zero_shot",
  "applicable_guidelines": [
    {
      "applicable_guideline": "Structure",
      "suggested_improvement": "Add role definition.",
      "text_before_change": "...",
      "text_after_change": "Role: You are an AI assistant...\n\nTask Context:\n..."
    },
    {
      "applicable_guideline": "RedundancyInstructions",
      "suggested_improvement": "Remove redundant explanation.",
      "text_before_change": "...",
      "text_after_change": ""
    }
  ],
  "original_prompt": "...",
  "suggested_prompt": "Role: You are an AI assistant...\n\nTask Context:\n..."
}