דילוג לתוכן
Chat Completions

Chat Completions

POST /v1/chat/completions מקבל שיחה ומחזיר את ההודעה הבאה של המודל בפורמט OpenAI Chat Completions. השתמשו בו מכל OpenAI SDK או ב-HTTP רגיל; הדף הזה הוא מדריך עזר שדה אחר שדה.

POST https://api.shannon-ai.com/v1/chat/completions

הבקשה הקטנה ביותר היא מזהה מודל והודעת משתמש אחת.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)

print(response.choices[0].message.content)

התשובה היא אובייקט JSON אחד:

200 JSON
{
  "id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "object": "chat.completion",
  "created": 1791625200,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello, it is good to meet you.",
        "reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1184,
    "completion_tokens": 46,
    "total_tokens": 1230
  }
}

כותרות

כותרות בקשה

כותרת ערך תיאור
Authorization Bearer YOUR_API_KEY מפתח ה-API שלכם. x-api-key: YOUR_API_KEY מתקבל במקומו בכל endpoint.
Content-Type application/json חובה. כל ערך אחר מחזיר 415.
x-request-id אופציונלי. המזהה שלכם לבקשה. הוא חוזר ללא שינוי בתשובה.

כותרות תשובה

כותרת תיאור
x-request-id בכל תשובה, כולל שגיאות ו-streams: הערך ששלחתם, או 12 תווים הקסדצימליים כששלחתם ערך. ציינו אותו כשאתם מדווחים על בעיה.
content-type application/json, או text/event-stream כש-stream הוא true.

שדות בקשה

רק messages הוא חובה. העמודה מופעל על ידי מציינת את המודלים שבהם שדה משנה את התשובה. מודלי ה-open-weight המתארחים הם שנים-עשר המזהים ברשימת המודלים; משפחת Shannon 3 היא shannon-3, shannon-3-pro, shannon-3.1 ו-shannon-3.1-pro. מודלים ותמחור

שדה סוג ברירת מחדל תיאור מופעל על ידי
model string shannon-1.6-lite המודל שעונה: מזהה מרשימת המודלים. שלחו אותו בכל בקשה. ההתאמה אינה תלויה באותיות גדולות או קטנות. מזהה שלא פורסם מחזיר 400 unknown model. כל המודלים
messages array חובה. השיחה, ההודעה הישנה ביותר ראשונה. ראו הודעות בהמשך. כל המודלים
stream boolean false true שולח את התשובה כ-server-sent events בזמן שהיא נכתבת. כל המודלים
max_tokens integer 4096 הגבול העליון של התשובה, בטוקנים. ערך מחוץ לטווח 1 עד 65,536 מועבר לתוך הטווח. זו גם הכמות שמופרשת מהיתרה שלכם בזמן שהבקשה רצה. ראו אורך הפלט בהמשך. מודלי open-weight מתארחים, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer זהה ל-max_tokens. כששניהם נשלחים, משתמשים ב-max_tokens. מודלי open-weight מתארחים, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number טמפרטורת הדגימה. במודלי ה-open-weight המתארחים ברירת המחדל היא 1 והערכים נשמרים בין 0 ל-2. מודלי open-weight מתארחים, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 דגימת Nucleus. הערכים נשמרים בין 0 ל-1. מודלי open-weight מתארחים
seed integer הזרע (seed) של הדוגם, כל מספר שלם. בלעדיו הזרע נגזר מהמודל ומהשיחה, כך שאותה בקשה שנשלחת פעמיים משתמשת באותו זרע. מודלי open-weight מתארחים
stop string | array מחרוזת או מערך של מחרוזות. עד 4 נמצאות בשימוש. התשובה מסתיימת לפני הראשונה שמופיעה; טקסט העצירה עצמו אינו מוחזר. מודלי open-weight מתארחים
reasoning_effort string high כמה המודל מנמק לפני שהוא עונה: off, low, medium או high. none ו-minimal משמעם off, default משמעו medium, max משמעו high. כל ערך אחר מחזיר 400. מודלי open-weight מתארחים
reasoning object אותה הגדרה בצורת אובייקט: {"effort": "low"}. כששניהם נשלחים, משתמשים ב-reasoning_effort. מודלי open-weight מתארחים
tools array הפונקציות שהמודל רשאי לקרוא להן, כל אחת כ-{"type": "function", "function": {"name", "description", "parameters"}}. הקריאות של המודל חוזרות ב-tool_calls; הקוד שלכם מריץ אותן. כל המודלים
tool_choice string | object auto "auto" נותן למודל להחליט. "required" מחייב אותו לקרוא לכלי. {"type": "function", "function": {"name": "…"}} מחייב אותו לקרוא לכלי הזה. מודלי open-weight מתארחים
response_format object {"type": "json_object"} לתשובת JSON, או {"type": "json_schema", "json_schema": {…}} לתשובה שעוקבת אחרי הסכמה שלכם. כל דרגי Shannon; מודלי open-weight מתארחים כפי שמפורט לכל מזהה
web_search boolean false true מאפשר למודל לחפש ברשת לפני שהוא עונה. shannon-1.6-*, shannon-2-*, משפחת Shannon 3

שדות OpenAI אחרים, כמו n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store ו-prompt_cache_key, מתקבלים כדי שקוד לקוח קיים ירוץ ללא שינוי. הם אינם משנים את התשובה: תמיד יש choice אחד, ו-stream תמיד מסתיים בנתוני שימוש.

שדה עם סוג JSON שגוי, למשל "max_tokens": "100", מחזיר 422. כך גם בקשה בלי messages.

לכלים, לפלט מובנה, ל-reasoning ולחיפוש ברשת יש לכל אחד דף משלו: קריאת פונקציות, פלט מובנה, רמת מאמץ ה-reasoning, חיפוש ווב מובנה.

בקשה עם אפשרויות

הבקשה הזו קובעת הודעת system, את שדות הדגימה ואת רמת המאמץ של ה-reasoning. היא משתמשת במודל open-weight מתארח, שמיישם את כולם.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    messages=[
        {"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
        {"role": "user", "content": "Why is the sky blue?"},
    ],
    max_tokens=512,
    temperature=0.3,
    top_p=0.9,
    seed=7,
    stop=["\n\n"],
    reasoning_effort="low",
)

message = response.choices[0].message
print(message.reasoning_content)  # the reasoning
print(message.content)            # the answer
print(response.usage)

לתשובה אותה צורה כמו למעלה. ה-usage שלה מוסיף שני פרטים במודלי ה-open-weight המתארחים: טוקני הפרומפט שנקראו מהמטמון והטוקנים שהושקעו ב-reasoning.

200 JSON
{
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 62,
    "total_tokens": 93,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 21
    }
  }
}

אורך הפלט

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

shannon-coder-1 נספר אחרת ב-endpoint הזה: כל בקשה היא אחת מקריאות Shannon Coder של התוכנית שלכם, ולא מופרשים בשבילה טוקנים. מגבלות ויתרה

שנית, הוא מגביל את אורך התשובה במודלים האלה:

מודלים מה עושה max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 התשובה נעצרת כשהיא מגיעה למגבלה. stream מסתיים אז עם finish_reason מסוג length.
מודלי open-weight מתארחים טקסט התשובה נעצר ב-max_tokens. ה-reasoning אינו נספר בו. ערכים מתחת ל-256 פועלים כ-256.

בלי max_tokens או max_completion_tokens הערך הוא 4,096. ב-shannon-coder-1 הוא 65,536.

הודעות

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

תפקיד תיאור מופעל על ידי
system הוראות למודל. שימו אותה ראשונה. בדרגי Shannon הודעת ה-system הראשונה היא זו שבשימוש. מודלי open-weight מתארחים, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer נקרא כ-system. מודלי open-weight מתארחים
user מה שאתם שואלים. בדרגי Shannon הודעת ה-user האחרונה היא הפרומפט וההודעות שלפניה הן ההיסטוריה. כל המודלים
assistant תשובות קודמות של המודל. שמרו את ה-tool_calls שלו כשאתם שולחים אחריו תוצאת כלי. כל המודלים
tool תוצאה של קריאה לכלי: tool_call_id מכיל את מזהה הקריאה ו-content את התוצאה כמחרוזת. כל המודלים

עם מזהה ממשפחת Shannon 3, שימו הוראות שחייבות להתקיים בהודעת ה-user.

בדרגי Shannon בקשה בלי טקסט משתמש ובלי tools מחזירה 400 No user message provided.

חלקי תוכן

חלק תיאור זמין ב
{"type": "text", "text": "…"} טקסט רגיל. כל המודלים
{"type": "image_url", "image_url": {"url": "…"}} תמונה, כ-URL מסוג data: עם תוכן base64 או כ-URL מסוג http(s). משפחת Shannon 3, shannon-1.6-lite, shannon-1.6-pro, ומודלי ה-open-weight המתארחים שמציינים קלט תמונה
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} מסמך (קובץ PDF, Word, PowerPoint או Excel) המועבר בקידוד base64 או באמצעות כתובת URL. משפחת Shannon 3

לגדלים, למגבלות ולרשימה המלאה של הצורות יש דף משלהם. תמונות וקבצים

אובייקט התשובה

שדה סוג תיאור
id string chatcmpl- ואחריו 32 תווים הקסדצימליים.
object string תמיד chat.completion.
created integer זמן התשובה, בשניות Unix.
model string המזהה הקנוני של המודל שענה. הכתיב שלו יכול להיות שונה מהמזהה ששלחתם.
choices array תמיד choice אחד בדיוק, עם index 0.
choices[0].message.role string תמיד assistant.
choices[0].message.content string | null טקסט התשובה. עם tool_calls הוא null בדרגי Shannon; מודלי ה-open-weight המתארחים יכולים לשלוח טקסט לצד הקריאות.
choices[0].message.reasoning_content string | null ה-reasoning שהמודל כתב לפני התשובה, או null כשאין.
choices[0].message.tool_calls array קיים רק כשהמודל קורא לכלים. בכל פריט יש id, type מסוג function, ו-function עם ה-name וה-arguments כמחרוזת JSON.
choices[0].message.annotations array רק בבקשה עם web_search: true שהחיפוש שלה מצא משהו. url_citation אחד לכל מקור שסימון ב-content נותן לו שם, עם url, title, start_index ו-end_index (מיקום הסימון, נספר בתווים, בלי הסוף).
choices[0].finish_reason string למה התשובה הסתיימה. ראו סיבות סיום.
usage object הטוקנים של הבקשה. ראו שימוש.
sources array רק בבקשה עם web_search: true שהחיפוש שלה מצא משהו: התוצאות שהמודל קיבל, כל אחת עם index, title ו-url. [1] בתשובה הוא הרשומה עם index 1.

סיבות סיום

finish_reason תיאור
stop המודל סיים את תשובתו, או שמחרוזת stop הופיעה.
tool_calls המודל קורא לכלי אחד או יותר. הריצו אותם ושלחו את התוצאות בהודעות tool.
length התשובה נחתכה במגבלת הפלט. מדווח ב-streams של shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ומשפחת Shannon 3.

תשובה שאינה ב-streaming מדווחת stop או tool_calls.

שימוש

שדה סוג תיאור זמין ב
usage.prompt_tokens integer טוקני קלט. כל המודלים
usage.completion_tokens integer טוקני פלט: reasoning, תשובה וקריאות לכלים יחד. כל המודלים
usage.total_tokens integer prompt_tokens ועוד completion_tokens. כל המודלים
usage.prompt_tokens_details.cached_tokens integer החלק מ-prompt_tokens שנקרא ממטמון הפרומפט. מודלי open-weight מתארחים
usage.completion_tokens_details.reasoning_tokens integer החלק מ-completion_tokens שהושקע ב-reasoning. מודלי open-weight מתארחים

במודלי ה-open-weight המתארחים, prompt_tokens הוא ההודעות והגדרות הכלים שלכם נספרים עם ה-tokenizer של המודל עצמו, ועוד הטוקנים של תמונות. ה-endpoints לספירת טוקנים מחזירים את אותו מספר לפני השליחה. ספירת טוקנים

בדרגי Shannon, prompt_tokens סופר את כל מה שהמודל קרא כדי לכתוב את התשובה, ולכן הוא גדול מטקסט ההודעות שלכם לבדו.

Streaming

כש-stream מוגדר ל-true התשובה מגיעה כאירועי chat.completion.chunk ומסתיימת ב-data: [DONE]. ה-chunk האחרון לפניו נושא finish_reason ו-usage; אין צורך ב-stream_options. לצורות ה-chunk, לשורות keep-alive ולשגיאות בתוך stream יש דף משלהן. הזרמה

שגיאות

שגיאה היא אובייקט JSON עם איבר error. הבדיקות רצות בסדר הזה: מפתח API, גוף הבקשה, מזהה המודל, ואז היתרה. הטבלה מפרטת את מה שה-endpoint הזה מחזיר לרוב. הרשימה המלאה, עם מה שכדאי לנסות שוב, נמצאת בדף משלה. טיפול בשגיאות

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
סטטוס סוג הודעה מתי
401 authentication_error Missing authentication
Invalid API key
לא נשלח מפתח API, או שהמפתח לא מוכר או בוטל.
400 invalid_request_error unknown model: <id> model אינו מזהה שפורסם.
400 invalid_request_error No user message provided דרגי Shannon: בבקשה אין טקסט משתמש ואין tools.
400 invalid_request_error <id> does not accept image input חלק תמונה נשלח למודל open-weight מתארח ללא קלט תמונה.
400 invalid_request_error <id> does not accept response_format response_format נשלח למודל open-weight מתארח בלי פלט מובנה.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort מכיל ערך שמחוץ לרשימה.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages חסר, או ששדה מכיל סוג JSON שגוי.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens גדול ממה שנשאר מהיתרה שלכם.
429 rate_limit_error Too many requests. Retry in <n>s. הגנת הצפה: יותר מ-120 בקשות בדקה אחת בחשבון שלכם.
500 server_error The model backend failed to answer. Please retry. המודל לא הפיק תשובה. שלחו את הבקשה שוב.
502 api_error The model backend failed to answer. Please retry. אותו דבר, במשפחת Shannon 3 ובמודלי ה-open-weight המתארחים.