Responses API
নতুনPOST /v1/responses নির্দেশনা ও ইনপুট আইটেমের তালিকা নেয় এবং OpenAI Responses ফরম্যাটে আউটপুট আইটেম দিয়ে তৈরি একটি রেসপন্স অবজেক্ট ফেরত দেয়। এটি OpenAI SDK-র responses API-র সাথে এবং Codex CLI-র মতো তার ওপর গড়া টুলের সাথে ব্যবহার করুন। এন্ডপয়েন্ট কোনো অবস্থা ধরে রাখে না: প্রতিটি রিকোয়েস্টে পুরো কথোপকথন পাঠান।
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) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.responses.create({
model: "shannon-3",
input: "Say hello in one sentence.",
});
console.log(response.output_text); curl https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"input": "Say hello in one sentence."
}' উত্তর একটি রেসপন্স অবজেক্ট। এর output-এ থাকে রিজনিং, যদি মডেল রিজনিং করে থাকে, এবং মেসেজ:
{
"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 লাগে। Applied by কলাম বলে কোন মডেলে একটি ফিল্ড উত্তর বদলায়। হোস্টেড ওপেন-ওয়েট মডেল হলো মডেল তালিকার বারোটি 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 | মডেলের জন্য নির্দেশনা, এই ফরম্যাটের সিস্টেম প্রম্পট। | হোস্টেড ওপেন-ওয়েট মডেল, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
stream | boolean | false | true হলে উত্তর server-sent ইভেন্ট হিসেবে পাঠানো হয়। নিচে স্ট্রিমিং দেখুন। | সব মডেল |
max_output_tokens | integer | 4096 | tokens-এ উত্তরের ঊর্ধ্বসীমা। 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 | নিউক্লিয়াস স্যাম্পলিং। মান 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 একটি string বা অংশের অ্যারে।
| আইটেম | বিবরণ | যারা প্রয়োগ করে |
|---|---|---|
{"role": "user", "content": …} | আপনি যা জিজ্ঞাসা করেন। content একটি string, অথবা input_text ও input_image অংশ। | সব মডেল |
{"role": "assistant", "content": …} | মডেলের আগের একটি উত্তর। content একটি string, অথবা output_text অংশ। | সব মডেল |
{"role": "system", "content": …}{"role": "developer", "content": …} | কথোপকথনের ভেতরের নির্দেশনা। | হোস্টেড ওপেন-ওয়েট মডেল |
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} | মডেল আগের উত্তরে যে টুল কল করেছিল। 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": "…"} | অ্যাসিস্ট্যান্ট মেসেজের টেক্সট। | সব মডেল |
{"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 আইটেম থেকে পড়া হয়। আকার ও সীমার নিজস্ব পেজ আছে। ইমেজ ও ফাইল
নির্দেশনা ও বিকল্পসহ একটি রিকোয়েস্ট
এই রিকোয়েস্ট নির্দেশনা, ইনপুট আইটেম হিসেবে একটি কথোপকথন, একটি আউটপুট সীমা, একটি টেম্পারেচার এবং একটি রিজনিং এফোর্ট পাঠায়। এটি একটি হোস্টেড ওপেন-ওয়েট মডেল ব্যবহার করে, যা সবগুলোই প্রয়োগ করে।
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) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await 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 (const item of response.output) {
if (item.type === "reasoning") console.log("reasoning:", item.summary[0].text);
if (item.type === "message") console.log("answer:", item.content[0].text);
}
console.log(response.usage); curl https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"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"}
}' হোস্টেড ওপেন-ওয়েট মডেলের উত্তরে id, object, model, created_at, status, output ও usage থাকে। এর usage ক্যাশ থেকে পড়া tokens এবং রিজনিংয়ে খরচ হওয়া tokens যোগ করে:
{
"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: প্রম্পট ক্যাশ থেকে পড়া ইনপুট tokens। | হোস্টেড ওপেন-ওয়েট মডেল |
usage.output_tokens_details | object | reasoning_tokens: রিজনিংয়ে খরচ হওয়া আউটপুট tokens। | হোস্টেড ওপেন-ওয়েট মডেল |
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": "…"}]} | মডেলের রিজনিং, একটি summary_text অংশ হিসেবে। মডেল রিজনিং করলেই কেবল থাকে। |
{"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 string। ফলাফল একই call_id দিয়ে ফেরত পাঠান। |
OpenAI SDK মেসেজের টেক্সট আপনার জন্য response.output_text-এ জুড়ে দেয়।
স্ট্রিমিং
server-sent ইভেন্টের জন্য 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") import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const stream = await client.responses.create({
model: "shannon-3",
input: "Explain server-sent events in three sentences.",
stream: true,
});
for await (const event of stream) {
if (event.type === "response.reasoning_summary_text.delta") {
// a piece of reasoning: event.delta
} else if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
} else if (event.type === "response.output_item.done" && event.item.type === "function_call") {
console.log("\ntool call:", event.item.name, event.item.arguments);
} else if (event.type === "response.completed") {
console.log("\n", event.response.usage);
} else if (event.type === "response.failed" || event.type === "error") {
throw new Error("the stream failed, send the request again");
}
} curl -N https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"input": "Explain server-sent events in three sentences.",
"stream": true
}' ইভেন্ট এই ক্রমে আসে। রিজনিং, মেসেজ ও টুল কলের গ্রুপ শুধু তখনই আসে যখন উত্তরে সেগুলো থাকে।
| ইভেন্ট | পে-লোড | কখন |
|---|---|---|
response.created | response | সবসময় প্রথমে। response.status হলো in_progress এবং response.output খালি। |
response.in_progress | response | সবসময় দ্বিতীয়, একই অবজেক্ট সহ। |
response.output_item.added | output_index, item | রিজনিং শুরু হয়: খালি summary সহ একটি reasoning আইটেম। |
response.reasoning_summary_text.delta | output_index, summary_index, delta | রিজনিংয়ের একটি টুকরো। |
response.reasoning_summary_text.done | output_index, summary_index, text | রিজনিং সম্পূর্ণ: তার পুরো 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 সহ পুরো রেসপন্স অবজেক্ট। |
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-এ একটি টুল সংজ্ঞা:
[
{
"type": "function",
"name": "get_weather",
"description": "Current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] যে উত্তর এটি কল করে তার output:
[
{
"id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"type": "function_call",
"name": "get_weather",
"call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"arguments": "{\"city\":\"Paris\"}"
}
] ফাংশনটি চালান, তারপর কল ও তার ফলাফল 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 type-এর টুল পড়া হয়। shannon-1.6-*, shannon-2-* ও shannon-coder-1-এ parameters schema সাধারণ JSON Schema কিওয়ার্ডে ছোট করা হয়: oneOf পড়া হয় anyOf হিসেবে, এবং $ref, additionalProperties, const, default ও title-এর মতো কিওয়ার্ড মডেলকে দেওয়া হয় না।
tool_choice-এর মান required এবং নাম দেওয়া ফাংশন হোস্টেড ওপেন-ওয়েট মডেল প্রয়োগ করে।
টুল লুপ নিজস্ব পেজে পুরোপুরি বর্ণিত। ফাংশন কলিং
স্ট্রাকচার্ড আউটপুট
এই ফরম্যাট স্ট্রাকচার্ড আউটপুট লেখে text.format হিসেবে। schema সরাসরি format-এ থাকে, name ও strict-এর পাশে, Chat Completions-এর মতো json_schema সদস্যের নিচে নয়।
{"type": "json_object"}যেকোনো JSON অবজেক্ট চায়।{"type": "json_schema", "name", "schema", "strict"}আপনার schema মেনে চলা JSON চায়। বাদ দিলেstrictহলোtrue।
{
"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 ফেরত দেয়।
{"city": "Lisbon", "date": "2027-05-12"} কোন মডেল কোন রূপ নেয় তা নিজস্ব পেজে তালিকাভুক্ত। স্ট্রাকচার্ড আউটপুট
রিজনিং
যে মডেল রিজনিং করে সে মেসেজের আগে reasoning type-এর একটি আউটপুট আইটেম হিসেবে তার রিজনিং ফেরত দেয়। স্ট্রিমে এটি response.reasoning_summary_text.delta ইভেন্ট হিসেবে আসে।
হোস্টেড ওপেন-ওয়েট মডেল reasoning.effort প্রয়োগ করে: off, low, medium বা high, কিছু না পাঠালে high। off কোনো রিজনিং আইটেম ফেরত দেয় না। এটি অবজেক্ট হিসেবে পাঠান; এই এন্ডপয়েন্টে সরাসরি string পড়া হয় না।
এফোর্টগুলো তাদের নিজস্ব পেজে বর্ণিত। রিজনিং effort
আউটপুট সীমা
max_output_tokens না পাঠালে 4,096। রিকোয়েস্ট শুরুর সময় আপনার ব্যালেন্স থেকে এই পরিমাণ tokens আলাদা করে রাখা হয়; উত্তর সম্পূর্ণ হলে ওই পরিমাণের জায়গায় রিকোয়েস্টের প্রকৃত ব্যবহার বসে। আপনার অবশিষ্ট ব্যালেন্সে ধরে না এমন মানে 429 Quota exceeded ফেরত আসে।
এটি shannon-1.6-*, shannon-2-* ও shannon-coder-1-এ উত্তরের দৈর্ঘ্য এবং হোস্টেড ওপেন-ওয়েট মডেলে উত্তরের টেক্সটের দৈর্ঘ্য সীমিত করে।
এই এন্ডপয়েন্টে shannon-coder-1 অন্য প্রতিটি মডেলের মতো আপনার ব্যালেন্স থেকে tokens-এ চার্জ হয়।
রিকোয়েস্ট বডি 32 MiB পর্যন্ত হতে পারে। সীমা ও ব্যালেন্স
এরর
এরর OpenAI এরর বডি ব্যবহার করে: type ও message সহ একটি error অবজেক্ট; কিছুতে null মানের code ও param-ও থাকে। টেবিলে এই এন্ডপয়েন্ট সবচেয়ে বেশি যা ফেরত দেয় তা আছে। কী আবার চেষ্টা করবেন তাসহ পূর্ণ তালিকা আলাদা পেজে আছে। এরর হ্যান্ডলিং
| স্ট্যাটাস | Type | বার্তা | কখন |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | কোনো API key পাঠানো হয়নি, অথবা key অজানা বা বাতিল। |
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 কিন্তু কোনো ফিল্ডের type ভুল। |
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. | ফ্লাড প্রোটেকশন: আপনার অ্যাকাউন্টে এক মিনিটে 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 করে পাঠান। |