יצירת תוכן באמצעות Gemini API ב-Vertex AI

אפשר להשתמש ב-generateContent או ב-streamGenerateContent כדי ליצור תוכן באמצעות Gemini.

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

קדימה, מתחילים

כדי להתחיל ליצור תוכן באמצעות Gemini:

  1. יוצרים חשבון Google Cloud.

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

  3. הוראות לשליחת בקשה ל-Gemini API ב-Vertex AI באמצעות SDK של שפת תכנות או API בארכיטקטורת REST מופיעות במדריך למתחילים עם Gemini API ב-Vertex AI.

מודלים נתמכים

כל המודלים של Gemini תומכים ביצירת תוכן.

רשימת פרמטרים

פרטים על ההטמעה מופיעים בדוגמאות.

גוף הבקשה

{
  "cachedContent": string,
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "inlineData": {
            "mimeType": string,
            "data": string
          },
          "fileData": {
            "mimeType": string,
            "fileUri": string
          },
          // End of list of possible types for union field data.

          "thought": boolean,
          "thoughtSignature": string,
          "videoMetadata": {
            "startOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "endOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "fps": double
          },
          "mediaResolution": MediaResolution
        }
      ]
    }
  ],
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": string,
          "description": string,
          "parameters": {
            object (OpenAPI Object Schema)
          }
        }
      ]
    }
  ],
  "safetySettings": [
    {
      "category": enum (HarmCategory),
      "threshold": enum (HarmBlockThreshold)
    }
  ],
  "generationConfig": {
    "temperature": number,
    "topP": number,
    "topK": number,
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "stopSequences": [
      string
    ],
    "responseMimeType": string,
    "responseSchema": schema,
    "seed": integer,
    "responseLogprobs": boolean,
    "logprobs": integer,
    "audioTimestamp": boolean,
    "thinkingConfig": {
      "thinkingBudget": integer,
      "thinkingLevel": enum
    },
    "mediaResolution": MediaResolution
  },
  "labels": {
    string: string
  }
}

גוף הבקשה מכיל נתונים עם הפרמטרים הבאים:

פרמטרים

cachedContent

אופציונלי: string

השם של התוכן שנשמר במטמון ומשמש כהקשר להצגת התחזית. פורמט: projects/{project}/locations/{location}/cachedContents/{cachedContent}

contents

חובה: Content

התוכן של השיחה הנוכחית עם המודל.

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

systemInstruction

Content (אופציונלי)

זמין ב-gemini-2.0-flash וב-gemini-2.0-flash-lite.

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

מחרוזות text נכללות במגבלת האסימונים.

המערכת מתעלמת מהשדה role של systemInstruction, והוא לא משפיע על הביצועים של המודל.

tools

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

toolConfig

זה שינוי אופציונלי. מידע נוסף על בקשה להפעלת פונקציה

safetySettings

SafetySetting (אופציונלי)

הגדרות לכל בקשה לחסימת תוכן לא בטוח.

נאכפה בתאריך GenerateContentResponse.candidates.

generationConfig

GenerationConfig (אופציונלי)

הגדרות התצורה של יצירת התמונות.

labels

string (אופציונלי)

מטא-נתונים שאפשר להוסיף לקריאה ל-API בפורמט של צמדי מפתח/ערך.

contents

סוג הנתונים המובְנים הבסיסי שמכיל תוכן של הודעה שמורכב מכמה חלקים.

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

פרמטרים

role

string

הזהות של הישות שיצרה את ההודעה. יש תמיכה בערכים הבאים:

  • user: מציין שההודעה נשלחה על ידי אדם אמיתי, בדרך כלל הודעה שנוצרה על ידי משתמש.
  • model: מציין שההודעה נוצרה על ידי המודל.

הערך model משמש להוספת הודעות מהמודל לשיחה במהלך שיחות מרובות תורות.

parts

Part

רשימה של חלקים מסודרים שמרכיבים הודעה אחת. יכול להיות שלחלקים שונים יהיו סוגי MIME שונים של IANA.

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

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

parts

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

פרמטרים

text

string (אופציונלי)

הנחיית טקסט או קטע קוד.

inlineData

Blob (אופציונלי)

נתונים מוטבעים בבייטים גולמיים.

במקרה של gemini-2.0-flash-lite ו-gemini-2.0-flash, אפשר לציין עד 3,000 תמונות באמצעות inlineData.

fileData

fileData (אופציונלי)

נתונים שמאוחסנים בקובץ.

functionCall

אופציונלי: FunctionCall.

הוא מכיל מחרוזת שמייצגת את השדה FunctionDeclaration.name ואובייקט JSON מובנה שמכיל פרמטרים לבקשה להפעלת פונקציה שהמודל חזה.

מידע נוסף על בקשה להפעלת פונקציה

functionResponse

אופציונלי: FunctionResponse.

פלט התוצאה של FunctionCall שמכיל מחרוזת שמייצגת את השדה FunctionDeclaration.name ואובייקט JSON מובנה שמכיל את הפלט מ<בקשה להפעלת פונקציה>. הוא משמש כהקשר למודל.

מידע נוסף על בקשה להפעלת פונקציה

thought

boolean (אופציונלי)

מציין אם החלק מייצג את תהליך החשיבה או הנימוק של המודל.

thoughtSignature

string (bytes format) (אופציונלי)

חתימה אטומה למחשבה, כדי שאפשר יהיה לעשות בה שימוש חוזר בבקשות הבאות. מחרוזת בקידוד Base64.

videoMetadata

VideoMetadata (אופציונלי)

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

  • "startOffset": { "seconds": 60 }
  • "endOffset": { "seconds": 70 }
  • "fps": 10.0

צריך לציין את המטא-נתונים רק בזמן הצגת נתוני הסרטון ב-inlineData או ב-fileData.

mediaResolution

MediaResolution (אופציונלי)

רזולוציית המדיה לכל חלק של קלט המדיה. קובעת את אופן העיבוד של מדיה שמוזנת. אם מציינים את ההגדרה הזו, היא מבטלת את ההגדרה mediaResolution ב-generationConfig. ‫LOW מפחית את מספר הטוקנים לכל תמונה או סרטון, ויכול להיות שפרטים מסוימים יאבדו, אבל הוא מאפשר להוסיף סרטונים ארוכים יותר בהקשר. ערכים נתמכים: HIGH, ‏ MEDIUM, ‏ LOW.

blob

בלוב תוכן. אם אפשר, עדיף לשלוח כטקסט ולא כבייטים גולמיים.

פרמטרים

mimeType

string

סוג המדיה של הקובץ שצוין בשדות data או fileUri. הערכים הקבילים כוללים את האפשרויות הבאות:

לחיצה להרחבת סוגי MIME

  • application/pdf
  • audio/mpeg
  • audio/mp3
  • audio/wav
  • image/png
  • image/jpeg
  • image/webp
  • text/plain
  • video/mov
  • video/mpeg
  • video/mp4
  • video/mpg
  • video/avi
  • video/wmv
  • video/mpegps
  • video/flv

ב-gemini-2.0-flash-lite וב-gemini-2.0-flash, האורך המקסימלי של קובץ אודיו הוא 8.4 שעות, והאורך המקסימלי של קובץ וידאו (ללא אודיו) הוא שעה אחת. למידע נוסף, אפשר לעיין בדרישות של Gemini בנוגע ל אודיו ו לווידאו.

קובצי טקסט צריכים להיות בקידוד UTF-8. התוכן של קובץ הטקסט נספר במגבלת הטוקנים.

אין הגבלה על רזולוציית התמונה.

data

bytes

קידוד base64 של התמונה, קובץ ה-PDF או הסרטון שרוצים לכלול בהנחיה. כשמצרפים מדיה בתוך השורה, צריך לציין גם את סוג המדיה (mimeType) של הנתונים.

מגבלת גודל: 7MB לתמונות

FileData

נתוני URI או כתובת URL של אתר.

פרמטרים

mimeType

string

סוג ה-MIME של הנתונים לפי IANA.

fileUri

string

כתובת ה-URI או כתובת ה-URL של הקובץ שרוצים לכלול בהנחיה. הערכים הקבילים כוללים את האפשרויות הבאות:

  • URI של קטגוריה של Cloud Storage: האובייקט צריך להיות ניתן לקריאה באופן ציבורי או להיות באותו פרויקט Google Cloud ששולח את הבקשה. במקרה של gemini-2.0-flash ו-gemini-2.0-flash-lite, מגבלת הגודל היא ‎2 GB.
  • כתובת URL מסוג HTTP: כתובת ה-URL של הקובץ חייבת להיות קריאה לכולם. אפשר לציין קובץ סרטון אחד, קובץ אודיו אחד ועד 10 קובצי תמונות לכל בקשה. הגודל המקסימלי של קובצי אודיו, קובצי וידאו ומסמכים הוא 15 MB.
  • כתובת URL של סרטון ב-YouTube: הסרטון ב-YouTube צריך להיות בבעלות החשבון שבו השתמשתם כדי להיכנס אל Google Cloud המסוף, או להיות גלוי לכולם. אפשר לציין רק כתובת URL אחת של סרטון ב-YouTube לכל בקשה.

כשמציינים fileURI, צריך לציין גם את סוג המדיה (mimeType) של הקובץ. אם שירות VPC Service Controls מופעל, ציון כתובת URL של קובץ מדיה עבור fileURI אינו נתמך.

functionCall

תחזית functionCall שמוחזרת מהמודל ומכילה מחרוזת שמייצגת את functionDeclaration.name ואובייקט JSON מובנה שמכיל את הפרמטרים והערכים שלהם.

פרמטרים

name

string

השם של הפונקציה שרוצים להפעיל.

args

Struct

הפרמטרים והערכים של הפונקציה בפורמט אובייקט JSON.

פרטים על הפרמטרים מופיעים במאמר בנושא קריאה לפונקציות.

functionResponse

הפלט שמתקבל מ-FunctionCall שמכיל מחרוזת שמייצגת את FunctionDeclaration.name. הוא מכיל גם אובייקט JSON מובנה עם הפלט מהפונקציה (והוא משמש כהקשר למודל). התג הזה צריך להכיל את התוצאה של FunctionCall שנוצרה על סמך חיזוי של המודל.

פרמטרים

name

string

השם של הפונקציה שרוצים להפעיל.

response

Struct

התגובה של הפונקציה בפורמט אובייקט JSON.

videoMetadata

מטא-נתונים שמתארים את תוכן סרטון הקלט.

פרמטרים

startOffset

google.protobuf.Duration (אופציונלי)

ההיסט מתחילת הסרטון.

endOffset

google.protobuf.Duration (אופציונלי)

ההיסט של סוף הסרטון.

fps

double (אופציונלי)

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

safetySetting

הגדרות בטיחות.

פרמטרים

category

HarmCategory (אופציונלי)

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

הרחבת קטגוריות הבטיחות

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT

threshold

HarmBlockThreshold (אופציונלי)

הסף לחסימת תשובות שעשויות להשתייך לקטגוריית הבטיחות שצוינה על סמך הסתברות.

  • OFF
  • BLOCK_NONE
  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

method

HarmBlockMethod (אופציונלי)

מציינים אם הסף משמש לציון הסתברות או חומרה. אם לא מציינים ערך, נעשה שימוש בסף לציון הסתברות.

harmCategory

קטגוריות של נזק שחוסמות תוכן.

פרמטרים

HARM_CATEGORY_UNSPECIFIED

לא צוינה קטגוריית הנזק.

HARM_CATEGORY_HATE_SPEECH

קטגוריית הנזק היא דברי שטנה.

HARM_CATEGORY_DANGEROUS_CONTENT

קטגוריית הנזק היא תוכן מסוכן.

HARM_CATEGORY_HARASSMENT

קטגוריית הנזק היא הטרדה.

HARM_CATEGORY_SEXUALLY_EXPLICIT

קטגוריית הנזק היא תוכן מיני בוטה.

harmBlockThreshold

רמות הסבירות שמשמשות לחסימת תשובה.

פרמטרים

HARM_BLOCK_THRESHOLD_UNSPECIFIED

סף לא מוגדר לחסימת תוכן מזיק.

BLOCK_LOW_AND_ABOVE

חסימה של סף נמוך ומעלה (כלומר, חסימה של יותר תוצאות).

BLOCK_MEDIUM_AND_ABOVE

חסימה של סף בינוני ומעלה.

BLOCK_ONLY_HIGH

חסימה רק של סף גבוה (כלומר, חסימה של פחות תוצאות).

BLOCK_NONE

לא לחסום אף אחד.

OFF

אם כל הקטגוריות מושבתות, ההגנה מושבתת

harmBlockMethod

סף הסתברות שחוסם תגובה על סמך שילוב של הסתברות וחומרה.

פרמטרים

HARM_BLOCK_METHOD_UNSPECIFIED

לא צוינה שיטה לחסימת תוכן מזיק.

SEVERITY

שיטת החסימה של תוכן מזיק משתמשת גם בציון הסתברות וגם בציון חומרה.

PROBABILITY

שיטת החסימה של תוכן מזיק מתבססת על ציון הסבירות.

generationConfig

הגדרות התצורה שמשמשות ליצירת ההנחיה.

פרמטרים

temperature

float (אופציונלי)

טווח הערכים וערך ברירת המחדל הם ספציפיים לכל מודל. טבלת טווחי הטמפרטורות וערכי ברירת המחדל

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

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

1.0 הוא ערך הטמפרטורה המומלץ להתחלה.

  • טווח ל-gemini-2.0-flash-lite: 0.0 - 2.0 (ברירת מחדל: 1.0)
  • טווח ל-gemini-2.0-flash: 0.0 - 2.0 (ברירת מחדל: 1.0)

מידע נוסף על פרמטרים ליצירת תוכן

topP

float (אופציונלי)

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

ההגדרה Top-P משנה את האופן שבו המודל בוחר אסימונים לפלט. האסימונים נבחרים מהסבירים ביותר (ראו top-K) עד לסבירים פחות, עד שסכום ההסתברויות שלהם שווה לערך top-P. לדוגמה, אם ההסתברות של האסימונים A, ‏ B ו-C היא 0.3, ‏ 0.2 ו-0.1, והערך של top-P הוא 0.5, המודל יבחר באסימון A או באסימון B כאסימון הבא באמצעות רמת אקראיות, ויפסול את C כמועמד.

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

  • טווח: 0.0 - 1.0
  • ברירת המחדל של gemini-2.0-flash-lite: 0.95
  • ברירת המחדל של gemini-2.0-flash: 0.95

candidateCount

int (אופציונלי)

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

האפשרות לציין כמה מועמדים היא תכונת Preview שפועלת עם generateContent (streamGenerateContent לא נתמך). המודלים הבאים נתמכים:

  • gemini-2.0-flash-lite: 1-8, ברירת מחדל: 1
  • gemini-2.0-flash: 1-8, ברירת מחדל: 1

maxOutputTokens

אופציונלי: int

מספר האסימונים המקסימלי שאפשר ליצור בתשובה. טוקן הוא בערך ארבעה תווים. ‫100 טוקנים תואמים בערך ל-60 עד 80 מילים.

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

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

stopSequences

List[string] (אופציונלי)

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

לדוגמה, אם זו התשובה שמתקבלת כשלא מציינים את stopSequences:

public static string reverse(string myString)

אז התשובה שמתקבלת כשמגדירים את stopSequences לערך ["Str", "reverse"] היא:

public static string

אפשר להוסיף לרשימה עד 5 פריטים.

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

presencePenalty

float (אופציונלי)

עונשים חיוביים.

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

הערך המקסימלי של presencePenalty הוא עד 2.0, לא כולל. הערך המינימלי הוא -2.0.

frequencyPenalty

float (אופציונלי)

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

הערך המקסימלי של frequencyPenalty הוא עד 2.0, לא כולל. הערך המינימלי הוא -2.0.

responseMimeType

string (enum) (אופציונלי)

סוג ה-MIME של תגובת הפלט של הטקסט המועמד שנוצר.

סוגי ה-MIME הבאים נתמכים:

  • application/json: תגובת JSON במועמדים.
  • text/plain (ברירת מחדל): פלט של טקסט פשוט.
  • text/x.enum: למשימות סיווג, צריך להחזיר ערך enum כפי שמוגדר בסכימת התגובה.

כדי למנוע התנהגויות לא רצויות, צריך לציין את סוג התגובה המתאים. לדוגמה, אם אתם רוצים לקבל תגובה בפורמט JSON, צריך לציין application/json ולא text/plain.

אי אפשר להשתמש ב-text/plain עם responseSchema.

responseSchema

אופציונלי: סכימה

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

כדי להשתמש בפרמטר הזה, צריך לציין סוג MIME נתמך שאינו text/plain בפרמטר responseMimeType.

seed

int (אופציונלי)

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

responseLogprobs

boolean (אופציונלי)

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

logprobs

int (אופציונלי)

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

כדי להשתמש בפרמטר הזה, צריך להפעיל את responseLogprobs.

audioTimestamp

boolean (אופציונלי)

זמין במודלים הבאים:

  • ‫Gemini 2.0 Flash-Lite
  • Gemini ‎2.0 Flash

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

זו תכונה בגרסת טרום-השקה (Preview).

thinkingConfig

object (אופציונלי)

הגדרה של תהליך החשיבה של המודל ב-Gemini 2.5 ומודלים מתקדמים יותר.

אובייקט thinkingConfig מכיל את השדות הבאים:

  • thinkingBudget: integer. כברירת מחדל, המודל שולט באופן אוטומטי בכמות הטוקנים שהוא חושב שצריך להשתמש בהם, עד למקסימום של 8,192 טוקנים.
  • thinkingLevel: enum. ההגדרה הזו קובעת את כמות החשיבה הרציונלית הפנימית שהמודל מבצע לפני שהוא יוצר תשובה. רמות גבוהות יותר עשויות לשפר את האיכות במשימות מורכבות, אבל להגדיל את זמן האחזור והעלות. הערכים הנתמכים הם LOW ו-HIGH.

mediaResolution

MediaResolution (אופציונלי)

קובעת את אופן העיבוד של מדיה שמוזנת. ‫LOW מפחית את מספר הטוקנים לכל תמונה או סרטון, מה שעלול לגרום לאיבוד פרטים אבל מאפשר להוסיף סרטונים ארוכים יותר בהקשר. ערכים נתמכים: HIGH, ‏ MEDIUM, ‏ LOW.

גוף התשובה

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": string
          }
        ]
      },
      "finishReason": enum (FinishReason),
      "safetyRatings": [
        {
          "category": enum (HarmCategory),
          "probability": enum (HarmProbability),
          "blocked": boolean
        }
      ],
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "uri": string,
            "title": string,
            "license": string,
            "publicationDate": {
              "year": integer,
              "month": integer,
              "day": integer
            }
          }
        ]
      },
      "avgLogprobs": double,
      "logprobsResult": {
        "topCandidates": [
          {
            "candidates": [
              {
                "token": string,
                "logProbability": float
              }
            ]
          }
        ],
        "chosenCandidates": [
          {
            "token": string,
            "logProbability": float
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": integer,
    "candidatesTokenCount": integer,
    "totalTokenCount": integer
  },
  "modelVersion": string
}
רכיב התגובה תיאור
modelVersion המודל והגרסה שבהם נעשה שימוש ליצירה. לדוגמה: gemini-2.0-flash-lite-001.
text הטקסט שנוצר.
finishReason הסיבה להפסקת יצירת הטוקנים על ידי המודל. אם השדה ריק, המודל לא הפסיק ליצור את הטוקנים. מכיוון שהתגובה משתמשת בהנחיה כדי לספק הקשר, אי אפשר לשנות את אופן הפעולה של המודל כשמפסיקים ליצור אסימונים.
  • FINISH_REASON_STOP: נקודת עצירה טבעית של המודל או רצף עצירה שסופק.
  • FINISH_REASON_MAX_TOKENS: הגעתם למספר המקסימלי של האסימונים שצוין בבקשה.
  • FINISH_REASON_SAFETY: יצירת האסימון הופסקה כי התשובה סומנה מטעמי בטיחות. שימו לב: אם מסנני התוכן חוסמים את הפלט, Candidate.content ריק.
  • FINISH_REASON_RECITATION: יצירת הטוקן הופסקה כי התגובה סומנה ככוללת ציטוטים לא מורשים.
  • FINISH_REASON_BLOCKLIST: יצירת הטוקן הופסקה כי התשובה כוללת מונחים חסומים.
  • FINISH_REASON_PROHIBITED_CONTENT: יצירת הטוקן הופסקה כי התגובה סומנה כתוכן אסור, כמו תוכן שמתאר התעללות מינית בילדים (CSAM).
  • FINISH_REASON_IMAGE_PROHIBITED_CONTENT: יצירת האסימון הופסקה כי התמונה שסופקה בהנחיה סומנה כתוכן אסור.
  • FINISH_REASON_NO_IMAGE: יצירת האסימון הופסקה כי בהנחיה היה צפוי שתהיה תמונה, אבל לא סופקה תמונה.
  • FINISH_REASON_SPII: יצירת הטוקנים הופסקה כי התשובה סומנה בגלל פרטים אישיים מזהים רגישים (SPII).
  • FINISH_REASON_MALFORMED_FUNCTION_CALL: מועמדים נחסמו בגלל בקשה להפעלת פונקציה שהיא פגומה ולא ניתנת לניתוח.
  • FINISH_REASON_OTHER: כל הסיבות האחרות שהובילו להפסקת האסימון
  • FINISH_REASON_UNSPECIFIED: לא צוינה סיבה לסיום.
category קטגוריית הבטיחות שרוצים להגדיר לה סף. הערכים הקבילים כוללים את האפשרויות הבאות:

הרחבת קטגוריות הבטיחות

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT
probability רמות הסבירות לפגיעה בתוכן.
  • HARM_PROBABILITY_UNSPECIFIED
  • NEGLIGIBLE
  • LOW
  • MEDIUM
  • HIGH
blocked תכונה ניסיונית בוליאנית שמשויכת למאפיין בטיחות ומציינת אם הקלט או הפלט של המודל נחסמו.
startIndex מספר שלם שמציין איפה מתחיל ציטוט ב-content. הערך של startIndex הוא בבייטים ומחושב מתוך התגובה שמקודדת ב-UTF-8.
endIndex מספר שלם שמציין איפה מסתיים ציטוט ב-content. הערך של endIndex הוא בבייטים ומחושב מתוך התגובה שמקודדת ב-UTF-8.
url כתובת ה-URL של מקור הציטוט. דוגמאות למקורות של כתובות URL יכולות להיות אתר חדשות או מאגר ב-GitHub.
title הכותרת של מקור הציטוט. דוגמאות לכותרים של מקורות: כותרת של מאמר חדשות או של ספר.
license הרישיון שמשויך לציטוט.
publicationDate התאריך שבו פורסם הציטוט. הפורמטים התקינים הם YYYY, YYYY-MM ו-YYYY-MM-DD.
avgLogprobs ההסתברות הממוצעת של הלוג של המועמד.
logprobsResult מחזירה את הטוקנים המובילים האפשריים (topCandidates) ואת הטוקנים שנבחרו בפועל (chosenCandidates) בכל שלב.
token מודלים של AI גנרטיבי מפרקים נתוני טקסט לטוקנים לצורך עיבוד, שיכולים להיות תווים, מילים או ביטויים.
logProbability ערך הסתברות לוגריתמית שמציין את רמת הביטחון של המודל לגבי טוקן מסוים.
promptTokenCount מספר האסימונים בבקשה.
candidatesTokenCount מספר הטוקנים בתשובות.
totalTokenCount מספר האסימונים בבקשה ובתגובות.

דוגמאות

יצירת טקסט

ליצור תשובה שהיא טקסט מקלט טקסט.

Gen AI SDK ל-Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="How does AI work?",
)
print(response.text)
# Example response:
# Okay, let's break down how AI works. It's a broad field, so I'll focus on the ...
#
# Here's a simplified overview:
# ...

Python (OpenAI)

אפשר להפעיל את Inference API באמצעות ספריית OpenAI. למידע נוסף, ראו קריאה למודלים של Vertex AI באמצעות ספריית OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateWithText shows how to generate text using a text prompt.
func generateWithText(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	resp, err := client.Models.GenerateContent(ctx,
		"gemini-2.5-flash",
		genai.Text("How does AI work?"),
		nil,
	)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)
	// Example response:
	// That's a great question! Understanding how AI works can feel like ...
	// ...
	// **1. The Foundation: Data and Algorithms**
	// ...

	return nil
}

שימוש בהנחיה מולטי-מודאלית

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

Gen AI SDK ל-Python

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        "What is shown in this image?",
        Part.from_uri(
            file_uri="gs://cloud-samples-data/generative-ai/image/scones.jpg",
            mime_type="image/jpeg",
        ),
    ],
)
print(response.text)
# Example response:
# The image shows a flat lay of blueberry scones arranged on parchment paper. There are ...

Python (OpenAI)

אפשר להפעיל את Inference API באמצעות ספריית OpenAI. למידע נוסף, ראו קריאה למודלים של Vertex AI באמצעות ספריית OpenAI.


from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Describe the following image:"},
                {
                    "type": "image_url",
                    "image_url": "gs://cloud-samples-data/generative-ai/image/scones.jpg",
                },
            ],
        }
    ],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextImage shows how to generate text using both text and image input
func generateWithTextImage(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "What is shown in this image?"},
			{FileData: &genai.FileData{
				// Image source: https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
				FileURI:  "gs://cloud-samples-data/generative-ai/image/scones.jpg",
				MIMEType: "image/jpeg",
			}},
		},
			Role: genai.RoleUser},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// The image shows an overhead shot of a rustic, artistic arrangement on a surface that ...

	return nil
}

סטרימינג של תשובה בהודעת טקסט

יצירת תשובה של מודל סטרימינג מקלט טקסט.

Gen AI SDK ל-Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-flash",
    contents="Why is the sky blue?",
):
    print(chunk.text, end="")
# Example response:
# The
#  sky appears blue due to a phenomenon called **Rayleigh scattering**. Here's
#  a breakdown of why:
# ...

Python (OpenAI)

אפשר להפעיל את Inference API באמצעות ספריית OpenAI. למידע נוסף, ראו קריאה למודלים של Vertex AI באמצעות ספריית OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    stream=True,
)
for chunk in response:
    print(chunk)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextStream shows how to generate text stream using a text prompt.
func generateWithTextStream(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := genai.Text("Why is the sky blue?")

	for resp, err := range client.Models.GenerateContentStream(ctx, modelName, contents, nil) {
		if err != nil {
			return fmt.Errorf("failed to generate content: %w", err)
		}

		chunk := resp.Text()

		fmt.Fprintln(w, chunk)
	}

	// Example response:
	// The
	//  sky is blue
	//  because of a phenomenon called **Rayleigh scattering**. Here's the breakdown:
	// ...

	return nil
}

גרסאות המודלים

כדי להשתמש בגרסה שעודכנה אוטומטית, צריך לציין את שם המודל בלי מספר הגרסה בסוף, למשל gemini-2.0-flash במקום gemini-2.0-flash-001.

מידע נוסף זמין במאמר גרסאות ומחזור חיים של מודלים של Gemini.

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