Text
תיעוד API של GLM-5.3
שדות בקשה של GLM-5.3, הסקה, כלים, הזרמה, שימוש ודוגמאות מלאות ל-Chat, Responses ו-Messages.
GLM-5.3 מקבל טקסט ומחזיר טקסט או קריאות לכלים. הוא תמיד מסיק, תומך ברמות low, high ו-max, ומאפשר עד 131,072 טוקני פלט. השתמש ב-glm-5.3 לדרגת Default. קבוצת ברירת המחדל היא glm; גם glm-5.3:glm בוחר במפורש באותה קבוצה. קבוצות נוספות משתמשות בסיומת מודל משלהן.
כתובת בסיס: https://api.seedrouter.ai. האימות הוא באמצעות Authorization: Bearer $SEEDROUTER_API_KEY. שמור פרטי גישה בשרת. Messages מקבל גם את הכותרת התואמת x-api-key.
תיעוד זה מבוסס על חוזה Chat של Z.ai, סכמת Responses של היצרן ומדריך התאימות ל-Messages. מגבלות המודל מגיעות ממדריך GLM-5.3. התאמה לתיעוד אינה מוכיחה כל התנהגות בפועל. בדיקות ב-29 באוקטובר 2026 השלימו בקשות טקסט והזרמה בשלושת הפורמטים, קריאת פונקציות ב-Chat, פלט אובייקט JSON והמשך תשובה שמורה. לא הוכחו פגיעות במטמון, זמני מטמון מפורשים וכל בקרת תאימות. שדות Messages להלן מובחנים משדות GLM שתועדו על ידי היצרן.
מפרט OpenAPI · תיעוד Markdown · מודל ו-Playground · מדריך תמחור
התחלה מהירה
כל דוגמה שולחת בקשת Chat Completions אחת. max_tokens: 2048 הוא תקציב לדוגמה, לא ברירת המחדל. ההסקה והתשובה הגלויה חולקות את התקציב; בדוק את finish_reason לפני שתתייחס לתשובה כמלאה.
curl https://api.seedrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}'import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["SEEDROUTER_API_KEY"], base_url="https://api.seedrouter.ai/v1")
response = client.chat.completions.create(
model="glm-5.3",
messages=[{"role": "user", "content": "Explain an idempotency key with one concrete example."}],
max_tokens=2048,
extra_body={"reasoning_effort": "low"},
)
print(response.choices[0].message.content)
print(response.usage)import OpenAI from 'openai';
const client = new OpenAI({apiKey: process.env.SEEDROUTER_API_KEY, baseURL: 'https://api.seedrouter.ai/v1'});
const response = await client.chat.completions.create({
model: 'glm-5.3',
messages: [{role: 'user', content: 'Explain an idempotency key with one concrete example.'}],
reasoning_effort: 'low',
max_tokens: 2048,
});
console.log(response.choices[0].message.content);
console.log(response.usage);package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
body := []byte(`{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}`)
req, err := http.NewRequest("POST", "https://api.seedrouter.ai/v1/chat/completions", bytes.NewReader(body))
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + os.Getenv("SEEDROUTER_API_KEY"))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 3 * time.Minute}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
data, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
if res.StatusCode != http.StatusOK { panic(fmt.Sprintf("HTTP %d: %s", res.StatusCode, data)) }
fmt.Println(string(data))
}Chat Completions
POST /v1/chat/completions מקבל 16 שדות ברמה העליונה. שדות אינם מקבלים null אלא אם צוין במפורש. אפשר להשמיט שדות אופציונליים; אל תשלח null במקום השמטה.
| שדה | טיפוס | נדרש | ברירת מחדל ומגבלות |
|---|---|---|---|
model | מחרוזת | כן | glm-5.3 (Default) |
messages | מערך | כן | לפחות הודעה אחת; חייב לכלול הודעת user או tool |
do_sample | בוליאני | לא | true; false מבטל את השפעת temperature ו-top_p |
stream | בוליאני | לא | false |
thinking | אובייקט | לא | type: enabled; clear_thinking: true |
reasoning_effort | מחרוזת | לא | low, high, max; ברירת מחדל max |
temperature | מספר | לא | 0–1 כולל; ברירת מחדל 1 |
top_p | מספר | לא | 0.01–1 כולל; ברירת מחדל 0.95 |
max_tokens | מספר שלם | לא | 1–131072; אין ברירת מחדל מפורסמת ל-Chat |
tool_stream | בוליאני | לא | false; true דורש stream: true |
tools | מערך | לא | Function, retrieval או web_search; עד 128 פריטים |
tool_choice | מחרוזת | לא | auto בלבד |
stop | מערך מחרוזות | לא | עד ארבע מחרוזות בסכמה הרשמית; ארבע התקבלו בבקשה אמיתית, אך התאמת עצירה לא נבדקה |
response_format | אובייקט | לא | type נדרש: text או json_object; ברירת מחדל text |
request_id | מחרוזת | לא | 6–64 תווים; מזהה ייחודי לבקשת הקורא |
user_id | מחרוזת | לא | 6–128 תווים; הימנע ממידע אישי |
הודעות system ו-user דורשות מחרוזת content. הודעת assistant יכולה לשאת מחרוזת content, את reasoning_content ואת tool_calls. הודעת tool דורשת content ו-tool_call_id. שמור בדיוק את ההסקה ההיסטורית בעת שימוש ב-thinking.clear_thinking: false, כולל סדר קריאות העוזר ותוצאות הכלים. אי אפשר לכבות חשיבה.
כלי פונקציה משתמש ב-{type:"function", function:{name, description, parameters}}. השם מכיל 1–64 אותיות ASCII, ספרות, קווים תחתונים או מקפים. הסכמה למכונה דורשת description ו-parameters; הטקסט מזכיר השמטה לפונקציות ללא פרמטרים. השתמש במבנה המלא עד לפתרון הסתירה. parameters הוא JSON Schema של הפונקציה; הוא אינו מפורש כתוכן הודעה.
כלי אחזור משתמש ב-{type:"retrieval", retrieval:{knowledge_id, prompt_template?}}. מזהה ידע שייך לחשבון שמשרת את הבקשה; הצהרה על הכלי אינה יוצרת בסיס ידע.
כלי חיפוש ברשת משתמש ב-{type:"web_search", web_search:{search_engine:"search_pro_jina"}}. שדות אופציונליים כוללים enable, search_query, count (1–50), search_domain_filter, search_recency_filter (oneDay, oneWeek, oneMonth, oneYear, noLimit), content_size (medium, high), result_sequence (before, after), search_result, require_search ו-search_prompt. ראה OpenAPI לטיפוסים המדויקים. זמינות חיפוש ואחזור לחשבון מסוים דורשת בדיקה בפועל.
מצב אובייקט JSON מפיק JSON ואינו אוכף JSON Schema שסופקה. כלול את השדות הרצויים בפרומפט ואמת את התוצאה באפליקציה.
Responses
POST /v1/responses מקבל 15 שדות יצירה ברמה העליונה. הוא מבוסס על סכמת Responses של היצרן בהתאמה ל-GLM-5.3; ההתנהגות המדויקת בין שירותים עדיין דורשת אימות.
curl https://api.seedrouter.ai/v1/responses \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model":"glm-5.3","input":[{"type":"message","role":"user","content":"Give a concise example of a safe retry."}],"reasoning":{"effort":"low"},"max_output_tokens":2048,"store":false}'| שדה | טיפוס | נדרש | ברירת מחדל ומגבלות |
|---|---|---|---|
model | מחרוזת | כן | glm-5.3 |
input | מחרוזת או מערך | כן | פריטי קלט מקוריים כמפורט להלן |
instructions | מחרוזת | לא | הוראות מערכת |
stream | בוליאני | לא | false |
temperature | מספר | לא | 0–1, עד שתי ספרות עשרוניות; ברירת מחדל 1 |
top_p | מספר | לא | 0.01–1, עד שתי ספרות עשרוניות; ברירת מחדל 0.95 |
max_output_tokens | מספר שלם | לא | 1–131072; ברירת מחדל 65536, כולל הסקה |
stop | מערך מחרוזות | לא | לא הוגדרה מגבלת מספר בפרוטוקול זה |
tools | מערך | לא | Function, namespace, custom או web_search |
tool_choice | מחרוזת | לא | none או auto |
reasoning | אובייקט | לא | effort: low, high, max; ברירת מחדל max |
text | אובייקט | לא | format.type: text או json_object |
prompt_cache_key | מחרוזת | לא | מפתח בחירת מטמון; אין מגבלת אורך מתועדת |
previous_response_id | מחרוזת | לא | מפנה לתשובה שנשמרה קודם |
store | בוליאני | לא | false; האם לשמור תשובה זו |
פריטי הודעות בקלט דורשים type: "message", תפקיד (user, system, assistant, developer) ותוכן. התוכן יכול להיות מחרוזת, בלוק טקסט אחד או מערך בלוקי טקסט. השתמש ב-input_text או ב-output_text של העוזר עם מחרוזת text. סכמות תמונה/קובץ כלליות אינן מעניקות יכולת ראייה למודל טקסטואלי זה.
פריטי קריאה לפונקציה בקלט דורשים type: "function_call", את name, את call_id ומחרוזת JSON בשם arguments; השדה namespace אופציונלי. תוצאות דורשות type: "function_call_output", את call_id ומחרוזת output. פריטי הסקה משתמשים ב-type: "reasoning" ובאובייקט content: {type:"reasoning_text", text:"..."} יחיד. שמור אותו בלי להמיר למערך.
כלי פונקציות דורשים type: "function" ו-name, עם description ו-parameters אופציונליים. כלי מרחב שמות דורשים type: "namespace" ו-name ויכולים להכיל פונקציות tools. כלים מותאמים דורשים type: "custom" ו-name. כלי חיפוש ברשת דורשים type: "web_search". אל תעתיק לפורמט הזה את שדות החובה של פונקציות Chat.
התשובה הקודמת שאליה מפנים חייבת להיות שמורה. שמירת התשובה הנוכחית היא בחירה נפרדת; previous_response_id אינו כופה store: true נוכחי. תקופת השמירה של היצרן היא שבעה ימים. בדיקה אמיתית שמרה תשובה והמשיכה מהמזהה שלה עם store: false נוכחי; אין בכך אישור לכל פעולה בתשובות שמורות.
פעולות על תשובות שמורות
לאחר הצלחת store: true, שמור את מזהה התשובה שהוחזר ללא שינוי. הפעולות המאומתות האלו משתמשות באותו חשבון שיצר אותה:
GET /v1/responses/{response_id}מאחזר את התשובה השמורה.GET /v1/responses/{response_id}/input_itemsמציג פריטי קלט. שדות שאילתה אופציונליים:order(ascאוdesc, ברירת מחדלdesc),limit(מספר שלם 1–100, ברירת מחדל 20) ו-after(last_id של העמוד הקודם).DELETE /v1/responses/{response_id}מוחק את התשובה השמורה.
בקשת יצירה בהמשך יכולה להשתמש במזהה השמור כ-previous_response_id. נדרשת גישה נוכחית למודל למשתמש המקורי. השמירה היא לכל היותר שבעה ימים; אי אפשר להמשיך תשובות שפג תוקפן או נמחקו. אחזור, מחיקה והמשך שומרים על השיוך לחשבון המקורי. אין נקודת ביטול מתועדת. הפעולות מכוסות בבדיקות חוזה מקומיות. הבדיקה האמיתית ב-29 באוקטובר אישרה שמירה והמשך; אחזור ורשימת פריטי קלט החזירו 404, ומחיקה לא נבדקה. אל תסתמך על אחזור, רשימה או מחיקה עד לאישור זמינותם.
תאימות Messages
POST /v1/messages משתמש במעטפת תואמת Anthropic. כלול anthropic-version: 2023-06-01. היצרן מדגים ישירות model, messages, max_tokens ו-stream. הוא אינו מפרסם סכמה מלאה של GLM Messages ומזהיר מהבדלים מ-Claude. יתר הבקרות הן שדות מתיעוד התאימות, ולא יכולות GLM שאומתו בנפרד.
curl https://api.seedrouter.ai/v1/messages \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-H 'anthropic-version: 2023-06-01' \
-d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain a safe retry in two sentences."}],"max_tokens":2048}'| שדה | מבנה ואימות | ראיה |
|---|---|---|
model | מחרוזת חובה glm-5.3 | דוגמת GLM |
messages | מערך user/assistant חובה שאינו ריק; מחרוזת או בלוקי טקסט/כלים מקוריים | דוגמת טקסט GLM; מבני הבלוקים מתיעוד התאימות |
max_tokens | מספר שלם חובה 1–131072 | דוגמת GLM ומגבלת פלט המודל |
stream | בוליאני; ברירת מחדל false | דוגמת GLM |
system | מחרוזת או מערך בלוקי טקסט | תיעוד תאימות |
temperature | מספר 0–1 | תיעוד תאימות; המיפוי לא אומת |
top_p | מספר 0.01–1 | תיעוד תאימות; המיפוי לא אומת |
top_k | מספר שלם לא שלילי | תיעוד תאימות; המיפוי לא אומת |
stop_sequences | מערך מחרוזות | תיעוד תאימות |
tools | כלי לקוח: name, input_schema, ו-description אופציונלי | תיעוד תאימות |
tool_choice | אובייקט עם type שהוא auto, none, any או tool; כלי בשם דורש name | תיעוד תאימות |
thinking | enabled עם budget_tokens או adaptive; אי אפשר לכבות חשיבה | תיעוד תאימות וכלל החשיבה התמידית של GLM |
output_config | אובייקט עם effort שהוא low, high או max | כתיב שדה תואם; המיפוי לא אומת |
metadata | אובייקט עם user_id אופציונלי | תיעוד תאימות |
cache_control | סמן ephemeral, עם ttl אופציונלי 5m או 1h | תיעוד פרוטוקול בלבד; התנהגות TTL מפורשת ב-GLM לא אומתה |
תקציב enabled thinking התואם הוא לפחות 1024 וקטן מ-max_tokens. בלוקי טקסט דורשים text; היסטוריית חשיבה דורשת thinking ו-signature; חשיבה מושחרת דורשת data. בלוקי שימוש בכלים דורשים id, name ו-input; בלוקי תוצאות דורשים tool_use_id. בלוקי תמונה, שמע או וידאו אינם מתקבלים. סמני מטמון מפורשים אינם מוכיחים פגיעה, משך שמירה או תעריף נפרד. מטמון ההקשר המתועד של המודל אוטומטי.
פלט, הזרמה ושימוש
Chat מחזיר id, created, model, choices ו-usage, עם request_id ו-web_search אופציונליים. קרא את choices[].message.content, את reasoning_content ואת tool_calls. תשובה עם קריאה לכלי עשויה לא לכלול טקסט תשובה. SSE שולח מקטעי הסקה, טקסט וארגומנטים לכלים, ואז [DONE]. חבר מקטעי ארגומנטים לפי אינדקס הקריאה. השדה stream_options אינו חלק מבקשת GLM Chat הרשמית.
Responses מחזיר את איחוד output המקורי: הודעות, הסקה וקריאות לכלים. SSE כולל response.created, response.in_progress, אירועי פריט פלט וחלק תוכן, מקטעי טקסט/הסקה/ארגומנטים לפונקציות, התקדמות חיפוש ולבסוף response.completed, response.incomplete או response.failed. אין חובה לסמן [DONE]. שמור אינדקסים ומספרי רצף.
Messages מחזיר מעטפת הודעה מקורית עם בלוקי תוכן, stop_reason ו-usage. שמות האירועים כוללים message_start, content_block_start/delta/stop, message_delta ו-message_stop. שמור חתימות חשיבה ומזהי כלים כהיסטוריה אטומה.
| פורמט | כלל הקלט | קלט מהמטמון | פלט |
|---|---|---|---|
| Chat | prompt_tokens | prompt_tokens_details.cached_tokens | completion_tokens |
| Responses | input_tokens | input_tokens_details.cached_tokens | output_tokens |
| Messages | input_tokens בתוספת cache_read_input_tokens וכל cache_creation_input_tokens | cache_read_input_tokens | output_tokens |
הסקה היא חלק מהפלט ואינה חיוב נוסף. קלט מהמטמון ב-Chat/Responses הוא חלק מכלל הקלט. הפחת חלקי מטמון שדווחו בנפרד לפני החלת תעריף הקלט הרגיל. תשובות ציבוריות חושפות שימוש בטוקנים ולא חיובים כספיים. המחירים העדכניים מגיעים מהגדרות החיוב הנוכחיות; בקשות שנכשלו אינן מחויבות.
אימות ושגיאות
טיפוסים לא תקינים, חשיבה כבויה, רמה שאינה נתמכת, תקציבי פלט גבוהים מדי וקלט מדיה נכשלים באימות. tool_stream של Chat דורש stream. שדות עליונים לא נתמכים מושמטים ולא מועברים הלאה. נדרשים פרטי גישה; יתרה לא מספקת מונעת בקשה בתשלום. שגיאות משתמשות במעטפת השגיאה הציבורית (Messages משתמש במבנה המקורי שלו). לעולם אל תתייחס לזרם שנקטע כתשובה מלאה ואל תשלח מחדש אוטומטית בקשה עם תוצאה לא ודאית.
ה-Playground מציג את אותם שדות מותרים לפורמט הנבחר. ערכים אופציונליים ריקים מושמטים; false ואפס מפורשים נשמרים. החלפת פורמט מתחילה שיחה חדשה. אומדן השימוש דורש גם נתוני שימוש מדווחים וגם תעריפים עדכניים.
