Source: https://ailoot.ai/models/he/kimi-for-coding/
Canonical: https://ailoot.ai/models/he/kimi-for-coding/
Language: he

# MoonshotAI: Kimi K2.8 Preview

[Markdown](https://ailoot.ai/models/he/kimi-for-coding/index.md) · [JSON](https://ailoot.ai/models/he/kimi-for-coding/facts.json)

## [kimi-for-coding](https://ailoot.ai/models/he/kimi-for-coding/)

Kimi K2.8 Preview מיועד להשלמת קוד, לפיתוח יומיומי ולמשימות עם כלים; בכרטיס זה זמינים טקסט ותמונות.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `kimi-for-coding`](https://ailoot.ai/models/he/kimi-for-coding/#method-0)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `kimi-for-coding`](https://ailoot.ai/models/he/kimi-for-coding/#method-1)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `kimi-for-coding`](https://ailoot.ai/models/he/kimi-for-coding/#method-2)

על המודל

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

#### השלמת קוד ופיתוח יומיומי

תחת המזהה `kimi-for-coding` היצרן מציין כעת את Kimi K2.8 Preview. הוא מיועד להשלמת קוד, למשימות פיתוח רגילות ולעבודה רציפה עם כלים. המודל יכול להשתתף בשיחה הנדסית: לקבל דרישות, להפיק קוד ולהמשיך במשימה לפי מידע חדש.

ב־K2.8 Preview היצרן מדגיש הסקה חסכונית יותר בפתרון משימות הנדסיות. הבחירה המעשית קשורה לעומק הניתוח: השלמה קצרה של תוכנה ורצף מורכב של פעולות עשויים לדרוש היקף הסקה שונה.

#### עומק נשלט

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

#### הקשר וחומרים

ההקשר המוצהר של K2.8 Preview מגיע ל־**1 048 576 טוקנים**. הוא מאפשר לעבוד עם היסטוריה ארוכה ועם נפח חומרים גדול; יש להביא בחשבון את הנפח הזמין בבקשה מסוימת לפי מגבלת הכרטיס הזה.

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

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

משימה מעשית

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

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

```
Complete a stable deduplication function

Implement unique_by_id(records) in Python. Each record is a dictionary with an id key. Keep the first record for each id, preserve original order, and do not mutate the list or dictionaries. Provide tests with duplicate ids, an empty list and two different records sharing an id. Use the standard library only.
```

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

```
The complete function and three small tests demonstrating stable first-occurrence deduplication.
```

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

```
The later record with a repeated id never replaces the first, and input objects are not modified.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `kimi-for-coding`

[`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=messages)

Moonshot /`kimi-for-coding`

### התחלה

Kimi K2.8 Preview מיועד להשלמת קוד, לפיתוח יומיומי ולמשימות עם כלים; בכרטיס זה זמינים טקסט ותמונות.

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

טקסט · תמונות

תוצאות

טקסט

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

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

סוגי קלט

`text`, `image`

סוגי פלט

`text`

הקשר

⁦262,144⁩ tokens

פלט מרבי

⁦65,536⁩ tokens

פורמט פלט

json או SSE

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

פלט

⁦‏0.015 ‏$⁩ */ 1K*

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

⁦‏0.0003 ‏$⁩ */ 1K*

כתיבה למטמון

⁦‏0.003 ‏$⁩ */ 1K*

כתיבה למטמון, 5 דקות

⁦‏0.003 ‏$⁩ */ 1K tokens*

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

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

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

kimi-for-coding

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

| תצורה | תנאי חיוב | חיוב |
| --- | --- | --- |
| תצורהkimi-for-coding · תצורת ברירת המחדל | תנאי חיובתצורת ברירת מחדל | חיוב קלט · קלט **⁦‏0.000686 ‏$⁩** / 1K טוקנים פלט · פלט **⁦‏0.00274 ‏$⁩** / 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": "kimi-for-coding", "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": "kimi-for-coding", "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="kimi-for-coding",
    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: "kimi-for-coding",
  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='kimi-for-coding',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** [`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=messages)

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

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

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

[`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `kimi-for-coding`

[`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=responses)

Moonshot /`kimi-for-coding`

### התחלה

Kimi K2.8 Preview מיועד להשלמת קוד, לפיתוח יומיומי ולמשימות עם כלים; בכרטיס זה זמינים טקסט ותמונות.

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

טקסט · תמונות

תוצאות

טקסט

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

**Ailoot · OpenAI Responses** `POST /v1/responses`

סוגי קלט

`text`, `image`

סוגי פלט

`text`

הקשר

⁦262,144⁩ tokens

פלט מרבי

⁦65,536⁩ tokens

פורמט פלט

json או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות kimi-for-coding | ברירת מחדל— |
| שדה`input` | סוג`string\|input_item[]` | דרישהחובה | ערכים ומגבלות | ברירת מחדל— |
| שדה`instructions` | סוג`string` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`input[].type` | סוג`string` | דרישהרשות | ערכים ומגבלות message, reasoning, function\_call, function\_call\_output | ברירת מחדל— |
| שדה`input[].content` | סוג`string\|content_part[]` | דרישהרשות | ערכים ומגבלות | ברירת מחדל— |
| שדה`input[].call_id` | סוג`string` | דרישהרשות | ערכים ומגבלות חל כאשר: function\_call\_output; שמרו את call\_id שהוחזר בפועל | ברירת מחדל— |
| שדה`input[].output` | סוג`string\|content_part[]` | דרישהרשות | ערכים ומגבלות חל כאשר: function\_call\_output | ברירת מחדל— |
| שדה`max_output_tokens` | סוג`integer` | דרישהרשות | ערכים ומגבלות מינימום: ⁦1⁩ תלוי במודל | ברירת מחדל— |
| שדה`stream` | סוג`boolean` | דרישהרשות | ערכים ומגבלות | ברירת מחדלfalse |
| שדה`temperature` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`top_p` | סוג`number` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`tools` | סוג`tool[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`tool_choice` | סוג`string\|object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`parallel_tool_calls` | סוג`boolean` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`reasoning.effort` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`reasoning.summary` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`text.format` | סוג`object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`text.verbosity` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`include` | סוג`string[]` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`store` | סוג`boolean` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`previous_response_id` | סוג`string` | דרישהרשות | ערכים ומגבלות דרישת ID: רק מזהה תגובה בפועל מהמשך נתמך תלוי במודל | ברירת מחדל— |
| שדה`service_tier` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`prompt_cache_key` | סוג`string` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`prompt_cache_options` | סוג`object` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |

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

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

`טקסט קלט או חלק input_text`

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

`{type:input_image,image_url}`

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

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

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

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

### תעריפים

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

קלט

⁦‏0.003 ‏$⁩ */ 1K*

פלט

⁦‏0.015 ‏$⁩ */ 1K*

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

⁦‏0.0003 ‏$⁩ */ 1K*

כתיבה למטמון

⁦‏0.003 ‏$⁩ */ 1K*

כתיבה למטמון, 5 דקות

⁦‏0.003 ‏$⁩ */ 1K tokens*

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

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

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

kimi-for-coding

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

| תצורה | תנאי חיוב | חיוב |
| --- | --- | --- |
| תצורהkimi-for-coding · תצורת ברירת המחדל | תנאי חיובתצורת ברירת מחדל | חיוב קלט · קלט **⁦‏0.000686 ‏$⁩** / 1K טוקנים פלט · פלט **⁦‏0.00274 ‏$⁩** / 1K טוקנים |

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

#### Ailoot · OpenAI Responses

דוגמת טקסטקלט, תמונה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": "kimi-for-coding", "input": ""}')
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["input"]="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/responses \
  -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 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('{"model": "kimi-for-coding", "input": [{"role": "user", "content": [{"type": "input_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["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+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/responses \
  -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 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 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)
resp = client.responses.create(model="kimi-for-coding", input="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_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "kimi-for-coding", input: "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 openai import OpenAI
import os
from pathlib import Path
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))

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)
with client.responses.stream(model="kimi-for-coding", input="Explain the difference between an observation and a hypothesis 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_response()
    save_result(final.to_dict(mode="json"),"stream-result")
```

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

#### Ailoot · OpenAI Responses

json או SSE

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

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

שמרו כל פריט פלט וחלק תוכן, את call\_id של הפונקציה בפועל, הנמקה מוצפנת ושימוש. בסטרימינג שמרו את זהות האירוע/הפריט במלואה.

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

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

שדות התגובה

| שדה | סוג |
| --- | --- |
| שדה`id` | סוגstring |
| שדה`status` | סוגstring |
| שדה`output[]` | סוגmessage\|reasoning\|function\_call\|other item |
| שדה`output[].content[]` | סוגcontent part |
| שדה`usage` | סוגobject |

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

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

### כינויים

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

**Ailoot** [`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=responses)

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

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

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

[`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=responses)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `kimi-for-coding`

[`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=chat)

Moonshot /`kimi-for-coding`

### התחלה

Kimi K2.8 Preview מיועד להשלמת קוד, לפיתוח יומיומי ולמשימות עם כלים; בכרטיס זה זמינים טקסט ותמונות.

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

טקסט · תמונות

תוצאות

טקסט

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

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

סוגי קלט

`text`, `image`

סוגי פלט

`text`

הקשר

⁦262,144⁩ tokens

פלט מרבי

⁦65,536⁩ tokens

פורמט פלט

json או SSE

| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
| --- | --- | --- | --- | --- |
| שדה`model` | סוג`string` | דרישהחובה | ערכים ומגבלות kimi-for-coding | ברירת מחדל— |
| שדה`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` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |
| שדה`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` | דרישהרשות | ערכים ומגבלות תלוי במודל | ברירת מחדל— |

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

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

`messages[].content`

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

`{type:image_url,image_url:{url,detail}}`

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

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

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

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

### תעריפים

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

קלט

⁦‏0.003 ‏$⁩ */ 1K*

פלט

⁦‏0.015 ‏$⁩ */ 1K*

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

⁦‏0.0003 ‏$⁩ */ 1K*

כתיבה למטמון

⁦‏0.003 ‏$⁩ */ 1K*

כתיבה למטמון, 5 דקות

⁦‏0.003 ‏$⁩ */ 1K tokens*

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

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

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

kimi-for-coding

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

| תצורה | תנאי חיוב | חיוב |
| --- | --- | --- |
| תצורהkimi-for-coding · תצורת ברירת המחדל | תנאי חיובתצורת ברירת מחדל | חיוב קלט · קלט **⁦‏0.000686 ‏$⁩** / 1K טוקנים פלט · פלט **⁦‏0.00274 ‏$⁩** / 1K טוקנים |

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

#### Ailoot · OpenAI Chat

דוגמת טקסטקלט, תמונה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": "kimi-for-coding", "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/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
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": "kimi-for-coding", "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_url","image_url":{"url":"data:"+mime+";base64,"+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/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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
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)
resp = client.chat.completions.create(
    model="kimi-for-coding",
    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(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "kimi-for-coding",
  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(resp);
```

```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='kimi-for-coding',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 · 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` | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |

### כינויים

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

**Ailoot** [`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=chat)

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

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

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

[`kimi-for-coding`](https://ailoot.ai/models/he/#m=kimi-for-coding&route=Core&caller=kimi-for-coding&fmt=chat)

FAQ · MoonshotAI: Kimi K2.8 Preview

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

`POST /v1/messages` · `kimi-for-coding`: `text`, `image` → `text` `POST /v1/responses` · `kimi-for-coding`: `text`, `image` → `text` `POST /v1/chat/completions` · `kimi-for-coding`: `text`, `image` → `text`

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

`POST /v1/messages` · `kimi-for-coding`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `kimi-for-coding`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `kimi-for-coding`: `model`, `messages`, `stream`

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

`POST /v1/messages` · `kimi-for-coding`: `ctx`: `262144`; `max_out`: `65536`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `kimi-for-coding`: `ctx`: `262144`; `max_out`: `65536` `POST /v1/chat/completions` · `kimi-for-coding`: `ctx`: `262144`; `max_out`: `65536`; `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 במוצרי לקוחות, בסוכנים, באפליקציות ובאוטומציות.
