Pāriet uz saturu
Responses API

Responses API

Jauns

POST /v1/responses pieņem norādījumus un ievades elementu sarakstu un atgriež atbildes objektu, kas veidots no izvades elementiem, OpenAI Responses formātā. Izmantojiet to ar OpenAI SDK responses API un uz tā veidotiem rīkiem, piemēram, Codex CLI. Galapunkts nesaglabā stāvokli: sūtiet visu sarunu ar katru pieprasījumu.

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

Mazākais pieprasījums ir modeļa id un teksts. Atbilde netiek straumēta, ja to nepieprasāt.

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)

Atbilde ir atbildes objekts. Tā output satur spriešanu, ja modelis spriedis, un ziņojumu:

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

Pieprasījuma lauki

model un input ir tas, kas pieprasījumam vajadzīgs. Kolonna Piemēro nosauc modeļus, kuriem lauks maina atbildi. Hostētie atvērto svaru modeļi ir divpadsmit modeļu saraksta id; Shannon 3 saime ir shannon-3, shannon-3-pro, shannon-3.1 un shannon-3.1-pro. Modeļi un cenas

Lauks Tips Noklusējums Apraksts Piemēro
model string Obligāts. Id no modeļu saraksta. Salīdzināšana nešķiro lielos un mazos burtus. Trūkstošs vai nepublicēts id atgriež 400 unknown model. Visi modeļi
input string | array Virkne, ko lasa kā vienu lietotāja ziņojumu, vai ievades elementu masīvs. Skatiet zemāk Ievades elementi. Visi modeļi
instructions string Norādījumi modelim, šī formāta sistēmas uzvedne. Hostētie atvērto svaru modeļi, shannon-1.6-*, shannon-2-*, shannon-coder-1
stream boolean false true sūta atbildi kā servera sūtītus notikumus. Skatiet zemāk Straumēšana. Visi modeļi
max_output_tokens integer 4096 Atbildes augšējā robeža tokenos. Vērtība ārpus 1 līdz 65,536 tiek pārvietota šajā diapazonā. Tā ir arī summa, ko pieprasījuma izpildes laikā atliek malā no jūsu atlikuma. Skatiet zemāk Izvades ierobežojums. Hostētie atvērto svaru modeļi, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature number Paraugu ņemšanas temperatūra. Hostētajiem atvērto svaru modeļiem vērtības tiek turētas starp 0 un 2. Hostētie atvērto svaru modeļi; shannon-1.6-*, shannon-2-* un shannon-coder-1 nestraumētās atbildēs
top_p number Nucleus paraugu ņemšana. Vērtības tiek turētas starp 0 un 1. Hostētie atvērto svaru modeļi
tools array Funkcijas, ko modelis drīkst izsaukt, šī formāta plakanajā formā: {"type": "function", "name", "description", "parameters"}. Skatiet zemāk Rīki. Visi modeļi
tool_choice string | object auto "auto" ļauj modelim izlemt. "required" liek tam izsaukt rīku. {"type": "function", "name": "…"} liek tam izsaukt šo rīku. Hostētie atvērto svaru modeļi
reasoning object {"effort": "…"} ar off, low, medium vai high. Jebkura cita vērtība atgriež 400. Hostētie atvērto svaru modeļi
text object {"format": {…}} pieprasa JSON atbildi. Skatiet zemāk Strukturēta izvade. Visi Shannon līmeņi; hostētie atvērto svaru modeļi, kā norādīts katram id

previous_response_id, store, metadata, parallel_tool_calls, truncation, include, user un prompt_cache_key tiek pieņemti, lai esošais klienta kods darbotos bez izmaiņām. Tie atbildi nemaina. Tā kā neviena saruna netiek glabāta, nākamais pieprasījums nes iepriekšējos gājienus laukā input.

Ievades elementi

Ievades elements ir vai nu ziņojums ar role un content, vai tipizēts elements, kas nes rīka izsaukumu vai tā rezultātu. content ir virkne vai daļu masīvs.

Elements Apraksts Piemēro
{"role": "user", "content": …} Ko jūs jautājat. content ir virkne vai daļas input_text un input_image. Visi modeļi
{"role": "assistant", "content": …} Iepriekšēja modeļa atbilde. content ir virkne vai output_text daļas. Visi modeļi
{"role": "system", "content": …}
{"role": "developer", "content": …}
Norādījumi sarunas iekšienē. Hostētie atvērto svaru modeļi
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} Rīka izsaukums, ko modelis veica iepriekšējā atbildē. arguments ir JSON virkne. Visi modeļi
{"type": "function_call_output", "call_id": "…", "output": "…"} Šī izsaukuma rezultāts. call_id ir izsaukuma id un output rezultāts kā virkne. Visi modeļi

Ievietojiet norādījumus laukā instructions. Ar Shannon 3 saimes id norādījumus, kam jāpastāv, ievietojiet ziņojumā user.

Atbildes output elementus var sūtīt atpakaļ laukā input tādus, kādi tie ir: elementi message un function_call tiek lasīti, elementi reasoning tiek izlaisti.

Satura daļas

Daļa Apraksts Pieejams
{"type": "input_text", "text": "…"} Lietotāja ziņojuma teksts. Visi modeļi
{"type": "output_text", "text": "…"} Asistenta ziņojuma teksts. Visi modeļi
{"type": "input_image", "image_url": "…"} Attēls kā data: URL ar base64 saturu vai kā http(s) URL. Shannon 3 saime, shannon-1.6-lite, shannon-1.6-pro un hostētie atvērto svaru modeļi, kuriem norādīta attēlu ievade
{"type": "input_file", "file_data": "data:application/pdf;base64,…"} Dokuments (PDF, Word, PowerPoint vai Excel): file_data satur data: URL vai file_url http(s) URL. Shannon 3 saime

Shannon līmeņos attēli un faili tiek lasīti no pēdējā user elementa laukā input. Izmēriem un ierobežojumiem ir sava lapa. Attēli un faili

Pieprasījums ar norādījumiem un opcijām

Šis pieprasījums sūta norādījumus, sarunu kā ievades elementus, izvades ierobežojumu, temperatūru un spriešanas piepūli. Tas izmanto hostētu atvērto svaru modeli, kas piemēro visu minēto.

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ēta atvērto svaru modeļa atbildē ir id, object, model, created_at, status, output un usage. Tā usage papildus rāda no keša nolasītos tokenus un spriešanai iztērētos tokenus:

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

Atbildes objekts

id, object, status, output un usage ir katrā atbildē. Veidojiet savu kodu uz tiem.

Lauks Tips Apraksts Sūta
id string resp_, kam seko 32 heksadecimālas rakstzīmes. Visi modeļi
object string Vienmēr response. Visi modeļi
status string completed. Straumē tas vispirms ir in_progress, bet notikumā response.failed — failed. Visi modeļi
output array Izvades elementi tādā secībā, kādā modelis tos radīja: reasoning, message, function_call. Visi modeļi
usage object input_tokens, output_tokens un total_tokens. Visi modeļi
usage.input_tokens_details object cached_tokens: ievades tokeni, kas nolasīti no uzvednes keša. Hostētie atvērto svaru modeļi
usage.output_tokens_details object reasoning_tokens: izvades tokeni, kas iztērēti spriešanai. Hostētie atvērto svaru modeļi
model string Modeļa, kas atbildēja, kanoniskais id. Shannon 3 saime, hostētie atvērto svaru modeļi
created_at integer Atbildes laiks Unix sekundēs. Shannon 3 saime, hostētie atvērto svaru modeļi
instructions, tools, temperature, … instructions, tools un temperature atkārto pieprasījumu. error un incomplete_details ir null, metadata ir {}, parallel_tool_calls ir true, tool_choice ir auto un top_p ir null. Shannon 3 saime

Izvades elementi

Elements Apraksts
{"id": "rs_…", "type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} Modeļa spriešana kā viena summary_text daļa. Ir tikai tad, ja modelis spriedis.
{"id": "msg_…", "type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "…"}]} Atbilde: viena output_text daļa ar tekstu.
{"id": "fc_…", "type": "function_call", "call_id": "call_…", "name": "…", "arguments": "…"} Rīka izsaukums. arguments ir JSON virkne. Rezultātu sūtiet atpakaļ ar to pašu call_id.

OpenAI SDK ziņojuma tekstu jūsu vietā savieno laukā response.output_text.

Straumēšana

Iestatiet stream uz true, lai saņemtu servera sūtītus notikumus. Katram kadram ir rinda event: ar notikuma nosaukumu un rinda data: ar JSON objektu; objekts atkārto nosaukumu laukā type. Saskaņojiet delta ar to elementu pēc output_index.

Ar OpenAI SDK lasiet notikumus pēc to 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")

Notikumi ierodas šādā secībā. Spriešanas, ziņojuma un rīku izsaukumu grupas parādās tikai tad, ja atbildē tās ir.

Notikums Saturs Kad
response.created response Vienmēr pirmais. response.status ir in_progress un response.output ir tukšs.
response.in_progress response Vienmēr otrais, ar to pašu objektu.
response.output_item.added output_index, item Sākas spriešana: elements reasoning ar tukšu summary.
response.reasoning_summary_text.delta output_index, summary_index, delta Spriešanas gabals.
response.reasoning_summary_text.done output_index, summary_index, text Spriešana ir pabeigta: tās viss text.
response.output_item.done output_index, item Pabeigtais elements reasoning.
response.output_item.added output_index, item Sākas atbilde: elements message ar statusu in_progress un bez satura.
response.content_part.added output_index, content_index, part Atveras tukša output_text daļa.
response.output_text.delta output_index, content_index, delta Atbildes gabals.
response.output_text.done output_index, content_index, text Atbilde ir pabeigta: tās viss text.
response.content_part.done output_index, content_index, part Pabeigtā output_text daļa.
response.output_item.done output_index, item Pabeigtais elements message ar statusu completed.
response.output_item.added output_index, item Sākas rīka izsaukums: elements function_call ar call_id, name un tukšu arguments.
response.function_call_arguments.delta output_index, delta Izsaukuma argumenti, pilni vienā delta.
response.function_call_arguments.done output_index, arguments Tie paši argumenti kā arguments.
response.output_item.done output_index, item Pabeigtais elements function_call.
response.completed response Veiksmes gadījumā vienmēr pēdējais: viss atbildes objekts ar output un 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}, …}}

Straume, kas neizdodas

Shannon līmeņos neizdevusies atbilde beidzas ar response.failed response.completed vietā. Tās response.status ir failed, un response.error satur code, rate_limit_exceeded vai server_error, un message.

Hostētajiem atvērto svaru modeļiem kļūme ir notikums error ar code api_error un message. Tam tāpat seko response.completed.

Uzskatiet straumi par neizdevušos, ja tajā ir response.failed vai notikums error, un nosūtiet pieprasījumu vēlreiz.

Rīki

Rīks ir funkcija, ko palaiž jūsu kods. Aprakstiet to laukā tools; kad modelis to vēlas, atbildē ir elements function_call ziņojuma vietā vai līdzās tam.

Rīka definīcija laukā tools:

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

Atbildes output, kas to izsauc:

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

Palaidiet funkciju, tad nosūtiet pieprasījumu vēlreiz, pievienojot izsaukumu un tā rezultātu laukam 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\"}"
  }
]

Tiek lasīti tikai rīki ar tipu function. Modeļiem shannon-1.6-*, shannon-2-* un shannon-coder-1 shēma parameters tiek sašaurināta līdz parastajiem JSON Schema atslēgvārdiem: oneOf tiek lasīts kā anyOf, un atslēgvārdi, piemēram, $ref, additionalProperties, const, default un title, modelim netiek nodoti.

tool_choice vērtības required un nosaukta funkcija piemēro hostētie atvērto svaru modeļi.

Rīku cikls pilnībā aprakstīts savā lapā. Funkciju izsaukšana

Strukturēta izvade

Šis formāts strukturētu izvadi raksta kā text.format. Shēma atrodas tieši laukā format, blakus name un strict, nevis zem locekļa json_schema, kā galapunktā Chat Completions.

  • {"type": "json_object"} pieprasa jebkuru JSON objektu.
  • {"type": "json_schema", "name", "schema", "strict"} pieprasa JSON, kas seko jūsu shēmai. strict ir true, ja to izlaižat.
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 ierodas kā teksts ziņojuma daļā output_text; parsējiet to pats. Hostēts atvērto svaru modelis bez strukturētas izvades atgriež 400.

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

Kurš modelis pieņem kuru formu, ir uzskaitīts savā lapā. Strukturēti izvadi

Spriešana

Modelis, kas spriež, atgriež savu spriešanu kā izvades elementu ar tipu reasoning pirms ziņojuma. Straumē tā ierodas kā notikumi response.reasoning_summary_text.delta.

Hostētie atvērto svaru modeļi piemēro reasoning.effort: off, low, medium vai high, ar high, ja nesūtāt neko. off neatgriež spriešanas elementu. Sūtiet to kā objektu; vienkārša virkne šajā galapunktā netiek lasīta.

Piepūles līmeņi ir aprakstīti savā lapā. Spriešanas apjoms

Izvades ierobežojums

max_output_tokens ir 4,096, ja to nesūtāt. Tas ir tokenu skaits, ko atliek malā no jūsu atlikuma, kad pieprasījums sākas; kad atbilde ir pilnīga, šī summa tiek aizstāta ar to, ko pieprasījums izmantoja. Vērtība, kas neietilpst jūsu atlikušajā atlikumā, atgriež 429 Quota exceeded.

Tas ierobežo atbildes garumu modeļiem shannon-1.6-*, shannon-2-* un shannon-coder-1 un atbildes teksta garumu hostētajiem atvērto svaru modeļiem.

Šajā galapunktā shannon-coder-1 tiek rēķināts tokenos no jūsu atlikuma, tāpat kā katrs cits modelis.

Pieprasījuma pamatteksts var būt līdz 32 MiB. Ierobežojumi un atlikums

Kļūdas

Kļūdas izmanto OpenAI kļūdas pamattekstu: objekts error ar type un message; dažas nes arī code un param ar vērtību null. Tabula uzskaita to, ko šis galapunkts atgriež visbiežāk. Pilns saraksts, norādot, ko atkārtot, ir savā lapā. Kļūdu apstrāde

Statuss Tips Ziņojums Kad
401 authentication_error Missing authentication
Invalid API key
API atslēga netika nosūtīta, vai atslēga nav zināma vai ir atsaukta.
400 invalid_request_error unknown model: <id> model trūkst vai tas nav publicēts id.
400 invalid_request_error No user message provided. Shannon līmeņi: input nesatur lietotāja tekstu.
400 invalid_request_error <id> does not accept image input Attēls tika nosūtīts hostētajam atvērto svaru modelim bez attēlu ievades.
400 invalid_request_error <id> does not accept response_format text.format tika nosūtīts hostētajam atvērto svaru modelim bez strukturētas izvades.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning.effort satur vērtību ārpus saraksta.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Pamatteksts ir derīgs JSON, bet laukam ir nepareizs tips.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_output_tokens ir lielāks par jūsu atlikuma atlikušo daļu.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: vairāk nekā 120 pieprasījumu minūtē jūsu kontā.
500 api_error The model backend failed to answer. Please retry. Modelis neradīja atbildi. Nosūtiet pieprasījumu vēlreiz.
502 api_error The model backend failed to answer. Please retry. Tas pats hostētajiem atvērto svaru modeļiem.
504 api_error upstream timed out Hostētais atvērto svaru modelis atbildēja ilgāk par laika ierobežojumu nestraumētai atbildei. Sūtiet ar stream, iestatītu uz true.