Source: https://ailoot.ai/models/he/gemini-2-5-pro/
Canonical: https://ailoot.ai/models/he/gemini-2-5-pro/
Language: he

# Google: Gemini 2.5 Pro

[Markdown](https://ailoot.ai/models/he/gemini-2-5-pro/index.md) · [JSON](https://ailoot.ai/models/he/gemini-2-5-pro/facts.json)

## [Google: Gemini 2.5 Pro](https://ailoot.ai/models/he/gemini-2-5-pro/)

Gemini 2.5 Pro הוא מודל החשיבה היציב של Google לקוד מורכב, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא מקבל טקסט, תמונות, אודיו, וידאו ו־PDF ומחזיר טקסט, עם כלים ופלט מובנה. תקציב החשיבה הדינמי שלו תומך ב־128–32,768 טוקנים, ואי אפשר להשבית אותו לחלוטין.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gemini-2.5-pro`](https://ailoot.ai/models/he/gemini-2-5-pro/#method-0)
- [**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent` `gemini-2.5-pro`](https://ailoot.ai/models/he/gemini-2-5-pro/#method-1)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gemini-2.5-pro`](https://ailoot.ai/models/he/gemini-2-5-pro/#method-2)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gemini-2.5-pro`](https://ailoot.ai/models/he/gemini-2-5-pro/#method-3)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-2.5-pro`](https://ailoot.ai/models/he/gemini-2-5-pro/#method-4)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-2.5-pro`](https://ailoot.ai/models/he/gemini-2-5-pro/#method-5)

על המודל

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

Gemini 2.5 Pro הוא פרופיל החשיבה היציב של Google לתכנות מתקדם, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא יכול להבין טקסט, אודיו, תמונות, וידאו ומאגרי קוד שלמים, ופרופיל Gemini API שלו מקבל גם קלט PDF. הפלט הוא טקסט, לרבות קוד, ניתוח כתוב או רשומה מובנית. משימה שימושית מספקת את הראיות ומבקשת תוצאה שאפשר לבדוק, כגון פתרון מוסבר, ממצא בבסיס קוד או השוואה בין כמה מסמכים.

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

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

חשיבה דינמית היא ברירת המחדל המתועדת. מדריך Gemini 2.5 GenerateContent תומך בתקציב חשיבה מפורש מ־128 עד 32,768 טוקנים עבור Pro, או ב־-1 לחשיבה מסתגלת. מהדורה זו אינה יכולה להשבית לחלוטין את החשיבה. הבקרות האלה שונות מאפשרות התקציב האפס של Flash ומהגדרות רמת החשיבה של Gemini 3. תקציב החשיבה מכוון את החשיבה ואינו מבטיח מספר מדויק של טוקנים פנימיים, וגם תקרת התשובה צריכה להשאיר מקום לתוצר הסופי.

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

עמוד API המדויק מתעד קריאה לפונקציות, הרצת קוד, חיפוש בקבצים, עיגון בחיפוש, עיגון ב־Maps, הקשר מכתובות URL ופלט מובנה. יש להגדיר מטרות פונקציות ושדות פרמטרים ולשמר את התוצאות האמיתיות בתורים מאוחרים יותר. ברשומה מוגבלת בסכמה, יש להגדיר שדות חובה וכיצד לייצג מידע חסר. הארכיטקטורה המקורית היא טרנספורמר רב־מודאלי דליל מסוג mixture-of-experts; תכנון המודל הזה אינו מספק כשלעצמו הרצת כלי חיצוני או יישום מוגמר מעבר לטקסט או לקוד שהוחזרו.

כרטיס המודל המקורי מציין הקשר קלט של 1M ופלט טקסט של 64K; טבלת API מציינת 1,048,576 טוקני קלט ו־65,536 טוקני פלט. הוראות, תוכן מקור והיסטוריה שנשמרה תורמים להכנת הקלט. מכסת תשובה מרבית כוללת טוקני חשיבה, ולכן תקרה קטנה מדי יכולה לקטוע את התשובה הסופית. שמירה במטמון ועיבוד באצווה מתועדים, לצד אפשרויות Flex ו־Priority. יש לשמור את מזהה כל מקור ואת הצורה הסופית המבוקשת בהכנת משימות עצמאיות בהקשר ארוך.

המזהה היציב נפרד ממהדורות Experimental ו־Preview הנדונות בנפרד בכרטיס המודל המשותף של Pro. אין לייחס את התוצאות הייחודיות לגרסאות האלה לפרופיל הזה רק משום שהן חולקות את השם Pro. הכרטיס מזהה הזיות אפשריות ומגבלות בהבנה סיבתית, בהסקה מורכבת ובחשיבה נגד־עובדתית, עם מועד חיתוך ידע בינואר 2025. יש לספק ראיות עדכניות כשנדרש ולבדוק הפניות למקורות, חישובים ושינויים מוצעים. הפלט השימושי הוא תוצר הטקסט או הקוד הנתמך שהמשימה ביקשה.

משימה מעשית

### משימה מעשית

דוגמה טכנית באנגלית

```
Trace an identifier through storage

Trace this identifier through three excerpts: form sends {customer_id:'0017'}; service computes id=Number(body.customer_id); repository stores String(id). Requirement: preserve leading zeros. Identify where the contract changes, propose a minimal consistent correction and give tests for '0017', '17' and a missing ID. Do not claim the tests were executed.
```

#### התוצאה הצפויה

```
A source-path explanation, a proposed patch and a three-case regression-test plan.
```

#### בדיקת התוצאה

```
Check that the proposed path preserves distinct strings 0017 and 17 while specifying missing-ID behavior.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `gemini-2.5-pro`

[`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=messages)

Google /`gemini-2.5-pro`

### התחלה

Gemini 2.5 Pro הוא מודל החשיבה היציב של Google לקוד מורכב, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא מקבל טקסט, תמונות, אודיו, וידאו ו־PDF ומחזיר טקסט, עם כלים ופלט מובנה. תקציב החשיבה הדינמי שלו תומך ב־128–32,768 טוקנים, ואי אפשר להשבית אותו לחלוטין.

סוגי קלט נתמכים

טקסט · תמונות

תוצאות

טקסט

### זמין ב-Ailoot · קלט ושיטות

**Ailoot · Anthropic Messages** `POST /v1/messages`

סוגי קלט

`text`, `image`

סוגי פלט

`text`

הקשר

⁦1,048,576⁩ tokens

פלט מרבי

⁦65,536⁩ tokens

פורמט פלט

json או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות gemini-2.5-pro | ברירת מחדל— |
| שדה`messages` | סוג`message[]` | דרישהחובה | ערכים ומגבלות מספר פריטים מזערי: ⁦1⁩ | ברירת מחדל— |
| שדה`messages[].role` | סוג`string` | דרישהחובה | ערכים ומגבלות user, assistant | ברירת מחדל— |
| שדה`messages[].content` | סוג`string\|content_block[]` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`system` | סוג`string\|content_block[]` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`max_tokens` | סוג`integer` | דרישהחובה | ערכים ומגבלות מינימום: ⁦1⁩ המגבלה חלה על: התקרה המדויקת של המודל/הכרטיס שנבחר | ברירת מחדל— |
| שדה`stream` | סוג`boolean` | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |
| שדה`temperature` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`top_p` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`stop_sequences` | סוג`string[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`tools` | סוג`tool[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`tools[].name` | סוג`string` | דרישהרשות | ערכים ומגבלות חל כאשר: סופק כלי | ברירת מחדל— |
| שדה`tools[].description` | סוג`string` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`tools[].input_schema` | סוג`JSON_schema` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`tool_choice` | סוג`object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`thinking.type` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`thinking.budget_tokens` | סוג`integer` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`output_config.effort` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`metadata` | סוג`object` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`cache_control` | סוג`object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |

שילובים של חומרי קלט

**טקסט** · טקסט UTF8

`messages[].content או בלוק type=text`

**טקסט + תמונה**

`{type:image,source:{type:base64,media_type,data}} או מקור מסוג type=url`

פרמטרים ומחזור חיים של השיטה

| פרמטר | מפרט |
| --- | --- |
| פרמטר`material_types` | מפרטtext, image |
| פרמטר`required` | מפרטmodel, messages, max\_tokens |
| פרמטר`optional_controls` | מפרטnull |
| פרמטר`content_type` | מפרטapplication/json |
| פרמטר`text_file_material` | מפרטתוכן UTF-8 בפועל מוכנס כטקסט; מזהי קבצים/URLs דורשים תמיכה נפרדת ומדויקת |

מחזור חיים: `exact retained published method`

מבני המתודות והמזהים מדויקים; יכולת הספק נפרדת מקבלת הבקשה לביצוע.

### תעריפים

#### תעריפי שיטות Ailoot

קלט

⁦‏0.00125 ‏$⁩ */ 1K*

פלט

⁦‏0.01 ‏$⁩ */ 1K*

קריאה מהמטמון

⁦‏0.000125 ‏$⁩ */ 1K*

#### מחירים לפי אורך הבקשה · Anthropic Messages

| גודל הבקשה, בטוקנים | קלט | פלט | קריאה מהמטמון | כתיבה למטמון | מטמון: 5 דקות | מטמון: 1 שעה |
| --- | --- | --- | --- | --- | --- | --- |
| גודל הבקשה, בטוקנים(⁦0⁩; ⁦200,000⁩\] | קלט⁦‏0.00125 ‏$⁩ | פלט⁦‏0.01 ‏$⁩ | קריאה מהמטמון⁦‏0.000125 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |
| גודל הבקשה, בטוקנים(⁦200,000⁩; ∞) | קלט⁦‏0.0025 ‏$⁩ | פלט⁦‏0.015 ‏$⁩ | קריאה מהמטמון⁦‏0.00025 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |

התעריפים ב-USD לכל 1K טוקנים. אם לא הוגדר תעריף, נעשה שימוש בתעריף הבסיס של השיטה; «—» מציין שלא הוגדר תעריף בסיס.

לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. [איך פועלים שריון הסכום והסדרת החיוב →](https://ailoot.ai/docs/he/billing/reserve/)

#### פרטי תעריף הייחוס

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

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

#### מחירים לפי תצורה

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

| תצורה | טבלת תעריפים | טוקנים בהקשר, יותר מ- | טוקנים בהקשר, עד וכולל | חיוב |
| --- | --- | --- | --- | --- |
| תצורהOpenAI Chat · תעריפי טוקנים בסיסיים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהOpenAI Chat · מדרגה 1 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהOpenAI Chat · מדרגה 2 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהAnthropic Messages · תעריפי טוקנים בסיסיים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהAnthropic Messages · מדרגה 1 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהAnthropic Messages · מדרגה 2 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |

### דוגמאות לבקשות

#### Ailoot · Anthropic Messages

דוגמת טקסטקלט, תמונהPython SDKNode.js SDKהזרמה ב-Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-2.5-pro", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-2.5-pro", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="gemini-2.5-pro",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
```

```js
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "gemini-2.5-pro",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
```

```python
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='gemini-2.5-pro',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### קבלה ושמירה של תוצאות

#### Ailoot · Anthropic Messages

json או SSE

##### שמירת כל התוצאות שהושלמו

שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.

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

##### כשצריך לבדוק את התגובה המקורית

שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.

שדות התגובה

| שדה | סוג |
| --- | --- |
| שדה`id` | סוגstring |
| שדה`model` | סוגstring |
| שדה`content[]` | סוגtext\|thinking\|tool\_use\|other content block |
| שדה`stop_reason` | סוגstring\|null |
| שדה`usage` | סוגobject |

שגיאות והשלבים הבאים

| תגובה | תנאי | השלב הבא |
| --- | --- | --- |
| תגובה⁦400⁩ · `invalid_request_error` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

<strong>Ailoot</strong> [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=messages)
**Ailoot Ultra** [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=messages), [`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=messages)

#### כינויים לנתיבי שיטות

`/chat/completions`

#### מזהי מודלים קשורים IDs

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=messages), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=messages), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=messages)

**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent` `gemini-2.5-pro`

[`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=gemini)

Google /`gemini-2.5-pro`

### התחלה

Gemini 2.5 Pro הוא מודל החשיבה היציב של Google לקוד מורכב, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא מקבל טקסט, תמונות, אודיו, וידאו ו־PDF ומחזיר טקסט, עם כלים ופלט מובנה. תקציב החשיבה הדינמי שלו תומך ב־128–32,768 טוקנים, ואי אפשר להשבית אותו לחלוטין.

סוגי קלט נתמכים

טקסט · תמונות

תוצאות

טקסט

### זמין ב-Ailoot · קלט ושיטות

**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent`

סוגי קלט

`text`, `image`

סוגי פלט

`text`

הקשר

⁦1,048,576⁩ tokens

פלט מרבי

⁦65,536⁩ tokens

פורמט פלט

json או סטרימינג נתמך

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`path.model` | סוג`string` | דרישהחובה | ערכים ומגבלות gemini-2.5-pro | ברירת מחדל— |
| שדה`contents` | סוג`content[]` | דרישהחובה | ערכים ומגבלות מספר פריטים מזערי: ⁦1⁩ | ברירת מחדל— |
| שדה`contents[].role` | סוג`string` | דרישהרשות | ערכים ומגבלות user, model | ברירת מחדל— |
| שדה`contents[].parts` | סוג`part[]` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`systemInstruction` | סוג`content` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`generationConfig.maxOutputTokens` | סוג`integer` | דרישהרשות | ערכים ומגבלות מינימום: ⁦1⁩ תלוי במודל | ברירת מחדל— |
| שדה`generationConfig.temperature` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`generationConfig.topP` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`generationConfig.topK` | סוג`integer` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`generationConfig.stopSequences` | סוג`string[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`generationConfig.thinkingConfig.includeThoughts` | סוג`boolean` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`generationConfig.thinkingConfig.thinkingBudget` | סוג`integer` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`tools[].functionDeclarations` | סוג`function_declaration[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`toolConfig.functionCallingConfig.mode` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`safetySettings` | סוג`object[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`sessionId` | סוג`string` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |

שילובים של חומרי קלט

**טקסט** · טקסט UTF8

`contents[].parts[].text`

**טקסט + תמונה**

`parts[].inlineData={mimeType,data}`

פרמטרים ומחזור חיים של השיטה

| פרמטר | מפרט |
| --- | --- |
| פרמטר`material_types` | מפרטtext, image |
| פרמטר`required` | מפרטcontents |
| פרמטר`optional_controls` | מפרטnull |
| פרמטר`content_type` | מפרטapplication/json |
| פרמטר`text_file_material` | מפרטתוכן UTF-8 בפועל מוכנס כטקסט; מזהי קבצים/URLs דורשים תמיכה נפרדת ומדויקת |

מחזור חיים: `exact retained published method`

מבני המתודות והמזהים מדויקים; יכולת הספק נפרדת מקבלת הבקשה לביצוע.

### תעריפים

#### תעריפי שיטות Ailoot

קלט

⁦‏0.00125 ‏$⁩ */ 1K*

פלט

⁦‏0.01 ‏$⁩ */ 1K*

קריאה מהמטמון

⁦‏0.000125 ‏$⁩ */ 1K*

#### מחירים לפי אורך הבקשה · Gemini generateContent

| גודל הבקשה, בטוקנים | קלט | פלט | קריאה מהמטמון | כתיבה למטמון | מטמון: 5 דקות | מטמון: 1 שעה |
| --- | --- | --- | --- | --- | --- | --- |
| גודל הבקשה, בטוקנים(⁦0⁩; ⁦200,000⁩\] | קלט⁦‏0.00125 ‏$⁩ | פלט⁦‏0.01 ‏$⁩ | קריאה מהמטמון⁦‏0.000125 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |
| גודל הבקשה, בטוקנים(⁦200,000⁩; ∞) | קלט⁦‏0.0025 ‏$⁩ | פלט⁦‏0.015 ‏$⁩ | קריאה מהמטמון⁦‏0.00025 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |

התעריפים ב-USD לכל 1K טוקנים. אם לא הוגדר תעריף, נעשה שימוש בתעריף הבסיס של השיטה; «—» מציין שלא הוגדר תעריף בסיס.

לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. [איך פועלים שריון הסכום והסדרת החיוב →](https://ailoot.ai/docs/he/billing/reserve/)

#### פרטי תעריף הייחוס

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

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

#### מחירים לפי תצורה

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

| תצורה | טבלת תעריפים | טוקנים בהקשר, יותר מ- | טוקנים בהקשר, עד וכולל | חיוב |
| --- | --- | --- | --- | --- |
| תצורהOpenAI Chat · תעריפי טוקנים בסיסיים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהOpenAI Chat · מדרגה 1 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהOpenAI Chat · מדרגה 2 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהAnthropic Messages · תעריפי טוקנים בסיסיים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהAnthropic Messages · מדרגה 1 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהAnthropic Messages · מדרגה 2 לפי אורך הבקשה | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |

### דוגמאות לבקשות

#### Ailoot · Gemini generateContent

דוגמת טקסטקלט, תמונהPython SDKNode.js SDKהזרמה ב-Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"contents": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["contents"]=[{"role":"user","parts":[{"text":"Summarize this material and quote supporting source passages.\n\n"+text}]}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1beta/models/gemini-2.5-pro:generateContent \
  -H "x-goog-api-key: $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"contents": [{"role": "user", "parts": [{"text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["contents"][0]["parts"].append({"inlineData":{"mimeType":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1beta/models/gemini-2.5-pro:generateContent \
  -H "x-goog-api-key: $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```python
from google import genai
from google.genai import types
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = genai.Client(
    api_key=os.environ["AILOOT_API_KEY"],
    http_options=types.HttpOptions(base_url="https://api.ailoot.ai"),
)
resp = client.models.generate_content(model="gemini-2.5-pro", contents="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_json_dict())
```

```js
import { GoogleGenAI } from "@google/genai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const ai = new GoogleGenAI({ apiKey: process.env.AILOOT_API_KEY, httpOptions: { baseUrl: "https://api.ailoot.ai" } });
const resp = await ai.models.generateContent({ model: "gemini-2.5-pro", contents: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from google import genai
from google.genai import types
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=genai.Client(api_key=os.environ["AILOOT_API_KEY"],http_options=types.HttpOptions(base_url="https://api.ailoot.ai"))
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

count=0
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
    for chunk in client.models.generate_content_stream(model='gemini-2.5-pro',contents="Explain observations and hypotheses in three sentences."):
        payload=chunk.to_json_dict()
        log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
        save_result(payload,"stream-chunk-"+str(count))
        count+=1
```

### קבלה ושמירה של תוצאות

#### Ailoot · Gemini generateContent

json או סטרימינג נתמך

##### שמירת כל התוצאות שהושלמו

שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.

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

##### כשצריך לבדוק את התגובה המקורית

שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.

שדות התגובה

| שדה | סוג |
| --- | --- |
| שדה`responseId` | סוגstring |
| שדה`modelVersion` | סוגstring |
| שדה`candidates[].content.parts[]` | סוגtext\|inlineData\|functionCall\|other part |
| שדה`candidates[].finishReason` | סוגstring |
| שדה`usageMetadata` | סוגobject |

שגיאות והשלבים הבאים

| תגובה | תנאי | השלב הבא |
| --- | --- | --- |
| תגובה⁦400⁩ · `invalid_request_error` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

<strong>Ailoot</strong> [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=gemini)
**Ailoot Ultra** [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro), [`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro)

#### כינויים לנתיבי שיטות

`/chat/completions`

#### מזהי מודלים קשורים IDs

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=gemini), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gemini-2.5-pro`

[`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=chat)

Google /`gemini-2.5-pro`

מזהה מודל ID

- `gemini-2.5-pro`
- `google/gemini-2.5-pro`

### התחלה

Gemini 2.5 Pro הוא מודל החשיבה היציב של Google לקוד מורכב, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא מקבל טקסט, תמונות, אודיו, וידאו ו־PDF ומחזיר טקסט, עם כלים ופלט מובנה. תקציב החשיבה הדינמי שלו תומך ב־128–32,768 טוקנים, ואי אפשר להשבית אותו לחלוטין.

סוגי קלט נתמכים

טקסט

תוצאות

טקסט

### זמין ב-Ailoot · קלט ושיטות

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

סוגי קלט

`text`

סוגי פלט

`text`

פורמט פלט

json או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות gemini-2.5-pro | ברירת מחדל— |
| שדה`messages` | סוג`message[]` | דרישהחובה | ערכים ומגבלות מספר פריטים מזערי: ⁦1⁩ | ברירת מחדל— |
| שדה`messages[].role` | סוג`string` | דרישהחובה | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`messages[].content` | סוג`string` | דרישהרשות | ערכים ומגבלות חל כאשר: שיחת טקסט | ברירת מחדל— |
| שדה`stream` | סוג`boolean` | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |

שילובים של חומרי קלט

**טקסט** · טקסט UTF8

`messages[].content`

פרמטרים ומחזור חיים של השיטה

| פרמטר | מפרט |
| --- | --- |
| פרמטר`content_type` | מפרטapplication/json |
| פרמטר`required` | מפרטmodel, messages |
| פרמטר`material_types` | מפרטtext |
| פרמטר`messages` | מפרטמערך הודעות במבנה role/content |
| פרמטר`file_material` | מפרטמסמך UTF-8 בפועל מוכנס כטקסט מילולי; לא מוסק מזהה קובץ |
| פרמטר`optional_controls` | מפרטstream |
| פרמטר`control_scope` | מפרטשיחת טקסט; stream הוא ערך בוליאני וברירת המחדל שלו היא false. |
| פרמטר`output_modalities` | מפרטtext |
| פרמטר`hosted_operations` | מפרטfalse |
| פרמטר`multimodal_input_binding` | מפרטnull |

כינויים לשיטה: `/chat/completions`

מחזור חיים: `synchronous_or_streamed`

שלחו את מזהה המודל המדויק עם messages.

אורך ההקשר אינו תקרת פלט.

קובץ טקסט יכול לספק טקסט מילולי; קלטי תמונה/אודיו/אובייקט קובץ דורשים קישור מדויק.

### תעריפים

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

מצב מהיר

תעריף רגיל כאשר נבחר מצב מהיר

מצב Flex

תעריף רגיל כאשר נבחר מצב flex

מאמץ חשיבה מרבי

תעריף רגיל כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)

תמחור מטמון מפורש

לא מופעל כאשר מתבקש מטמון מפורש

פלט חשיבה

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

#### תעריפי Ailoot

#### מחירים לפי תצורה

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

| תצורה | טבלת תעריפים | טוקנים בהקשר, יותר מ- | טוקנים בהקשר, עד וכולל | חיוב |
| --- | --- | --- | --- | --- |
| תצורהתעריפי הבסיס לטוקנים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהרמת אורך בקשה 1 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהרמת אורך בקשה 2 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |

לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. [איך פועלים שריון הסכום והסדרת החיוב →](https://ailoot.ai/docs/he/billing/reserve/)

### דוגמאות לבקשות

#### Ailoot Ultra · OpenAI Chat

curlPython SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gemini-2.5-pro","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gemini-2.5-pro", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

### קבלה ושמירה של תוצאות

#### Ailoot Ultra · OpenAI Chat

json או SSE

##### שמירת כל התוצאות שהושלמו

שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.

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

##### כשצריך לבדוק את התגובה המקורית

שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.

שדות התגובה

| שדה | סוג |
| --- | --- |
| שדה`choices[].index` | סוגinteger |
| שדה`choices[].message.content` | סוגstring\|null |
| שדה`choices[].message.tool_calls` | סוגtool\_call\[\] |
| שדה`choices[].message.reasoning_content` | סוגstring |
| שדה`choices[].message.reasoning_details` | סוגobject\|array |
| שדה`choices[].finish_reason` | סוגstring\|null |
| שדה`usage` | סוגobject |

שגיאות והשלבים הבאים

| תגובה | תנאי | השלב הבא |
| --- | --- | --- |
| תגובה⁦400⁩ · `invalid_request_error` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

<strong>Ailoot</strong> [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro)
**Ailoot Ultra** [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=chat), [`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=chat)

#### כינויים לנתיבי שיטות

`/chat/completions`

#### מזהי מודלים קשורים IDs

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=chat), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gemini-2.5-pro`

[`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=messages)

Google /`gemini-2.5-pro`

מזהה מודל ID

- `gemini-2.5-pro`
- `google/gemini-2.5-pro`

### התחלה

Gemini 2.5 Pro הוא מודל החשיבה היציב של Google לקוד מורכב, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא מקבל טקסט, תמונות, אודיו, וידאו ו־PDF ומחזיר טקסט, עם כלים ופלט מובנה. תקציב החשיבה הדינמי שלו תומך ב־128–32,768 טוקנים, ואי אפשר להשבית אותו לחלוטין.

סוגי קלט נתמכים

טקסט

תוצאות

json · sse

### זמין ב-Ailoot · קלט ושיטות

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

סוגי קלט

`text`

סוגי פלט

`json`, `sse`

פורמט פלט

JSON או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות gemini-2.5-pro | ברירת מחדל— |
| שדה`messages` | סוג`message[]` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`messages[].role` | סוג`string` | דרישהחובה | ערכים ומגבלות user, assistant | ברירת מחדל— |
| שדה`messages[].content` | סוג`string` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`max_tokens` | סוג`integer` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`stream` | סוג`boolean` | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |

שילובים של חומרי קלט

**טקסט** · טקסט UTF-8

`מחרוזת messages[].content`

פרמטרים ומחזור חיים של השיטה

| פרמטר | מפרט |
| --- | --- |
| פרמטר`content_type` | מפרטapplication/json |
| פרמטר`required` | מפרטmodel, messages, max\_tokens |
| פרמטר`optional_controls` | מפרטstream |
| פרמטר`material_types` | מפרטtext |
| פרמטר`text_file_material` | מפרטקראו את מסמך UTF-8 בפועל והכניסו את הטקסט שלו לקלט שצוין או למחרוזת תוכן ההודעה. |

מחזור חיים: `synchronous_or_streamed`

### תעריפים

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

מצב מהיר

תעריף רגיל כאשר נבחר מצב מהיר

מצב Flex

תעריף רגיל כאשר נבחר מצב flex

מאמץ חשיבה מרבי

תעריף רגיל כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)

תמחור מטמון מפורש

לא מופעל כאשר מתבקש מטמון מפורש

פלט חשיבה

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

#### תעריפי Ailoot

#### מחירים לפי תצורה

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

| תצורה | טבלת תעריפים | טוקנים בהקשר, יותר מ- | טוקנים בהקשר, עד וכולל | חיוב |
| --- | --- | --- | --- | --- |
| תצורהתעריפי הבסיס לטוקנים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהרמת אורך בקשה 1 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהרמת אורך בקשה 2 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |

לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. [איך פועלים שריון הסכום והסדרת החיוב →](https://ailoot.ai/docs/he/billing/reserve/)

### דוגמאות לבקשות

#### Ailoot Ultra · Anthropic Messages

גוף JSON מינימלי ושלםcurl · השתמשו במסמך UTF-8 שלכםPython · שמרו את התוצאה המלאה

```json
{
  "model": "gemini-2.5-pro",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-2.5-pro', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-2.5-pro', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### קבלה ושמירה של תוצאות

#### Ailoot Ultra · Anthropic Messages

JSON או SSE

##### שמירת כל התוצאות שהושלמו

שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.

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

##### כשצריך לבדוק את התגובה המקורית

שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.

שדות התגובה

| שדה | סוג |
| --- | --- |
| שדה`id` | סוגstring |
| שדה`model` | סוגstring |
| שדה`content[]` | סוגtext\|thinking\|tool\_use\|other content block |
| שדה`stop_reason` | סוגstring\|null |
| שדה`usage` | סוגobject |

שגיאות והשלבים הבאים

| תגובה | תנאי | השלב הבא |
| --- | --- | --- |
| תגובה⁦400⁩ · `invalid_request_error` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

<strong>Ailoot</strong> [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=messages)
**Ailoot Ultra** [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=messages), [`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=messages)

#### כינויים לנתיבי שיטות

`/chat/completions`

#### מזהי מודלים קשורים IDs

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=messages), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=messages), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=messages)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-2.5-pro`

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=chat)

Google /`google/gemini-2.5-pro`

מזהה מודל ID

- `gemini-2.5-pro`
- `google/gemini-2.5-pro`

### התחלה

Gemini 2.5 Pro הוא מודל החשיבה היציב של Google לקוד מורכב, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא מקבל טקסט, תמונות, אודיו, וידאו ו־PDF ומחזיר טקסט, עם כלים ופלט מובנה. תקציב החשיבה הדינמי שלו תומך ב־128–32,768 טוקנים, ואי אפשר להשבית אותו לחלוטין.

סוגי קלט נתמכים

טקסט

תוצאות

טקסט

### זמין ב-Ailoot · קלט ושיטות

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

סוגי קלט

`text`

סוגי פלט

`text`

פורמט פלט

json או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות google/gemini-2.5-pro | ברירת מחדל— |
| שדה`messages` | סוג`message[]` | דרישהחובה | ערכים ומגבלות מספר פריטים מזערי: ⁦1⁩ | ברירת מחדל— |
| שדה`messages[].role` | סוג`string` | דרישהחובה | ערכים ומגבלות דוגמאות: system, user, assistant, tool, function תנאים: התפקידים האלה מיוצגים במפורש בטיפוסי התאימות בקוד המקור; מערך התפקידים המדויק נשאר ייחודי לכל מודל. תלוי במודל | ברירת מחדל— |
| שדה`messages[].content` | סוג`string\|content_part[]\|null` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`messages[].tool_calls` | סוג`tool_call[]` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`messages[].tool_call_id` | סוג`string` | דרישהרשות | ערכים ומגבלות חל כאשר: role=tool; השתמשו במזהה שהוחזר בפועל | ברירת מחדל— |
| שדה`messages[].name` | סוג`string` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`messages[].reasoning_content` | סוג`string` | דרישהרשות | ערכים ומגבלות חל כאשר: החזירו בהמשך את ההנמקה שהתקבלה בפועל כאשר המודל הזה משתמש בה | ברירת מחדל— |
| שדה`messages[].reasoning_details` | סוג`object\|array` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`max_tokens` | סוג`integer` | דרישהרשות | ערכים ומגבלות מינימום: ⁦1⁩ תלוי במודל | ברירת מחדל— |
| שדה`max_completion_tokens` | סוג`integer` | דרישהרשות | ערכים ומגבלות מינימום: ⁦1⁩ תלוי במודל | ברירת מחדל— |
| שדה`stream` | סוג`boolean` | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |
| שדה`stream_options.include_usage` | סוג`boolean` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`temperature` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`top_p` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`stop` | סוג`string\|string[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`tools` | סוג`function_tool[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`tools[].type` | סוג`string` | דרישהרשות | ערכים ומגבלות function תלוי במודל | ברירת מחדל— |
| שדה`tools[].function.name` | סוג`string` | דרישהחובה | ערכים ומגבלות חל כאשר: סופק כלי פונקציה | ברירת מחדל— |
| שדה`tools[].function.description` | סוג`string` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`tools[].function.parameters` | סוג`JSON_schema` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`tool_choice` | סוג`string\|object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`parallel_tool_calls` | סוג`boolean` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`response_format` | סוג`object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`reasoning_effort` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`reasoning` | סוג`object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`service_tier` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`instructions` | סוג`string` | דרישהרשות | ערכים ומגבלות שדה תאימות | ברירת מחדל— |
| שדה`functions` | סוג`function[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`function_call` | סוג`string\|object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`prompt_cache_options` | סוג`object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`modalities` | סוג`string[]` | דרישהרשות | ערכים ומגבלות text | ברירת מחדל— |
| שדה`provider` | סוג`object` | דרישהרשות | ערכים ומגבלות תנאים: provider.options נדחה במסלול הטקסט הזה של Ultra | ברירת מחדל— |
| שדה`cache_control.ttl` | סוג`string` | דרישהרשות | ערכים ומגבלות תנאים: 1h נדחה במיקומים המשמשים בפועל למטמון הנחיות | ברירת מחדל— |

שילובים של חומרי קלט

**טקסט** · טקסט UTF8

`messages[].content`

פרמטרים ומחזור חיים של השיטה

| פרמטר | מפרט |
| --- | --- |
| פרמטר`content_type` | מפרטapplication/json |
| פרמטר`required` | מפרטmodel, messages |
| פרמטר`material_types` | מפרטtext |
| פרמטר`messages` | מפרטמערך הודעות במבנה role/content |
| פרמטר`file_material` | מפרטמסמך UTF-8 בפועל מוכנס כטקסט מילולי; לא מוסק מזהה קובץ |
| פרמטר`optional_controls` | מפרטstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| פרמטר`control_scope` | מפרטייחודי למודל; כלי פונקציות של המשתמש שונים מכלים מתארחים |
| פרמטר`output_modalities` | מפרטtext |
| פרמטר`hosted_operations` | מפרטfalse |
| פרמטר`multimodal_input_binding` | מפרטnull |

מחזור חיים: `synchronous_or_streamed`

שלחו את מזהה המודל המדויק עם messages.

אורך ההקשר אינו תקרת פלט.

קובץ טקסט יכול לספק טקסט מילולי; קלטי תמונה/אודיו/אובייקט קובץ דורשים קישור מדויק.

### תעריפים

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

מצב מהיר

תעריף רגיל כאשר נבחר מצב מהיר

מצב Flex

תעריף רגיל כאשר נבחר מצב flex

מאמץ חשיבה מרבי

תעריף רגיל כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)

תמחור מטמון מפורש

לא מופעל כאשר מתבקש מטמון מפורש

פלט חשיבה

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

#### תעריפי Ailoot

#### מחירים לפי תצורה

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

| תצורה | טבלת תעריפים | טוקנים בהקשר, יותר מ- | טוקנים בהקשר, עד וכולל | חיוב |
| --- | --- | --- | --- | --- |
| תצורהתעריפי הבסיס לטוקנים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהרמת אורך בקשה 1 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהרמת אורך בקשה 2 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |

לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. [איך פועלים שריון הסכום והסדרת החיוב →](https://ailoot.ai/docs/he/billing/reserve/)

### דוגמאות לבקשות

#### Ailoot Ultra · OpenAI Chat

curlPython SDKהזרמה ב-Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-2.5-pro", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-2.5-pro',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='google/gemini-2.5-pro',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### קבלה ושמירה של תוצאות

#### Ailoot Ultra · OpenAI Chat

json או SSE

##### שמירת כל התוצאות שהושלמו

שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.

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

##### כשצריך לבדוק את התגובה המקורית

שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.

שדות התגובה

| שדה | סוג |
| --- | --- |
| שדה`choices[].index` | סוגinteger |
| שדה`choices[].message.content` | סוגstring\|null |
| שדה`choices[].message.tool_calls` | סוגtool\_call\[\] |
| שדה`choices[].message.reasoning_content` | סוגstring |
| שדה`choices[].message.reasoning_details` | סוגobject\|array |
| שדה`choices[].finish_reason` | סוגstring\|null |
| שדה`usage` | סוגobject |

שגיאות והשלבים הבאים

| תגובה | תנאי | השלב הבא |
| --- | --- | --- |
| תגובה⁦400⁩ · `invalid_request_error` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

<strong>Ailoot</strong> [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro)
**Ailoot Ultra** [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=chat), [`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=chat)

#### כינויים לנתיבי שיטות

`/chat/completions`

#### מזהי מודלים קשורים IDs

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=chat), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-2.5-pro`

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=messages)

Google /`google/gemini-2.5-pro`

מזהה מודל ID

- `gemini-2.5-pro`
- `google/gemini-2.5-pro`

### התחלה

Gemini 2.5 Pro הוא מודל החשיבה היציב של Google לקוד מורכב, למתמטיקה, לתחומי STEM ולניתוח בהקשר ארוך. הוא מקבל טקסט, תמונות, אודיו, וידאו ו־PDF ומחזיר טקסט, עם כלים ופלט מובנה. תקציב החשיבה הדינמי שלו תומך ב־128–32,768 טוקנים, ואי אפשר להשבית אותו לחלוטין.

סוגי קלט נתמכים

טקסט

תוצאות

json · sse

### זמין ב-Ailoot · קלט ושיטות

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

סוגי קלט

`text`

סוגי פלט

`json`, `sse`

פורמט פלט

JSON או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות google/gemini-2.5-pro | ברירת מחדל— |
| שדה`messages` | סוג`message[]` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`messages[].role` | סוג`string` | דרישהחובה | ערכים ומגבלות user, assistant | ברירת מחדל— |
| שדה`messages[].content` | סוג`string` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`max_tokens` | סוג`integer` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`stream` | סוג`boolean` | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |

שילובים של חומרי קלט

**טקסט** · טקסט UTF-8

`מחרוזת messages[].content`

פרמטרים ומחזור חיים של השיטה

| פרמטר | מפרט |
| --- | --- |
| פרמטר`content_type` | מפרטapplication/json |
| פרמטר`required` | מפרטmodel, messages, max\_tokens |
| פרמטר`optional_controls` | מפרטstream |
| פרמטר`material_types` | מפרטtext |
| פרמטר`text_file_material` | מפרטקראו את מסמך UTF-8 בפועל והכניסו את הטקסט שלו לקלט שצוין או למחרוזת תוכן ההודעה. |

מחזור חיים: `synchronous_or_streamed`

### תעריפים

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

מצב מהיר

תעריף רגיל כאשר נבחר מצב מהיר

מצב Flex

תעריף רגיל כאשר נבחר מצב flex

מאמץ חשיבה מרבי

תעריף רגיל כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)

תמחור מטמון מפורש

לא מופעל כאשר מתבקש מטמון מפורש

פלט חשיבה

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

#### תעריפי Ailoot

#### מחירים לפי תצורה

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

| תצורה | טבלת תעריפים | טוקנים בהקשר, יותר מ- | טוקנים בהקשר, עד וכולל | חיוב |
| --- | --- | --- | --- | --- |
| תצורהתעריפי הבסיס לטוקנים | טבלת תעריפיםתעריף בסיס | טוקנים בהקשר, יותר מ-— | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים פלט · טוקני חשיבה בפלט **$0.02** / 1K טוקנים |
| תצורהרמת אורך בקשה 1 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦0⁩ | טוקנים בהקשר, עד וכולל⁦200,000⁩ | חיוב קלט · טוקני קלט **$0.0025** / 1K טוקנים פלט · טוקני פלט **$0.02** / 1K טוקנים קלט · קריאה מהמטמון **$0.00025** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |
| תצורהרמת אורך בקשה 2 | טבלת תעריפים— | טוקנים בהקשר, יותר מ-⁦200,000⁩ | טוקנים בהקשר, עד וכוללללא גבול עליון | חיוב קלט · טוקני קלט **$0.005** / 1K טוקנים פלט · טוקני פלט **$0.03** / 1K טוקנים קלט · קריאה מהמטמון **$0.0005** / 1K טוקנים קלט · כתיבה למטמון **$0.00075** / 1K טוקנים קלט · כתיבה למטמון, 1 שעה **—** / 1K טוקנים |

לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. [איך פועלים שריון הסכום והסדרת החיוב →](https://ailoot.ai/docs/he/billing/reserve/)

### דוגמאות לבקשות

#### Ailoot Ultra · Anthropic Messages

גוף JSON מינימלי ושלםcurl · השתמשו במסמך UTF-8 שלכםPython · שמרו את התוצאה המלאה

```json
{
  "model": "google/gemini-2.5-pro",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-pro', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-pro', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### קבלה ושמירה של תוצאות

#### Ailoot Ultra · Anthropic Messages

JSON או SSE

##### שמירת כל התוצאות שהושלמו

שמרו כל תגובה מלאה, קובץ ומקטע תוכן שהוחזרו.

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

##### כשצריך לבדוק את התגובה המקורית

שמרו מזהי בקשות/תגובות וכותרות. לא מסופק URL כללי לאחזור משימת טקסט.

שדות התגובה

| שדה | סוג |
| --- | --- |
| שדה`id` | סוגstring |
| שדה`model` | סוגstring |
| שדה`content[]` | סוגtext\|thinking\|tool\_use\|other content block |
| שדה`stop_reason` | סוגstring\|null |
| שדה`usage` | סוגobject |

שגיאות והשלבים הבאים

| תגובה | תנאי | השלב הבא |
| --- | --- | --- |
| תגובה⁦400⁩ · `invalid_request_error` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

<strong>Ailoot</strong> [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=messages)
**Ailoot Ultra** [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=messages), [`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=messages)

#### כינויים לנתיבי שיטות

`/chat/completions`

#### מזהי מודלים קשורים IDs

[`google/gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=google%2Fgemini-2.5-pro&fmt=messages), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Core&caller=gemini-2.5-pro&fmt=messages), [`gemini-2.5-pro`](https://ailoot.ai/models/he/#m=google%2Fgemini-2.5-pro&route=Ultra&caller=gemini-2.5-pro&fmt=messages)

FAQ · Google: Gemini 2.5 Pro

אילו קלטים ותוצאות זמינים?

`POST /v1/messages` · `gemini-2.5-pro`: `text`, `image` → `text` `POST /v1beta/models/{model}:generateContent` · `gemini-2.5-pro`: `text`, `image` → `text` `POST /v1/chat/completions` · `gemini-2.5-pro`: `text` → `text` `POST /v1/messages` · `gemini-2.5-pro`: `text` → `json`, `sse` `POST /v1/chat/completions` · `google/gemini-2.5-pro`: `text` → `text` `POST /v1/messages` · `google/gemini-2.5-pro`: `text` → `json`, `sse`

באילו שדות הבקשה משתמשת?

`POST /v1/messages` · `gemini-2.5-pro`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1beta/models/{model}:generateContent` · `gemini-2.5-pro`: `contents`, `systemInstruction`, `sessionId` `POST /v1/chat/completions` · `gemini-2.5-pro`: `model`, `messages`, `stream` `POST /v1/messages` · `gemini-2.5-pro`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/chat/completions` · `google/gemini-2.5-pro`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `google/gemini-2.5-pro`: `model`, `messages`, `max_tokens`, `stream`

אילו מגבלות חלות?

`POST /v1/messages` · `gemini-2.5-pro`: `ctx`: `1048576`; `max_out`: `65536`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1beta/models/{model}:generateContent` · `gemini-2.5-pro`: `ctx`: `1048576`; `max_out`: `65536`; `contents.min_items`: `1` `POST /v1/chat/completions` · `gemini-2.5-pro`: `messages.min_items`: `1` `POST /v1/chat/completions` · `google/gemini-2.5-pro`: `messages.min_items`: `1`

חברו Ailoot ל- Claude Code, OpenCode, Hermes או ליישום שלכם.

## החברה ופורטפוליו הפרויקטים שלה

החברה ופורטפוליו הפרויקטים שלה: מיליוני לקוחות; מכירות בהיקף של מיליארדים מדי חודש.

## קנו אסימונים בהנחה.

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

מנוי

בחרו מסלול עם הנחה לבקשות הקבועות שלכם.

קוד הנחה עד 50%

הזינו קוד ברכישה. המחיר יחושב מחדש לפי המבצע הפעיל.

הוצאות בהיסטוריה

המודל, האסימונים והסכום נשמרים לכל בקשה.

[בחירת מנוי](https://ailoot.ai/docs/he/billing/subscriptions/) · [מחירי מודלים](https://ailoot.ai/models/he/)

## חברו API למוצר שאתם מוכרים.

SaaS, יישומים ובוטים לפי ההצעה והסכם הרישוי של Ailoot. למכירה מחדש בקשו רישיון משווק.

יישום מסחרי

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

רישיון למכירה מחדש

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

מסמכים באתר

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

[בקשת רישיון למכירה מחדש](mailto:support@ailoot.ai) · [ההצעה והסכם הרישוי](https://ailoot.ai/legal/offer?lang=he)

## Ailoot · החברה ופורטפוליו הפרויקטים שלה





Ailoot נשענת על ניסיון תפעולי מצטבר, בסיס לקוחות רחב, שירות יציב ובקרה שוטפת של KPI.





החברה ופורטפוליו הפרויקטים שלה: מיליוני לקוחות; מכירות בהיקף של מיליארדים מדי חודש.





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