Prompts optimieren

In diesem Dokument wird beschrieben, wie Sie mit dem Vertex AI-Prompt-Optimierer die Prompt-Leistung automatisch optimieren, indem Sie die Systemanleitungen für eine Reihe von Prompts verbessern.

Mit dem Vertex AI-Prompt-Optimierer können Sie Ihre Prompts schnell und in großem Umfang verbessern, ohne Systemanweisungen oder einzelne Prompts manuell neu zu schreiben. Das ist besonders nützlich, wenn Sie Systemanweisungen und Prompts, die für ein Modell geschrieben wurden, mit einem anderen Modell verwenden möchten.

Der Vertex AI-Prompt-Optimierer hilft Ihnen, Prompts zu verbessern, indem die Antwort des Modells auf Beispielprompts anhand der angegebenen Bewertungsmesswerte bewertet wird. Für die Verwendung des Vertex AI-Prompt-Optimierers benötigen Sie Folgendes:

  • Eine Reihe von Beispiel-Prompts
  • Systemanweisungen, die für alle Beispiel-Prompts verwendet werden
  • Eine Prompt-Vorlage, die auf Ihre Beispiel-Prompts verweist

Beispiel für die Prompt-Optimierung

Mit dem Vertex AI-Prompt-Optimierer können Sie beispielsweise Systemanweisungen für eine Reihe von Prompts optimieren, die auf Kontextinformationen verweisen, um Fragen zum Kochen zu beantworten. Für diese Aufgabe würden Sie die Eingaben so vorbereiten:

Systemanweisungen

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.

Prompt-Vorlage

Question: {input_question}
Facts: {input_context}

Beispiel-Prompts

input_question input_context
Welche Techniken gibt es zum Kochen von rotem Fleisch und Schweinefleisch, mit denen Geschmack und Zartheit maximiert und die Bildung ungesunder Verbindungen minimiert werden? Rotes Fleisch und Schweinefleisch sollten auf eine Kerntemperatur von 63 °C erhitzt werden, um für Sicherheit zu sorgen. Wenn Sie Fleisch in sauren Zutaten wie Zitronensaft oder Essig marinieren, können Sie es zarter machen, indem Sie die harten Muskelfasern abbauen. Bei hohen Temperaturen zubereitete Gerichte wie gegrillte oder angebratene Speisen können eine köstliche Bräunung und Karamellisierung hervorrufen. Es ist jedoch wichtig, dass sie nicht verbrennen, da sich dabei schädliche Verbindungen bilden können.
Wie kann ich Proteinshakes kreativ geschmackvoll und nahrhaft gestalten, ohne Zuckerzusatz oder künstliche Inhaltsstoffe zu verwenden? Blattgemüse wie Spinat oder Grünkohl ist eine gute Möglichkeit, den Nährwert Ihres Shakes zu steigern, ohne den Geschmack drastisch zu verändern. Wenn Sie ungesüßte Mandelmilch oder Kokoswasser anstelle von normaler Milch verwenden, können Sie dem Shake eine dezente Süße und eine Extraportion gesunde Fette bzw. Elektrolyte verleihen. Wusstest du, dass ein zu langes Mixen des Shakes ihn erhitzen kann? Damit die Zutaten kühl und erfrischend bleiben, sollten Sie kürzere Zeiträume mixen und dem Mixer bei Bedarf eine Pause gönnen.

Funktionsweise der Optimierung

Nachdem Sie die Eingaben vorbereitet haben, wählen Sie einen Optimierungsmodus, einen Bewertungsmesswert und ein Zielmodell aus.

  • Optimierungsmodus: Gibt an, ob der Vertex AI-Prompt-Optimierer die Systemanweisungen optimiert, Beispielprompts auswählt, die den Systemanweisungen als Few-Shot-Beispiele hinzugefügt werden sollen, oder beides.
  • Bewertungsmesswert: Der Messwert, mit dem der Vertex AI-Prompt-Optimierer die Systemanweisungen optimiert und/oder Beispielprompts auswählt.
  • Zielmodell: das Google-Modell, für das der Vertex AI Prompt Optimizer die Systemanweisungen optimiert und/oder Beispielprompts auswählt.

Wenn Sie den Vertex AI-Prompt-Optimierer ausführen, werden die Systemanweisungen basierend auf Ihren Auswahlen optimiert. Dazu wird ein benutzerdefinierter Trainingsjob ausgeführt, bei dem Ihre Beispielprompts iterativ bewertet und Ihre Systemanweisungen neu geschrieben werden, um die Version zu finden, die die beste Bewertung für das Zielmodell erzielt.

Am Ende des Jobs gibt der Vertex AI-Prompt-Optimierer die optimierten Systemanweisungen mit ihrer Bewertungsbewertung aus.

Optimierte Systemanweisungen

As a highly skilled chef with a passion for healthy cooking, you love sharing your knowledge with
aspiring chefs. Today, a culinary intern approaches you with a question about healthy cooking. Given
the intern's question and some facts, provide a clear, concise, and informative answer that will help
the intern excel in their culinary journey.

Unterstützte Modelle

Sie können Systemanweisungen für die Verwendung mit den folgenden Modellen optimieren:

Unterstützte Bewertungsmesswerte

Der Vertex AI-Prompt-Optimierer unterstützt benutzerdefinierte Bewertungsmesswerte sowie die folgenden Bewertungsmesswerte:

Messwerttyp Anwendungsfall Messwert Beschreibung
Modellbasiert Zusammenfassung summarization_quality Beschreibt die Fähigkeit des Modells, Fragen anhand eines als Referenz dienenden Textkörpers zu beantworten.
Question Answering question_answering_correctness* Beschreibt die Fähigkeit des Modells, eine Frage richtig zu beantworten.
question_answering_quality Beschreibt die Fähigkeit des Modells, Fragen anhand eines als Referenz dienenden Textkörpers zu beantworten.
Kohärenz coherence Beschreibt die Fähigkeit des Modells, eine kohärente Antwort zu geben, und misst, wie gut der generierte Text logisch aufgebaut ist und Sinn ergibt.
Sicherheit safety Gibt das Sicherheitslevel des Modells an, d. h., ob die Antwort unsicheren Text enthält.
Sprachkompetenz fluency Beschreibt die Sprachbeherrschung des Modells.
Fundierung groundedness Beschreibt die Fähigkeit des Modells, Informationen bereitzustellen oder zu referenzieren, die nur im Eingabetext enthalten sind.
Berechnungsbasiert Toolnutzung und Funktionsaufrufe tool_call_valid* Beschreibt die Fähigkeit des Modells, einen gültigen Tool-Aufruf vorherzusagen.
tool_name_match* Beschreibt die Fähigkeit des Modells, einen Toolaufruf mit dem richtigen Toolnamen vorherzusagen. Nur der erste Toolaufruf wird geprüft.
tool_parameter_key_match* Beschreibt die Fähigkeit des Modells, einen Toolaufruf mit den richtigen Parameternamen vorherzusagen.
tool_parameter_kv_match* Beschreibt die Fähigkeit des Modells, einen Toolaufruf mit den richtigen Parameternamen und Schlüsselwerten vorherzusagen.
Allgemeine Textgenerierung bleu* Enthält das Ergebnis eines Algorithmus zur Bewertung der Qualität der Vorhersage, die von einer natürlichen Sprache in eine andere natürliche Sprache übersetzt wurde. Die Qualität der Vorhersage wird als Übereinstimmung zwischen einem Vorhersageparameter und seinem Referenzparameter betrachtet.
exact_match* Berechnet, ob ein Vorhersageparameter genau mit einem Referenzparameter übereinstimmt.
rouge_1* Wird verwendet, um den angegebenen Vorhersageparameter mit einem Referenzparameter zu vergleichen.
rouge_2*
rouge_l*
rouge_l_sum*

* Wenn Sie Ihre Prompts mithilfe der question_answering_correctness- oder berechnungsbasierten Bewertungen optimieren möchten, müssen Sie eine der folgenden Aktionen ausführen:

  • Fügen Sie Ihrer Promptvorlage eine Variable hinzu, die die Grundwahrheit-Antwort für Ihre Prompts darstellt.
  • Wenn Sie keine Grundwahrheit-Antworten für Ihre Prompts haben, die Prompts aber bereits mit einem Google-Modell verwendet und die gewünschten Ergebnisse erzielt haben, können Sie Ihrer Konfiguration den Parameter source_model hinzufügen, anstatt Grundwahrheit-Antworten hinzuzufügen. Wenn der Parameter source_model festgelegt ist, führt Vertex AI Ihre Beispielprompts auf dem Quellmodell aus, um die Grundwahrheit-Antworten für Sie zu generieren.

Hinweise

Prompts optimieren

Sie können Prompts optimieren, indem Sie das Vertex AI-Notebook für den Prompt-Optimierung ausführen oder die Vertex AI API verwenden. Wenn Sie Prompts optimieren möchten, wählen Sie aus, mit welcher Methode Sie den Vertex AI-Prompt-Optimierer ausführen möchten, und führen Sie dann die Schritte aus, die in den folgenden Abschnitten ausführlich beschrieben werden:

  1. Vorlage für Prompts und außerdem Systemanweisungen erstellen
  2. Beispiel-Prompts vorbereiten
  3. Bewertungsmesswert auswählen
  4. Konfiguration erstellen
  5. Optimierungsjob für Prompts ausführen
  6. Ergebnisse analysieren und iterieren

Vorlage für Prompts und außerdem Systemanweisungen erstellen

Mit Promptvorlagen wird das Format aller Prompts über austauschbare Variablen definiert. Wenn Sie eine Promptvorlage zum Optimieren von Prompts verwenden, werden die Variablen durch die Daten im Prompt-Dataset ersetzt.

Promptvorlagenvariablen müssen die folgenden Anforderungen erfüllen:

  • Variablen müssen in geschweifte Klammern gesetzt sein.
  • Variablennamen dürfen keine Leerzeichen enthalten
  • Variablen, die multimodale Eingaben darstellen, müssen nach der Variablen den String MIME_TYPE enthalten:

    @@@MIME_TYPE
    

    Ersetzen Sie MIME_TYPE durch einen MIME-Typ für Bilder, Videos, Audio oder Dokumente, der vom Zielmodell unterstützt wird.

Erstellen Sie eine Vorlage für Prompts und außerdem Systemanweisungen mit einer der folgenden Methoden:

Notebook

Wenn Sie den Vertex AI-Prompt-Optimierer über das Notebook ausführen möchten, erstellen Sie Systemanweisungen und eine Prompt-Vorlage. Gehen Sie dazu so vor:

  1. Öffnen Sie in Colab Enterprise das Notebook für den Vertex AI-Prompt-Optimierer.

    Vertex AI-Notebook für den Prompt-Optimierer aufrufen

  2. Führen Sie im Abschnitt Vorlage für Prompts und außerdem Systemanweisungen erstellen die folgenden Schritte aus:

    1. Geben Sie im Feld SYSTEM_INSTRUCTION Ihre Systemanweisungen ein. Beispiel:

      Based on the following images and articles respond to the questions.'\n' Be concise,
      and answer \"I don't know\" if the response cannot be found in the provided articles or images.
      
    2. Geben Sie im Feld PROMPT_TEMPLATE die Promptvorlage ein. Beispiel:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
      
    3. Wenn Sie Ihre Prompts mithilfe der question_answering_correctness- oder berechnungsbasierten Bewertungen optimieren möchten, müssen Sie einen der folgenden Schritte ausführen:

    • Fügen Sie der Promptvorlage die Variable {target} hinzu, um die Grundwahrheit-Antwort des Prompts darzustellen. Beispiel:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • Wenn Sie keine Grundwahrheit-Antworten für Ihre Prompts haben, die Prompts aber bereits mit einem Google-Modell verwendet und die gewünschten Ergebnisse erzielt haben, können Sie Ihrer Konfiguration den Parameter source_model hinzufügen, anstatt Grundwahrheit-Antworten hinzuzufügen. Wenn der Parameter source_model festgelegt ist, führt der Vertex AI-Prompt-Optimierer Ihre Beispielprompts auf dem Quellmodell aus, um die Grundwahrheit-Antworten für Sie zu generieren.

SDK

Wenn Sie den Vertex AI-Prompt-Optimierer über das SDK ausführen möchten, ohne das Notebook zu verwenden, erstellen Sie Textdateien für die Prompt-Vorlage und die Systemanweisungen. Gehen Sie dazu so vor:

  1. Erstellen Sie eine Textdatei für Ihre Systemanweisungen.

  2. Definieren Sie in der Textdatei Ihre Systemanweisungen an die Textdatei. Beispiel:

    Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
    
  3. Erstellen Sie eine Textdatei für die Promptvorlage.

  4. Definieren Sie in der Textdatei eine Promptvorlage mit einer oder mehreren Variablen. Beispiel:

    Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
    
  5. Wenn Sie Ihre Prompts mithilfe der question_answering_correctness- oder berechnungsbasierten Bewertungen optimieren möchten, müssen Sie einen der folgenden Schritte ausführen:

    • Fügen Sie der Promptvorlage die Variable {target} hinzu, um die Grundwahrheit-Antwort des Prompts darzustellen. Beispiel:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • Wenn Sie keine Grundwahrheit-Antworten für Ihre Prompts haben, die Prompts aber bereits mit einem Google-Modell verwendet und die gewünschten Ergebnisse erzielt haben, können Sie Ihrer Konfiguration den Parameter source_model hinzufügen, anstatt Grundwahrheit-Antworten hinzuzufügen. Wenn der Parameter source_model festgelegt ist, führt der Vertex AI-Prompt-Optimierer Ihre Beispielprompts auf dem Quellmodell aus, um die Grundwahrheit-Antworten für Sie zu generieren.

Beispiel-Prompts vorbereiten

Die besten Ergebnisse mit dem Vertex AI Prompt Optimizer erzielen Sie mit 50 bis 100 Beispielprompts.

  • Das Tool kann auch mit nur fünf Beispiel-Prompts effektiv sein.
  • Die besten Stichproben enthalten Beispiele, bei denen das Zielmodell eine schlechte Leistung erzielt.

Die Beispielprompts enthalten die Daten, die die Variablen in der Promptvorlage ersetzen. Sie können eine JSONL- oder CSV-Datei verwenden, um Ihre Beispielprompts zu speichern.

JSONL-Datei

  1. Erstellen Sie eine JSONL-Datei.
  2. Fügen Sie in der JSONL-Datei die Prompt-Daten hinzu, die die einzelnen Variablen ersetzen. Beispiel:

    {"article_1": "The marine life …", "image_1": "gs://path_to_image", "Question": "What are some most effective ways to reduce ocean pollution?", "target": "The articles and images don't answer this question."}
    
    {"article_1": "During the year …", "image_1": "gs://path_to_image", "Question": "Who was the president in 2023?", "target": "Joe Biden"}
    
  3. Laden Sie die JSONL-Datei in einen Cloud Storage-Bucket hoch.

CSV-Datei

  1. CSV-Datei erstellen
  2. Fügen Sie in der ersten Zeile die Variablen aus Ihrer Prompt-Vorlage hinzu.
  3. Fügen Sie in den folgenden Zeilen die Beispieldaten ein, die die einzelnen Variablen ersetzen.
  4. Laden Sie die CSV-Datei in einen Cloud Storage-Bucket hoch.

Bewertungsmesswert auswählen

Der Vertex AI-Prompt-Optimierer verwendet Bewertungsmesswerte, um Systemanweisungen zu optimieren und Beispielprompts auszuwählen.

Wählen Sie einen der unterstützten Bewertungsmesswerte aus oder definieren Sie einen benutzerdefinierten Bewertungsmesswert. Benutzerdefinierte Messwerte sind nützlich, wenn Standardmesswerte nicht zu Ihrer Anwendung passen. Sie können Prompts anhand mehrerer Messwerte optimieren. Der Vertex AI Prompt Optimizer unterstützt jedoch nur einen benutzerdefinierten Messwert gleichzeitig. Sie können den Vertex AI-Prompt-Optimierungstool beispielsweise mit einem benutzerdefinierten Messwert und dem Messwert bleu oder mit den Messwerten bleu, rouge und summarization_quality ausführen. Sie können den Vertex AI-Prompt-Optimierungstool jedoch nicht mit mehreren benutzerdefinierten Messwerten gleichzeitig ausführen.

So erstellen Sie einen benutzerdefinierten Messwert:

  1. Erstellen Sie eine Textdatei mit dem Namen requirements.txt.

  2. Definieren Sie in der Datei requirements.txt die erforderlichen Bibliotheken für die Funktion des benutzerdefinierten Bewertungsmesswerts. Für alle Funktionen ist das Paket functions-framework erforderlich.

    Die requirements.txt-Datei für einen benutzerdefinierten Messwert, der ROUGE-L berechnet, könnte beispielsweise so aussehen:

    functions-framework==3.*
    rouge-score
    
  3. Erstellen Sie eine Python-Datei mit dem Namen main.py.

  4. Schreiben Sie in der Datei main.py Ihre benutzerdefinierte Bewertungsfunktion. Die Funktion muss Folgendes akzeptieren:

    • HTTP-POST-Anfragen
    • JSON-Eingabe mit response, der Ausgabe des LLM, und target, der Ground-Truth-Antwort für den Prompt.

    Die main.py-Datei für einen benutzerdefinierten Messwert, der ROUGE-L berechnet, könnte beispielsweise so aussehen:

    from typing import Any
    import json
    import functions_framework
    from rouge_score import rouge_scorer
    
    # Register an HTTP function with the Functions Framework
    @functions_framework.http
    def main(request):
       request_json = request.get_json(silent=True)
       if not request_json:
           raise ValueError('Can not find request json.')
    
       """Extract 'response' and 'target' from the request payload. 'response'
       represents the model's response, while 'target' represents the ground
       truth response."""
       response = request_json['response']
       reference = request_json['target']
    
       # Compute ROUGE-L F-measure
       scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True)
       scores = scorer.score(reference, response)
       final_score = scores['rougeL'].fmeasure
    
       # Return the custom score in the response
       return json.dumps({
           # The following key is the CUSTOM_METRIC_NAME that you pass to the job
           'custom_accuracy': final_score,
           # The following key is optional
           'explanation': 'ROUGE_L F-measure between reference and response',
       })
    
  5. Stellen Sie Ihre benutzerdefinierte Bewertungsfunktion als Cloud Run-Funktion bereit, indem Sie den Befehl gcloud functions deploy ausführen:

    gcloud functions deploy FUNCTION_NAME \
       --project PROJECT_ID \
       --gen2 \
       --memory=2Gb \
       --concurrency=6 \
       --min-instances 6 \
       --region=REGION \
       --runtime="python310" \
       --source="." \
       --entry-point main \
       --trigger-http \
       --timeout=3600 \
       --quiet
    

    Ersetzen Sie Folgendes:

    • FUNCTION_NAME: Der Name des benutzerdefinierten Bewertungsmesswerts.
    • PROJECT_ID: Ihre Projekt-ID.
    • REGION: die Region, in der Sie die Funktion bereitstellen möchten.

Konfiguration erstellen

In der Konfiguration des Vertex AI-Prompt-Optimierers werden die Parameter angegeben, die Sie für Ihren Prompt-Optimierungsjob festlegen möchten. Dazu gehören:

  • Optimierungsmodus: Gibt an, ob der Vertex AI-Prompt-Optimierer die Systemanweisungen optimiert, Beispielprompts auswählt, die den Systemanweisungen als Few-Shot-Beispiele hinzugefügt werden sollen, oder beides.
  • Bewertungsmesswert: Der Messwert, mit dem der Vertex AI-Prompt-Optimierer die Systemanweisungen optimiert und/oder Beispielprompts auswählt.
  • Zielmodell: das Google-Modell, für das der Vertex AI Prompt Optimizer die Systemanweisungen optimiert und/oder Beispielprompts auswählt.

Erstellen Sie eine Konfiguration mit einer der folgenden Optionen:

Notebook

Wenn Sie den Vertex AI-Prompt-Optimierer über das Notebook ausführen möchten, erstellen Sie eine Konfiguration. Gehen Sie dazu so vor:

  1. Öffnen Sie in Colab Enterprise das Notebook für den Vertex AI-Prompt-Optimierer.

    Vertex AI-Notebook für den Prompt-Optimierer aufrufen

  2. Führen Sie im Bereich Projekteinstellungen konfigurieren die folgenden Schritte aus:

    1. Geben Sie im Feld PROJECT_ID Ihre Projekt-ID ein.
    2. Geben Sie im Feld LOCATION den Standort ein, an dem Sie den Vertex AI-Prompt-Optimierer ausführen möchten.
    3. Geben Sie im Feld OUTPUT_PATH den URI für den Cloud Storage-Bucket ein, in dem der Vertex AI-Prompt-Optimierer die optimierten Systemanweisungen und/oder Few-Shot-Beispiele speichern soll. Beispiel: gs://bucket-name/output-path.
    4. Geben Sie im Feld INPUT_PATH den URI für die Beispielprompts in Ihrem Cloud Storage-Bucket ein. Beispiel: gs://bucket-name/sample-prompts.jsonl
  3. Gehen Sie im Bereich Optimierungseinstellungen konfigurieren so vor:

    1. Geben Sie im Feld TARGET_MODEL das Modell ein, für das Sie Prompts optimieren möchten.
    2. Geben Sie unter OPTIMIZATION_MODE den gewünschten Optimierungsmodus ein. Muss instruction oder demonstration oder instruction_and_demo sein.
    3. Geben Sie im Feld EVAL_METRIC den Bewertungsmesswert ein, anhand dessen die Prompts optimiert werden sollen.
    4. Optional: Geben Sie im Feld SOURCE_MODEL das Google-Modell ein, mit dem die Systemanweisungen und Prompts zuvor verwendet wurden. Wenn der Parameter source_model festgelegt ist, führt der Vertex AI-Prompt-Optimierer Ihre Beispielprompts auf dem Quellmodell aus, um die Grundwahrheit-Antworten für Sie zu generieren. Das ist für Bewertungsmesswerte erforderlich, für die Grundwahrheit-Antworten erforderlich sind. Wenn Sie Ihre Prompts noch nicht mit einem Google-Modell ausgeführt haben oder Ihre Zielergebnisse nicht erreicht haben, fügen Sie dem Prompt stattdessen Grundwahrheit-Antworten hinzu. Weitere Informationen finden Sie in diesem Dokument im Abschnitt Prompt und Systemanweisungen erstellen.
  4. Optional: Im Abschnitt Erweiterte Optimierungseinstellungen konfigurieren können Sie Ihrer Konfiguration optionale Parameter hinzufügen.

  5. Optionale Parameter ansehen
    • Geben Sie im Feld NUM_INST_OPTIMIZATION_STEPS die Anzahl der Iterationen ein, die der Vertex AI-Prompt-Optimierer im Modus zur Anweisungsoptimierung verwendet. Die Laufzeit erhöht sich linear, wenn Sie diesen Wert erhöhen. Muss eine Ganzzahl zwischen 10 und 20 sein. Wenn Sie diese Option nicht festlegen, ist der Standardwert 10.
    • Geben Sie im Feld NUM_TEMPLATES_PER_STEP die Anzahl der Systemanweisungen ein, die der Vertex AI-Prompt-Optimierer generiert und bewertet. Wird mit dem Optimierungsmodus instruction und instruction_and_demo verwendet. Muss eine Ganzzahl zwischen 1 und 4 sein. Wenn Sie diese Option nicht festlegen, ist der Standardwert 2.
    • Geben Sie im Feld NUM_DEMO_OPTIMIZATION_STEPS die Anzahl der Demos ein, die vom Vertex AI-Prompt-Optimierer ausgewertet werden sollen. Wird mit dem Optimierungsmodus demonstration und instruction_and_demo verwendet. Muss eine Ganzzahl zwischen 10 und 30 sein. Wenn nicht festgelegt, ist der Standardwert 10.
    • Geben Sie im Feld NUM_DEMO_PER_PROMPT die Anzahl der Demos ein, die pro Prompt generiert werden sollen. Muss eine Ganzzahl zwischen 3 und 6 sein. Wenn nicht festgelegt, ist der Standardwert 3.
    • Geben Sie im Feld TARGET_MODEL_QPS die Anzahl der Abfragen pro Sekunde ein, die der Vertex AI-Prompt-Optimierer an das Zielmodell sendet. Die Laufzeit sinkt linear, wenn Sie diesen Wert erhöhen. Muss ein Gleitkommazahl sein, der mindestens 3.0 beträgt, aber kleiner als das QPS-Kontingent ist, das Sie für das Zielmodell haben. Wenn nicht festgelegt, ist der Standardwert 3.0.
    • Geben Sie im Feld SOURCE_MODEL_QPS die Anzahl der Abfragen pro Sekunde ein, die der Vertex AI-Prompt-Optimierer an das Quellmodell sendet. Muss ein Gleitkommazahl sein, der mindestens 3.0, aber kleiner als das Abfragekontingent pro Sekunde für das Quellmodell ist. Wenn nicht festgelegt, ist der Standardwert 3.0.
    • Geben Sie im Feld EVAL_QPS die Anzahl der Abfragen pro Sekunde (QPS) ein, die der Vertex AI-Prompt-Optimierer an das Bewertungsmodell gemini-1.5-pro sendet.
      • Bei modellbasierten Messwerten muss es sich um eine Gleitkommazahl handeln, die mindestens 3.0 beträgt, aber kleiner als das Kontingent für gemini-1.5-pro ist. Wenn nicht festgelegt, ist der Standardwert 3.0.
      • Bei benutzerdefinierten Messwerten muss es sich um eine Gleitkommazahl handeln, die mindestens 3.0 beträgt. Damit wird die Häufigkeit festgelegt, mit der der Vertex AI-Prompt-Optimierer Ihre Cloud Run-Funktionen mit benutzerdefinierte Messwerte aufruft.
    • Wenn Sie mehr als einen Bewertungsmesswert verwenden möchten, gehen Sie so vor:
      1. Geben Sie im Feld EVAL_METRIC_1 den gewünschten Bewertungsmesswert ein.
      2. Geben Sie im Feld EVAL_METRIC_1_WEIGHT das Gewicht ein, das der Vertex AI-Prompt-Optimierer bei der Optimierung verwenden soll.
      3. Geben Sie im Feld EVAL_METRIC_2 den gewünschten Bewertungsmesswert ein.
      4. Geben Sie im Feld EVAL_METRIC_2_WEIGHT das Gewichtung ein, das der Vertex AI-Prompt-Optimierer bei der Optimierung verwenden soll.
      5. Geben Sie optional im Feld EVAL_METRIC_3 einen Bewertungsmesswert ein, den Sie verwenden möchten.
      6. Geben Sie optional im Feld EVAL_METRIC_3_WEIGHT ein
      7. Geben Sie im Feld METRIC_AGGREGATION_TYPE das Gewichtung ein, das der Vertex AI-Prompt-Optimierer bei der Optimierung verwenden soll.
    • Geben Sie im Feld PLACEHOLDER_TO_VALUE die Informationen ein, die alle Variablen in den Systemanweisungen ersetzen. Informationen, die in diesem Flag enthalten sind, werden nicht vom Vertex AI-Prompt-Optimierer optimiert.
    • Geben Sie im Feld RESPONSE_MIME_TYPE den MIME-Antworttyp ein, den das Zielmodell verwendet. Muss text/plain oder application/json sein. Wenn nicht festgelegt, ist der Standardwert text/plain.
    • Geben Sie im Feld TARGET_LANGUAGE die Sprache der Systemanweisungen ein. Wenn Sie dieses Feld leer lassen, ist die Standardeinstellung Englisch.

SDK

Wenn Sie den Vertex AI-Prompt-Optimierer über das SDK ausführen möchten, erstellen Sie eine JSON-Datei mit den Parametern, die Sie zum Optimieren von Prompts verwenden möchten. Gehen Sie dazu so vor:

  1. Erstellen Sie eine JSON-Datei mit den Parametern, mit denen Sie Ihre Prompts optimieren möchten. Für jede Konfigurationsdatei sind die folgenden Parameter erforderlich:

    {
     "project": "PROJECT_ID",
     "system_instruction_path": "SYSTEM_INSTRUCTION_PATH",
     "prompt_template_path": "PROMPT_TEMPLATE_PATH",
     "target_model": "TARGET_MODEL",
     EVALUATION_METRIC_PARAMETERS,
     "optimization_mode": "OPTIMIZATION_MODE",
     "input_data_path": "SAMPLE_PROMPT_URI",
     "output_path": "OUTPUT_URI"
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • SYSTEM_INSTRUCTION_PATH: Der URI für die Systemanweisungen in Ihrem Cloud Storage-Bucket. Beispiel: gs://bucket-name/system-instruction.txt
    • PROMPT_TEMPLATE: Der URI für die Promptvorlage in Ihrem Cloud Storage-Bucket. Beispiel: gs://bucket-name/prompt-template.txt
    • TARGET_MODEL: das Modell, für das Sie Prompts optimieren möchten
    • EVALUATION_METRIC_PARAMETERS: Die von Ihnen angegebenen Parameter hängen davon ab, wie viele Bewertungsmesswerte Sie verwenden und ob die Messwerte standardmäßig oder benutzerdefiniert sind:

      Einzelner Standardmesswert

      Wenn Sie einen einzelnen unterstützten Bewertungsmesswert verwenden, verwenden Sie den folgenden Parameter:

       "eval_metric": "EVALUATION_METRIC",
       

      Ersetzen Sie EVALUATION_METRIC durch den Bewertungsmesswert, für den Sie die Prompts optimieren möchten.

      Einzelner benutzerdefinierter Messwert

      Wenn Sie einen einzelnen benutzerdefinierten Bewertungsmesswert verwenden, verwenden Sie die folgenden Parameter:

      "eval_metric": "custom_metric",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      Ersetzen Sie Folgendes:

      • CUSTOM_METRIC_NAME: Der Messwertname, wie er durch den Schlüssel definiert ist, der der final_score entspricht. Beispiel: custom_accuracy.
      • FUNCTION_NAME: der Name der zuvor bereitgestellten Cloud Run-Funktion.

      Mehrere Standardmesswerte

      Wenn Sie mehrere unterstützte Bewertungsmesswerte verwenden, verwenden Sie die folgenden Parameter:

      "eval_metrics_types": [EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      

      Ersetzen Sie Folgendes:

      • EVALUATION_METRIC_LIST: Eine Liste von Bewertungsmesswerten. muss ein Array sein. Beispiel: "bleu", "summarization_quality"
      • EVAL_METRICS_WEIGHTS: das Gewicht für jeden Messwert. muss ein Array sein.
      • METRIC_AGGREGATION_TYPE: die Art der Aggregation, die für die Bewertungsmesswerte verwendet wird. Muss weighted_sum oder weighted_average sein. Wenn nicht festgelegt, ist der Standardwert weighted_sum.

      Mehrere Standard- und benutzerdefinierte Messwerte

      Wenn Sie mehrere Bewertungsmesswerte verwenden, die eine Mischung aus benutzerdefinierten und standardmäßigen Messwerten umfassen, verwenden Sie die folgenden Parameter:

      "eval_metrics_types": ["custom_metric", EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      Ersetzen Sie Folgendes:

      • EVALUATION_METRIC_LIST: Eine Liste der standardmäßigen Bewertungsmesswerte. muss ein Array sein. Beispiel: "bleu", "summarization_quality"
      • EVAL_METRICS_WEIGHTS: das Gewicht für jeden Messwert. muss ein Array sein.
      • METRIC_AGGREGATION_TYPE: die Art der Aggregation, die für die Bewertungsmesswerte verwendet wird. Muss weighted_sum oder weighted_average sein. Wenn nicht festgelegt, ist der Standardwert weighted_sum.
      • CUSTOM_METRIC_NAME: Der Messwertname, wie er durch den Schlüssel definiert ist, der der final_score entspricht. Beispiel: custom_accuracy
      • FUNCTION_NAME: der Name der zuvor bereitgestellten Cloud Run-Funktion.
    • OPTIMIZATION_MODE: den Optimierungsmodus. Muss instruction oder demonstration oder instruction_and_demo sein.

    • SAMPLE_PROMPT_URI: Der URI für die Beispielprompts in Ihrem Cloud Storage-Bucket. Beispiel: gs://bucket-name/sample-prompts.jsonl

    • OUTPUT_URI: Der URI für den Cloud Storage-Bucket, in dem der Vertex AI-Prompt-Optimierer die optimierten Systemanweisungen und/oder Few-Shot-Beispiele speichern soll. Beispiel: gs://bucket-name/output-path.

  2. Sie können der Konfigurationsdatei auch optionale Parameter hinzufügen.

    Optionale Parameter sind in fünf Kategorien unterteilt:

    • Parameter des Optimierungsprozesses Diese Parameter steuern den gesamten Optimierungsprozess, einschließlich seiner Dauer und der Anzahl der durchgeführten Optimierungsiterationen, was sich direkt auf die Qualität der Optimierungen auswirkt.
    • Modellauswahl und Standortparameter Mit diesen Parametern wird angegeben, welche Modelle der Vertex AI-Prompt-Optimierer verwendet und an welchen Orten diese Modelle verwendet werden.
    • Parameter für die Latenz (Abfragen pro Sekunde, QPS) Diese Parameter steuern die QPS und wirken sich auf die Geschwindigkeit des Optimierungsprozesses aus.
    • Sonstige Andere Parameter, die die Struktur und den Inhalt von Prompts steuern.

      Optionale Parameter ansehen
      "num_steps": NUM_INST_OPTIMIZATION_STEPS,
      "num_template_eval_per_step": NUM_TEMPLATES_PER_STEP,
      "num_demo_set_candidates": "NUM_DEMO_OPTIMIZATION_STEPS,
      "demo_set_size": NUM_DEMO_PER_PROMPT,
      "target_model_location": "TARGET_MODEL_LOCATION",
      "source_model": "SOURCE_MODEL",
      "source_model_location": "SOURCE_MODEL_LOCATION",
      "target_model_qps": TARGET_MODEL_QPS,
      "eval_qps": EVAL_QPS,
      "source_model_qps": SOURCE_MODEL_QPS,
      "response_mime_type": "RESPONSE_MIME_TYPE",
      "language": "TARGET_LANGUAGE",
      "placeholder_to_content": "PLACEHOLDER_TO_CONTENT",
      "data_limit": DATA_LIMIT
      

      Ersetzen Sie Folgendes:

      • Parameter für den Optimierungsprozess:

        • NUM_INST_OPTIMIZATION_STEPS: Die Anzahl der Iterationen, die der Vertex AI-Prompt-Optimierer im Modus zur Anweisungsoptimierung verwendet. Die Laufzeit erhöht sich linear, wenn Sie diesen Wert erhöhen. Muss eine Ganzzahl zwischen 10 und 20 sein. Wenn Sie diese Option nicht festlegen, ist der Standardwert 10.
        • NUM_TEMPLATES_PER_STEP: die Anzahl der Systemanweisungen, die der Vertex AI-Prompt-Optimierer generiert und bewertet. Wird mit dem Optimierungsmodus instruction und instruction_and_demo verwendet. Muss eine Ganzzahl zwischen 1 und 4 sein. Wenn Sie diese Option nicht festlegen, ist der Standardwert 2.
        • NUM_DEMO_OPTIMIZATION_STEPS: die Anzahl der Demonstrationen, die der Vertex AI-Prompt-Optimierer auswertet. Wird mit dem Optimierungsmodus demonstration und instruction_and_demo verwendet. Muss eine Ganzzahl zwischen 10 und 30 sein. Wenn Sie diese Option nicht festlegen, ist der Standardwert 10.
        • NUM_DEMO_PER_PROMPT: die Anzahl der pro Prompt generierten Demonstrationen. Muss eine Ganzzahl zwischen 3 und 6 sein. Wenn nicht festgelegt, ist der Standardwert 3.
      • Modellauswahl und Standortparameter:

        • TARGET_MODEL_LOCATION: Standort, an dem das Zielmodell ausgeführt werden soll. Wenn nicht festgelegt, ist der Standardwert us-central1.
        • SOURCE_MODEL: das Google-Modell, mit dem die Systemanweisungen und Prompts zuvor verwendet wurden. Wenn der Parameter source_model festgelegt ist, führt Vertex AI Ihre Beispielprompts im Quellmodell aus, um die Grundwahrheit-Antworten für Sie zu generieren. Das ist für Bewertungsmesswerte erforderlich, für die Grundwahrheit-Antworten erforderlich sind. Wenn Sie Ihre Prompts zuvor nicht mit einem Google-Modell ausgeführt haben oder die gewünschten Ergebnisse nicht erzielt haben, fügen Sie Ihrem Prompt stattdessen Grundwahrheit-Antworten hinzu. Weitere Informationen finden Sie in diesem Dokument im Abschnitt Prompt und Systemanweisungen erstellen.
        • SOURCE_MODEL_LOCATION: Speicherort, an dem das Quellmodell ausgeführt werden soll. Wenn nicht festgelegt, ist der Standardwert us-central1.
      • Parameter für die Latenz (Abfragen pro Sekunde, QPS):

        • TARGET_MODEL_QPS: Die Anzahl der Abfragen pro Sekunde (QPS), die der Vertex AI-Prompt-Optimierer an das Zielmodell sendet. Die Laufzeit nimmt linear ab, wenn Sie diesen Wert erhöhen. Muss ein Gleitkommazahl sein, der mindestens 3.0 beträgt, aber kleiner als das QPS-Kontingent ist, das Sie für das Zielmodell haben. Wenn nicht festgelegt, ist der Standardwert 3.0.
        • EVAL_QPS: die Anzahl der Abfragen pro Sekunde (Queries per Second, QPS), die der Vertex AI-Prompt-Optimierer an das Bewertungsmodell gemini-1.5-pro sendet.
          • Bei modellbasierten Messwerten muss es sich um eine Gleitkommazahl handeln, die mindestens 3.0 beträgt, aber kleiner als das Kontingent für gemini-1.5-pro ist. Wenn nicht festgelegt, ist der Standardwert 3.0.
          • Bei benutzerdefinierten Messwerten muss es sich um eine Gleitkommazahl handeln, die mindestens 3.0 beträgt. Damit wird die Häufigkeit festgelegt, mit der der Vertex AI-Prompt-Optimierer Ihre Cloud Run-Funktionen mit benutzerdefinierte Messwerte aufruft.
        • SOURCE_MODEL_QPS: die Anzahl der Abfragen pro Sekunde (QPS), die der Vertex AI-Prompt-Optimierer an das Quellmodell sendet. Muss ein Gleitkommazahl sein, der mindestens 3.0, aber kleiner als das Abfragekontingent pro Sekunde für das Quellmodell ist. Wenn nicht festgelegt, ist der Standardwert 3.0.
      • Sonstige Parameter:

        • RESPONSE_MIME_TYPE: Der MIME-Antworttyp, der vom Zielmodell verwendet wird. Muss text/plain oder application/json sein. Wenn nicht festgelegt, ist der Standardwert text/plain.
        • TARGET_LANGUAGE: die Sprache der Systemanweisungen. Wenn Sie dieses Feld leer lassen, ist die Standardeinstellung Englisch.
        • PLACEHOLDER_TO_CONTENT: die Informationen, die alle Variablen in den Systemanweisungen ersetzen. Informationen, die in diesem Flag enthalten sind, werden nicht vom Vertex AI-Prompt-Optimierer optimiert.
        • DATA_LIMIT: die Menge der Daten, die für die Validierung verwendet werden. Die Laufzeit steigt linear mit diesem Wert. Muss eine Ganzzahl zwischen 5 und 100 sein. Wenn nicht festgelegt, ist der Standardwert 100.
  3. Laden Sie die JSON-Datei in einen Cloud Storage-Bucket hoch.

Prompt-Optimierer ausführen

Führen Sie den Vertex AI-Prompt-Optimierer mit einer der folgenden Optionen aus:

Notizbuch

Führen Sie den Vertex AI-Prompt-Optimierer über das Notebook aus. Gehen Sie dazu so vor:

  1. Öffnen Sie in Colab Enterprise das Notebook für den Vertex AI-Prompt-Optimierer.

    Vertex AI-Notebook für den Prompt-Optimierer aufrufen

  2. Klicken Sie im Bereich Prompt-Optimierungstool ausführen auf play_circle Zelle ausführen.

    Der Vertex AI Prompt Optimizer wird ausgeführt.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: den Speicherort, an dem Sie den Vertex AI-Prompt-Optimierer ausführen möchten.
  • PROJECT_ID: Ihre Projekt-ID.
  • JOB_NAME: Ein Name für den Vertex AI-Prompt-Optimierungsjob.
  • PATH_TO_CONFIG: den URI der Konfigurationsdatei in Ihrem Cloud Storage-Bucket. Beispiel: gs://bucket-name/configuration.json.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

JSON-Text der Anfrage:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "n1-standard-4"
        },
        "replicaCount": 1,
        "containerSpec": {
          "imageUri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
          "args": ["--config=PATH_TO_CONFIG""]
        }
      }
    ]
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Die Antwort sieht dann ungefähr so aus:

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import aiplatform

# Initialize Vertex AI platform
aiplatform.init(project=PROJECT_ID, location="us-central1")

# TODO(Developer): Check and update lines below
# cloud_bucket = "gs://cloud-samples-data"
# config_path = f"{cloud_bucket}/instructions/sample_configuration.json"
# output_path = "custom_job/output/"

custom_job = aiplatform.CustomJob(
    display_name="Prompt Optimizer example",
    worker_pool_specs=[
        {
            "replica_count": 1,
            "container_spec": {
                "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
                "args": [f"--config={cloud_bucket}/{config_path}"],
            },
            "machine_spec": {
                "machine_type": "n1-standard-4",
            },
        }
    ],
    staging_bucket=cloud_bucket,
    base_output_dir=f"{cloud_bucket}/{output_path}",
)

custom_job.submit()
print(f"Job resource name: {custom_job.resource_name}")
# Example response:
#    'projects/123412341234/locations/us-central1/customJobs/12341234123412341234'

Ergebnisse analysieren und iterieren

Nachdem Sie den Vertex AI-Prompt-Optimierer ausgeführt haben, können Sie den Fortschritt des Jobs mit einer der folgenden Optionen prüfen:

Notebook

Wenn Sie die Ergebnisse des Vertex AI-Prompt-Optimierers über das Notebook ansehen möchten, gehen Sie so vor:

  1. Öffnen Sie das Vertex AI-Notebook für den Prompt-Optimierer.

  2. Führen Sie im Abschnitt Ergebnisse prüfen die folgenden Schritte aus:

    1. Fügen Sie im Feld RESULT_PATH den URI des Cloud Storage-Buckets hinzu, in den der Vertex AI-Prompt-Optimierer Ergebnisse schreiben soll. Beispiel: gs://bucket-name/output-path.

    2. Klicken Sie auf play_circle Zelle ausführen.

Console

  1. Rufen Sie in der Google Cloud Console im Abschnitt "Vertex AI" die Seite Trainingspipelines auf.

    Zur Trainingspipeline

  2. Klicken Sie auf den Tab Benutzerdefinierte Jobs. Der benutzerdefinierte Trainingsjob des Vertex AI-Prompt-Optimierers wird in der Liste zusammen mit seinem Status angezeigt.

Wenn der Job abgeschlossen ist, können Sie die Optimierungen überprüfen:

  1. Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.

    Buckets aufrufen

  2. Klicken Sie den Name Ihres Cloud Storage-Buckets

  3. Rufen Sie den Ordner auf, der den Namen des Optimierungsmodus hat, mit dem Sie die Prompts bewertet haben, also entweder instruction oder demonstration. Wenn Sie den Modus instruction_and_demo verwendet haben, werden beide Ordner angezeigt. Der Ordner instruction enthält die Ergebnisse der Systemanweisungsoptimierung, während der Ordner demonstration die Ergebnisse der demonstration-Optimierung und die optimierten Systemanweisungen enthält.

    Der Ordner enthält die folgenden Dateien:

    • config.json: die vollständige Konfiguration, die vom Vertex AI-Prompt-Optimierer verwendet wurde.
    • templates.json: jede Gruppe von Systemanweisungen und/oder Few-Shot-Beispielen, die der Vertex AI-Prompt-Optimierer generiert hat und deren Bewertung.
    • eval_results.json: Die Antwort des Zielmodells für jeden Beispiel-Prompt, für jeden Satz generierter Systemanweisungen und/oder Few-Shot-Beispiele und deren Bewertungsbewertung.
    • optimized_results.json: die leistungsstärksten Systemanweisungen und/oder Few-Shot-Beispiele und ihre Bewertung.
  4. Die optimierten Systemanweisungen finden Sie in der Datei optimized_results.json.

Nächste Schritte