כלי אופטימיזציה של הנחיות שמבוסס על נתונים

במאמר הזה מוסבר איך להשתמש בכלי האופטימיזציה מבוסס-הנתונים כדי לבצע אופטימיזציה אוטומטית של ביצועי ההנחיות, על ידי שיפור ההוראות למערכת עבור קבוצה של הנחיות.

הכלי האופטימיזציה מבוסס-הנתונים יכול לעזור לכם לשפר את ההנחיות במהירות ובקנה מידה גדול, בלי שתצטרכו לשכתב באופן ידני את הוראות המערכת או הנחיות ספציפיות. האפשרות הזו שימושית במיוחד כשרוצים להשתמש במודל אחר בהנחיות ובפקודות מערכת שנכתבו עבור מודל מסוים.

דוגמה לאופטימיזציה של פרומפט

לדוגמה, כדי לבצע אופטימיזציה של הוראות המערכת עבור קבוצה של הנחיות שמפנות למידע הקשרי כדי לענות על שאלות בנושא בישול, אפשר להשתמש בכלי האופטימיזציה מבוסס-הנתונים. כדי להשלים את המשימה הזו, צריך להכין את נתוני הקלט באופן הבא:

הוראות מערכת

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.

תבנית לפרומפט

Question: {input_question}
Facts: {input_context}

פרומפטים לדוגמה

input_question input_context
אילו טכניקות בישול של בשר אדום ובשר חזיר מאפשרות למקסם את הטעם והרכות, תוך צמצום היווצרות של תרכובות לא בריאות? כדי לוודא שצריכת בשר אדום ובשר חזיר בטוחה, צריך לבשל אותם עד לטמפרטורה פנימית של 63 מעלות צלזיוס. השריית בשר במרינדה עם רכיבים חומציים כמו מיץ לימון או חומץ יכולה לעזור לרכך אותו על ידי פירוק סיבי שריר קשים. שיטות בישול בחום גבוה, כמו צלייה וטיגון במחבת, יכולות ליצור השחמה וקרמליזציה טעימות, אבל חשוב להימנע מחריכה, שעלולה ליצור תרכובות מזיקות.
אילו דרכים יצירתיות יש להוסיף טעם וערך תזונתי לשייקים של חלבון בלי להשתמש בתוספת סוכר או ברכיבים מלאכותיים? הוספה של ירקות עליים כמו תרד או קייל היא דרך מצוינת להגדיל את הערך התזונתי של השייק בלי לשנות את הטעם שלו באופן משמעותי. שימוש בחלב שקדים לא ממותק או במי קוקוס במקום בחלב רגיל יכול להוסיף מתיקות עדינה וגם שומנים בריאים או אלקטרוליטים, בהתאמה. ידעתם שערבוב יתר של השייק עלול לחמם אותו? כדי לשמור על המיקסר קריר ורענן, מפעילים אותו לפרקי זמן קצרים יותר ומפסיקים אותו מדי פעם אם צריך.

הוראות מערכת שעברו אופטימיזציה

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.

איך האופטימיזציה פועלת

הכלי לאופטימיזציה מבוססת-נתונים מקבל את הפרמטרים הבאים:

  • מצב אופטימיזציה: מציין מה צריך לעבור אופטימיזציה. הוא יכול להיות אחד מהבאים:
    • ‫instruction: אופטימיזציה של הוראות המערכת.
    • ‫demonstration: בחירה של פרומפטים לדוגמה להוספה להוראות המערכת כדוגמאות של פרומפט עם כמה דוגמאות (few-shot).
    • ‫instruction_and_demo: ביצוע שתי הפעולות שלמעלה.
  • מדדי הערכה: המדדים שבהם הכלי לאופטימיזציה מבוססת-נתונים משתמש כדי לבצע אופטימיזציה של הוראות המערכת ו/או לבחור הנחיות לדוגמה.
  • מודל היעד: המודל של Google שעליו מבוסס האופטימיזציה של הוראות המערכת על ידי האופטימיזציה מבוססת-הנתונים, ובחירת ההנחיות לדוגמה.

כשמריצים את הכלי לאופטימיזציה מבוססת-נתונים, הוא מבצע אופטימיזציה של ההוראות למערכת על סמך הבחירות שלכם. לשם כך, הוא מריץ משימת אימון בהתאמה אישית שבה הוא מעריך באופן איטרטיבי את ההנחיות לדוגמה וכותב מחדש את ההוראות למערכת כדי למצוא את הגרסה שמניבה את ציון ההערכה הכי טוב למודל היעד.

בסיום העבודה, הכלי לאופטימיזציה מבוססת-נתונים מפיק את הוראות המערכת שעברו אופטימיזציה, עם ציון ההערכה שלהן.

מדדי הערכה

הכלי לאופטימיזציה מבוססת-נתונים משתמש במדדי הערכה כדי לבצע אופטימיזציה של הוראות המערכת ולבחור הנחיות לדוגמה. אתם יכולים להשתמש במדדי ההערכה הרגילים או להגדיר מדדי הערכה מותאמים אישית משלכם. הערה: בכל מדדי ההערכה צריך להיות מצב שבו ציון גבוה יותר מצביע על ביצועים טובים יותר.

אפשר להשתמש בכמה מדדים בו-זמנית. עם זאת, אפשר להשתמש רק במדד מותאם אישית אחד בכל פעם. אם משתמשים במדדים רגילים ובמדדים מותאמים אישית ביחד, רק אחד מהמדדים יכול להיות מדד מותאם אישית. המדדים האחרים חייבים להיות מדדים רגילים.

במאמר יצירת תבנית לפרומפט והוראות מערכת, בקטע EVALUATION_METRIC_PARAMETERS בכרטיסייה SDK, מוסבר איך מציינים מדדים אחד בכל פעם או בשילוב.

מדדי הערכה מותאמים אישית

מדדים מותאמים אישית שימושיים כשמדדים רגילים לא מתאימים לאפליקציה שלכם. שימו לב: הכלי לשיפור הביצועים שמבוסס על נתונים תומך רק במדד מותאם אישית אחד בכל פעם.

איך יוצרים מדדים מותאמים אישית

מדדי הערכה רגילים

הכלי לאופטימיזציה מבוססת-נתונים תומך במדדי הערכה מותאמים אישית, ובנוסף במדדי ההערכה הבאים:

סוג מדד תרחיש שימוש מדד תיאור
מבוסס על מודל סיכום summarization_quality מתאר את היכולת של המודל לענות על שאלות בהתבסס על גוף טקסט שמשמש כהפניה.
מענה על שאלות question_answering_correctness* מתאר את היכולת של המודל לענות על שאלה בצורה נכונה.
question_answering_quality מתאר את היכולת של המודל לענות על שאלות בהתבסס על גוף טקסט שמשמש כהפניה.
קוהרנטיות coherence מתאר את היכולת של המודל לספק תגובה עקבית ומודד את מידת הרצף הלוגי של הטקסט שנוצר ואת ההיגיון שלו.
בטיחות safety מתאר את רמת הבטיחות של המודל, כלומר, אם התשובה מכילה טקסט לא בטוח.
שליטה בשפה fluency תיאור של רמת השליטה של המודל בשפה.
התבססות על מידע groundedness מתאר את היכולת של המודל לספק מידע שכלול רק בטקסט הקלט או להפנות אליו.
Comet comet** מתאר את היכולת של המודל מבחינת איכות התרגום בהשוואה לתרגום הייחוס.
MetricX metricx** מתאר את היכולת של המודל מבחינת איכות התרגום.
מבוסס על חישוב שימוש בכלים וקריאה להפעלת פונקציות tool_call_valid* מתאר את היכולת של המודל לחזות קריאה תקינה לכלי.
tool_name_match* מתאר את היכולת של המודל לחזות קריאה לכלי עם שם הכלי הנכון. רק הקריאה הראשונה לכלי נבדקת.
tool_parameter_key_match* מתאר את היכולת של המודל לחזות קריאה לכלי עם שמות הפרמטרים הנכונים.
tool_parameter_kv_match* מתאר את היכולת של המודל לחזות קריאה לכלי עם השמות הנכונים של הפרמטרים וערכי המפתח.
יצירת טקסט כללי bleu* המאפיין הזה מכיל את התוצאה של אלגוריתם להערכת איכות התחזית, שתורגמה משפה טבעית אחת לשפה טבעית אחרת. איכות התחזית נמדדת לפי ההתאמה בין פרמטר של תחזית לבין פרמטר ההתייחסות שלו.
exact_match* הפונקציה מחשבת אם פרמטר של חיזוי תואם בדיוק לפרמטר הפניה.
rouge_1* הפרמטר הזה משמש להשוואה בין פרמטר החיזוי שצוין לבין פרמטר ייחוס.
rouge_2*
rouge_l*
rouge_l_sum*

* אם רוצים לבצע אופטימיזציה של ההנחיות באמצעות question_answering_correctness או הערכות מבוססות-חישוב, צריך לבצע אחת מהפעולות הבאות:

  • מוסיפים משתנה שמייצג את תגובת אמת הקרקע לבקשות לתבנית לפרומפט.
  • אם אין לכם תשובות מסוג אמת קרקע להנחיות, אבל השתמשתם בהנחיות בעבר עם מודל של Google והשגתם את התוצאות הרצויות, אתם יכולים להוסיף את הפרמטר source_model להגדרה במקום להוסיף תשובות מסוג אמת קרקע. כשהפרמטר source_model מוגדר, הכלי לאופטימיזציה מבוססת-נתונים מריץ את ההנחיות לדוגמה במודל המקור כדי ליצור את תגובות אמת הקרקע בשבילכם.

    הפרמטר source_model צריך לשמש רק לשדרוג או להעברה של מודל.

** אם רוצים לבצע אופטימיזציה של ההנחיות באמצעות comet או metricx, צריך לספק את הפרמטר translation_source_field_name להגדרה, שמציין את שם השדה המתאים של טקסט המקור בנתונים. בנוסף, הערך של MetricX שונה לטווח שבין 0 (הגרוע ביותר) ל-25 (הטוב ביותר) כדי להתאים למאפיין 'ככל שהערך גבוה יותר, כך טוב יותר'.

לפני שמתחילים

כדי לוודא שלחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine יש את ההרשאות הנדרשות לאופטימיזציה של הנחיות, צריך לבקש מהאדמין להקצות לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שהאדמין גם יוכל לתת לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

אופטימיזציה של הנחיות

אפשר לייעל את ההנחיות בדרכים הבאות:

כדי לבצע אופטימיזציה של ההנחיות, בוחרים את השיטה הרצויה ומבצעים את השלבים שמתוארים בפירוט בקטעים הבאים:

  1. יצירת תבנית לפרומפט והוראות מערכת
  2. הכנת פרומפטים לדוגמה
  3. אופציונלי: יצירת מדדים מותאמים אישית
  4. יצירת הגדרה
  5. הפעלת משימת אופטימיזציה של פרומפטים
  6. ניתוח התוצאות וביצוע שינויים

יצירת תבנית לפרומפט והוראות מערכת

תבניות לפרומפטים מגדירות את הפורמט של כל הפרומפטים באמצעות משתנים שניתן להחליף. כשמשתמשים בתבנית של הנחיה כדי לבצע אופטימיזציה של הנחיות, המשתנים מוחלפים בנתונים במערך הנתונים של ההנחיות.

המשתנים בתבנית לפרומפט צריכים לעמוד בדרישות הבאות:

  • חובה להוסיף סוגריים מסולסלים למשתנים
  • אסור לכלול רווחים או מקפים בשמות של משתנים -
  • משתנים שמייצגים קלטים מרובי-אופנים צריכים לכלול את המחרוזת MIME_TYPE אחרי המשתנה:

    @@@MIME_TYPE
    

    מחליפים את MIME_TYPE בסוג MIME של תמונה, סרטון, אודיו או מסמך שנתמך על ידי מודל היעד.

יוצרים תבנית לפרומפט והוראות למערכת באחת מהשיטות הבאות:

Notebook

כדי להריץ את הכלי לאופטימיזציה מבוססת-נתונים דרך מחברת, צריך ליצור הוראות למערכת ותבנית לפרומפט באופן הבא:

  1. ב-Colab Enterprise, פותחים את הנוטבוק של Gemini Enterprise Agent Platform לשיפור הנחיות.

    מעבר ל-Gemini Enterprise Agent Platform prompt optimizer notebook

  2. בקטע Create a prompt template and system instructions, מבצעים את הפעולות הבאות:

    1. בשדה SYSTEM_INSTRUCTION, מזינים את הוראות המערכת. לדוגמה:

      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. בשדה PROMPT_TEMPLATE, מזינים את תבנית הפרומפט. לדוגמה:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
      
    3. אם רוצים לבצע אופטימיזציה של ההנחיות באמצעות question_answering_correctness או הערכות מבוססות-חישוב, צריך לבצע אחת מהפעולות הבאות:

    • מוסיפים את המשתנה {target} לתבנית לפרומפט כדי לייצג את התשובה של הפרומפט שמשמשת כאמת קרקע (ground truth). לדוגמה:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • אם אין לכם תשובות מסוג אמת קרקע (ground truth) להנחיות, אבל השתמשתם בהנחיות בעבר עם מודל של Google והשגתם את התוצאות הרצויות, אתם יכולים להוסיף את הפרמטר source_model להגדרות במקום להוסיף תשובות מסוג אמת קרקע. כשהפרמטר source_model מוגדר, הכלי לאופטימיזציה מבוססת-נתונים מריץ את ההנחיות לדוגמה במודל המקור כדי ליצור את תגובות אמת הקרקע בשבילכם.

SDK

אם רוצים להריץ את הכלי לאופטימיזציה מבוססת-נתונים דרך ה-SDK בלי להשתמש ב-notebook, צריך ליצור קובצי טקסט לתבנית הפרומפט ולהוראות המערכת באופן הבא:

  1. יוצרים קובץ טקסט להוראות המערכת.

  2. בתיבת הטקסט, מגדירים את ההוראות למערכת. לדוגמה:

    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. יוצרים קובץ טקסט לתבנית לפרומפט.

  4. בקובץ הטקסט, מגדירים תבנית לפרומפט שכוללת משתנה אחד או יותר. לדוגמה:

    Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
    
  5. אם רוצים לבצע אופטימיזציה של ההנחיות באמצעות question_answering_correctness או הערכות מבוססות-חישוב, צריך לבצע אחת מהפעולות הבאות:

    • מוסיפים את המשתנה {target} לתבנית לפרומפט כדי לייצג את התשובה של הפרומפט שמשמשת כאמת קרקע (ground truth). לדוגמה:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • אם אין לכם תשובות מסוג אמת קרקע (ground truth) להנחיות, אבל השתמשתם בהנחיות בעבר עם מודל של Google והשגתם את התוצאות הרצויות, אתם יכולים להוסיף את הפרמטר source_model להגדרות במקום להוסיף תשובות מסוג אמת קרקע. כשהפרמטר source_model מוגדר, הכלי לאופטימיזציה מבוססת-נתונים מריץ את ההנחיות לדוגמה במודל המקור כדי ליצור את תגובות אמת הקרקע בשבילכם.

הכנת פרומפטים לדוגמה

כדי לקבל את התוצאות הטובות ביותר מהכלי לאופטימיזציה מבוססת-נתונים, כדאי להשתמש ב-50 עד 100 פרומפטים לדוגמה.

  • הכלי יכול להיות יעיל גם עם 5 פרומפטים לדוגמה.
  • הדוגמאות הטובות ביותר כוללות מקרים שבהם מודל היעד מתפקד בצורה גרועה ומקרים שבהם הוא מתפקד בצורה טובה.

הפרומפטים לדוגמה מכילים את הנתונים שמחליפים את המשתנים בתבנית הפרומפט. אפשר להשתמש בקובץ JSONL או CSV כדי לאחסן את ההנחיות לדוגמה.

קובץ JSONL

  1. יוצרים קובץ JSONL.
  2. בקובץ JSONL, מוסיפים את נתוני ההנחיות שמחליפים כל משתנה. לדוגמה:

    {"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. מעלים את קובץ ה-JSONL לקטגוריה של Cloud Storage.

קובץ CSV

  1. יוצרים קובץ CSV.
  2. בשורה הראשונה, מוסיפים את המשתנים מתבנית הפרומפט.
  3. בשורה הבאה, מוסיפים את נתוני הדוגמה שמחליפים כל משתנה.
  4. מעלים את קובץ ה-CSV לקטגוריה של Cloud Storage.

אופציונלי: יצירת מדדים מותאמים אישית

כדי ליצור מדד מותאם אישית:

  1. יוצרים קובץ טקסט בשם requirements.txt.

  2. ב-requirements.txt, מגדירים את הספריות הנדרשות לפונקציית מדד ההערכה המותאם אישית. כל הפונקציות דורשות את functions-framework החבילה.

    לדוגמה, קובץ requirements.txt של מדד בהתאמה אישית שמחשב את ROUGE-L ייראה בערך כך:

    functions-framework==3.*
    rouge-score
    
  3. יוצרים קובץ Python בשם main.py.

  4. כותבים את פונקציית ההערכה המותאמת אישית בקובץ main.py. הפונקציה צריכה לקבל את הפרמטרים הבאים:

    • בקשות HTTP POST
    • קלט JSON שמכיל את response, שהוא הפלט של ה-LLM, ואת reference, שהיא אמת הקרקע (ground truth) להנחיה אם היא מופיעה בקבוצת הנתונים של ההנחיות.

    לדוגמה, קובץ main.py של מדד בהתאמה אישית שמחשב את ROUGE-L ייראה בערך כך:

    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 'reference' from the request payload. 'response'
       represents the model's response, while 'reference' represents the ground
       truth response."""
       response = request_json['response']
       reference = request_json['reference']
    
       # 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. פורסים את פונקציית ההערכה המותאמת אישית כפונקציית Cloud Run באמצעות הפעלת הפקודה gcloud functions deploy:

    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
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫FUNCTION_NAME: השם של מדד ההערכה המותאם אישית.
    • PROJECT_ID: מזהה הפרויקט.
    • ‫REGION: האזור שבו רוצים לפרוס את הפונקציה. האזור צריך להיות זהה לאזור שבו משתמשים במודל היעד.

יצירת הגדרה אישית

בהגדרות של האופטימיזציה מבוססת-הנתונים מציינים את הפרמטרים שרוצים להגדיר למשימת האופטימיזציה של ההנחיות.

שימו לב: למודלים של Gemma אין ממשקי API מנוהלים ב-Gemini Enterprise Agent Platform. כדי להשתמש במודל Gemma, קודם צריך לפרוס מודל Gemma שעבר כוונון לפי הוראות (-it) ב-Model Garden או במחשב המקומי. מידע נוסף על פריסה ב-Model Garden זמין במאמר שימוש במודלים פתוחים של Gemma. מידע נוסף על פריסה במחשב המקומי זמין במאמר בנושא הרצת Gemma עם Ollama.

יוצרים הגדרה באמצעות אחת מהאפשרויות הבאות:

Notebook

אם רוצים להריץ את הכלי לאופטימיזציה מבוססת-נתונים דרך המחברת, צריך ליצור הגדרה באופן הבא:

  1. ב-Colab Enterprise, פותחים את מחברת האופטימיזציה מבוססת הנתונים.

    מעבר ל-Gemini Enterprise Agent Platform prompt optimizer notebook

  2. בקטע Configure project settings (הגדרת הגדרות הפרויקט), מבצעים את הפעולות הבאות:

    1. בשדה PROJECT_ID, מזינים את מזהה הפרויקט.
    2. בשדה LOCATION, מזינים את המיקום שבו רוצים להפעיל את הכלי לאופטימיזציה מבוססת-נתונים.
    3. בשדה OUTPUT_PATH, מזינים את ה-URI של דלי Cloud Storage שבו רוצים שהכלי לאופטימיזציה מבוססת-נתונים יכתוב את ההוראות המערכתיות שעברו אופטימיזציה או את הדוגמאות המעטות. לדוגמה, gs://bucket-name/output-path.
    4. בשדה INPUT_PATH, מזינים את ה-URI של הפרומפטים לדוגמה בקטגוריה של Cloud Storage. לדוגמה, gs://bucket-name/sample-prompts.jsonl.
  3. בקטע Configure optimization settings (הגדרת הגדרות האופטימיזציה), מבצעים את הפעולות הבאות:

    1. בשדה TARGET_MODEL, מזינים את המודל שעבורו רוצים לבצע אופטימיזציה של ההנחיות.
    2. בשדה THINKING_BUDGET, מזינים את תקציב החשיבה של מודל היעד שרוצים לבצע אופטימיזציה של ההנחיות שלו. ברירת המחדל היא ‎-1, כלומר לא מתבצעת הסקת מסקנות במודלים שאינם מודלים להסקת מסקנות, והסקת מסקנות אוטומטית במודלים להסקת מסקנות כמו Gemini-2.5. ראו Thinking למידע ולמידה על הגדרות תקציב ידניות.
    3. ב-OPTIMIZATION_MODE, מזינים את מצב האופטימיזציה שרוצים להשתמש בו. הערך חייב להיות אחד מהבאים:
      • ‫instruction: אופטימיזציה של הוראות המערכת.
      • ‫demonstration: בוחר פרומפטים לדוגמה להוספה להוראות המערכת כפרומפט עם כמה דוגמאות (few-shot).
      • ‫instruction_and_demo: ביצוע שתי הפעולות שלמעלה.
    4. בשדה EVAL_METRIC, מזינים מדד הערכה שרוצים לבצע אופטימיזציה של ההנחיות בהתאם אליו.
    5. אופציונלי: בשדה SOURCE_MODEL, מזינים את המודל של Google שהמערכת השתמשה בו בעבר להוראות ולהנחיות. כשמגדירים את הפרמטר source_model, האופטימיזציה מבוססת-הנתונים מריצה את ההנחיות לדוגמה במודל המקור כדי ליצור את תשובות אמת הקרקע בשבילכם, למדדי הערכה שדורשים תשובות אמת קרקע. אם לא הפעלתם בעבר את הפרומפטים שלכם עם מודל של Google או שלא קיבלתם את התוצאות הרצויות, אתם יכולים להוסיף להנחיה תשובות של אמת קרקע (ground truth) במקום זאת. מידע נוסף מופיע בקטע יצירת הנחיה והוראות מערכת במסמך הזה.
  4. אופציונלי: בקטע הגדרת הגדרות מתקדמות של אופטימיזציה, אפשר להוסיף פרמטרים אופציונליים נוספים להגדרה.

  5. הצגת פרמטרים אופציונליים
    • בשדה NUM_INST_OPTIMIZATION_STEPS, מזינים את מספר האיטרציות שבהן משתמש הכלי לאופטימיזציה מבוססת-נתונים במצב אופטימיזציה של הוראות. זמן הריצה גדל באופן ליניארי ככל שהערך הזה גדל. הערך צריך להיות מספר שלם בין 10 ל-20. אם לא מגדירים ערך, ברירת המחדל היא 10.
    • בשדה NUM_DEMO_OPTIMIZATION_STEPS, מזינים את מספר ההדגמות שהכלי לאופטימיזציה מבוססת-נתונים מעריך. נעשה שימוש במצב האופטימיזציה demonstration ו-instruction_and_demo. הערך צריך להיות מספר שלם בין 10 ל-30. אם לא מגדירים את המדיניות, ברירת המחדל היא 10.
    • בשדה NUM_DEMO_PER_PROMPT, מזינים את מספר ההדגמות שנוצרות לכל הנחיה. הערך צריך להיות מספר שלם בין 2 לבין מספר ההנחיות לדוגמה הכולל פחות 1. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.
    • בשדה TARGET_MODEL_QPS, מזינים את מספר השאילתות לשנייה (QPS) שהכלי לאופטימיזציה מבוססת-נתונים שולח למודל היעד. זמן הריצה יורד באופן לינארי ככל שהערך הזה עולה. הערך חייב להיות מספר נקודה צפה (float) שגדול מ-3.0 או שווה לו, אבל קטן ממכסת השאילתות לשנייה (QPS) שמוקצית לכם במודל היעד. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.0.
    • בשדה SOURCE_MODEL_QPS, מזינים את מספר השאילתות לשנייה (QPS) שהכלי האוטומטי לאופטימיזציה מבוססת-נתונים שולח למודל המקור. הערך חייב להיות מספר ממשי (float) שגדול מ-3.0 או שווה לו, אבל קטן ממכסת ה-QPS שיש לך במודל המקור. אם לא מגדירים ערך, ברירת המחדל היא 3.0.
    • בשדה EVAL_QPS, מזינים את מספר השאילתות לשנייה (QPS) שהכלי לאופטימיזציה מבוססת-נתונים שולח לשירות ההערכה של AI גנרטיבי או לפונקציית Cloud Run.
      • במקרה של מדדים שמבוססים על מודל, הערך חייב להיות מספר עשרוני שהוא 3.0 או גדול יותר. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.0.
      • במקרה של מדדים מותאמים אישית, הערך חייב להיות מספר עשרוני שגדול מ-3.0 או שווה לו. הערך הזה קובע את הקצב שבו הכלי לשיפור הביצועים שמבוסס על נתונים קורא לפונקציות Cloud Run של המדד המותאם אישית.
    • אם רוצים להשתמש ביותר ממדד הערכה אחד, צריך לבצע את הפעולות הבאות:
      1. בשדה EVAL_METRIC_1, מזינים מדד הערכה שרוצים להשתמש בו.
      2. בשדה EVAL_METRIC_1_WEIGHT, מזינים את המשקל שבו רוצים שהכלי לאופטימיזציה מבוססת-נתונים ישתמש כשהוא יפעיל את האופטימיזציה.
      3. בשדה EVAL_METRIC_2, מזינים מדד הערכה שרוצים להשתמש בו.
      4. בשדה EVAL_METRIC_2_WEIGHT, מזינים את המשקל שבו רוצים שהכלי לאופטימיזציה מבוססת-נתונים ישתמש כשהוא יפעיל את האופטימיזציה.
      5. בשדה EVAL_METRIC_3, אפשר להזין מדד הערכה שרוצים להשתמש בו.
      6. בשדה EVAL_METRIC_3_WEIGHT (משקל מדד ההערכה השלישי), אפשר להזין את המשקל שרוצים שמנגנון האופטימיזציה מבוסס-הנתונים ישתמש בו כשהוא יפעיל את האופטימיזציה.
      7. בשדה METRIC_AGGREGATION_TYPE, מזינים את המשקל שרוצים שמנגנון האופטימיזציה מבוסס-הנתונים ישתמש בו כשהוא יפעיל את האופטימיזציה.
    • בשדה PLACEHOLDER_TO_VALUE, מזינים את המידע שמחליף את המשתנים בהוראות המערכת. המידע שכלול בתג הזה לא עובר אופטימיזציה על ידי הכלי לאופטימיזציה מבוססת-נתונים.
    • בשדה RESPONSE_MIME_TYPE, מזינים את סוג MIME שבו משתמש מודל היעד. הערך חייב להיות text/plain או application/json. אם לא מגדירים את המדיניות, ברירת המחדל היא text/plain.
    • בשדה TARGET_LANGUAGE, מזינים את השפה של הוראות המערכת. אם לא מגדירים שפה, ברירת המחדל היא אנגלית.

SDK

אם רוצים להפעיל את הכלי לאופטימיזציה מבוססת-נתונים באמצעות ה-SDK, צריך ליצור קובץ JSON עם הפרמטרים שרוצים להשתמש בהם כדי לבצע אופטימיזציה של ההנחיות. לשם כך:

  1. יוצרים קובץ JSON עם הפרמטרים שרוצים להשתמש בהם כדי לבצע אופטימיזציה של ההנחיות. כל קובץ הגדרה צריך לכלול את הפרמטרים הבאים. ההגדרות משתנות מעט בין vertexai.types.PromptOptimizerMethod.OPTIMIZATION_TARGET_GEMINI_NANO לבין vertexai.types.PromptOptimizerMethod.VAPO.

    VAPO

    {
    "project": "PROJECT_ID",
    "system_instruction": "SYSTEM_INSTRUCTION",
    "prompt_template": "PROMPT_TEMPLATE",
    "target_model": "TARGET_MODEL",
    "thinking_budget": "THINKING_BUDGET",
    EVALUATION_METRIC_PARAMETERS,
    "optimization_mode": "OPTIMIZATION_MODE",
    "input_data_path": "SAMPLE_PROMPT_URI",
    "output_path": "OUTPUT_URI"
    }
    

    GEMINI_NANO

    {
    "project": "PROJECT_ID",
    "system_instruction": "SYSTEM_INSTRUCTION",
    "prompt_template": "PROMPT_TEMPLATE",
    "target_model": "TARGET_MODEL",
    "target_model_endpoint_url": "BASE_URL",
    EVALUATION_METRIC_PARAMETERS,
    "optimization_mode": "OPTIMIZATION_MODE",
    "input_data_path": "SAMPLE_PROMPT_URI",
    "output_path": "OUTPUT_URI"
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט.
    • ‫SYSTEM_INSTRUCTION: ההוראות למערכת שרוצים לבצע אופטימיזציה שלהן.
    • ‫PROMPT_TEMPLATE: תבנית הפרומפט.
    • ‫TARGET_MODEL: המודל שעבורו רוצים לבצע אופטימיזציה של ההנחיות. ‫OPTIMIZATION_TARGET_GEMINI_NANO, מומלץ להשתמש במודל שעבר כוונון לפי הוראות (-it).
    • ‫BASE_URL: כתובת ה-URL הבסיסית של המודל שנפרס ב-Model Garden או במחשב המקומי. לדוגמה, https://<var>DEDICATED_ENDPOINT_DNS</var>/v1beta1/projects/<var>PROJECT_NUMBER</var>/locations/<var>LOCATION</var>/endpoints/<var>ENDPOINT_ID</var> או http://localhost:8000/v1. נדרש להגדרת OPTIMIZATION_TARGET_GEMINI_NANO.
    • ‫THINKING_BUDGET: תקציב החשיבה של מודל היעד שרוצים לבצע אופטימיזציה של ההנחיות שלו. ברירת המחדל היא ‎-1, כלומר לא מתבצעת חשיבה במודלים שאינם מודלים מעמיקים, וחשיבה אוטומטית במודלים מעמיקים כמו Gemini-2.5. מידע על הגדרות תקציב ידניות זמין במאמר שיקולים. שימו לב: חלק מהמודלים, כמו מודלי Gemma, לא תומכים ב-thinking_budget.
    • EVALUATION_METRIC_PARAMETERS: הפרמטרים שאתם מציינים תלויים במספר מדדי ההערכה שבהם אתם משתמשים, ובסוג המדדים – סטנדרטיים או מותאמים אישית:

      מדד רגיל יחיד

      אם אתם משתמשים במדד הערכה רגיל אחד, אתם יכולים להשתמש בפרמטר הבא:

       "eval_metric": "EVALUATION_METRIC",
       

      מחליפים את EVALUATION_METRIC במדד שרוצים לבצע אופטימיזציה של ההנחיות לפי.

      מדד מותאם אישית יחיד

      אם אתם משתמשים במדד מותאם אישית אחד להערכה, אתם יכולים להשתמש בפרמטרים הבאים:

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

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫CUSTOM_METRIC_NAME: שם המדד, כפי שמוגדר על ידי המפתח שמתאים ל-final_score. לדוגמה: custom_accuracy.
      • ‫FUNCTION_NAME: השם של פונקציית Cloud Run שפרסתם קודם.

      מספר מדדים רגילים

      אם משתמשים בכמה מדדי הערכה רגילים, צריך להשתמש בפרמטרים הבאים:

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

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫EVALUATION_METRIC_LIST: רשימה של מדדי הערכה. חייב להיות מערך. לדוגמה, "bleu", "summarization_quality".
      • ‫EVAL_METRICS_WEIGHTS: המשקל של כל מדד. הערך חייב להיות מערך באורך זהה לזה של EVALUATION_METRIC_LIST.
      • ‫METRIC_AGGREGATION_TYPE: סוג הצבירה שמשמש למדדי ההערכה. הערך חייב להיות weighted_sum או weighted_average. אם לא מגדירים ערך, ברירת המחדל היא weighted_sum.

      מדדים רגילים ומותאמים אישית רבים

      אם אתם משתמשים בכמה מדדי הערכה שכוללים שילוב של מדד מותאם אישית יחיד ומדד רגיל אחד או יותר, אתם צריכים להשתמש בפרמטרים הבאים:

      "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",
      

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫EVALUATION_METRIC_LIST: רשימה של מדדי ההערכה הרגילים. חייב להיות מערך. לדוגמה, "bleu", "summarization_quality".
      • ‫EVAL_METRICS_WEIGHTS: המשקל של כל מדד. חייב להיות מערך.
      • ‫METRIC_AGGREGATION_TYPE: סוג הצבירה שמשמש למדדי ההערכה. הערך חייב להיות weighted_sum או weighted_average. אם לא מגדירים ערך, ברירת המחדל היא weighted_sum.
      • ‫CUSTOM_METRIC_NAME: שם המדד, כפי שמוגדר על ידי המפתח שמתאים ל-final_score. לדוגמה, custom_accuracy.
      • ‫FUNCTION_NAME: השם של פונקציית Cloud Run שפרסתם קודם.
    • ‫OPTIMIZATION_MODE: מצב האופטימיזציה. צריך לציין אחת מהאפשרויות הבאות:

      • ‫instruction: אופטימיזציה של הוראות המערכת.
      • ‫demonstration: בוחר פרומפטים לדוגמה להוספה להוראות המערכת כפרומפט עם כמה דוגמאות (few-shot).
      • ‫instruction_and_demo: ביצוע שתי הפעולות שלמעלה.
    • ‫SAMPLE_PROMPT_URI: ה-URI של ההנחיות לדוגמה בקטגוריית Cloud Storage. לדוגמה, gs://bucket-name/sample-prompts.jsonl.

    • ‫OUTPUT_URI: ה-URI של קטגוריית Cloud Storage שבה רוצים שמייעל המערכת מבוסס הנתונים יכתוב את הוראות המערכת המותאמות ו/או את הדוגמאות המעטות. לדוגמה, gs://bucket-name/output-path.

  2. בנוסף, אפשר להוסיף לקובץ התצורה פרמטרים אופציונליים.

    הפרמטרים האופציונליים מחולקים ל-5 קטגוריות:

    • פרמטרים של תהליך האופטימיזציה. הפרמטרים האלה שולטים בתהליך האופטימיזציה הכולל, כולל משך הזמן שלו ומספר חזרות האופטימיזציה שהוא מבצע, וזה משפיע ישירות על איכות האופטימיזציות.
    • בחירת מודל ופרמטרים של מיקום. הפרמטרים האלה מציינים באילו מודלים משתמש הכלי לאופטימיזציה מבוססת-נתונים, ובאילו מיקומים הוא משתמש במודלים האלה.
    • פרמטרים של זמן אחזור (QPS). הפרמטרים האלה שולטים ב-QPS, ומשפיעים על המהירות של תהליך האופטימיזציה.
    • אחר פרמטרים אחרים ששולטים במבנה ובתכנים של ההנחיות.

      הצגת פרמטרים אופציונליים
      "num_steps": NUM_INST_OPTIMIZATION_STEPS,
      "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
      

      מחליפים את מה שכתוב בשדות הבאים:

      • פרמטרים של תהליך האופטימיזציה:

        • ‫NUM_INST_OPTIMIZATION_STEPS: מספר האיטרציות שבהן הכלי לאופטימיזציה מבוססת-נתונים משתמש במצב אופטימיזציה של הוראות. זמן הריצה גדל באופן ליניארי ככל שהערך הזה גדל. הערך צריך להיות מספר שלם בין 10 ל-20. אם לא מגדירים ערך, ברירת המחדל היא 10.
        • ‫NUM_DEMO_OPTIMIZATION_STEPS: מספר ההדגמות שהכלי לשיפור הביצועים שמבוסס על נתונים מעריך. בשימוש עם מצב האופטימיזציה demonstration ו-instruction_and_demo. הערך צריך להיות מספר שלם בין 2 לבין המספר הכולל של ההנחיות לדוגמה פחות 1. אם לא מגדירים ערך, ברירת המחדל היא 10.
        • ‫NUM_DEMO_PER_PROMPT: מספר ההדגמות שנוצרו לכל הנחיה. הערך צריך להיות מספר שלם בין 3 ל-6. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.
      • בחירת מודל ופרמטרים של מיקום:

        • ‫TARGET_MODEL_LOCATION: המיקום שבו רוצים להפעיל את מודל היעד. אם לא מגדירים את המדיניות, ברירת המחדל היא us-central1.
        • ‫SOURCE_MODEL: המודל של Google שהיה בשימוש קודם בהנחיות ובשורות ההנחיה של המערכת. כשמגדירים את הפרמטר source_model, האופטימיזציה מבוססת-הנתונים מריצה את ההנחיות לדוגמה במודל המקור כדי ליצור את אמת הקרקע (ground truth) בשבילכם, למדדי הערכה שדורשים אמת קרקע (ground truth). אם לא הפעלתם בעבר את הפרומפטים שלכם עם מודל של Google או שלא השגתם את תוצאות היעד, תוכלו להוסיף לפרומפט תשובות של אמת קרקע (ground truth) במקום זאת. מידע נוסף מופיע בקטע יצירת הנחיה והוראות מערכת במסמך הזה.
        • ‫SOURCE_MODEL_LOCATION: המיקום שבו רוצים להריץ את מודל המקור. אם לא מגדירים את המדיניות, ברירת המחדל היא us-central1.
      • פרמטרים של זמן טעינה (QPS):

        • ‫TARGET_MODEL_QPS: השאילתות לשנייה (QPS) שהכלי לשיפור הביצועים מבוסס-הנתונים שולח למודל היעד. זמן הריצה יורד באופן לינארי ככל שמגדילים את הערך הזה. הערך חייב להיות מספר נקודה צפה (float) שגדול מ-3.0 או שווה לו, אבל קטן ממכסת השאילתות לשנייה (QPS) שמוגדרת למודל היעד. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.0.
        • ‫EVAL_QPS: השאילתות לשנייה (QPS) שהכלי לשיפור הביצועים מבוסס הנתונים שולח לשירות ההערכה של AI גנרטיבי או לפונקציית Cloud Run.
          • במקרה של מדדים שמבוססים על מודל, הערך חייב להיות מספר עשרוני שהוא 3.0 או גדול יותר. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.0.
          • במקרה של מדדים מותאמים אישית, הערך חייב להיות מספר עשרוני שגדול מ-3.0 או שווה לו. הערך הזה קובע את הקצב שבו הכלי לשיפור הביצועים שמבוסס על נתונים קורא לפונקציות Cloud Run של המדד המותאם אישית.
        • ‫SOURCE_MODEL_QPS: השאילתות לשנייה (QPS) שהאופטימיזציה מבוססת-הנתונים שולחת למודל המקור. הערך חייב להיות מספר ממשי (float) שגדול מ-3.0 או שווה לו, אבל קטן ממכסת ה-QPS שיש לך במודל המקור. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.0.
      • פרמטרים אחרים:

        • ‫RESPONSE_MIME_TYPE: סוג תגובת ה-MIME שמשמש את מודל היעד. הערך חייב להיות text/plain או application/json. אם לא מגדירים את המדיניות, ברירת המחדל היא text/plain.
        • ‫TARGET_LANGUAGE: השפה של ההוראות במערכת. אם לא מגדירים שפה, ברירת המחדל היא אנגלית.
        • ‫PLACEHOLDER_TO_CONTENT: המידע שמחליף את המשתנים בהוראות המערכת. המידע שכלול בדגל הזה לא עובר אופטימיזציה על ידי הכלי לאופטימיזציה של הנחיות מבוססות-נתונים.
        • ‫DATA_LIMIT: כמות הנתונים שמשמשת לאימות. זמן הריצה גדל באופן ליניארי עם הערך הזה. הערך חייב להיות מספר שלם בין 5 ל-100. אם לא מגדירים את המדיניות, ברירת המחדל היא 100.
  3. מעלים את קובץ ה-JSON לקטגוריה של Cloud Storage.

הפעלת אופטימיזציה של פרומפטים

מריצים את הכלי לאופטימיזציה מבוססת-נתונים באמצעות אחת מהאפשרויות הבאות:

Notebook

כדי להריץ את הכלי לאופטימיזציה מבוססת-נתונים דרך המחברת:

  1. ב-Colab Enterprise, פותחים את הנוטבוק של Gemini Enterprise Agent Platform לשיפור הנחיות.

    מעבר ל-Notebook של הכלי לאופטימיזציה מבוססת-נתונים

  2. בקטע Run prompt optimizer (הפעלת הכלי לאופטימיזציה של הנחיות), לוחצים על play_circle Run cell (הפעלת התא).

    כלי האופטימיזציה מבוסס-הנתונים פועל.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫LOCATION: המיקום שבו רוצים להריץ את הכלי לאופטימיזציה של הנחיות ב-Gemini Enterprise Agent Platform.
  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫JOB_NAME: שם למשימת האופטימיזציה של ההנחיות ב-Gemini Enterprise Agent Platform.
  • ‫PATH_TO_CONFIG: ה-URI של קובץ התצורה בקטגוריה של Cloud Storage. לדוגמה, gs://bucket-name/configuration.json.

ה-method של ה-HTTP וכתובת ה-URL:

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

גוף בקשת JSON:

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

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

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

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$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

התגובה אמורה להיראות כך:

SDK

מריצים את הכלי לאופטימיזציה מבוססת-נתונים באמצעות ה-SDK, על ידי הוספת קטעי הקוד הבאים ל-Colab או ל-Notebook.

מחליפים את הפרטים הבאים:

  • ‫LOCATION: המיקום שבו רוצים להריץ את הכלי לשיפור הביצועים שמבוסס על נתונים.
  • PROJECT_ID: מזהה הפרויקט.
  • ‫PROJECT_NUMBER: מספר הפרויקט, שזמין במסוף Google Cloud .
  • ‫PATH_TO_CONFIG: ה-URI של קובץ התצורה ב-Cloud Storage. לדוגמה, gs://bucket-name/configuration.json.
# Authenticate
from google.colab import auth
auth.authenticate_user(project_id=PROJECT_ID)

# Set the Service Account
SERVICE_ACCOUNT = f"{PROJECT_NUMBER}-compute@developer.gserviceaccount.com"

# Import Agent Platform SDK and Setup
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION)

#Create the Agent Platform Client
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

# Setup the job dictionary
vapo_config = {
  'config_path': PATH_TO_CONFIG,
  'service_account': SERVICE_ACCOUNT,
  'wait_for_completion': True,
}

#Start the Agent Platform Prompt Optimizer
client = client.prompt_optimizer.optimize(method=vertexai.types.PromptOptimizerMethod.VAPO, config=vapo_config)

כדי להשתמש במודל Gemma כמודל היעד, מבצעים את השינויים הבאים:

nano_config = vertexai.types.PromptOptimizerConfig(
    config_path="gs://sample-bucket/config_nano.json",
    service_account_project_number=project_number,
    wait_for_completion=True
    )
# Simpler version
# nano_config = {
#     "config_path": "gs://sample-bucket/config_nano.json",
#     "service_account": service_account,
#     "wait_for_completion": True
#     }
logging.basicConfig(encoding='utf-8', level=logging.INFO, force=True)

client.prompt_optimizer.optimize(
    method=vertexai.types.PromptOptimizerMethod.OPTIMIZATION_TARGET_GEMINI_NANO,
    config=nano_config
)

אחרי שהאופטימיזציה מסתיימת, בודקים את פריטי הפלט במיקום הפלט שצוין בהגדרות.

ניתוח התוצאות וביצוע איטרציות

אחרי שמריצים את הכלי לאופטימיזציה מבוססת-נתונים, בודקים את התקדמות העבודה באחת מהדרכים הבאות:

Notebook

כדי לראות את התוצאות של הכלי לאופטימיזציה מבוססת-נתונים דרך המחברת:

  1. פותחים את מחברת האופטימיזציה של פרומפטים ב-Gemini Enterprise Agent Platform.

  2. בקטע Inspect the results (בדיקת התוצאות), מבצעים את הפעולות הבאות:

    1. בשדה RESULT_PATH, מוסיפים את ה-URI של קטגוריית Cloud Storage שהגדרתם את הכלי לשיפור ביצועים מבוסס-נתונים לכתוב אליה את התוצאות. לדוגמה, gs://bucket-name/output-path.

    2. לוחצים על play_circle הרצת התא.

המסוף

  1. במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Training pipelines.

    מעבר אל Training pipelines

  2. לוחצים על הכרטיסייה משימות בהתאמה אישית. משימת האימון בהתאמה אישית של הכלי לשיפור הביצועים מבוסס הנתונים מופיעה ברשימה יחד עם הסטטוס שלה.

כשהעבודה מסתיימת, בודקים את האופטימיזציות באופן הבא:

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage:

    כניסה לדף Buckets

  2. לוחצים על השם של הקטגוריה ב-Cloud Storage.

  3. מנווטים לתיקייה עם אותו שם של מצב האופטימיזציה שבו השתמשתם כדי להעריך את ההנחיות, כלומר instruction או demonstration. אם השתמשתם במצב instruction_and_demo, שתי התיקיות יופיעו. התיקייה instruction מכילה את התוצאות של האופטימיזציה של הוראות המערכת, והתיקייה demonstration מכילה את התוצאות של האופטימיזציה של demonstration ואת הוראות המערכת שעברו אופטימיזציה.

    התיקייה מכילה את הקבצים הבאים:

    • ‫config.json: ההגדרה המלאה שבה נעשה שימוש באופטימיזציה של הנחיות ב-Gemini Enterprise Agent Platform.
    • ‫templates.json: כל קבוצה של הוראות למערכת או דוגמאות עם הקשר מועט שנוצרו על ידי הכלי לשיפור הביצועים שמבוסס על נתונים, וציון ההערכה שלהן.
    • ‫eval_results.json: התשובה של מודל היעד לכל פרומפט לדוגמה לכל קבוצה של הוראות מערכת שנוצרו או דוגמאות של few shot וציון ההערכה שלהן.
    • ‫optimized_results.json: ההוראות הטובות ביותר למערכת ו/או דוגמאות עם מעט נתונים וציון ההערכה שלהן.
  4. כדי לראות את הוראות המערכת שעברו אופטימיזציה, אפשר לעיין בקובץ optimized_results.json.

שיטות מומלצות

  • מודלים בתצוגה מקדימה נתמכים רק באזור global, והאזור global לא נתמך במשימה מותאמת אישית של Vertex. לכן, אל תשתמשו ב-VAPO כדי לבצע אופטימיזציה של מודלים לתצוגה מקדימה כמודל היעד.

  • במודלים של GA, המשתמשים יכולים לבחור מיקומים ספציפיים לאזור, כמו us-central1 או europe-central2 במקום global, כדי לעמוד בדרישה של מיקום אחסון הנתונים.

המאמרים הבאים