Kontentga o'tish
Responses API

Responses API

Yangi

POST /v1/responses ko'rsatmalar va kirish elementlari ro'yxatini qabul qiladi va OpenAI Responses formatida chiqish elementlaridan iborat response obyektini qaytaradi. Uni OpenAI SDK'ning responses API bilan va unga asoslangan vositalar, masalan Codex CLI bilan ishlating. Endpoint holat saqlamaydi: butun suhbatni har bir so'rov bilan yuboring.

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

Eng kichik so'rov — model id va matn. So'ramasangiz, javob oqimsiz bo'ladi.

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)

Javob — response obyekti. Uning outputi, model mulohaza qilgan bo'lsa, mulohazani va xabarni o'z ichiga oladi:

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
  }
}

So'rov maydonlari

So'rovga model va input kerak. Qo'llaydi ustuni maydon javobni o'zgartiradigan modellarni nomlaydi. Xostingdagi open-weight modellar — model ro'yxatidagi o'n ikkita id; Shannon 3 oilasi — shannon-3, shannon-3-pro, shannon-3.1 va shannon-3.1-pro. Modellar va narxlar

Maydon Tur Standart Tavsif Qo'llaydi
model string Majburiy. Model ro'yxatidagi id. Moslashtirishda harf registri hisobga olinmaydi. Yo'q yoki e'lon qilinmagan id 400 unknown model qaytaradi. Barcha modellar
input string | array Bitta foydalanuvchi xabari sifatida o'qiladigan satr yoki kirish elementlari massivi. Quyida Kirish elementlariga qarang. Barcha modellar
instructions string Model uchun ko'rsatmalar, bu formatning system prompti. Xostingdagi open-weight modellar, shannon-1.6-*, shannon-2-*, shannon-coder-1
stream boolean false true javobni server-sent events sifatida yuboradi. Quyida Streamingga qarang. Barcha modellar
max_output_tokens integer 4096 Javobning yuqori chegarasi, token bilan. 1 dan 65,536 gacha oraliqdan tashqaridagi qiymat shu oraliqqa keltiriladi. Shuningdek, so'rov bajarilayotganda balansingizdan ajratib qo'yiladigan miqdor ham shu. Quyida Chiqish limitiga qarang. Xostingdagi open-weight modellar, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature number Sampling temperaturasi. Xostingdagi open-weight modellarda qiymatlar 0 va 2 oralig'ida saqlanadi. Xostingdagi open-weight modellar; oqimsiz javoblarda shannon-1.6-*, shannon-2-* va shannon-coder-1
top_p number Nucleus sampling. Qiymatlar 0 va 1 oralig'ida saqlanadi. Xostingdagi open-weight modellar
tools array Model chaqirishi mumkin bo'lgan funksiyalar, bu formatning tekis shaklida: {"type": "function", "name", "description", "parameters"}. Quyida Tool'larga qarang. Barcha modellar
tool_choice string | object auto "auto" modelga o'zi qaror qilishga imkon beradi. "required" uni tool chaqirishga majbur qiladi. {"type": "function", "name": "…"} aynan o'sha tool'ni chaqirishga majbur qiladi. Xostingdagi open-weight modellar
reasoning object off, low, medium yoki high bilan {"effort": "…"}. Boshqa har qanday qiymat 400 qaytaradi. Xostingdagi open-weight modellar
text object {"format": {…}} JSON javob so'raydi. Quyida Tuzilmali chiqishga qarang. Barcha Shannon darajalari; xostingdagi open-weight modellar har bir id uchun ko'rsatilganidek

previous_response_id, store, metadata, parallel_tool_calls, truncation, include, user va prompt_cache_key mavjud mijoz kodi o'zgarishsiz ishlashi uchun qabul qilinadi. Ular javobni o'zgartirmaydi. Suhbat saqlanmagani uchun keyingi so'rov oldingi navbatlarni inputda olib keladi.

Kirish elementlari

Kirish elementi — role va contentli xabar yoki tool chaqiruvini yoxud uning natijasini olib keladigan turli element. content — satr yoki qismlar massivi.

Element Tavsif Qo'llaydi
{"role": "user", "content": …} Siz so'raydigan narsa. content — satr yoki input_text va input_image qismlari. Barcha modellar
{"role": "assistant", "content": …} Modelning oldingi javobi. content — satr yoki output_text qismlari. Barcha modellar
{"role": "system", "content": …}
{"role": "developer", "content": …}
Suhbat ichidagi ko'rsatmalar. Xostingdagi open-weight modellar
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} Model oldingi javobda qilgan tool chaqiruvi. arguments — JSON satri. Barcha modellar
{"type": "function_call_output", "call_id": "…", "output": "…"} O'sha chaqiruvning natijasi. call_id chaqiruv id'si, output esa natija satr sifatida. Barcha modellar

Ko'rsatmalarni instructions maydoniga qo'ying. Shannon 3 oilasi id'sida bajarilishi shart bo'lgan ko'rsatmalarni user xabariga qo'ying.

Javob outputidagi elementlarni inputga o'zgartirmay qaytarish mumkin: message va function_call elementlari o'qiladi, reasoning elementlari o'tkazib yuboriladi.

Kontent qismlari

Qism Tavsif Mavjud
{"type": "input_text", "text": "…"} Foydalanuvchi xabarining matni. Barcha modellar
{"type": "output_text", "text": "…"} Assistant xabarining matni. Barcha modellar
{"type": "input_image", "image_url": "…"} Rasm, base64 mazmunli data: URL yoki http(s) URL sifatida. Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro va rasm kirishini ko'rsatgan xostingdagi open-weight modellar
{"type": "input_file", "file_data": "data:application/pdf;base64,…"} Hujjat (PDF, Word, PowerPoint yoki Excel): file_data data: URL'ni, file_url esa http(s) URL'ni o'z ichiga oladi. Shannon 3 oilasi

Shannon darajalarida rasmlar va fayllar inputning oxirgi user elementidan o'qiladi. O'lchamlar va limitlar alohida sahifada. Rasmlar va fayllar

Ko'rsatmalar va parametrlar bilan so'rov

Bu so'rov ko'rsatmalar, kirish elementlari sifatida suhbat, chiqish limiti, temperatura va mulohaza darajasini yuboradi. U xostingdagi open-weight modeldan foydalanadi, u hammasini qo'llaydi.

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)

Xostingdagi open-weight model javobida id, object, model, created_at, status, output va usage bor. Uning usage'i keshdan o'qilgan tokenlar va mulohazaga sarflangan tokenlarni qo'shadi:

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 obyekti

id, object, status, output va usage har bir javobda bor. Kodingizni shularga asoslang.

Maydon Tur Tavsif Yuboruvchi
id string resp_ va undan keyin 32 ta o'n oltilik belgi. Barcha modellar
object string Doim response. Barcha modellar
status string completed. Oqimda u avval in_progress, response.failed hodisasida esa failed. Barcha modellar
output array Chiqish elementlari model hosil qilgan tartibda: reasoning, message, function_call. Barcha modellar
usage object input_tokens, output_tokens va total_tokens. Barcha modellar
usage.input_tokens_details object cached_tokens: prompt keshidan o'qilgan kirish tokenlari. Xostingdagi open-weight modellar
usage.output_tokens_details object reasoning_tokens: mulohazaga sarflangan chiqish tokenlari. Xostingdagi open-weight modellar
model string Javob bergan modelning kanonik id'si. Shannon 3 oilasi, xostingdagi open-weight modellar
created_at integer Javob vaqti, Unix soniyalarida. Shannon 3 oilasi, xostingdagi open-weight modellar
instructions, tools, temperature, … instructions, tools va temperature so'rovni takrorlaydi. error va incomplete_details — null, metadata — {}, parallel_tool_calls — true, tool_choice — auto va top_p — null. Shannon 3 oilasi

Chiqish elementlari

Element Tavsif
{"id": "rs_…", "type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} Modelning mulohazasi bitta summary_text qismi sifatida. Faqat model mulohaza qilganda bo'ladi.
{"id": "msg_…", "type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "…"}]} Javob: matnli bitta output_text qismi.
{"id": "fc_…", "type": "function_call", "call_id": "call_…", "name": "…", "arguments": "…"} Tool chaqiruvi. arguments — JSON satri. Natijani o'sha call_id bilan qaytaring.

OpenAI SDK'lar xabar matnini sizning o'rningizga response.output_textda birlashtiradi.

Streaming

Server-sent events uchun streamni true qiling. Har bir freymda hodisa nomi bilan event: satri va JSON obyekti bilan data: satri bor; obyekt nomni typeda takrorlaydi. Deltalarni o'z elementiga output_index bo'yicha moslang.

OpenAI SDK bilan hodisalarni type bo'yicha o'qing:

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")

Hodisalar shu tartibda keladi. Mulohaza, xabar va tool chaqiruvlari guruhlari faqat javobda ular bo'lganda paydo bo'ladi.

Hodisa Yuklama Qachon
response.created response Doim birinchi. response.status — in_progress, response.output bo'sh.
response.in_progress response Doim ikkinchi, xuddi shu obyekt bilan.
response.output_item.added output_index, item Mulohaza boshlanadi: bo'sh summaryli reasoning elementi.
response.reasoning_summary_text.delta output_index, summary_index, delta Mulohazaning bir bo'lagi.
response.reasoning_summary_text.done output_index, summary_index, text Mulohaza tugadi: uning butun texti.
response.output_item.done output_index, item Tugagan reasoning elementi.
response.output_item.added output_index, item Javob boshlanadi: in_progress holatli va mazmunsiz message elementi.
response.content_part.added output_index, content_index, part Bo'sh output_text qismi ochiladi.
response.output_text.delta output_index, content_index, delta Javobning bir bo'lagi.
response.output_text.done output_index, content_index, text Javob tugadi: uning butun texti.
response.content_part.done output_index, content_index, part Tugagan output_text qismi.
response.output_item.done output_index, item Tugagan message elementi, completed holati bilan.
response.output_item.added output_index, item Tool chaqiruvi boshlanadi: call_id, name va bo'sh argumentsli function_call elementi.
response.function_call_arguments.delta output_index, delta Chaqiruv argumentlari, bitta deltada to'liq.
response.function_call_arguments.done output_index, arguments Xuddi shu argumentlar arguments sifatida.
response.output_item.done output_index, item Tugagan function_call elementi.
response.completed response Muvaffaqiyatda doim oxirgi: output va usageli butun response obyekti.
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}, …}}

Muvaffaqiyatsiz oqim

Shannon darajalarida muvaffaqiyatsiz javob response.completed o'rniga response.failed bilan tugaydi. Uning response.statusi failed, response.error esa code (rate_limit_exceeded yoki server_error) va messageni o'z ichiga oladi.

Xostingdagi open-weight modellarda nosozlik code api_error va messageli error hodisasi. response.completed baribir undan keyin keladi.

Oqimda response.failed yoki error hodisasi bo'lsa, uni muvaffaqiyatsiz deb hisoblang va so'rovni qayta yuboring.

Tool'lar

Tool — kodingiz bajaradigan funksiya. Uni toolsda tasvirlang; model uni xohlasa, javobda xabar o'rnida yoki yonida function_call elementi bo'ladi.

tools ichidagi tool ta'rifi:

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

Uni chaqiradigan javobning outputi:

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

Funksiyani bajaring, so'ng chaqiruv va uning natijasi inputga qo'shilgan holda so'rovni qayta yuboring:

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\"}"
  }
]

Faqat function turidagi tool'lar o'qiladi. shannon-1.6-*, shannon-2-* va shannon-coder-1 da parameters sxemasi umumiy JSON Schema kalit so'zlarigacha qisqartiriladi: oneOf anyOf sifatida o'qiladi, $ref, additionalProperties, const, default va title kabi kalit so'zlar modelga uzatilmaydi.

tool_choice ning required qiymati va nomlangan funksiyani xostingdagi open-weight modellar qo'llaydi.

Tool sikli to'liq o'z sahifasida tasvirlangan. Funksiya chaqirish

Tuzilmali chiqish

Bu format tuzilmali chiqishni text.format deb yozadi. Sxema Chat Completions'dagidek json_schema a'zosi ostida emas, bevosita formatda, name va strict yonida turadi.

  • {"type": "json_object"} istalgan JSON obyektini so'raydi.
  • {"type": "json_schema", "name", "schema", "strict"} sxemangizga amal qiladigan JSON so'raydi. Qoldirsangiz, 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 xabarning output_text qismida matn sifatida keladi; uni o'zingiz parse qiling. Tuzilmali chiqishi yo'q xostingdagi open-weight model 400 qaytaradi.

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

Qaysi model qaysi shaklni qabul qilishi o'z sahifasida sanab o'tilgan. Tuzilgan chiqishlar

Mulohaza

Mulohaza qiladigan model o'z mulohazasini xabardan oldin reasoning turidagi chiqish elementi sifatida qaytaradi. Oqimda u response.reasoning_summary_text.delta hodisalari sifatida keladi.

Xostingdagi open-weight modellar reasoning.effortni qo'llaydi: off, low, medium yoki high, hech narsa yubormasangiz high. off mulohaza elementini qaytarmaydi. Uni obyekt sifatida yuboring; bu endpointda oddiy satr o'qilmaydi.

Darajalar o'z sahifasida tasvirlangan. Mulohaza darajasi

Chiqish limiti

max_output_tokens yubormasangiz 4,096. So'rov boshlanganda balansingizdan ajratib qo'yiladigan tokenlar soni shu; javob to'liq bo'lgach, bu miqdor so'rov ishlatgan miqdor bilan almashtiriladi. Qolgan balansingizga sig'maydigan qiymat 429 Quota exceeded qaytaradi.

U shannon-1.6-*, shannon-2-* va shannon-coder-1 da javob uzunligini, xostingdagi open-weight modellarda esa javob matni uzunligini cheklaydi.

Bu endpointda shannon-coder-1 boshqa har qanday model kabi balansingizdan token bilan hisoblanadi.

So'rov tanasi 32 MiB gacha bo'lishi mumkin. Limitlar va balans

Xatolar

Xatolar OpenAI xato tanasidan foydalanadi: type va messageli error obyekti; ba'zilari null qiymatli code va paramni ham olib keladi. Jadvalda bu endpoint eng ko'p qaytaradigan xatolar keltirilgan. To'liq ro'yxat, nimani qayta urinish kerakligi bilan, alohida sahifada. Xatolarni boshqarish

Holat Tur Xabar Qachon
401 authentication_error Missing authentication
Invalid API key
API kalit yuborilmagan yoki kalit noma'lum yoxud bekor qilingan.
400 invalid_request_error unknown model: <id> model yo'q yoki e'lon qilingan id emas.
400 invalid_request_error No user message provided. Shannon darajalari: inputda foydalanuvchi matni yo'q.
400 invalid_request_error <id> does not accept image input Rasm kirishi yo'q xostingdagi open-weight modelga rasm yuborilgan.
400 invalid_request_error <id> does not accept response_format Tuzilmali chiqishi yo'q xostingdagi open-weight modelga text.format yuborilgan.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning.effort ro'yxatdan tashqaridagi qiymatni o'z ichiga oladi.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Tana yaroqli JSON, lekin biror maydon noto'g'ri turda.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_output_tokens balansingizda qolgan miqdordan katta.
429 rate_limit_error Too many requests. Retry in <n>s. Flood himoyasi: hisobingizdan bir daqiqada 120 tadan ortiq so'rov.
500 api_error The model backend failed to answer. Please retry. Model javob yaratmadi. So'rovni qayta yuboring.
502 api_error The model backend failed to answer. Please retry. Xuddi shu, xostingdagi open-weight modellarda.
504 api_error upstream timed out Xostingdagi open-weight model oqimsiz javobning vaqt chegarasidan uzoqroq vaqt oldi. Uni streamni true qilib yuboring.