Мазмунга өтүү
Responses API

Responses API

Жаңы

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

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

Эң кичинекей сурам — модель id жана текст. Сиз сурабасаңыз, жооп стримделбейт.

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)

Жооп — жооп объекти. Анын 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 керек. Колдонот тилкеси талаа жоопту өзгөрткөн моделдерди атайт. Хостингдеги ачык салмактуу моделдер — модель тизмесиндеги он эки 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 Бир колдонуучу билдирүүсү катары окулган сап, же киргизүү элементтеринин массиви. Төмөндөгү Киргизүү элементтерин караңыз. Бардык моделдер
instructions string Модель үчүн нускамалар, бул форматтын системалык промпту. Хостингдеги ачык салмактуу моделдер, shannon-1.6-*, shannon-2-*, shannon-coder-1
stream boolean false true жоопту server-sent events катары жөнөтөт. Төмөндөгү Стримингди караңыз. Бардык моделдер
max_output_tokens integer 4096 Жооптун токендердеги жогорку чеги. 1ден 65,536га чейинки диапазондон тышкаркы маани ошол диапазонго жылдырылат. Бул ошондой эле сурам иштеп жатканда балансыңыздан резервделген сумма. Төмөндөгү Чыгыш чегин караңыз. Хостингдеги ачык салмактуу моделдер, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature number Үлгү алуу температурасы. Хостингдеги ачык салмактуу моделдерде маанилер 0 менен 2нин ортосунда кармалат. Хостингдеги ачык салмактуу моделдер; стримсиз жооптордо shannon-1.6-*, shannon-2-* жана shannon-coder-1
top_p number Nucleus sampling. Маанилер 0 менен 1дин ортосунда кармалат. Хостингдеги ачык салмактуу моделдер
tools array Модель чакыра ала турган функциялар, бул форматтын жалпак формасында: {"type": "function", "name", "description", "parameters"}. Төмөндөгү Куралдарды караңыз. Бардык моделдер
tool_choice string | object auto "auto" модельге чечүүгө мүмкүнчүлүк берет. "required" аны куралды чакырууга мажбурлайт. {"type": "function", "name": "…"} аны ошол куралды чакырууга мажбурлайт. Хостингдеги ачык салмактуу моделдер
reasoning object off, low, medium же high менен {"effort": "…"}. Башка ар бир маани 400 кайтарат. Хостингдеги ачык салмактуу моделдер
text object {"format": {…}} JSON жоопту сурайт. Төмөндөгү Структураланган чыгышты караңыз. Бардык Shannon деңгээлдери; хостингдеги ачык салмактуу моделдер id боюнча тизмеленгендей

previous_response_id, store, metadata, parallel_tool_calls, truncation, include, user жана prompt_cache_key учурдагы клиент коду өзгөрүүсүз иштесин үчүн кабыл алынат. Алар жоопту өзгөртпөйт. Сүйлөшүү сакталбагандыктан, кийинки сурам мурунку кадамдарды input ичинде алып келет.

Киргизүү элементтери

Киргизүү элементи — role жана content бар билдирүү, же курал чалуусун же анын натыйжасын алып жүргөн түрдүү элемент. content — сап же бөлүктөрдүн массиви.

Элемент Сүрөттөмө Колдонот
{"role": "user", "content": …} Сиз эмнени сурайсыз. content — сап, же input_text жана input_image бөлүктөрү. Бардык моделдер
{"role": "assistant", "content": …} Модельдин мурунку жообу. content — сап, же output_text бөлүктөрү. Бардык моделдер
{"role": "system", "content": …}
{"role": "developer", "content": …}
Сүйлөшүүнүн ичиндеги нускамалар. Хостингдеги ачык салмактуу моделдер
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} Модель мурунку жоопто жасаган курал чалуусу. arguments — JSON сап. Бардык моделдер
{"type": "function_call_output", "call_id": "…", "output": "…"} Ошол чалуунун натыйжасы. call_id — чалуунун id'си, ал эми output — сап катары натыйжа. Бардык моделдер

Нускамаларды instructions талаасына салыңыз. Shannon 3 үй-бүлөсүнүн id'си менен сакталышы керек болгон нускамаларды user билдирүүсүнө салыңыз.

Жооптун output элементтери input ичине өзгөрүүсүз кайра кире алат: message жана function_call элементтери окулат, reasoning элементтери өткөрүлүп жиберилет.

Мазмун бөлүктөрү

Бөлүк Сүрөттөмө Жеткиликтүү
{"type": "input_text", "text": "…"} Колдонуучу билдирүүсүнүн тексти. Бардык моделдер
{"type": "output_text", "text": "…"} Ассистент билдирүүсүнүн тексти. Бардык моделдер
{"type": "input_image", "image_url": "…"} Сүрөт, base64 мазмуну бар data: URL катары же http(s) URL катары. Shannon 3 үй-бүлөсү, shannon-1.6-lite, shannon-1.6-pro жана сүрөт киришин тизмеленген хостингдеги ачык салмактуу моделдер
{"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 элементинен окулат. Өлчөмдөр жана чектөөлөр өз бетинде. Сүрөттөр жана файлдар

Нускамалар жана опциялар менен сурам

Бул сурам нускамаларды, киргизүү элементтери катары сүйлөшүүнү, чыгыш чегин, температураны жана reasoning аракетин жөнөтөт. Ал алардын баарын колдонгон хостингдеги ачык салмактуу моделди колдонот.

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)

Хостингдеги ачык салмактуу модельдин жообунда 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
  }
}

Жооп объекти

id, object, status, output жана usage ар бир жоопто бар. Кодуңузду ушуларга курсаңыз болот.

Талаа Түрү Сүрөттөмө Ким жөнөтөт
id string resp_ жана андан кийин 32 он алтылык белги. Бардык моделдер
object string Ар дайым response. Бардык моделдер
status string completed. Стримде адегенде in_progress, ал эми response.failed окуясында failed. Бардык моделдер
output array Модель чыгарган тартипте чыгыш элементтери: reasoning, message, function_call. Бардык моделдер
usage object input_tokens, output_tokens жана total_tokens. Бардык моделдер
usage.input_tokens_details object cached_tokens: промпт кэшинен окулган кириш токендери. Хостингдеги ачык салмактуу моделдер
usage.output_tokens_details object reasoning_tokens: reasoning'ге сарпталган чыгыш токендери. Хостингдеги ачык салмактуу моделдер
model string Жооп берген модельдин канондук id'си. Shannon 3 үй-бүлөсү, хостингдеги ачык салмактуу моделдер
created_at integer Жооптун убактысы, Unix секундаларында. Shannon 3 үй-бүлөсү, хостингдеги ачык салмактуу моделдер
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": "…"} Курал чалуусу. arguments — JSON сап. Натыйжаны ошол эле call_id менен кайра жөнөтүңүз.

OpenAI SDK'лары билдирүүнүн текстин сиз үчүн response.output_text ичинде бириктирет.

Стриминг

server-sent events үчүн stream'ди true кылыңыз. Ар бир фреймде окуянын аты бар event: сабы жана JSON объекти бар data: сабы бар; объект атты type ичинде кайталайт. Дельталарды өз элементине output_index боюнча байлаңыз.

OpenAI SDK менен окуяларды 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")

Окуялар ушул тартипте келет. Reasoning, билдирүү жана курал чалуулары топтору жоопто алар болгондо гана пайда болот.

Окуя Жүк (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 Курал чалуусу башталат: call_id, name жана бош arguments менен function_call элементи.
response.function_call_arguments.delta output_index, delta Чалуунун аргументтери, бир дельтада толук.
response.function_call_arguments.done output_index, arguments Ошол эле аргументтер, arguments катары.
response.output_item.done output_index, item Бүткөн function_call элементи.
response.completed response Ийгиликте ар дайым акыркы: output жана usage менен бүт жооп объекти.
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}, …}}

Ишке ашпаган стрим

Shannon деңгээлдеринде ишке ашпаган жооп response.completed ордуна response.failed менен аяктайт. Анын response.status — failed, ал эми response.error code, rate_limit_exceeded же server_error, жана message камтыйт.

Хостингдеги ачык салмактуу моделдерде ката code api_error жана message бар error окуясы. response.completed андан кийин да келет.

Стримде response.failed же error окуясы болсо, аны ишке ашпады деп эсептеп, сурамды кайра жөнөтүңүз.

Куралдар

Курал — коддуңуз аткарган функция. Аны tools ичинде сүрөттөңүз; модель аны каалаганда жооп билдирүүнүн ордуна же жанында function_call элементин камтыйт.

tools ичиндеги курал аныктамасы:

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 түрүндөгү куралдар гана окулат. shannon-1.6-*, shannon-2-* жана shannon-coder-1 боюнча parameters схемасы жалпы JSON Schema ачкыч сөздөрүнө чейин кыскартылат: oneOf anyOf катары окулат, ал эми $ref, additionalProperties, const, default жана title сыяктуу ачкыч сөздөр моделге өткөрүлбөйт.

tool_choice маанилери required жана аталган функцияны хостингдеги ачык салмактуу моделдер колдонот.

Курал цикли өз бетинде толук сүрөттөлгөн. Функция чакыруу

Структураланган чыгыш

Бул формат структураланган чыгышты text.format деп жазат. Схема Chat Completions'тагыдай json_schema мүчөсүнүн астында эмес, format ичинде name жана strict жанында түз турат.

  • {"type": "json_object"} каалаган JSON объектин сурайт.
  • {"type": "json_schema", "name", "schema", "strict"} схемаңызга ылайык 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 бөлүгүндө текст катары келет; аны өзүңүз талдаңыз. Структураланган чыгышы жок хостингдеги ачык салмактуу модель 400 кайтарат.

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

Кайсы модель кайсы форманы кабыл алары өз бетинде тизмеленген. Түзүмдүү чыгыштар

Reasoning

Reasoning жүргүзгөн модель өзүнүн reasoning'ин билдирүүнүн алдында reasoning түрүндөгү чыгыш элементи катары кайтарат. Стримде ал response.reasoning_summary_text.delta окуялары катары келет.

Хостингдеги ачык салмактуу моделдер reasoning.effort колдонот: off, low, medium же high, эч нерсе жөнөтпөсөңүз high. off reasoning элементин кайтарбайт. Аны объект катары жөнөтүңүз; бул endpoint'те жылаңач сап окулбайт.

Аракеттер өз бетинде сүрөттөлгөн. Reasoning аракет деңгээли

Чыгыш чеги

max_output_tokens жөнөтпөсөңүз 4,096. Бул сурам башталганда балансыңыздан резервделген токендердин саны; жооп толук болгондо ал сумма сурам колдонгон менен алмаштырылат. Калган балансыңызга батпаган маани 429 Quota exceeded кайтарат.

Ал shannon-1.6-*, shannon-2-* жана shannon-coder-1 боюнча жооптун узундугун, ал эми хостингдеги ачык салмактуу моделдерде жооп текстинин узундугун чектейт.

Бул endpoint'те shannon-coder-1 башка ар бир модель сыяктуу балансыңыздан токен менен эсептелет.

Сурам денеси 32 MiB'ге чейин болушу мүмкүн. Чектөөлөр жана баланс

Каталар

Каталар OpenAI ката денесин колдонот: 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 Сүрөт кириши жок хостингдеги ачык салмактуу моделге сүрөт жөнөтүлдү.
400 invalid_request_error <id> does not accept response_format Структураланган чыгышы жок хостингдеги ачык салмактуу моделге 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: … Дене жарактуу 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. Ошол эле, хостингдеги ачык салмактуу моделдерде.
504 api_error upstream timed out Хостингдеги ачык салмактуу модель стримсиз жооптун убакыт чегинен узагыраак убакыт алды. Аны stream true коюп жөнөтүңүз.