কনটেন্টে যান
Anthropic

Anthropic

POST /v1/messages Anthropic Messages ফরম্যাটে রিকোয়েস্ট নেয় এবং একই ফরম্যাটে উত্তর দেয়, স্ট্রিম করে বা না করে। এটি Anthropic SDK এবং তার ওপর তৈরি টুলের সাথে, যেমন Claude Code, ব্যবহার করুন: বেস URL সেট করুন, আপনার Shannon API key ব্যবহার করুন এবং একটি Shannon মডেল id দিন।

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

Anthropic SDK-কে Shannon বেস URL-এ পয়েন্ট করুন। SDK /v1/messages যোগ করে এবং আপনার key x-api-key হেডারে পাঠায়।

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="shannon-3",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

উত্তর হলো একটি মেসেজ, যার content ব্লকের একটি তালিকা। ব্লকগুলো তাদের type দিয়ে খুঁজুন: মডেল রিজনিং করলে প্রথম ব্লক thinking হয় এবং টেক্সট তার পরে আসে।

200 JSON
{
  "id": "msg_5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "type": "message",
  "role": "assistant",
  "model": "shannon-3",
  "content": [
    {
      "type": "thinking",
      "thinking": "The user wants a greeting in one sentence. Keep it short and friendly."
    },
    {
      "type": "text",
      "text": "Hello, it is good to meet you."
    }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 1184,
    "output_tokens": 46
  }
}

হেডার

হেডার মান বিবরণ
x-api-key YOUR_API_KEY আপনার API key। এর বদলে Authorization: Bearer YOUR_API_KEY গ্রহণ করা হয়।
content-type application/json আবশ্যক।
anthropic-version 2023-06-01 গ্রহণ করা হয়, আবশ্যক নয়। Anthropic SDK 2023-06-01 পাঠায়; মান যা-ই হোক উত্তরের ফরম্যাট একই থাকে।
anthropic-beta গ্রহণ করা হয়, আবশ্যক নয়।
x-request-id ঐচ্ছিক। রিকোয়েস্টের জন্য আপনার নিজের id। এটি উত্তরে অপরিবর্তিত ফেরত আসে; এটি না দিলে উত্তরে 12টি হেক্সাডেসিমাল অক্ষরের একটি id থাকে।

রিকোয়েস্ট ফিল্ড

শুধু messages আবশ্যক। যারা প্রয়োগ করে কলামে সেই মডেলগুলোর নাম আছে যেগুলোতে একটি ফিল্ড উত্তর বদলায়। হোস্টেড ওপেন-ওয়েট মডেল হলো মডেল তালিকার বারোটি id; Shannon 3 ফ্যামিলি হলো shannon-3, shannon-3-pro, shannon-3.1 ও shannon-3.1-pro। মডেল ও মূল্য

ফিল্ড টাইপ ডিফল্ট বিবরণ যারা প্রয়োগ করে
model string shannon-1.6-lite মডেল তালিকা থেকে একটি Shannon মডেল id। প্রতিটি রিকোয়েস্টের সাথে পাঠান। মিলানোর সময় বড়-ছোট হাতের অক্ষর গুরুত্বপূর্ণ নয়। অন্য কোনো নামে 400 unknown model রিটার্ন হয়, তাই যে টুল নিজের মডেল নাম পাঠায় তাকে Shannon id-তে সেট করতে হবে। সব মডেল
messages array আবশ্যক। কথোপকথন, সবচেয়ে পুরনো মেসেজ আগে, user ও assistant রোল সহ। নিচে মেসেজ ও কনটেন্ট ব্লক দেখুন। সব মডেল
system string | array মডেলের জন্য নির্দেশনা: একটি স্ট্রিং, অথবা টেক্সট ব্লকের একটি অ্যারে। নিচে সিস্টেম প্রম্পট দেখুন। হোস্টেড ওপেন-ওয়েট মডেল, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 উত্তরের ঊর্ধ্বসীমা, tokens-এ। এই এন্ডপয়েন্টে ঐচ্ছিক; Anthropic SDK সবসময় এটি পাঠায়। 1 থেকে 65,536-এর বাইরের মান ওই সীমার মধ্যে নিয়ে আসা হয়। রিকোয়েস্ট চলার সময় আপনার ব্যালেন্স থেকে এই পরিমাণ আলাদা করে রাখা হয়। হোস্টেড ওপেন-ওয়েট মডেল, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true উত্তরটি server-sent events হিসেবে পাঠায়। নিচে স্ট্রিমিং দেখুন। সব মডেল
temperature number স্যাম্পলিং টেম্পারেচার। হোস্টেড ওপেন-ওয়েট মডেলগুলোতে মান 0 থেকে 2-এর মধ্যে রাখা হয়। হোস্টেড ওপেন-ওয়েট মডেল, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number নিউক্লিয়াস স্যাম্পলিং। হোস্টেড ওপেন-ওয়েট মডেল
stop_sequences array সর্বোচ্চ 4টি স্ট্রিং। প্রথমটি যেখানে আসে তার আগেই উত্তর শেষ হয়। stop_reason থাকে end_turn। হোস্টেড ওপেন-ওয়েট মডেল
tools array মডেল যেসব টুল কল করতে পারে, প্রতিটি {"name", "description", "input_schema"} হিসেবে। নিচে টুলস দেখুন। সব মডেল
tool_choice object {"type": "auto"} মডেলকে সিদ্ধান্ত নিতে দেয়, {"type": "any"} তাকে একটি টুল কল করাতে বাধ্য করে, {"type": "tool", "name": "…"} তাকে সেই টুলটিই কল করাতে বাধ্য করে। হোস্টেড ওপেন-ওয়েট মডেল
thinking object উত্তর দেওয়ার আগে মডেল কতটা রিজনিং করে। নিচে থিংকিং দেখুন। হোস্টেড ওপেন-ওয়েট মডেল
web_search boolean false ফরম্যাটে Shannon-এর একটি সংযোজন: true মডেলকে উত্তর দেওয়ার আগে ওয়েবে সার্চ করতে দেয়। shannon-1.6-*, shannon-2-*, Shannon 3 ফ্যামিলি

max_tokens ছাড়া মান 4,096, আর shannon-coder-1-এ 65,536।

metadata, top_k, service_tier এবং ব্লকের ওপর cache_control মার্কার গ্রহণ করা হয়, যাতে বিদ্যমান ক্লায়েন্ট কোড অপরিবর্তিত চলে। এগুলো উত্তর বদলায় না; হোস্টেড ওপেন-ওয়েট মডেলগুলোতে প্রম্পট ক্যাশিং স্বয়ংক্রিয়।

schema অনুযায়ী JSON উত্তর চাইতে Chat Completions-এ response_format এবং Responses-এ text.format ব্যবহার করা হয়। স্ট্রাকচার্ড আউটপুট

সিস্টেম প্রম্পট ও থিংকিং সহ একটি রিকোয়েস্ট

এই রিকোয়েস্টে একটি সিস্টেম প্রম্পট, একটি থিংকিং বাজেট, একটি টেম্পারেচার এবং একটি স্টপ সিকোয়েন্স পাঠানো হয়। এটি একটি হোস্টেড ওপেন-ওয়েট মডেল ব্যবহার করে, যা সবগুলো প্রয়োগ করে।

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    max_tokens=4096,
    system="You are a physics teacher. Answer in two sentences.",
    thinking={"type": "enabled", "budget_tokens": 2048},
    temperature=0.3,
    stop_sequences=["\n\n"],
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

for block in message.content:
    if block.type == "thinking":
        print("reasoning:", block.thinking)
    elif block.type == "text":
        print("answer:", block.text)
print(message.usage)

হোস্টেড ওপেন-ওয়েট মডেলগুলোতে usage প্রম্পট ক্যাশ থেকে পড়া tokens-কে অন্যান্য ইনপুট tokens থেকে আলাদা করে দেখায়।

200 JSON
{
  "usage": {
    "input_tokens": 31,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0,
    "output_tokens": 62
  }
}

সিস্টেম প্রম্পট

system হলো একটি স্ট্রিং, অথবা [{"type": "text", "text": "…"}] ফর্মে টেক্সট ব্লকের একটি অ্যারে। ব্লকগুলোর টেক্সট একটি লাইন ব্রেক দিয়ে জোড়া লাগানো হয়।

এটি হোস্টেড ওপেন-ওয়েট মডেল, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro ও shannon-coder-1 প্রয়োগ করে। Shannon 3 ফ্যামিলির কোনো id-র ক্ষেত্রে, যেসব নির্দেশনা অবশ্যই মানতে হবে তা ইউজার মেসেজে দিন।

মেসেজ ও কনটেন্ট ব্লক

একটি মেসেজে একটি role, user বা assistant, এবং একটি content থাকে। content হলো একটি স্ট্রিং, অথবা ব্লকের একটি অ্যারে।

ব্লক বিবরণ যেখানে পাওয়া যায়
{"type": "text", "text": "…"} টেক্সট। সব মডেল
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
একটি user মেসেজে একটি ইমেজ, base64 হিসেবে বা URL দিয়ে। Shannon 3 ফ্যামিলি, shannon-1.6-lite, shannon-1.6-pro, এবং যেসব হোস্টেড ওপেন-ওয়েট মডেল ইমেজ ইনপুট তালিকাভুক্ত করে
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} একটি user মেসেজে একটি ডকুমেন্ট (PDF, Word, PowerPoint বা Excel), base64 হিসেবে বা URL দিয়ে। Shannon 3 ফ্যামিলি
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} একটি assistant মেসেজে: মডেল আগের একটি উত্তরে যে টুল কল করেছিল। সব মডেল
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} একটি user মেসেজে: সেই কলের ফলাফল। content হলো একটি স্ট্রিং, অথবা টেক্সট ব্লকের একটি তালিকা। সব মডেল

আগের একটি উত্তরের content আপনি যেমন আছে তেমনই ফেরত পাঠাতে পারেন: text ও tool_use ব্লক পড়া হয়, thinking ব্লক বাদ দেওয়া হয়।

Shannon টিয়ারগুলোতে ইমেজ ও ডকুমেন্ট শেষ user মেসেজ থেকে পড়া হয়। সাইজ ও লিমিটের জন্য আলাদা পেজ আছে। ইমেজ ও ফাইল

থিংকিং

হোস্টেড ওপেন-ওয়েট মডেলগুলো thinking-কে একটি রিজনিং effort-এ রূপান্তর করে। ফিল্ডটি না দিলে effort হয় high।

রূপ budget_tokens প্রভাব
{"type": "disabled"} কোনো রিজনিং নেই। উত্তরে কোনো thinking ব্লক থাকে না।
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 নিম্ন effort।
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 মাঝারি effort।
{"type": "enabled", "budget_tokens": 16000} > 8,192 উচ্চ effort।

যে মডেল রিজনিং করে সে তার রিজনিং টেক্সটের আগে {"type": "thinking", "thinking": "…"} ব্লক হিসেবে ফেরত দেয়। যেসব Shannon টিয়ার রিজনিং করে তারাও এটি পাঠায়।

effort-গুলোর বর্ণনা তাদের নিজস্ব পেজে আছে। রিজনিং effort

টুলস

টুল হলো এমন একটি ফাংশন যা আপনার কোড চালায়। প্রতিটি টুলকে একটি name, একটি description এবং একটি input_schema দিয়ে বর্ণনা করুন। মডেল কোনো টুল চাইলে উত্তরে একটি tool_use ব্লক থাকে এবং stop_reason হয় tool_use।

tools-এ একটি টুল সংজ্ঞা:

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

যে উত্তর এটি কল করে তার content:

200 content
[
  {
    "type": "text",
    "text": ""
  },
  {
    "type": "tool_use",
    "id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "name": "get_weather",
    "input": {
      "city": "Paris"
    }
  }
]

টুলটি চালান, তারপর কল এবং messages-এ যোগ করা একটি tool_result ব্লক সহ রিকোয়েস্টটি আবার পাঠান:

messages
[
  {
    "role": "user",
    "content": "What is the weather in Paris?"
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
        "name": "get_weather",
        "input": {
          "city": "Paris"
        }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
        "content": "{\"temperature_c\": 18, \"sky\": \"cloudy\"}"
      }
    ]
  }
]

tool_choice

রূপ প্রভাব যারা প্রয়োগ করে
{"type": "auto"} মডেল সিদ্ধান্ত নেয় টুল কল করবে কি না। এটিই ডিফল্ট। সব মডেল
{"type": "any"} মডেলকে অবশ্যই টুলগুলোর একটি কল করতে হবে। হোস্টেড ওপেন-ওয়েট মডেল
{"type": "tool", "name": "…"} মডেলকে অবশ্যই নামকরা টুলটি কল করতে হবে। হোস্টেড ওপেন-ওয়েট মডেল

শুধু input_schema আছে এমন টুল পড়া হয়। এই এন্ডপয়েন্টে ওয়েব সার্চ কোনো টুল নয়: web_search ফিল্ড সেট করুন।

টুল লুপের পূর্ণ বর্ণনা তার নিজস্ব পেজে আছে। ফাংশন কলিং

উত্তর

ফিল্ড টাইপ বিবরণ যে পাঠায়
id string msg_, তারপর 32টি হেক্সাডেসিমাল অক্ষর। সব মডেল
type string সবসময় message। সব মডেল
role string সবসময় assistant। সব মডেল
model string যে মডেল উত্তর দিয়েছে তার canonical id। সব মডেল
content array উত্তরের ব্লকগুলো, এই ক্রমে: মডেল রিজনিং করলে thinking, text, তারপর প্রতিটি টুল কলের জন্য একটি tool_use। সব মডেল
stop_reason string উত্তর কেন শেষ হয়েছে। নিচের মানগুলো দেখুন। সব মডেল
usage object input_tokens ও output_tokens। সব মডেল
sources array শুধু সেই রিকোয়েস্টে যাতে web_search: true আছে এবং যার সার্চে কিছু পাওয়া গেছে: মডেলকে দেওয়া ফলাফলগুলো, প্রতিটিতে index, title ও url থাকে। উত্তরের [1] হলো index 1 সহ এন্ট্রি। স্ট্রিমে এটি message_delta ইভেন্টের সঙ্গে আসে। shannon-1.6-*, shannon-2-*, Shannon 3 ফ্যামিলি
usage.cache_read_input_tokens integer cache_read_input_tokens হলো প্রম্পটের যে অংশ ক্যাশ থেকে পড়া হয়েছে; input_tokens হলো বাকিটা। cache_creation_input_tokens সবসময় 0। হোস্টেড ওপেন-ওয়েট মডেল

উত্তরের ব্লক

ব্লক বিবরণ
{"type": "thinking", "thinking": "…"} মডেলের রিজনিং। এখানে কোনো signature সদস্য নেই।
{"type": "text", "text": "…"} উত্তরের টেক্সট। উত্তর যদি কোনো টুল কল হয়, তবে এটি খালি থাকতে পারে।
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} একটি টুল কল। input একটি JSON অবজেক্ট। একই id দিয়ে ফলাফল ফেরত পাঠান।

stop_reason

stop_reason বিবরণ যে পাঠায়
end_turn মডেল তার উত্তর শেষ করেছে, অথবা আপনার stop_sequences-এর একটি এসেছে। সব মডেল
tool_use উত্তরে এক বা একাধিক টুল কল আছে। সব মডেল
max_tokens আউটপুট লিমিটে এসে উত্তর কেটে গেছে। Shannon 3 ফ্যামিলি, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, স্ট্রিমে

স্ট্রিমিং

server-sent events পেতে stream true সেট করুন। প্রতিটি ফ্রেমে ইভেন্টের নাম সহ একটি event: লাইন এবং একটি JSON অবজেক্ট সহ একটি data: লাইন থাকে, যা type-এ নামটি পুনরাবৃত্তি করে। Anthropic SDK-র স্ট্রিম হেল্পারগুলো এই ইভেন্টগুলো আপনার জন্য পড়ে:

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

with client.messages.stream(
    model="shannon-3",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain server-sent events in three sentences."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    message = stream.get_final_message()

print()
print(message.stop_reason, message.usage)

ইভেন্টগুলো, যে ক্রমে আসে:

ইভেন্ট ডেটা কখন
message_start message সবসময় প্রথমে। message-এ id, রোল, মডেল, একটি খালি content এবং শূন্য থেকে শুরু হওয়া একটি usage থাকে।
content_block_start index, content_block একটি ব্লক খোলে। content_block হলো একটি খালি text বা thinking ব্লক, অথবা তার id ও name সহ একটি tool_use ব্লক।
content_block_delta index, delta {"type": "thinking_delta", "thinking"} একটি thinking ব্লকের জন্য রিজনিংয়ের একটি অংশ।
content_block_delta index, delta {"type": "text_delta", "text"} একটি text ব্লকের জন্য উত্তরের একটি অংশ।
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} একটি tool_use ব্লকের জন্য টুল কলের আর্গুমেন্ট, একটি ডেল্টায় সম্পূর্ণ।
content_block_stop index এই index-এর ব্লকটি সম্পূর্ণ হয়েছে।
message_delta delta {stop_reason, stop_sequence}, usage উত্তরের শেষ: delta.stop_reason, এবং রিকোয়েস্টের usage।
message_stop সবসময় শেষে।

ব্লকগুলো খোলার ক্রমে index দিয়ে নম্বর করা হয়, এবং একটি ব্লক সম্পূর্ণ হওয়ার পরই পরেরটি খোলে। প্রতিটি ব্লক তার টাইপ দিয়ে পড়ুন, নম্বর দিয়ে নয়: একটি স্ট্রিম প্রথমে একটি খালি text ব্লক খুলতে পারে, তারপর thinking ব্লক, এবং উত্তর পরের একটি text ব্লকে পাঠাতে পারে।

200 text/event-stream
event: message_start
data: {"type":"message_start","message":{"id":"msg_5f0c…","type":"message","role":"assistant","model":"shannon-3","content":[],"usage":{"input_tokens":0,"output_tokens":0}}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"thinking","thinking":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"thinking_delta","thinking":"Three sentences: what it is, how it is framed, why it is used."}}

event: ping
data: {"type": "ping"}

event: content_block_stop
data: {"type":"content_block_stop","index":1}

event: content_block_start
data: {"type":"content_block_start","index":2,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"Server-sent events let a server push text over one HTTP reply."}}

event: content_block_stop
data: {"type":"content_block_stop","index":2}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":1190,"output_tokens":84}}

event: message_stop
data: {"type":"message_stop"}

কিপ-অ্যালাইভ

যে পাঠায় বিবরণ
Shannon 3 ফ্যামিলি, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 একটি ping ইভেন্ট, ডেটা {"type": "ping"}, প্রতি 15 সেকেন্ডে।
হোস্টেড ওপেন-ওয়েট মডেল একটি কমেন্ট লাইন : keepalive, মডেল কাজ করার সময় প্রতি 15 সেকেন্ডে।

যে স্ট্রিম ব্যর্থ হয়

স্ট্রিম শুরু হওয়ার পরের ব্যর্থতা হলো একটি error ইভেন্ট, যার বডি এরর উত্তরের বডির মতোই: {"type": "error", "error": {"type", "message"}}। শেষের ইভেন্টগুলো, message_delta ও message_stop, তবুও পরে আসে। উত্তরটি ব্যর্থ হিসেবে ধরুন এবং রিকোয়েস্টটি আবার পাঠান।

এরর

এররে Anthropic এরর বডি ব্যবহৃত হয়: type হলো error, এবং error অবজেক্টে একটি type ও একটি message থাকে। টেবিলে এই এন্ডপয়েন্ট সবচেয়ে বেশি যা রিটার্ন করে তা দেওয়া আছে। কোনটি আবার চেষ্টা করতে হবে সহ সম্পূর্ণ তালিকার জন্য আলাদা পেজ আছে। এরর হ্যান্ডলিং

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
স্ট্যাটাস টাইপ মেসেজ কখন
401 authentication_error Missing authentication
Invalid API key
কোনো API key পাঠানো হয়নি, অথবা key অজানা বা বাতিল করা।
400 invalid_request_error unknown model: <id> model কোনো Shannon মডেল id নয়।
400 invalid_request_error No user message provided Shannon টিয়ার: রিকোয়েস্টে কোনো ইউজার টেক্সট নেই এবং কোনো tools নেই।
400 invalid_request_error <id> does not accept image input ইমেজ ইনপুট নেই এমন একটি হোস্টেড ওপেন-ওয়েট মডেলে ইমেজ পাঠানো হয়েছে।
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages নেই, অথবা কোনো ফিল্ডের JSON টাইপ ভুল।
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens আপনার ব্যালেন্সের বাকি অংশের চেয়ে বড়।
429 rate_limit_error Too many requests. Retry in <n>s. ফ্লাড প্রোটেকশন: আপনার অ্যাকাউন্টে এক মিনিটে 120-এর বেশি রিকোয়েস্ট।
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: বর্তমান 4-ঘণ্টার উইন্ডোর জন্য আপনার প্ল্যানের Shannon Coder কল ব্যবহার হয়ে গেছে।
500 server_error The model backend failed to answer. Please retry. মডেল কোনো উত্তর তৈরি করেনি। রিকোয়েস্টটি আবার পাঠান।
502 api_error The model backend failed to answer. Please retry. মডেল কোনো উত্তর তৈরি করেনি। রিকোয়েস্টটি আবার পাঠান।

Tokens গণনা

POST /v1/messages/count_tokens মেসেজ রিকোয়েস্টের মতো একই বডি (model, system, messages, tools) নেয় এবং {"input_tokens": n} রিটার্ন করে: রিকোয়েস্টটির জন্য যত ইনপুট tokens চার্জ করা হবে তার সংখ্যা। এটি হোস্টেড ওপেন-ওয়েট মডেলগুলোর জন্য গণনা করে, এটি বিনামূল্যে এবং ফ্লাড প্রোটেকশনে গণ্য হয় না।

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

count = client.messages.count_tokens(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    system="You are a physics teacher. Answer in two sentences.",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(count.input_tokens)

গণনার জন্য আলাদা পেজ আছে, যেখানে প্লেইন-টেক্সট এন্ডপয়েন্ট ও লিমিট রয়েছে। Token গণনা