שמירת מטמון של הקשר למודלים של Gemini שעברו כוונון עדין

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

פעולות הניהול (Read, ‏ Update, ‏ Delete) של מטמון ההקשר עבור מודלים של Gemini שעברו התאמה נשארות עקביות עם מודלים בסיסיים. רק יצירת תוכן במטמון והסקת מסקנות דורשות התאמה ספציפית, שמפורטת בקטעים הבאים.

דרישות מוקדמות

התאמה עדינה של מודל Gemini: אתם צריכים מודל Gemini שעבר התאמה עדינה ופריסה, שמבוסס על מודל בסיסי נתמך (ראו סקירה כללית על שמירת נתוני הקשר במטמון). פרטים על כוונון עדין של מודל Gemini מופיעים במאמר כוונון עדין של מודל Gemini. כדי לקבל את נקודת הקצה של המודל המכוונן שנפרס, אפשר לעיין במאמר בנושא פריסת מודל שעבר כוונון.

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

  • המזהה והגרסה של מודל Gemini שעבר התאמה
  • שם המשאב של נקודת הקצה של המודל שעבר כוונון עדין ונפרס

גרסאות נתמכות

מודלים של Gemini שעברו כוונון עדין תומכים בשמירה במטמון באופן מרומז בגרסאות הבאות:

שמירת מטמון מפורשת נתמכת בגרסאות הבאות:

יצירת מטמון הקשר למודל שעבר כוונון

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

במקום להשתמש במודל הבסיסי בפורמט projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, צריך להשתמש במודל שעבר כוונון עדין בפורמט projects/{PROJECT}/locations/{LOCATION}/models/{MODEL}@{VERSION}.

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

REST

אתם יכולים להשתמש ב-REST כדי ליצור מטמון הקשר באמצעות Agent Platform API. לשם כך, שולחים בקשת POST לנקודת הקצה של מודל ההפצה. בדוגמה הבאה מוצג אופן היצירה של מטמון הקשר באמצעות קובץ שמאוחסן בקטגוריה של Cloud Storage.

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

  • PROJECT_ID: [מזהה הפרויקט](/resource-manager/docs/creating-managing-projects#identifiers). .
  • LOCATION: האזור שבו הבקשה תעובד ושבו התוכן ששמור במטמון מאוחסן. רשימת האזורים הנתמכים מופיעה במאמר אזורים זמינים.
  • MODEL_ID: מזהה מודל Gemini שעבר כוונון עדין.
  • MODEL_VERSION: גרסת מודל Gemini שעברה כוונון עדין.
  • CACHE_DISPLAY_NAME: שם תצוגה בעל משמעות שיעזור לכם לתאר ולזהות כל מטמון הקשר.
  • MIME_TYPE: סוג ה-MIME של התוכן שרוצים לשמור במטמון.
  • CONTENT_TO_CACHE_URI: ה-URI של Cloud Storage של התוכן שרוצים לשמור במטמון.

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

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

גוף בקשת JSON:

{
  "model": "projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID@MODEL_VERSION",
  "displayName": "CACHE_DISPLAY_NAME",
  "contents": [{
    "role": "user",
      "parts": [{
        "fileData": {
          "mimeType": "MIME_TYPE",
          "fileUri": "CONTENT_TO_CACHE_URI"
        }
      }]
  }]
}

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

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/cachedContents"

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/cachedContents" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

דוגמה לפקודת curl

LOCATION="us-central1"
MODEL_ID="model-id"
PROJECT_ID="test-project"
MODEL_VERSION=1
MIME_TYPE="video/mp4"
CACHED_CONTENT_URI="gs://path-to-bucket/video-file-name.mp4"

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents -d \
'{
  "model":"projects/${PROJECT_ID}/locations/${LOCATION}/models/${MODEL_ID}@${MODEL_VERSION}",
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "mimeType": "${MIME_TYPE}",
            "fileUri": "${CACHED_CONTENT_URI}"
          }
        }
      ]
    }
  ]
}'

שימוש במטמון הקשר למודל שעבר כוונון עדין

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

במקום לשלוח את הבקשה לנקודת הקצה של מודל הבסיס בפורמט projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, צריך לשלוח אותה לנקודת הקצה של המודל המותאם שפרסתם בפורמט projects/{PROJECT}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}.

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

כשמשתמשים במטמון הקשר, אי אפשר לציין את המאפיינים הבאים:

  • GenerativeModel.system_instructions
  • GenerativeModel.tool_config
  • GenerativeModel.tools

REST

אפשר להשתמש ב-REST כדי לציין מטמון הקשר עם הנחיה באמצעות Agent Platform API לשליחת בקשת POST לנקודת הקצה של מודל בעל התוכן הדיגיטלי.

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

  • PROJECT_ID: [מזהה הפרויקט](/resource-manager/docs/creating-managing-projects#identifiers). .
  • LOCATION: האזור שבו הבקשה ליצירת מטמון ההקשר עובדה.
  • ENDPOINT_ID: נקודת הקצה שבה המודל שעבר התאמה עדינה נפרס.
  • PROMPT_TEXT: הנחיית הטקסט לשליחה למודל.

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

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent

גוף בקשת JSON:

{
  "cachedContent": "projects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID",
  "contents": [
      {"role":"user","parts":[{"text":"PROMPT_TEXT"}]}
  ],
  "generationConfig": {
      "maxOutputTokens": 8192,
      "temperature": 1,
      "topP": 0.95,
  },
  "safetySettings": [
      {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
          "category": "HARM_CATEGORY_HARASSMENT",
          "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      }
  ],
}

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

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/endpoints/ENDPOINT_ID:generateContent"

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/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

דוגמה לפקודת curl

LOCATION="us-central1"
PROJECT_ID="test-project"
ENDPOINT_ID=987654321

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}:generateContent" -d \
'{
  "cachedContent": "projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}",
  "contents": [
      {"role":"user","parts":[{"text":"What are the benefits of exercise?"}]}
  ],
  "generationConfig": {
      "maxOutputTokens": 8192,
      "temperature": 1,
      "topP": 0.95,
  },
  "safetySettings": [
    {
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    }
  ],
}'