Zero-Shot-Optimierung

Mit dem Zero-Shot-Optimizer können Sie von Nutzern verfasste Prompts automatisch verfeinern und verbessern. Oft liefert ein Prompt aufgrund von mehrdeutigen Formulierungen, fehlendem Kontext oder der Einbeziehung irrelevanter Informationen nicht die gewünschte Modellantwort. Dieser Optimizer analysiert und überarbeitet einen vorhandenen Prompt, damit er klarer, effektiver und besser auf die Fähigkeiten des Modells abgestimmt ist. So werden letztendlich Antworten von höherer Qualität erzielt.

Der Zero-Shot-Optimizer ist besonders nützlich für:

  • Anpassung an Modellupdates:Wenn Sie auf eine neuere Version eines Modells umsteigen, funktionieren Ihre vorhandenen Prompts möglicherweise nicht mehr optimal.

  • Verbesserung des Prompt-Verständnisses:Wenn die Formulierung eines Prompts komplex ist oder falsch interpretiert werden könnte, kann das Tool sie so umformulieren, dass sie maximal klar und präzise ist. So wird die Wahrscheinlichkeit eines unerwünschten Ergebnisses verringert.

Es gibt zwei Möglichkeiten, den Optimizer zu verwenden:

  • Anweisungsgenerierung: Anstatt komplexe Systemanweisungen von Grund auf neu zu schreiben, können Sie Ihr Ziel oder Ihre Aufgabe in einfacher Sprache beschreiben. Der Optimizer generiert dann eine vollständige und gut strukturierte Reihe von Systemanweisungen, die auf die Erreichung Ihres Ziels ausgerichtet sind.

  • Prompt-Verfeinerung: Sie haben einen funktionierenden Prompt, aber die Ausgabe des Modells ist inkonsistent, leicht themenfremd oder enthält nicht die gewünschten Details. Der Optimizer kann helfen, den Prompt zu verbessern, um eine bessere Ausgabe zu erzielen.

Der Optimizer unterstützt die Prompt-Optimierung in allen von Gemini unterstützten Sprachen und ist über das Agent Platform SDK verfügbar.

Hinweis

Damit das Compute Engine-Standarddienstkonto die erforderlichen Berechtigungen zum Optimieren von Prompts hat, bitten Sie Ihren Administrator, ihm und einem Nutzerkonto mit der Rolle „Agent Platform User“ (roles/aiplatform.user) die folgenden IAM-Rollen für das Projekt zu gewähren:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Ihr Administrator kann dem Compute Engine-Standarddienstkonto und Ihrem Nutzerkonto möglicherweise auch die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollenerteilen.

Prompt optimieren

# 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 Agent Platform 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))

Dieses output-Objekt hat den Typ OptimizeResponse und enthält Informationen zum Optimierungsprozess. Der wichtigste Teil ist suggested_prompt. Er enthält den optimierten Prompt, mit dem Sie bessere Ergebnisse von Ihrem Modell erhalten können. Die anderen Felder, insbesondere applicable_guidelines, sind nützlich, um zu verstehen, warum und wie Ihr Prompt verbessert wurde. So können Sie in Zukunft bessere Prompts schreiben. Hier ein Beispiel für die Ausgabe:

{
  "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..."
}

Für kleinere Modelle optimieren

Kleinere Modelle wie Gemma 3n E4B haben andere Fähigkeiten zur Befolgung von Anweisungen als größere Modelle. Prompts, die für große Modelle gut funktionieren, sind möglicherweise nicht optimal für diese kleineren Modelle. Der Zero-Shot-Optimizer bietet einen gemini_nano-Modus, um dieses Problem zu beheben. Im gemini_nano-Modus wird Ihr Prompt so verfeinert, dass er speziell auf die Eigenschaften kleinerer Modelle abgestimmt ist. So können Prompts generiert werden, die besser zu den Fähigkeiten kleinerer Modelle passen.

Das folgende Beispiel zeigt, wie Sie einen Prompt für kleinere Modelle optimieren:

client = vertexai.Client(project=PROJECT_NAME, location='us-central1')
prompt = 'Generate system instructions for analyzing medical articles'

# optimize_prompt returns OptimizeResponse type, which has 2 fields: raw_text_response and parsed_response
# raw_text_response is guaranteed and always will be given to the user.
# parsed_response is not guaranteed. If parsing is possible, the parsed response is stored in this field.
#    parsed_response contains the following 4 fields:
#    optimization_type, applicable_guidelines, original_prompt, suggested_prompt
response = client.prompt_optimizer.optimize_prompt(
    prompt=prompt,
    config=vertexai.types.OptimizeConfig(
        optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_GEMINI_NANO
        )
    )

# print(response.raw_text_response)
print(response.parsed_response.suggested_prompt)