Source: https://ailoot.ai/models/he/gemini-3-1-pro-low/
Canonical: https://ailoot.ai/models/he/gemini-3-1-pro-low/
Language: he

# Gemini 3.1 Pro Low

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

## [Gemini 3.1 Pro Low](https://ailoot.ai/models/he/gemini-3-1-pro-low/)

שיחת טקסט ותמונות עם הקשר של 1,048,576 טוקנים ותקרת פלט של 65,536 טוקנים.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gemini-3.1-pro-low`](https://ailoot.ai/models/he/gemini-3-1-pro-low/#method-0)
- [**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent` `gemini-3.1-pro-low`](https://ailoot.ai/models/he/gemini-3-1-pro-low/#method-1)

על המודל

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

gemini-3.1-pro-low מקבל טקסט ותמונות ומחזיר טקסט, עם הקשר רשום של 1,048,576 טוקנים ותקרת פלט של 65,536 טוקנים. משימת מסמך חזותי שימושית היא השוואת תרשים שסופק לטקסט שמסביר אותו והפקת פירוט מובנה של המקומות שבהם הנתונים תומכים בתיאור או סותרים אותו.

בחרו במבנה Messages או במבנה Gemini generateContent והשתמשו בייצוג התמונה של אותו ממשק. Messages מחייב max\_tokens; Gemini משתמש ב-contents וב-parts. Low מזהה את הפרופיל שנבחר, אך הרשומה המאושרת אינה מגדירה enum של מאמץ או תקציב חשיבה מספרי המקושר לתווית. הקשר ופלט הם מגבלות נפרדות: החלון הגדול יותר אינו מאפשר תשובה בת מיליון טוקנים.

משימה מעשית

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

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

```
Review a proposal against criteria

Review this office proposal against the stated criteria. Criteria: capacity at least 12 people, step-free access and monthly rent no more than 2,000 units. Proposal: 14 desks, rent 1,900 units, entrance reached by six stairs; lift information is absent. Return a criterion table and the single clarification that matters before acceptance.
```

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

```
A criterion-by-criterion assessment with evidence and a question about step-free access.
```

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

```
Check that absent lift information is recorded as unresolved rather than assumed accessible.
```

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

[`gemini-3.1-pro-low`](https://ailoot.ai/models/he/#m=gemini-3.1-pro-low&route=Core&caller=gemini-3.1-pro-low&fmt=messages)

Google /`gemini-3.1-pro-low`

### התחלה

שיחת טקסט ותמונות עם הקשר של 1,048,576 טוקנים ותקרת פלט של 65,536 טוקנים.

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

טקסט · תמונות

תוצאות

טקסט

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

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

סוגי קלט

`text`, `image`

סוגי פלט

`text`

הקשר

⁦1,048,576⁩ tokens

פלט מרבי

⁦65,536⁩ tokens

פורמט פלט

json או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות gemini-3.1-pro-low | ברירת מחדל— |
| שדה`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.002 ‏$⁩ */ 1K*

פלט

⁦‏0.012 ‏$⁩ */ 1K*

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

⁦‏0.0002 ‏$⁩ */ 1K*

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

| גודל הבקשה, בטוקנים | קלט | פלט | קריאה מהמטמון | כתיבה למטמון | מטמון: 5 דקות | מטמון: 1 שעה |
| --- | --- | --- | --- | --- | --- | --- |
| גודל הבקשה, בטוקנים(⁦0⁩; ⁦200,000⁩\] | קלט⁦‏0.002 ‏$⁩ | פלט⁦‏0.012 ‏$⁩ | קריאה מהמטמון⁦‏0.0002 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |
| גודל הבקשה, בטוקנים(⁦200,000⁩; ∞) | קלט⁦‏0.004 ‏$⁩ | פלט⁦‏0.018 ‏$⁩ | קריאה מהמטמון⁦‏0.0004 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |

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

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

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

#### 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-3.1-pro-low", "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-3.1-pro-low", "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-3.1-pro-low",
    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-3.1-pro-low",
  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-3.1-pro-low',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` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

**Ailoot** [`gemini-3.1-pro-low`](https://ailoot.ai/models/he/#m=gemini-3.1-pro-low&route=Core&caller=gemini-3.1-pro-low&fmt=messages)

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

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

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

[`gemini-3.1-pro-low`](https://ailoot.ai/models/he/#m=gemini-3.1-pro-low&route=Core&caller=gemini-3.1-pro-low&fmt=messages)

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

[`gemini-3.1-pro-low`](https://ailoot.ai/models/he/#m=gemini-3.1-pro-low&route=Core&caller=gemini-3.1-pro-low&fmt=gemini)

Google /`gemini-3.1-pro-low`

### התחלה

שיחת טקסט ותמונות עם הקשר של 1,048,576 טוקנים ותקרת פלט של 65,536 טוקנים.

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

טקסט · תמונות

תוצאות

טקסט

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

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

סוגי קלט

`text`, `image`

סוגי פלט

`text`

הקשר

⁦1,048,576⁩ tokens

פלט מרבי

⁦65,536⁩ tokens

פורמט פלט

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

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`path.model` | סוג`string` | דרישהחובה | ערכים ומגבלות gemini-3.1-pro-low | ברירת מחדל— |
| שדה`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.002 ‏$⁩ */ 1K*

פלט

⁦‏0.012 ‏$⁩ */ 1K*

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

⁦‏0.0002 ‏$⁩ */ 1K*

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

| גודל הבקשה, בטוקנים | קלט | פלט | קריאה מהמטמון | כתיבה למטמון | מטמון: 5 דקות | מטמון: 1 שעה |
| --- | --- | --- | --- | --- | --- | --- |
| גודל הבקשה, בטוקנים(⁦0⁩; ⁦200,000⁩\] | קלט⁦‏0.002 ‏$⁩ | פלט⁦‏0.012 ‏$⁩ | קריאה מהמטמון⁦‏0.0002 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |
| גודל הבקשה, בטוקנים(⁦200,000⁩; ∞) | קלט⁦‏0.004 ‏$⁩ | פלט⁦‏0.018 ‏$⁩ | קריאה מהמטמון⁦‏0.0004 ‏$⁩ | כתיבה למטמוןתעריף בסיס: — | מטמון: 5 דקותתעריף בסיס: — | מטמון: 1 שעהתעריף בסיס: — |

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

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

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

#### 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-3.1-pro-low: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-3.1-pro-low: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-3.1-pro-low", 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-3.1-pro-low", 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-3.1-pro-low',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` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

**Ailoot** [`gemini-3.1-pro-low`](https://ailoot.ai/models/he/#m=gemini-3.1-pro-low&route=Core&caller=gemini-3.1-pro-low&fmt=gemini)

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

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

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

[`gemini-3.1-pro-low`](https://ailoot.ai/models/he/#m=gemini-3.1-pro-low&route=Core&caller=gemini-3.1-pro-low&fmt=gemini)

FAQ · Gemini 3.1 Pro Low

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

`POST /v1/messages` · `gemini-3.1-pro-low`: `text`, `image` → `text` `POST /v1beta/models/{model}:generateContent` · `gemini-3.1-pro-low`: `text`, `image` → `text`

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

`POST /v1/messages` · `gemini-3.1-pro-low`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1beta/models/{model}:generateContent` · `gemini-3.1-pro-low`: `contents`, `systemInstruction`, `sessionId`

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

`POST /v1/messages` · `gemini-3.1-pro-low`: `ctx`: `1048576`; `max_out`: `65536`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1beta/models/{model}:generateContent` · `gemini-3.1-pro-low`: `ctx`: `1048576`; `max_out`: `65536`; `contents.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 במוצרי לקוחות, בסוכנים, באפליקציות ובאוטומציות.
