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

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

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

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

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

הוראות מערכת

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 המדד הזה מתאר את היכולת של המודל לספק תשובה קוהרנטית, ומודד עד כמה הטקסט הדינמי מבוסס-AI שנוצר זורם בצורה הגיונית וברורה.
בטיחות safety מתאר את רמת הבטיחות של המודל, כלומר אם התשובה מכילה טקסט לא בטוח.
Fluency 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 או הערכות מבוססות-חישוב, צריך לבצע אחת מהפעולות הבאות:

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

    צריך להשתמש בפרמטר 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

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

  1. ב-Colab Enterprise, פותחים את ה-notebook של Gemini Enterprise Agent Platform prompt optimizer.

    מעבר ל-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}
      
    • אם אין לכם תגובות מסוג אמת קרקע להנחיות, אבל השתמשתם בעבר בהנחיות עם מודל של Google והגעתם לתוצאות הרצויות, אתם יכולים להוסיף את הפרמטר source_model להגדרות האישיות במקום להוסיף תגובות מסוג אמת קרקע. כשמגדירים את הפרמטר source_model, הכלי לאופטימיזציה מבוססת-נתונים מריץ את ההנחיות לדוגמה במודל המקור כדי ליצור את התשובות של אמת הקרקע (ground truth).

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}
      
    • אם אין לכם תגובות מסוג אמת קרקע להנחיות, אבל השתמשתם בעבר בהנחיות עם מודל של Google והגעתם לתוצאות הרצויות, אתם יכולים להוסיף את הפרמטר source_model להגדרות האישיות במקום להוסיף תגובות מסוג אמת קרקע. כשמגדירים את הפרמטר source_model, הכלי לאופטימיזציה מבוססת-נתונים מריץ את ההנחיות לדוגמה במודל המקור כדי ליצור את התשובות של אמת הקרקע (ground truth).

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

כדי לקבל את התוצאות הכי טובות מהכלי לאופטימיזציה מבוססת-נתונים, כדאי להשתמש ב-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. מריצים את הפקודה gcloud functions deploy כדי לפרוס את פונקציית ההערכה בהתאמה אישית כפונקציית Cloud Run:

    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

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

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

    מעבר ל-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, הכלי לאופטימיזציה מבוססת-נתונים מריץ את ההנחיות לדוגמה במודל המקור כדי ליצור את התשובות של אמת הקרקע (ground truth) בשבילכם, למדדי הערכה שדורשים תשובות של אמת קרקע. אם לא הרצתם בעבר את ההנחיות במודל של Google או אם לא קיבלתם את התוצאות הרצויות, הוסיפו להנחיה תשובות של אמת קרקע (ground truth). מידע נוסף מופיע בקטע יצירת הנחיה והוראות מערכת במסמך הזה.
  4. אופציונלי: בקטע Configure advanced optimization settings, אתם יכולים להוסיף להגדרות כל אחד מהפרמטרים האופציונליים.

  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.
      • במדדים שמבוססים על מודלים, הערך חייב להיות מספר ממשי (float) שגדול מ-3.0 או שווה לו. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.0.
      • במדדים מותאמים אישית, הערך חייב להיות מספר ממשי (float) ששווה ל-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, הכלי לאופטימיזציה מבוססת-נתונים מריץ את ההנחיות לדוגמה במודל המקור כדי ליצור את תגובות אמת הקרקע בשבילכם, למדדי הערכה שדורשים תגובות אמת קרקע. אם לא הרצתם בעבר את ההנחיות במודל של 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.
          • במדדים שמבוססים על מודלים, הערך חייב להיות מספר ממשי (float) שגדול מ-3.0 או שווה לו. אם לא מגדירים את המדיניות, ברירת המחדל היא 3.0.
          • במדדים מותאמים אישית, הערך חייב להיות מספר ממשי (float) ששווה ל-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

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

  1. ב-Colab Enterprise, פותחים את ה-notebook של Gemini Enterprise Agent Platform prompt optimizer.

    מעבר ל-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

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

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

  2. בקטע Inspect the results:

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

    2. לוחצים על play_circle Run cell.

המסוף

  1. בקטע Agent Platform במסוף Google Cloud , נכנסים לדף 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: כל קבוצה של הוראות מערכת ו/או דוגמאות לפרומפטים עם כמה דוגמאות (few-shot) שנוצרו על ידי הכלי לאופטימיזציה מבוססת-נתונים, וציון ההערכה שלהן.
    • ‫eval_results.json: התשובה של מודל היעד לכל הנחיה לדוגמה לכל קבוצה של הוראות מערכת שנוצרו ו/או דוגמאות מעטות והציון שלהן בהערכה.
    • ‫optimized_results.json: ההוראות למערכת ו/או הדוגמאות לפרומפט עם כמה דוגמאות (few-shot) שהניבו את הביצועים הכי טובים, וציון ההערכה שלהן.
  4. כדי לראות את הוראות המערכת שעברו אופטימיזציה, פותחים את הקובץ optimized_results.json.

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

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

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

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