שימוש בספריות OpenAI עם Gemini Enterprise Agent Platform

‫Chat Completions API פועל כנקודת קצה (endpoint) שתואמת ל-OpenAI, ומאפשרת להתממשק בקלות עם Gemini ב-Gemini Enterprise Agent Platform באמצעות ספריות OpenAI ל-Python ול-REST. אם אתם כבר משתמשים בספריות של OpenAI, אתם יכולים להשתמש ב-API הזה כדרך זולה לעבור בין קריאה למודלים של OpenAI לבין קריאה למודלים שמתארחים ב-Agent Platform, כדי להשוות בין הפלט, העלות והמדרגיות בלי לשנות את הקוד הקיים. אם אתם עדיין לא משתמשים בספריות של OpenAI, מומלץ להשתמש ב-Google Gen AI SDK. כדי להעביר את הקוד הקיים של OpenAI SDK לשימוש ב-Google Gen AI SDK, קראו את המאמר מעבר מ-OpenAI SDK ל-Google Gen AI SDK.

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

‫Chat Completions API תומך גם במודלים של Gemini וגם במודלים נבחרים בפריסה עצמית מ-Model Garden.

מודלי Gemini

המודלים הבאים תומכים ב-Chat Completions API:

לחצו כדי להרחיב את רשימת המודלים הנתמכים

מודלים בפריסה עצמית מ-Model Garden

אפשר להשתמש ב-Chat Completions API בקונטיינרים של Hugging Face Text Generation Interface (HF TGI) ושל Agent Platform Model Garden prebuilt vLLM. עם זאת, לא כל מודל שנפרס בקונטיינרים האלה תומך ב-Chat Completions API. בטבלה הבאה מפורטים המודלים הפופולריים ביותר שנתמכים לפי מאגר:

HF TGI

vLLM

פרמטרים נתמכים

במודלים של Google, ה-Chat Completions API תומך בפרמטרים הבאים של OpenAI. לתיאור של כל פרמטר, קראו את המאמר Creating chat completions במסמכי התיעוד של OpenAI. התמיכה בפרמטרים של מודלים של צד שלישי משתנה בהתאם למודל. כדי לראות באילו פרמטרים המודל תומך, עיינו במסמכי התיעוד שלו.

messages
  • System message
  • ‫User message: הסוגים text ו-image_url נתמכים. הסוג image_url תומך בתמונות שמאוחסנות ב-URI של Cloud Storage או בקידוד base64 בפורמט "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". במאמר הסבר על אחסון אובייקטים מוסבר איך יוצרים קטגוריה ב-Cloud Storage ומעלים אליה קובץ.
  • Assistant message
  • Tool message
  • ‫Function message: השדה הזה הוצא משימוש, אבל הוא נתמך לצורך תאימות לדורות קודמים.
model
detail במודלים שקדמו ל-Gemini 3, השדה detail חייב להיות עקבי בכל ההודעות והתוכן (הוא ברמת הבקשה). ב-Gemini 3 ואילך, זה תואם ל-`media_resolution` ברמת החלק. מידע נוסף זמין במאמר רזולוציית מדיה.
max_completion_tokens כינוי של max_tokens.
modalities תמיכה בערכים audio,‏ image ו-text.
max_tokens
n
frequency_penalty
presence_penalty
reasoning_effort מגדיר כמה זמן וכמה אסימונים משמשים לתגובה.
  • low: 1024
  • medium: 8192
  • high: 24576
מכיוון שהתשובה לא כוללת מחשבות, אפשר לציין רק את reasoning_effort או את extra_body.google.thinking_config.
response_format
  • ‫json_object: המערכת מפרשת את זה כהעברה של "application/json" ל-Gemini API.
  • json_schema. אין תמיכה בסכימות רקורסיביות מלאות. additional_properties נתמך.
  • ‫text: המערכת מפרשת את זה כהעברת "text/plain" ל-Gemini API.
  • כל סוג MIME אחר מועבר למודל כמו שהוא, למשל העברה ישירה של "application/json".
seed תואם ל-GenerationConfig.seed.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • ‫parameters: מציינים פרמטרים באמצעות מפרט OpenAPI. זה שונה משדה הפרמטרים של OpenAI, שמתואר כאובייקט סכימת JSON. במדריך של OpenAPI מוסבר על ההבדלים במילות המפתח בין OpenAPI לבין סכימת JSON.
tool_choice
  • none
  • auto
  • ‫required: תואם למצב ANY ב-FunctionCallingConfig.
  • ‫validated: תואם למצב VALIDATED ב-FunctionCallingConfig. ההגדרה הזו ספציפית ל-Google.
web_search_options תואם לכלי GoogleSearch. אין תמיכה באפשרויות משנה.
function_call השדה הזה הוצא משימוש, אבל הוא נתמך לצורך תאימות לדורות קודמים.
functions השדה הזה הוצא משימוש, אבל הוא נתמך לצורך תאימות לדורות קודמים.

אם תעבירו פרמטר לא נתמך, המערכת תתעלם ממנו.

פרמטרים של קלט מרובה מצבים

‫Chat Completions API תומך בקלטים מולטי-מודאליים נבחרים.

input_audio
  • ‫data: כל URI או פורמט blob תקין. אנחנו תומכים בכל סוגי ה-BLOB, כולל תמונות, אודיו ווידאו. כל מה שנתמך על ידי GenerateContent נתמך (HTTP,‏ Cloud Storage וכו').
  • ‫format: OpenAI תומך גם ב-wav (audio/wav) וגם ב-mp3 (audio/mp3). ב-Gemini יש תמיכה בכל סוגי ה-MIME התקינים.
image_url
  • data: בדומה ל-input_audio, יש תמיכה בכל URI או פורמט blob תקין.
    שימו לב ש-image_url ככתובת URL יוגדר כברירת מחדל לסוג MIME של image/* ‎, ו-image_url כנתוני blob יכול לשמש ככל קלט מולטי-מודאלי.
  • detail: בדומה לרזולוציית המדיה, ההגדרה הזו קובעת את מספר האסימונים המקסימלי לכל תמונה בבקשה. שימו לב שב-OpenAI השדה הוא לכל תמונה, אבל Gemini אוכף את אותה רמת פירוט בכל הבקשה, ואם תעבירו כמה סוגי פירוט בבקשה אחת, תופיע שגיאה.

באופן כללי, הפרמטר data יכול להיות URI או שילוב של סוג MIME ובייטים בקידוד base64 בפורמט "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". לרשימה המלאה של סוגי MIME, ראו GenerateContent. מידע נוסף על קידוד base64 של OpenAI זמין במסמכי התיעוד שלהם.

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

פרמטרים ספציפיים ל-Gemini

יש כמה תכונות שנתמכות ב-Gemini ולא זמינות במודלים של OpenAI. עדיין אפשר להעביר את התכונות האלה כפרמטרים, אבל הן חייבות להיות כלולות ב-extra_content או ב-extra_body, אחרת המערכת תתעלם מהן.

התכונות של extra_body

מוסיפים שדה google שיכיל את כל התכונות הספציפיות של extra_body ב-Gemini.

{
  ...,
  "extra_body": {
     "google": {
       ...,
       // Add extra_body features here.
     }
   }
}
safety_settings הערך הזה תואם ל-SafetySetting של Gemini.
cached_content השדה הזה תואם לשדה generateContent.cached_content ב-Gemini.
thinking_config הערך הזה תואם ל-GenerationConfig.ThinkingConfig של Gemini.
thought_tag_marker משמש להפרדת המחשבות של המודל מהתשובות שלו במודלים שבהם התכונה "מעמיק וחושב" זמינה.
אם לא מציינים תגים, המודל לא יחזיר תגים סביב תהליך החשיבה שלו. אם הן קיימות, בשאילתות הבאות תגי המחשבה יוסרו והמחשבות יסומנו בהתאם להקשר. כך נשמר ההקשר המתאים לשאילתות הבאות.
stream_function_call_arguments העברת ארגומנטים של בקשה להפעלת פונקציה כקטעי JSON. מידע נוסף זמין במאמר העברת ארגומנטים של בקשה להפעלת פונקציה בסטרימינג.
tools מציינים כלים שדומים ל-`GenerateContent`. מידע נוסף זמין במאמר Tool.
media_resolution מציינים רזולוציית מדיה ברמת הבקשה, בדומה ל-`GenerateContent`. מידע נוסף זמין במאמר MediaResolution.

התכונות של extra_content

‫extra_content מאפשר לכם לציין תוכן ספציפי ל-Gemini שלא צריך להתעלם ממנו.

מוסיפים שדה google שיכיל את כל התכונות הספציפיות של extra_content ב-Gemini.

{
  ...,
  "extra_content": {
     "google": {
       ...,
       // Add extra_content features here.
     }
   }
}
thought השדה הזה מציין במפורש אם שדה הוא מחשבה, והוא מקבל עדיפות על פני thought_tag_marker. הוא עוזר להבחין בין שלבים שונים בתהליך החשיבה, במיוחד בתרחישים של שימוש בכלים שבהם שלבי ביניים עלולים להיחשב בטעות לתשובות סופיות. אם מתייגים חלקים ספציפיים בקלט כמחשבות, אפשר להנחות את המודל להתייחס אליהם כאל תהליך חשיבה פנימי ולא כאל תשובות שגלויות למשתמשים.
thought_signature שדה בייטים שמספק חתימת מחשבה לאימות מול המחשבות שהמודל מחזיר. השדה הזה שונה מהשדה הבוליאני thought. מידע נוסף זמין במאמר חתימות של מחשבות.
parts ספציפי להודעת כלי כדי להעביר חלקי תגובה של פונקציה מולטי-מודאלית בחזרה למודל. מידע נוסף זמין במאמרים FunctionResponsePart ותגובה לפונקציה מולטימוֹדלית.

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