Məzmuna keç
Responses API

Responses API

Yeni

POST /v1/responses təlimatları və giriş elementləri siyahısını qəbul edir və OpenAI Responses formatında output elementlərindən ibarət response obyekti qaytarır. Onu OpenAI SDK-nın responses API-si ilə və Codex CLI kimi onun üzərində qurulmuş alətlərlə istifadə edin. Endpoint vəziyyət saxlamır: bütün söhbəti hər sorğu ilə göndərin.

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

Ən kiçik sorğu model id-si və mətndir. İstəmədikcə cavab axınla verilmir.

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)

Cavab response obyektidir. Onun output-u, model reasoning etdikdə reasoning-i və mesajı saxlayır:

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

Sorğu sahələri

Sorğuya model və input lazımdır. Applied by sütunu sahənin cavabı dəyişdirdiyi modelləri göstərir. Host edilən açıq çəkili modellər model siyahısındakı on iki id-dir; Shannon 3 ailəsi shannon-3, shannon-3-pro, shannon-3.1 və shannon-3.1-pro-dur. Modellər və qiymətlər

Sahə Tip Defolt Təsvir Tətbiq edənlər
model string Məcburidir. Model siyahısından id. Uyğunlaşdırma böyük-kiçik hərfə həssas deyil. Olmayan və ya dərc edilməmiş id 400 unknown model qaytarır. Bütün modellər
input string | array Bir user mesajı kimi oxunan sətir və ya giriş elementləri massivi. Aşağıdakı Giriş elementlərinə baxın. Bütün modellər
instructions string Model üçün təlimatlar, bu formatın system prompt-u. Host edilən açıq çəkili modellər, shannon-1.6-*, shannon-2-*, shannon-coder-1
stream boolean false true cavabı server-sent events kimi göndərir. Aşağıdakı Streaming bölməsinə baxın. Bütün modellər
max_output_tokens integer 4096 Cavabın yuxarı həddi, tokenlərlə. 1-dən 65,536-ya qədər aralıqdan kənar dəyər həmin aralığa çəkilir. Bu, həmçinin sorğu işlədiyi müddətdə balansınızdan ayrılan miqdardır. Aşağıdakı Output limiti bölməsinə baxın. Host edilən açıq çəkili modellər, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature number Sampling temperature. Host edilən açıq çəkili modellərdə dəyərlər 0 ilə 2 arasında saxlanılır. Host edilən açıq çəkili modellər; axınsız cavablarda shannon-1.6-*, shannon-2-* və shannon-coder-1
top_p number Nucleus sampling. Dəyərlər 0 ilə 1 arasında saxlanılır. Host edilən açıq çəkili modellər
tools array Modelin çağıra biləcəyi funksiyalar, bu formatın yastı formasında: {"type": "function", "name", "description", "parameters"}. Aşağıdakı Alətlər bölməsinə baxın. Bütün modellər
tool_choice string | object auto "auto" modelə qərar verməyə imkan verir. "required" onu alət çağırmağa məcbur edir. {"type": "function", "name": "…"} onu həmin aləti çağırmağa məcbur edir. Host edilən açıq çəkili modellər
reasoning object off, low, medium və ya high ilə {"effort": "…"}. Hər hansı digər dəyər 400 qaytarır. Host edilən açıq çəkili modellər
text object {"format": {…}} JSON cavabı istəyir. Aşağıdakı Strukturlu çıxış bölməsinə baxın. Bütün Shannon pillələri; host edilən açıq çəkili modellər id üzrə göstərildiyi kimi

previous_response_id, store, metadata, parallel_tool_calls, truncation, include, user və prompt_cache_key mövcud klient kodunun dəyişmədən işləməsi üçün qəbul edilir. Onlar cavabı dəyişmir. Söhbət saxlanılmadığı üçün növbəti sorğu əvvəlki növbələri input-da daşıyır.

Giriş elementləri

Giriş elementi ya role və content olan mesajdır, ya da alət çağırışını və ya onun nəticəsini daşıyan tipli elementdir. content sətir və ya hissələr massividir.

Element Təsvir Tətbiq edənlər
{"role": "user", "content": …} Nə soruşursunuz. content sətir və ya input_text və input_image hissələridir. Bütün modellər
{"role": "assistant", "content": …} Modelin əvvəlki cavabı. content sətir və ya output_text hissələridir. Bütün modellər
{"role": "system", "content": …}
{"role": "developer", "content": …}
Söhbətin içindəki təlimatlar. Host edilən açıq çəkili modellər
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} Modelin əvvəlki cavabda etdiyi alət çağırışı. arguments JSON sətridir. Bütün modellər
{"type": "function_call_output", "call_id": "…", "output": "…"} Həmin çağırışın nəticəsi. call_id çağırışın id-si, output isə nəticə sətridir. Bütün modellər

Təlimatları instructions sahəsinə qoyun. Shannon 3 ailəsinin id-si ilə qüvvədə qalmalı təlimatları user mesajına qoyun.

Cavabın output elementləri olduğu kimi input-a qaytarıla bilər: message və function_call elementləri oxunur, reasoning elementləri keçilir.

Məzmun hissələri

Hissə Təsvir Mövcuddur
{"type": "input_text", "text": "…"} User mesajının mətni. Bütün modellər
{"type": "output_text", "text": "…"} Assistant mesajının mətni. Bütün modellər
{"type": "input_image", "image_url": "…"} Təsvir, base64 məzmunlu data: URL və ya http(s) URL kimi. Shannon 3 ailəsi, shannon-1.6-lite, shannon-1.6-pro və təsvir girişi göstərən host edilən açıq çəkili modellər
{"type": "input_file", "file_data": "data:application/pdf;base64,…"} Sənəd (PDF, Word, PowerPoint və ya Excel): file_data data: URL, file_url isə http(s) URL saxlayır. Shannon 3 ailəsi

Shannon pillələrində təsvirlər və fayllar input-un son user elementindən oxunur. Ölçülər və limitlər ayrıca səhifədədir. Təsvirlər və fayllar

Təlimatlar və seçimlərlə sorğu

Bu sorğu təlimatları, giriş elementləri kimi söhbəti, output limitini, temperature və reasoning effort göndərir. O, hamısını tətbiq edən host edilən açıq çəkili modeldən istifadə edir.

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)

Host edilən açıq çəkili modelin cavabında id, object, model, created_at, status, output və usage var. Onun usage-i keşdən oxunan tokenləri və reasoning-ə sərf olunan tokenləri əlavə edir:

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 və usage hər cavabda var. Kodunuzu bunların üzərində qurun.

Sahə Tip Təsvir Göndərən
id string resp_ və ardınca 32 hexadecimal simvol. Bütün modellər
object string Həmişə response. Bütün modellər
status string completed. Axında əvvəlcə in_progress, response.failed hadisəsində isə failed olur. Bütün modellər
output array Output elementləri modelin yaratdığı ardıcıllıqla: reasoning, message, function_call. Bütün modellər
usage object input_tokens, output_tokens və total_tokens. Bütün modellər
usage.input_tokens_details object cached_tokens: prompt keşindən oxunan giriş tokenləri. Host edilən açıq çəkili modellər
usage.output_tokens_details object reasoning_tokens: reasoning-ə sərf olunan çıxış tokenləri. Host edilən açıq çəkili modellər
model string Cavab verən modelin kanonik id-si. Shannon 3 ailəsi, host edilən açıq çəkili modellər
created_at integer Cavabın vaxtı, Unix saniyələri ilə. Shannon 3 ailəsi, host edilən açıq çəkili modellər
instructions, tools, temperature, … instructions, tools və temperature sorğunu təkrarlayır. error və incomplete_details null, metadata {}, parallel_tool_calls true, tool_choice auto, top_p isə null-dır. Shannon 3 ailəsi

Output elementləri

Element Təsvir
{"id": "rs_…", "type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} Modelin reasoning-i bir summary_text hissəsi kimi. Yalnız model reasoning etdikdə olur.
{"id": "msg_…", "type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "…"}]} Cavab: mətni olan bir output_text hissəsi.
{"id": "fc_…", "type": "function_call", "call_id": "call_…", "name": "…", "arguments": "…"} Alət çağırışı. arguments JSON sətridir. Nəticəni eyni call_id ilə geri göndərin.

OpenAI SDK-ları mesajın mətnini sizin üçün response.output_text-də birləşdirir.

Streaming

Server-sent events üçün stream-i true təyin edin. Hər frame-də hadisənin adı olan event: sətri və JSON obyekti olan data: sətri var; obyekt adı type-da təkrarlayır. Delta-ları öz elementinə output_index ilə uyğunlaşdırın.

OpenAI SDK ilə hadisələri type-ına görə oxuyun:

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

Hadisələr bu ardıcıllıqla gəlir. Reasoning, mesaj və alət çağırışları qrupları yalnız cavabda olduqda görünür.

Hadisə Payload Nə vaxt
response.created response Həmişə birinci. response.status in_progress, response.output boşdur.
response.in_progress response Həmişə ikinci, eyni obyektlə.
response.output_item.added output_index, item Reasoning başlayır: boş summary-li reasoning elementi.
response.reasoning_summary_text.delta output_index, summary_index, delta Reasoning-in bir hissəsi.
response.reasoning_summary_text.done output_index, summary_index, text Reasoning tamamdır: onun bütün text-i.
response.output_item.done output_index, item Bitmiş reasoning elementi.
response.output_item.added output_index, item Cavab başlayır: statusu in_progress və məzmunu olmayan message elementi.
response.content_part.added output_index, content_index, part Boş output_text hissəsi açılır.
response.output_text.delta output_index, content_index, delta Cavabın bir hissəsi.
response.output_text.done output_index, content_index, text Cavab tamamdır: onun bütün text-i.
response.content_part.done output_index, content_index, part Bitmiş output_text hissəsi.
response.output_item.done output_index, item Bitmiş message elementi, statusu completed.
response.output_item.added output_index, item Alət çağırışı başlayır: call_id, name və boş arguments olan function_call elementi.
response.function_call_arguments.delta output_index, delta Çağırışın arqumentləri, bir delta-da tam.
response.function_call_arguments.done output_index, arguments Eyni arqumentlər, arguments kimi.
response.output_item.done output_index, item Bitmiş function_call elementi.
response.completed response Uğur halında həmişə sonuncu: output və usage ilə bütün 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}, …}}

Uğursuz olan axın

Shannon pillələrində uğursuz cavab response.completed əvəzinə response.failed ilə bitir. Onun response.status-u failed-dir və response.error code (rate_limit_exceeded və ya server_error) və message saxlayır.

Host edilən açıq çəkili modellərdə uğursuzluq code api_error və message olan error hadisəsidir. Ondan sonra yenə response.completed gəlir.

Axında response.failed və ya error hadisəsi varsa, onu uğursuz sayın və sorğunu yenidən göndərin.

Alətlər

Alət kodunuzun icra etdiyi funksiyadır. Onu tools-da təsvir edin; model onu istədikdə cavab mesajın əvəzinə və ya yanında function_call elementi saxlayır.

tools-da alət tərifi:

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

Onu çağıran cavabın output-u:

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

Funksiyanı icra edin, sonra sorğunu çağırış və onun nəticəsi input-a əlavə edilərək yenidən göndərin:

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

Yalnız function tipli alətlər oxunur. shannon-1.6-*, shannon-2-* və shannon-coder-1-də parameters sxemi ümumi JSON Schema açar sözlərinə qədər azaldılır: oneOf anyOf kimi oxunur, $ref, additionalProperties, const, default və title kimi açar sözlər modelə ötürülmür.

tool_choice-un required və adlı funksiya dəyərlərini host edilən açıq çəkili modellər tətbiq edir.

Alət dövrəsi ayrıca səhifədə tam təsvir olunub. Funksiya çağırışı

Strukturlu çıxış

Bu format strukturlu çıxışı text.format kimi yazır. Sxem Chat Completions-dakı kimi json_schema üzvünün altında deyil, birbaşa format-da, name və strict-in yanında durur.

  • {"type": "json_object"} istənilən JSON obyekti istəyir.
  • {"type": "json_schema", "name", "schema", "strict"} sxeminizə uyğun JSON istəyir. Buraxdıqda strict true-dur.
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 mesajın output_text hissəsində mətn kimi gəlir; onu özünüz parse edin. Strukturlu çıxışı olmayan host edilən açıq çəkili model 400 qaytarır.

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

Hansı modelin hansı formanı qəbul etdiyi ayrıca səhifədə siyahıya alınıb. Strukturlaşdırılmış çıxışlar

Reasoning

Reasoning edən model reasoning-ini mesajdan əvvəl reasoning tipli output elementi kimi qaytarır. Axında o, response.reasoning_summary_text.delta hadisələri kimi gəlir.

Host edilən açıq çəkili modellər reasoning.effort-u tətbiq edir: off, low, medium və ya high, heç nə göndərmədikdə high. off reasoning elementi qaytarmır. Onu obyekt kimi göndərin; sadə sətir bu endpoint-də oxunmur.

Effort-lar ayrıca səhifədə təsvir olunub. Reasoning effort

Output limiti

max_output_tokens göndərmədiyiniz halda 4,096-dır. Bu, sorğu başlayanda balansınızdan ayrılan token sayıdır; cavab tamamlandıqda həmin miqdar sorğunun istifadə etdiyi ilə əvəz olunur. Qalan balansınıza sığmayan dəyər 429 Quota exceeded qaytarır.

O, shannon-1.6-*, shannon-2-* və shannon-coder-1-də cavabın uzunluğunu, host edilən açıq çəkili modellərdə isə cavab mətninin uzunluğunu məhdudlaşdırır.

Bu endpoint-də shannon-coder-1 hər digər model kimi balansınızdan tokenlərlə hesablanır.

Sorğu gövdəsi 32 MiB-a qədər ola bilər. Limitlər və balans

Xətalar

Xətalar OpenAI xəta gövdəsindən istifadə edir: type və message olan error obyekti; bəziləri həmçinin null dəyərli code və param daşıyır. Cədvəl bu endpoint-in ən çox qaytardıqlarını siyahıya alır. Nəyi yenidən cəhd etməli olduğunuzu göstərən tam siyahı ayrıca səhifədədir. Xəta idarəetməsi

Status Tip Mesaj Nə vaxt
401 authentication_error Missing authentication
Invalid API key
API açarı göndərilməyib və ya açar naməlumdur və ya ləğv edilib.
400 invalid_request_error unknown model: <id> model yoxdur və ya dərc edilmiş id deyil.
400 invalid_request_error No user message provided. Shannon pillələri: input user mətni saxlamır.
400 invalid_request_error <id> does not accept image input Təsvir girişi olmayan host edilən açıq çəkili modelə təsvir göndərildi.
400 invalid_request_error <id> does not accept response_format text.format strukturlu çıxışı olmayan host edilən açıq çəkili modelə göndərildi.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning.effort siyahıdan kənar dəyər saxlayır.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Gövdə etibarlı JSON-dur, lakin sahənin tipi yanlışdır.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_output_tokens balansınızın qalan hissəsindən böyükdür.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: hesabınızda bir dəqiqədə 120-dən çox sorğu.
500 api_error The model backend failed to answer. Please retry. Model cavab yaratmadı. Sorğunu yenidən göndərin.
502 api_error The model backend failed to answer. Please retry. Eyni şey, host edilən açıq çəkili modellərdə.
504 api_error upstream timed out Host edilən açıq çəkili model axınsız cavabın vaxt limitindən uzun çəkdi. Sorğunu stream-i true təyin edərək göndərin.