Агуулга руу алгасах
Responses API

Responses API

ШИНЭ

POST /v1/responses заавар ба оролтын зүйлсийн жагсаалт авч, OpenAI Responses форматаар гаралтын зүйлсээс бүрдсэн response объект буцаана. OpenAI SDK-ийн responses API болон Codex CLI зэрэг түүн дээр бүтсэн хэрэгслүүдтэй хамт ашиглана. Endpoint төлөв хадгалдаггүй: хүсэлт бүрт бүх харилцан яриаг илгээнэ.

POST https://api.shannon-ai.com/v1/responses

Хамгийн жижиг хүсэлт нь загварын id ба текст. Таныг хүсэхгүй бол хариу stream хийгдэхгүй.

from openai import OpenAI

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

response = client.responses.create(
    model="shannon-3",
    input="Say hello in one sentence.",
)

print(response.output_text)

Хариу нь response объект. Түүний output нь загвар reasoning хийсэн бол reasoning-ийг, мөн мессежийг агуулна:

200 JSON
{
  "id": "resp_5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "object": "response",
  "created_at": 1791625200,
  "model": "shannon-3",
  "status": "completed",
  "error": null,
  "incomplete_details": null,
  "instructions": null,
  "metadata": {},
  "parallel_tool_calls": true,
  "temperature": null,
  "tool_choice": "auto",
  "tools": [],
  "top_p": null,
  "output": [
    {
      "id": "rs_8a2e6c1f4b7d4e03b9c5a1d70f3e2b64",
      "type": "reasoning",
      "summary": [
        {
          "type": "summary_text",
          "text": "The user wants a greeting in one sentence. Keep it short and friendly."
        }
      ]
    },
    {
      "id": "msg_1c7b9e3a5d2f4a86b0e4c8d19a6f7e25",
      "type": "message",
      "role": "assistant",
      "status": "completed",
      "content": [
        {
          "type": "output_text",
          "text": "Hello, it is good to meet you.",
          "annotations": []
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 1184,
    "output_tokens": 46,
    "total_tokens": 1230
  }
}

Хүсэлтийн талбарууд

Хүсэлтэд model ба input хэрэгтэй. Хэрэгжүүлэгч багана талбар хариуг өөрчилдөг загваруудыг нэрлэнэ. Hosted open-weight загварууд нь загварын жагсаалтын арван хоёр id; Shannon 3 гэр бүл нь shannon-3, shannon-3-pro, shannon-3.1 ба shannon-3.1-pro. Загвар ба үнэ

Талбар Төрөл Үндсэн утга Тайлбар Хэрэгжүүлэгч
model string Заавал. Загварын жагсаалтын id. Том, жижиг үсгийг ялгахгүй. Байхгүй эсвэл нийтлээгүй id 400 unknown model буцаана. Бүх загвар
input string | array String, нэг хэрэглэгчийн мессеж гэж уншигдана, эсвэл оролтын зүйлсийн массив. Доорх Оролтын зүйлс хэсгийг үзнэ үү. Бүх загвар
instructions string Загварт өгөх заавар, энэ форматын system prompt. Hosted open-weight загварууд, shannon-1.6-*, shannon-2-*, shannon-coder-1
stream boolean false true нь хариуг server-sent events хэлбэрээр илгээнэ. Доорх Streaming хэсгийг үзнэ үү. Бүх загвар
max_output_tokens integer 4096 Хариуны дээд хязгаар, токеноор. 1-ээс 65,536-аас гадуурх утгыг тэр муж руу шилжүүлнэ. Хүсэлт ажиллах хугацаанд таны үлдэгдлээс нөөцлөх хэмжээ бас энэ. Доорх Гаралтын хязгаар хэсгийг үзнэ үү. Hosted open-weight загварууд, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature number Sampling temperature. Hosted open-weight загварууд дээр утгыг 0-ээс 2-ын хооронд барина. Hosted open-weight загварууд; stream хийгээгүй хариунд shannon-1.6-*, shannon-2-* ба shannon-coder-1
top_p number Nucleus sampling. Утгыг 0-ээс 1-ийн хооронд барина. Hosted open-weight загварууд
tools array Загварын дуудаж болох функцүүд, энэ форматын хавтгай хэлбэрээр: {"type": "function", "name", "description", "parameters"}. Доорх Tools хэсгийг үзнэ үү. Бүх загвар
tool_choice string | object auto "auto" загварт шийдүүлнэ. "required" tool заавал дуудуулна. {"type": "function", "name": "…"} тэр tool-ийг дуудуулна. Hosted open-weight загварууд
reasoning object off, low, medium эсвэл high-тай {"effort": "…"}. Бусад утга 400 буцаана. Hosted open-weight загварууд
text object {"format": {…}} нь JSON хариулт хүснэ. Доорх Бүтэцтэй гаралт хэсгийг үзнэ үү. Shannon-ий бүх түвшин; hosted open-weight загварууд id тус бүрээр жагсаасны дагуу

previous_response_id, store, metadata, parallel_tool_calls, truncation, include, user ба prompt_cache_key-г одоо байгаа клиент код өөрчлөлтгүй ажиллахын тулд хүлээн авна. Тэд хариуг өөрчлөхгүй. Харилцан яриаг хадгалдаггүй тул дараагийн хүсэлт өмнөх ээлжүүдийг input дотор агуулна.

Оролтын зүйлс

Оролтын зүйл нь role ба content-той мессеж, эсвэл tool дуудлага эсвэл түүний үр дүнг агуулсан төрөлтэй зүйл. content нь string эсвэл хэсгүүдийн массив.

Зүйл Тайлбар Хэрэгжүүлэгч
{"role": "user", "content": …} Таны асуух зүйл. content нь string, эсвэл input_text ба input_image хэсгүүд. Бүх загвар
{"role": "assistant", "content": …} Загварын өмнөх хариу. content нь string, эсвэл output_text хэсгүүд. Бүх загвар
{"role": "system", "content": …}
{"role": "developer", "content": …}
Харилцан яриан доторх заавар. Hosted open-weight загварууд
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} Загварын өмнөх хариунд хийсэн tool дуудлага. arguments нь JSON string. Бүх загвар
{"type": "function_call_output", "call_id": "…", "output": "…"} Тэр дуудлагын үр дүн. call_id нь дуудлагын id, output нь string хэлбэрийн үр дүн. Бүх загвар

Зааврыг instructions талбарт оруулна уу. Shannon 3 гэр бүлийн id-тай бол заавал мөрдөх зааврыг user мессежид оруулна уу.

Хариуны output зүйлсийг input руу хэвээр нь буцааж болно: message ба function_call зүйлсийг уншиж, reasoning зүйлсийг алгасна.

Агуулгын хэсгүүд

Хэсэг Тайлбар Ашиглах боломжтой
{"type": "input_text", "text": "…"} Хэрэглэгчийн мессежийн текст. Бүх загвар
{"type": "output_text", "text": "…"} Assistant мессежийн текст. Бүх загвар
{"type": "input_image", "image_url": "…"} Зураг, base64 агуулгатай data: URL эсвэл http(s) URL хэлбэрээр. Shannon 3 гэр бүл, shannon-1.6-lite, shannon-1.6-pro, ба зургийн оролтыг жагсаасан hosted open-weight загварууд
{"type": "input_file", "file_data": "data:application/pdf;base64,…"} Баримт (PDF, Word, PowerPoint эсвэл Excel): file_data нь data: URL, file_url нь http(s) URL агуулна. Shannon 3 гэр бүл

Shannon түвшнүүд дээр зураг, файлыг input-ийн сүүлийн user зүйлээс уншина. Хэмжээ, хязгаар нь тусдаа хуудастай. Зураг ба файл

Заавар ба сонголттой хүсэлт

Энэ хүсэлт заавар, оролтын зүйл хэлбэрийн харилцан яриа, гаралтын хязгаар, temperature ба reasoning effort илгээнэ. Бүгдийг хэрэгжүүлдэг hosted open-weight загвар ашигласан.

from openai import OpenAI

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

response = client.responses.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    instructions="You are a physics teacher. Answer in two sentences.",
    input=[
        {"role": "user", "content": "Why is the sky blue?"},
        {"role": "assistant", "content": "Air scatters blue light more than red light."},
        {"role": "user", "content": "And why are sunsets red?"},
    ],
    max_output_tokens=512,
    temperature=0.3,
    reasoning={"effort": "low"},
)

for item in response.output:
    if item.type == "reasoning":
        print("reasoning:", item.summary[0].text)
    elif item.type == "message":
        print("answer:", item.content[0].text)
print(response.usage)

Hosted open-weight загварын хариу id, object, model, created_at, status, output ба usage-тэй. Түүний usage нь кэшээс уншсан токен ба reasoning-д зарцуулсан токеныг нэмж агуулна:

200 JSON
{
  "usage": {
    "input_tokens": 58,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens": 67,
    "output_tokens_details": {
      "reasoning_tokens": 19
    },
    "total_tokens": 125
  }
}

Response объект

id, object, status, output ба usage хариу бүрд байна. Кодоо эдгээр дээр түшиглэн бичнэ үү.

Талбар Төрөл Тайлбар Илгээгч
id string resp_ ба түүний дараа 32 арван зургаатын тэмдэгт. Бүх загвар
object string Үргэлж response. Бүх загвар
status string completed. Stream дээр эхлээд in_progress, response.failed event-д failed. Бүх загвар
output array Загварын гаргасан дарааллаар гаралтын зүйлс: reasoning, message, function_call. Бүх загвар
usage object input_tokens, output_tokens ба total_tokens. Бүх загвар
usage.input_tokens_details object cached_tokens: prompt кэшээс уншсан оролтын токен. Hosted open-weight загварууд
usage.output_tokens_details object reasoning_tokens: reasoning-д зарцуулсан гаралтын токен. Hosted open-weight загварууд
model string Хариулсан загварын каноник id. Shannon 3 гэр бүл, hosted open-weight загварууд
created_at integer Хариуны цаг, Unix секундээр. Shannon 3 гэр бүл, hosted open-weight загварууд
instructions, tools, temperature, … instructions, tools ба temperature хүсэлтийг давтана. error ба incomplete_details нь null, metadata нь {}, parallel_tool_calls нь true, tool_choice нь auto, top_p нь null. Shannon 3 гэр бүл

Гаралтын зүйлс

Зүйл Тайлбар
{"id": "rs_…", "type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} Загварын reasoning нэг summary_text хэсэг болон. Загвар reasoning хийсэн үед л байна.
{"id": "msg_…", "type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "…"}]} Хариулт: текстийг агуулсан нэг output_text хэсэг.
{"id": "fc_…", "type": "function_call", "call_id": "call_…", "name": "…", "arguments": "…"} Tool дуудлага. arguments нь JSON string. Үр дүнг ижил call_id-тай буцаан илгээнэ.

OpenAI SDK-ууд мессежийн текстийг response.output_text дотор таны оронд залгана.

Streaming

Server-sent events авахын тулд stream-ийг true болгоно уу. Frame бүр event-ийн нэртэй event: мөр ба JSON объекттой data: мөртэй; объект нэрийг type дотор давтана. Delta-г output_index-ээр зүйлтэй нь тааруулна.

OpenAI SDK-тай event-үүдийг type-аар нь уншина:

from openai import OpenAI

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

stream = client.responses.create(
    model="shannon-3",
    input="Explain server-sent events in three sentences.",
    stream=True,
)

for event in stream:
    kind = getattr(event, "type", "error")     # an event without a type is an error event
    if kind == "response.reasoning_summary_text.delta":
        pass                                   # a piece of reasoning: event.delta
    elif kind == "response.output_text.delta":
        print(event.delta, end="", flush=True)
    elif kind == "response.output_item.done" and event.item.type == "function_call":
        print("\ntool call:", event.item.name, event.item.arguments)
    elif kind == "response.completed":
        print("\n", event.response.usage)
    elif kind in ("response.failed", "error"):
        raise RuntimeError("the stream failed, send the request again")

Event-үүд дараах дарааллаар ирнэ. Reasoning, мессеж, tool дуудлагын бүлэг хариунд байгаа үед л гарна.

Event Payload Хэзээ
response.created response Үргэлж эхнийх. response.status нь in_progress, response.output хоосон.
response.in_progress response Үргэлж хоёр дахь, ижил объекттой.
response.output_item.added output_index, item Reasoning эхэлнэ: хоосон summary-тэй reasoning зүйл.
response.reasoning_summary_text.delta output_index, summary_index, delta Reasoning-ийн нэг хэсэг.
response.reasoning_summary_text.done output_index, summary_index, text Reasoning дууссан: бүтэн text.
response.output_item.done output_index, item Дууссан reasoning зүйл.
response.output_item.added output_index, item Хариулт эхэлнэ: in_progress статустай, агуулгагүй message зүйл.
response.content_part.added output_index, content_index, part Хоосон output_text хэсэг нээгдэнэ.
response.output_text.delta output_index, content_index, delta Хариултын нэг хэсэг.
response.output_text.done output_index, content_index, text Хариулт дууссан: бүтэн text.
response.content_part.done output_index, content_index, part Дууссан output_text хэсэг.
response.output_item.done output_index, item Дууссан message зүйл, completed статустай.
response.output_item.added output_index, item Tool дуудлага эхэлнэ: call_id, name ба хоосон arguments-тэй function_call зүйл.
response.function_call_arguments.delta output_index, delta Дуудлагын аргументууд, нэг delta-д бүрэн.
response.function_call_arguments.done output_index, arguments Ижил аргументууд, arguments хэлбэрээр.
response.output_item.done output_index, item Дууссан function_call зүйл.
response.completed response Амжилттай үед үргэлж сүүлийнх: output ба usage-тэй бүтэн response объект.
200 text/event-stream
event: response.created
data: {"type":"response.created","response":{"id":"resp_5f0c…","object":"response","status":"in_progress","output":[], …}}

event: response.in_progress
data: {"type":"response.in_progress","response":{"id":"resp_5f0c…","object":"response","status":"in_progress","output":[], …}}

event: response.output_item.added
data: {"type":"response.output_item.added","output_index":0,"item":{"id":"msg_1c7b…","type":"message","role":"assistant","status":"in_progress","content":[]}}

event: response.content_part.added
data: {"type":"response.content_part.added","output_index":0,"content_index":0,"part":{"type":"output_text","text":""}}

event: response.output_text.delta
data: {"type":"response.output_text.delta","output_index":0,"content_index":0,"delta":"Server-sent"}

event: response.output_text.delta
data: {"type":"response.output_text.delta","output_index":0,"content_index":0,"delta":" events let a server push text over one HTTP reply."}

event: response.output_text.done
data: {"type":"response.output_text.done","output_index":0,"content_index":0,"text":"Server-sent events let a server push text over one HTTP reply."}

event: response.content_part.done
data: {"type":"response.content_part.done","output_index":0,"content_index":0,"part":{"type":"output_text","text":"Server-sent events let a server push text over one HTTP reply."}}

event: response.output_item.done
data: {"type":"response.output_item.done","output_index":0,"item":{"id":"msg_1c7b…","type":"message","role":"assistant","status":"completed","content":[{"type":"output_text","text":"Server-sent events let a server push text over one HTTP reply.","annotations":[]}]}}

event: response.completed
data: {"type":"response.completed","response":{"id":"resp_5f0c…","object":"response","status":"completed","output":[…],"usage":{"input_tokens":1190,"output_tokens":18,"total_tokens":1208}, …}}

Амжилтгүй болсон stream

Shannon түвшнүүд дээр амжилтгүй хариу response.completed-ийн оронд response.failed-ээр төгсөнө. Түүний response.status нь failed, response.error нь rate_limit_exceeded эсвэл server_error гэсэн code ба message агуулна.

Hosted open-weight загварууд дээр алдаа нь code нь api_error, message-тэй error event байна. Түүний дараа response.completed мөн л дагана.

Stream response.failed эсвэл error event агуулсан бол амжилтгүй гэж үзэж, хүсэлтийг дахин илгээнэ үү.

Tools

Tool бол таны кодын ажиллуулдаг функц. Үүнийг tools дотор тайлбарлана; загвар хүсэхэд хариу мессежийн оронд эсвэл хажууд function_call зүйл агуулна.

tools дэх tool тодорхойлолт:

tools
[
  {
    "type": "function",
    "name": "get_weather",
    "description": "Current weather for a city.",
    "parameters": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        }
      },
      "required": [
        "city"
      ]
    }
  }
]

Үүнийг дууддаг хариуны output:

200 output
[
  {
    "id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "type": "function_call",
    "name": "get_weather",
    "call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "arguments": "{\"city\":\"Paris\"}"
  }
]

Функцээ ажиллуулаад, дуудлага ба түүний үр дүнг input-д нэмж хүсэлтээ дахин илгээнэ:

input
[
  {
    "role": "user",
    "content": "What is the weather in Paris?"
  },
  {
    "type": "function_call",
    "call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "name": "get_weather",
    "arguments": "{\"city\":\"Paris\"}"
  },
  {
    "type": "function_call_output",
    "call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "output": "{\"temperature_c\": 18, \"sky\": \"cloudy\"}"
  }
]

Зөвхөн function төрлийн tool-ийг уншина. shannon-1.6-*, shannon-2-* ба shannon-coder-1 дээр parameters schema нь нийтлэг JSON Schema түлхүүр үг болтол багасгагдана: oneOf-ийг anyOf гэж уншиж, $ref, additionalProperties, const, default, title зэрэг түлхүүр үгсийг загварт дамжуулахгүй.

tool_choice-ийн required болон нэрлэсэн функц утгыг hosted open-weight загварууд хэрэгжүүлнэ.

Tool давталтыг тусдаа хуудсанд бүрэн тайлбарласан. Функц дуудлага

Бүтэцтэй гаралт

Энэ формат бүтэцтэй гаралтыг text.format гэж бичнэ. Schema нь Chat Completions дээрх шиг json_schema гишүүний дор биш, name ба strict-ийн хажууд format дотор шууд байрлана.

  • {"type": "json_object"} нь дурын JSON объект хүснэ.
  • {"type": "json_schema", "name", "schema", "strict"} нь таны schema-г дагасан JSON хүснэ. Орхивол strict нь true.
POST /v1/responses
{
  "model": "shannon-1.6-lite",
  "input": "Extract the city and the date: 'The conference opens in Lisbon on 12 May 2027.'",
  "text": {
    "format": {
      "type": "json_schema",
      "name": "event",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "description": "ISO 8601 date"
          }
        },
        "required": [
          "city",
          "date"
        ]
      }
    }
  }
}

JSON нь мессежийн output_text хэсэгт текст болон ирнэ; өөрөө parse хийнэ үү. Бүтэцтэй гаралтгүй hosted open-weight загвар 400 буцаана.

output_text
{"city": "Lisbon", "date": "2027-05-12"}

Аль загвар аль хэлбэрийг авдгийг тусдаа хуудсанд жагсаасан. Бүтэцтэй гаралт

Reasoning

Reasoning хийдэг загвар reasoning-ээ мессежийн өмнө reasoning төрлийн гаралтын зүйл болгон буцаана. Stream дээр response.reasoning_summary_text.delta event хэлбэрээр ирнэ.

Hosted open-weight загварууд reasoning.effort-ийг хэрэгжүүлнэ: off, low, medium эсвэл high, юу ч илгээгээгүй бол high. off нь reasoning зүйл буцаахгүй. Объект хэлбэрээр илгээнэ үү; энэ endpoint дээр зүгээр string-ийг уншдаггүй.

Effort-уудыг тусдаа хуудсанд тайлбарласан. Reasoning effort

Гаралтын хязгаар

max_output_tokens нь илгээгээгүй үед 4,096. Энэ нь хүсэлт эхлэхэд таны үлдэгдлээс нөөцлөх токены тоо; хариу бүрэн болоход тэр хэмжээг хүсэлтийн ашигласанаар сольдог. Үлдсэн үлдэгдэлд багтахгүй утга 429 Quota exceeded буцаана.

Энэ нь shannon-1.6-*, shannon-2-* ба shannon-coder-1 дээр хариуны уртыг, hosted open-weight загварууд дээр хариултын текстийн уртыг хязгаарлана.

Энэ endpoint дээр shannon-coder-1-ийг бусад загварын адил үлдэгдлээс токеноор тооцно.

Хүсэлтийн body 32 MiB хүртэл байж болно. Хязгаар ба үлдэгдэл

Алдаа

Алдаа OpenAI-ийн алдааны body-г ашиглана: type ба message-тэй error объект; зарим нь null утгатай code ба param-г бас агуулна. Хүснэгт энэ endpoint-ийн хамгийн түгээмэл буцаадгийг жагсаана. Бүрэн жагсаалт, юуг дахин оролдохтой нь тусдаа хуудастай. Алдаа боловсруулах

Статус Төрөл Мессеж Хэзээ
401 authentication_error Missing authentication
Invalid API key
API түлхүүр илгээгээгүй, эсвэл түлхүүр үл мэдэгдэх буюу хүчингүй болсон.
400 invalid_request_error unknown model: <id> model байхгүй эсвэл нийтэлсэн id биш.
400 invalid_request_error No user message provided. Shannon түвшнүүд: input хэрэглэгчийн текст агуулаагүй.
400 invalid_request_error <id> does not accept image input Зургийн оролтгүй hosted open-weight загварт зураг илгээсэн.
400 invalid_request_error <id> does not accept response_format Бүтэцтэй гаралтгүй hosted open-weight загварт text.format илгээсэн.
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: … Body хүчинтэй JSON боловч талбар төрөл буруу.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_output_tokens таны үлдсэн үлдэгдлээс их байна.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: таны бүртгэлээс нэг минутад 120-оос олон хүсэлт ирсэн.
500 api_error The model backend failed to answer. Please retry. Загвар хариу гаргаагүй. Хүсэлтийг дахин илгээнэ үү.
502 api_error The model backend failed to answer. Please retry. Ижил, hosted open-weight загварууд дээр.
504 api_error upstream timed out Hosted open-weight загвар stream хийгээгүй хариуны хугацааны хязгаараас удсан. stream-ийг true болгож илгээнэ үү.