বিষয়বস্তুলৈ যাওক
নিম্বটলৈ ঘূৰি যাওক

জ্ঞানৰ ভিত্তি ডেভেলপাৰ্ছবৃন্দ

চ্যাট, সঁহাৰি আৰু বাৰ্তা

মডেল এটাক কিবা এটা সুধিবলৈ তিনিটা উপায় আছে, তিনিটা ফৰ্মেটত গ্ৰাহকে ইতিমধ্যে কথা কয়, সকলো একে মডেলত চলি আছে আৰু একে ধৰণে বিল কৰে।

চ্যাট সম্পূৰ্ণ কৰক

অ'পেনএআই চেট ফৰ্মেট, আৰু প্ৰায় প্ৰতিটো সঁজুলিয়ে সমৰ্থন কৰে। এতিয়ালৈকে কথোপকথন প্ৰেৰণ কৰক আৰু পৰৱৰ্তী বাৰ্তাটো পুনৰ প্ৰাপ্ত কৰক।

POST https://nymbot.ai/api/v1/chat/completions - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন।

কেৱল model আৰু messages প্ৰয়োজনীয়। নিৰ্বাচিত মডেলটোৱে নল'ব পৰা এটা নমুনাৰ পেৰামিটাৰ কোনো ত্ৰুটি নোহোৱাকৈ বাদ দিয়া হয়, সেয়েহে এটা অনুৰোধ ব'ডিয়ে মডেলবোৰত কাম কৰে। মডেল তালিকাখনে প্ৰতিটো মডেলৰ প্ৰদান কৰে supported_parametersবাদ দিয়াৰ পৰিৱৰ্তে যিটো অস্বীকাৰ কৰা হয় সেইটো হ "ল মডেলটোৱে একেবাৰে কৰিব নোৱাৰা কিবা এটাঃ দেখা নোপোৱা মডেল এটাৰ বাবে ছবি, মডেল এটাৰ বাবে সঁজুলি যিয়ে তাক কল কৰিব নোৱাৰে।

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
modelশাৰীহয়nymbot/auto (অৰু auto) মানক ভাৰসাম্যৰ ওপৰত নিম্বটৰ ৰুটিংৰ বাবে, বা এটা সূচী মডেল আইডি যেনে anthropic/claude-sonnet-5 প্ৰ'বেলেঞ্চত। এপটোৰ চুটি নাম আৰু উপনামেও গ্ৰহণ কৰা হয়। প্ৰতিশব্দ.
messagesএৰেহয়কথোপকথন। ভূমিকা system, developer (ব্যৱস্থা হিচাপে গণ্য কৰা হয়), user, assistant আৰু toolবিষয়বস্তু হৈছে এটা শাৰী বা ইয়াৰ তালিকা। text আৰু image_url অংশসমূহ; ছবিসমূহ কেৱল ব্যৱহাৰকাৰী বাৰ্তাসমূহত। input_audio আৰু ফাইলৰ অংশসমূহ নাকচ কৰা হয়।
streamবুলিয়াননাই।উত্তৰটো যেনেকৈ লিখা আছে তেনেদৰে প্ৰেৰণ কৰক। চাওক ষ্ট্ৰীমিং.
stream_optionsবস্তুটোনাই।{"include_usage": true} টোকেন গণনা আৰু ব্যয়ৰ সৈতে এটা চূড়ান্ত অংশ যোগ কৰে।
max_tokens
max_completion_tokens
পূৰ্ণসংখ্যানাই।লিখিবলৈ সৰ্বাধিক টোকেন। অধিক হ'লে মডেলৰ সৰ্বাধিকলৈ হ্ৰাস কৰা হয়। লগতে আপোনাৰ বেলেঞ্চৰ পৰা কিমান ধৰি ৰখা হয় সেইটো নিৰ্ধাৰণ কৰে, সেয়েহে এটা সৰু সংখ্যাক আৰম্ভ কৰিবলৈ কম ক্ৰেডিটৰ প্ৰয়োজন হয়।
temperature
top_p
সংখ্যানাই।নমুনা নিয়ন্ত্ৰণ: temperature ০ ৰ পৰা ২ লৈ, top_p ০ পৰা ১ লৈ।
stopষ্ট্ৰিং বা এৰেনাই।উত্তৰটো শেষ কৰা লিখনীঃ এটা শাৰী বা সৰ্বাধিক 4টা শাৰী, প্ৰতিটো সৰ্বাধিক 256টা আখৰেৰে। ইয়াৰ দ্বাৰা ব্যৱহাৰ কৰা নহয় nymbot/auto.
seedপূৰ্ণসংখ্যানাই।পুনৰাবৃত্তিযোগ্য নমুনাৰ বাবে, য'ত মডেলটোৱে ইয়াক সমৰ্থন কৰে।
presence_penalty
frequency_penalty
সংখ্যানাই।পুনৰাবৃত্তি নিয়ন্ত্ৰণ, প্ৰতিটো-2ৰ পৰা 2লৈ।
response_formatবস্তুটোনাই।{"type": "json_object"} বা {"type": "json_schema", "json_schema": {…}}, য'ত মডেলটোৱে ইয়াক সমৰ্থন কৰে। ইয়াৰ দ্বাৰা ব্যৱহাৰ কৰা নহয় nymbot/auto.
tools
tool_choice
parallel_tool_calls
এৰে, ষ্ট্ৰিং বা অবজেক্ট, বুলিয়াননাই।ফাংচন কলিং। চাওক টুল কলসমূহএ. web_search সঁজুলিটো অন হৈ আছে ৱেব সন্ধানসৰ্বাধিক 128টা সঁজুলি আৰু 512 কেবি সংজ্ঞাসমূহ, সৰ্বাধিক 64টা স্তৰৰ গভীৰতাত নেষ্টেড কৰা হৈছে; অধিক হৈছে এটা 400.
reasoning_effort
reasoning
স্ট্ৰিং, অবজেক্টনাই।"minimal", "low", "medium" বা "high", অথবা {"effort": "high"}. "none" বা {"enabled": false} ইয়াক বন্ধ কৰি দিয়ক। চাওক যুক্তিবিজ্ঞান.
pluginsএৰেনাই।[{"id": "web", "max_results": 5}] সদায় প্ৰথমে ৱেবত বিচাৰে। ১০ টা ফলাফললৈকে।
nপূৰ্ণসংখ্যানাই।কেৱল 1। আন যিকোনো বস্তু ঘূৰাই আহে। 400.
logit_bias
user
metadata
অবজেক্ট, ষ্ট্ৰিং, অবজেক্টনাই।গ্ৰহণ কৰা হৈছে আৰু আগবঢ়োৱা হোৱা নাই। logit_bias সৰ্বাধিক 300 টোকেন আইডিৰ পৰা-100ৰ পৰা 100লৈকে সংখ্যাৰ মানচিত্ৰ; user পাৰাৱৰ্তীভাৱে ২৫৬ টা চৰিত্ৰৰ ভিতৰত হ'ব লাগে; metadata সৰ্বাধিক 16টা শাৰীৰ মান, 64টা আখৰলৈকে চাবি আৰু 512 পৰ্যন্ত মান ধৰি ৰাখে।

উত্তৰটো হ "ল সাধাৰণ chat.completion, খৰচৰ সৈতে usage.cost (ডলাৰত) আৰু nymbot বস্তুটো। model প্ৰসংগীয় মডেল আইডি (model id) টো সমাধান কৰা হৈছে, গতিকে এটা চুটি নাম সম্পূৰ্ণ নাম হিচাপে ঘূৰি আহে। যদি মডেলটোৱে উত্তৰ দিয়াৰ আগতে যুক্তি প্ৰদান কৰিছে, তাৰ যুক্তিটো আছে message.reasoning_content, উত্তৰৰ পৰা পৃথক।

প্ৰতিক্ৰিয়া

{
  "id": "chatcmpl-5f1c0a9e27d84b3c",
  "object": "chat.completion",
  "created": 1790726400,
  "model": "anthropic/claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A Lightning invoice is a one-time payment request..."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1240,
    "completion_tokens": 380,
    "total_tokens": 1620,
    "prompt_tokens_details": { "cached_tokens": 0 },
    "completion_tokens_details": { "reasoning_tokens": 0 },
    "cost": 0.01895
  },
  "nymbot": {
    "balance": "pro",
    "charged_credits": 0.162,
    "charged_sats": 16.2,
    "balance_credits": 412.425,
    "balance_sats": 41242.5
  }
}

finish_reason যিটো ঘূৰি আহিছিল তাৰ পৰা কাম কৰা হয়, যিহেতু প্ৰদানকাৰীসকলে ইয়াক বেলেগ ধৰণে প্ৰতিবেদন দিয়েঃ tool_calls যেতিয়া মডেলটোৱে সঁজুলি বিচাৰিছিল, length যেতিয়া উত্তৰটোৱে অনুমতি দিয়া প্ৰতিটো টোকেন ব্যৱহাৰ কৰিছিল (বা মডেলটোৱে সেইবোৰ সকলো যুক্তি ব্যৱহাৰ কৰিছিল আৰু কোনো উত্তৰ লিখা নাছিল), content_filter যেতিয়া প্ৰদানকাৰীয়ে অস্বীকাৰ কৰিছিল, আৰু stop নহ'লে। usage.completion_tokens_details.reasoning_tokens সদায় 0 হয়ঃ লুকাই ৰখা যুক্তি টোকেনবোৰ গণনা কৰা হয়, আৰু চাৰ্জ কৰা হয় completion_tokens.

স্থিতিকেতিয়া
400নাই। model বা messages (missing_required_parameter); এটা অডিঅ'বা ফাইলৰ অংশ, বা মডেলৰ বাবে ছবি যিবোৰে সেইবোৰ চাব নোৱাৰে (unsupported_content); 20খনতকৈ অধিক ছবি (too_many_images); ভুল ধৰণৰ বাবে বা সীমা অতিক্ৰম কৰা এটা নমুনা মাপকাঠি (invalid_value); এটা ছবিৰ লিংক যিটো ৰাজহুৱা নহয় (invalid_image_url); এটা মডেলৰ সঁজুলি যিবোৰক কল কৰিব নোৱাৰি (unsupported_tool); n 1ৰ বাহিৰে; এ :thinking যুক্তি কৰিব নোৱাৰা এটা আৰ্হিৰ প্ৰতিশব্দ (model_not_found); বা প্ৰদানকাৰীয়ে অনুৰোধটো অস্বীকাৰ কৰিছিল (upstream_rejected).
402মডেলটোৱে ব্যয় কৰা ভাৰসাম্যটোৱে হোল্ডটো সামৰি ল "ব নোৱাৰে।
403আটাইতকৈ বেয়া ক্ষেত্ৰটো চাবিৰ টুপীৰ সৈতে খাপ নাখায় (key_limit_reached)। max_tokens অথবা টুপীটো ওপৰলৈ তোলক।
404সেই নামেৰে কোনো মডেল নাই (model_not_found).
429চাবিৰ হাৰৰ সীমা, বা প্ৰদানকাৰীৰ (upstream_rate_limited).
502, 503প্ৰদানকাৰী বিফল হৈছিল (upstream_error) বা অভাৰলোড কৰা হৈছে (upstream_overloaded, সৈতে Retry-After)। প্ৰদানকাৰীয়ে প্ৰচেষ্টাটোৰ বাবে বিল নললে একো মাচুল লোৱা নহয়।

প্ৰতিটো এণ্ড পইণ্ট শ্বেয়াৰৰ স্থিতি সংকেতসমূহ তলত তালিকাভুক্ত কৰা হৈছে ত্ৰুটিবোৰ.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [
      {"role": "system", "content": "Answer in one short paragraph."},
      {"role": "user", "content": "What is a Lightning invoice?"}
    ],
    "max_tokens": 400
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[
        {"role": "system", "content": "Answer in one short paragraph."},
        {"role": "user", "content": "What is a Lightning invoice?"},
    ],
    max_tokens=400,
)
print(reply.choices[0].message.content)
print(reply.usage.cost)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [
    { role: "system", content: "Answer in one short paragraph." },
    { role: "user", content: "What is a Lightning invoice?" },
  ],
  max_tokens: 400,
});
console.log(reply.choices[0].message.content);
console.log(reply.usage.cost);

সম্প্ৰচাৰ কৰা।

লগত। "stream": true মডেলটোৱে লিখি থকাৰ সময়ছোৱাতে উত্তৰটো server-sent events হিচাপে আহে। প্ৰতিটো ইভেণ্ট এটা chat.completion.chunk এ-ৰ ওপৰত data: শাৰী, আৰু ধাৰাটোৰ সৈতে শেষ হয় data: [DONE]যুক্তি আহে। delta.reasoning_content, উত্তৰটো delta.content.

প্ৰায় 100 ছেকেণ্ডতকৈ অধিক সময় লাগিব পৰা যিকোনো বস্তু স্ট্রিম কৰক, যেনে এটা দীঘলীয়া উত্তৰ, এটা ডাঙৰ উত্তৰ। max_tokens বা এটা ৰীজনিং মডেল। যিটো ৰি কুৱেষ্ট ষ্ট্ৰিম কৰা নহয়, উত্তৰটো সম্পূৰ্ণ নোহোৱালৈকে একোৱেই পঠিয়াই নিদিয়ে, আৰু আপোনাৰ আৰু Nymbot ৰ মাজৰ নেটৱৰ্কটোৱে প্ৰায় ১০০ ছেকেণ্ডৰ পাছত এটা নিষ্ক্ৰিয় সংযোগ বন্ধ কৰি দিব পাৰে; মডেলটোৱে কাম শেষ কৰিব আৰু ই যিখিনি লিখিছে তাৰ বাবে চার্জও কৰা হ'ব, কিন্তু উত্তৰটো হেৰাই যাব। এটা ষ্ট্ৰিমৰ (stream) পৰা কিপ-এলাইভছ (keep-alives) আহে, গতিকে মডেলটোৱে লিখি থকা যিমান সময়লৈকে ই খোলা হৈ থাকে।

ধাৰা

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{"content":"A Lightning invoice"},"finish_reason":null}]}

: keep-alive

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[],"usage":{"prompt_tokens":1240,"completion_tokens":380,"total_tokens":1620,"cost":0.01895},"nymbot":{"balance":"pro","charged_credits":0.162,"charged_sats":16.2,"balance_credits":412.425,"balance_sats":41242.5}}

data: [DONE]
  • ইয়াৰ পৰা আৰম্ভ হোৱা শাৰীবোৰ : মডেলটোৱে চিন্তা কৰি থকাৰ সময়তে প্ৰতি 15 ছেকেণ্ডত প্ৰেৰণ কৰা কিপ-এলাইভ মন্তব্যসমূহ। এছ. এছ. ই. গ্ৰাহকসকলে সেইবোৰ বাদ দিয়ে।
  • বিচাৰক "stream_options": {"include_usage": true} ওপৰৰ শেষ অংশটো এটা খালী অংশৰ সৈতে পাবলৈ choices, টোকেনে গণনা কৰে, ব্যয় আৰু nymbot বস্তুটো।
  • ষ্ট্ৰিমটো শেষ হোৱাৰ পিছত চার্জটো স্থিৰ কৰা হয়। যদি আপুনি সংযোগটো আগতীয়াতে বন্ধ কৰি দিয়ে, মডেলটো বন্ধ কৰা নহয়: Nymbot ইয়াৰ টোকেন সংখ্যা জানিবলৈ প্ৰদানকাৰীৰ ষ্ট্ৰিমৰ বাকী অংশটো ২৫ চেকেণ্ডলৈকে পঢ়ি থাকে, আৰু প্ৰদানকাৰীয়ে যিটো প্ৰতিবেদন দাখিল কৰে আপুনি তাৰে পৰা পৰিশোধ কৰিব লাগে। সেই সংখ্যাটো নহ’লে, আপোনাৰ ইনপুট আৰু লিখা কথাবোৰৰ ওপৰত ভিত্তি কৰি তথা যুক্তিসংগত মডেলৰ বাবে গোটেই আউটপুট এলাউৱেন্সৰ ওপৰত ভিত্তি কৰি চার্জটো আনুমানিক কৰা হয়।
  • প্ৰথম খণ্ডৰ আগত এটা ত্ৰুটি, যেনে 401 বা 402, ইয়াৰ স্থিতি কোডৰ সৈতে সাধাৰণ জেএছঅ "এন হিচাপে ঘূৰি আহে, ধাৰা হিচাপে নহয়। ধাৰা আৰম্ভ হোৱাৰ পিছত এটা ত্ৰুটি শেষ হিচাপে আহে। data: {"error": {…}} অনুষ্ঠান, আৰু ধাৰাটো ইয়াৰ অবিহনে শেষ হয় [DONE].
  • সঁজুলিৰ সৈতে অনুৰোধ, আৰু অ'পেনএআইৰ সঁহাৰি পৰিবহণৰ মডেলবোৰ, প্ৰদানকাৰীৰ পৰা সম্প্ৰচাৰ নকৰে। তথাপিও তেওঁলোকে এটা বৈধ ধাৰাৰ সৈতে উত্তৰ দিয়ে, উত্তৰ সম্পূৰ্ণ হোৱাৰ পিছত প্ৰেৰণ কৰা হয়।

cURL

curl -N https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nymbot/auto",
    "stream": true,
    "stream_options": {"include_usage": true},
    "messages": [{"role": "user", "content": "Write a haiku about sats."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

stream = client.chat.completions.create(
    model="nymbot/auto",
    stream=True,
    stream_options={"include_usage": True},
    messages=[{"role": "user", "content": "Write a haiku about sats."}],
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)
    elif chunk.usage:
        print("\ncost:", chunk.usage.cost)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const stream = await client.chat.completions.create({
  model: "nymbot/auto",
  stream: true,
  stream_options: { include_usage: true },
  messages: [{ role: "user", content: "Write a haiku about sats." }],
});
for await (const chunk of stream) {
  if (chunk.choices.length) process.stdout.write(chunk.choices[0].delta.content || "");
  else if (chunk.usage) console.log("\ncost:", chunk.usage.cost);
}

সঁজুলি কলসমূহ

ইয়াত কাৰ্য্যসমূহ বৰ্ণনা কৰক tools আৰু মডেলটোৱে উত্তৰ দিয়াৰ পৰিৱৰ্তে এটাক ফোন কৰিবলৈ ক'ব পাৰে। আপুনি ফাংচনটো চলাব, ইয়াৰ ফলাফল এটা হিচাপে যোগ কৰক tool একে ধৰণৰ বাৰ্তা tool_call_id, আৰু কথোপকথনটো পুনৰ পঠিওৱা। নিমবটে কেতিয়াও আপোনাৰ কাৰ্য্যসমূহ চলাব নোৱাৰে; ই মডেলটোৰ অনুৰোধ আপোনাৰ ওচৰলৈ ঘূৰাই দিয়ে।

tool_choice লয় "auto", "none", "required" বা {"type": "function", "function": {"name": "…"}}আৰ্হিৰ তালিকাখনে কোনবোৰ আৰ্হিয়ে সঁজুলিসমূহক কল কৰিব পাৰে চিহ্নিত কৰে (capabilities.tools)। সঁজুলিবোৰ ইয়াৰ সৈতে নাকচ কৰা হয় 400 unsupported_tool ওপৰত nymbot/auto আৰু অ'পেনএআইৰ সঁহাৰি পৰিবহণত চলা কেইটামান সূচী মডেলৰ ওপৰত, যাক নিম্বটে সঁজুলি প্ৰেৰণ কৰিব নোৱাৰে।

লগত। "stream": trueসঁজুলিৰ সৈতে এটা অনুৰোধ এটা টুকুৰাত চলে আৰু তাৰ পিছত সাধাৰণ খণ্ড ক্ৰম হিচাপে প্ৰেৰণ কৰা হয়ঃ ভূমিকা, ইয়াৰ সূচী, আইডি, নাম আৰু তৰ্কৰ সৈতে প্ৰতিটো সঁজুলি কল বহন কৰা এটা খণ্ড, আৰু সমাপ্তি খণ্ড। ষ্ট্ৰীম কৰা সঁজুলি কলবোৰ পঢ়া গ্ৰাহকে ইয়াক স্বাভাৱিকভাৱে নিয়ন্ত্ৰণ কৰে।

উত্তৰ, আংশিকভাৱে

"choices": [
  {
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "tool_calls": [
        {
          "id": "call_7d2e",
          "type": "function",
          "function": { "name": "get_invoice_status", "arguments": "{\"invoice_id\":\"a41f\"}" }
        }
      ]
    },
    "finish_reason": "tool_calls"
  }
]

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{"role": "user", "content": "Has invoice a41f been paid?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_invoice_status",
        "description": "Look up whether an invoice is paid.",
        "parameters": {
          "type": "object",
          "properties": {"invoice_id": {"type": "string"}},
          "required": ["invoice_id"]
        }
      }
    }]
  }'

Python

import json, os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

tools = [{
    "type": "function",
    "function": {
        "name": "get_invoice_status",
        "description": "Look up whether an invoice is paid.",
        "parameters": {
            "type": "object",
            "properties": {"invoice_id": {"type": "string"}},
            "required": ["invoice_id"],
        },
    },
}]
messages = [{"role": "user", "content": "Has invoice a41f been paid?"}]

reply = client.chat.completions.create(model="anthropic/claude-sonnet-5", messages=messages, tools=tools)
call = reply.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)

messages.append(reply.choices[0].message)
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps({"paid": True})})

final = client.chat.completions.create(model="anthropic/claude-sonnet-5", messages=messages, tools=tools)
print(final.choices[0].message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const tools = [{
  type: "function",
  function: {
    name: "get_invoice_status",
    description: "Look up whether an invoice is paid.",
    parameters: {
      type: "object",
      properties: { invoice_id: { type: "string" } },
      required: ["invoice_id"],
    },
  },
}];
const messages = [{ role: "user", content: "Has invoice a41f been paid?" }];

const reply = await client.chat.completions.create({ model: "anthropic/claude-sonnet-5", messages, tools });
const call = reply.choices[0].message.tool_calls[0];
const args = JSON.parse(call.function.arguments);

messages.push(reply.choices[0].message);
messages.push({ role: "tool", tool_call_id: call.id, content: JSON.stringify({ paid: true }) });

const final = await client.chat.completions.create({ model: "anthropic/claude-sonnet-5", messages, tools });
console.log(final.choices[0].message.content);

অনুৰোধত থকা ছবিসমূহ

ইয়াৰ সৈতে মডেলসমূহ capabilities.vision ছবিবোৰ পঢ়িব পাৰে। এটা যোগ কৰক image_url এটা ৰাজহুৱা বাৰ্তাৰ সৈতে এটা ব্যৱহাৰকাৰী বাৰ্তালৈ ভাগ কৰক https:// লিংক বা এ data:image/…;base64, URL। প্ৰতিটো অনুৰোধত ২০ টা ছবি পৰ্যন্ত। SVG ছবিসমূহ প্ৰত্যাখ্যান কৰা হয়, আৰু ৪,০৯৬ ক্যৰেক্টাৰতকৈ দীঘল লিংক বা ব্যৱহাৰকাৰী নাম বা পাছৱৰ্ড থকা লিংকসমূহো প্ৰত্যাখ্যান কৰা হয় (400 invalid_image_url). এটা ঐচ্ছিক detail হৈছে auto, low বা high.

লগত। nymbot/auto, এখন ছবিৰ সৈতে এটা অনুৰোধ এটা মানক মডেললৈ ৰুট কৰা হয় যি চাব পাৰে। ইয়াৰ অবিহনে এটা সূচী মডেল capabilities.vision লগত ফটো ল'বলৈ অস্বীকাৰ কৰে 400 unsupported_contentছবি কেৱল ব্যৱহাৰকাৰীৰ বাৰ্তাত থাকিব পাৰে। এটা লিংক এটা ৰাজহুৱা হোষ্টলৈ ইংগিত কৰিব লাগিব; নিম্বটে ছবিখন মডেলৰ প্ৰদানকাৰীক প্ৰেৰণ কৰে আৰু ইয়াক ৰাখিব নোৱাৰে।

এটা ছবিৰ বাবে ইনপুট টোকেন হিচাপে প্ৰদানকাৰ্তাই বাকি ৰিকোয়েষ্টৰ দৰেই চার্জ কৰে।

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "What is in this picture?"},
        {"type": "image_url", "image_url": {"url": "https://example.com/receipt.jpg"}}
      ]
    }]
  }'

Python

import base64, os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

with open("receipt.jpg", "rb") as f:
    data_url = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "What is in this picture?"},
            {"type": "image_url", "image_url": {"url": data_url}},
        ],
    }],
)
print(reply.choices[0].message.content)

JavaScript

import { readFile } from "node:fs/promises";
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const dataUrl = "data:image/jpeg;base64," + (await readFile("receipt.jpg")).toString("base64");

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [{
    role: "user",
    content: [
      { type: "text", text: "What is in this picture?" },
      { type: "image_url", image_url: { url: dataUrl } },
    ],
  }],
});
console.log(reply.choices[0].message.content);

যুক্তিপূৰ্ণতা

ইয়াৰ সৈতে মডেলসমূহ capabilities.reasoning তেওঁলোকে উত্তৰ দিয়াৰ আগতে চিন্তা কৰিব পাৰে। ইয়াৰ পৰা অধিক বা কম বিচাৰক... reasoning_effort ("minimal", "low", "medium" বা "high") বা "reasoning": {"effort": "high"}, বা যোগ কৰক :thinking মডেলৰ নামলৈ, যাৰ অৰ্থ হ'ল অধিক প্ৰচেষ্টা। যুক্তিবোধহীন এটা মডেলত ছেটিংটো আওকাণ কৰা হয়। সৈতে nymbot/auto, :thinking প্ৰতিবেদনটি মানক যুক্তিসংগত ৰুটলৈ (standard reasoning route) প্ৰেৰণ কৰে।

নৃতাত্ত্বিক আৰ্হিসমূহৰ ক্ষেত্ৰত প্ৰচেষ্টাটো প্ৰায় 1,000,2,000,8,000 বা 16,000 টোকেনৰ চিন্তাশীল বাজেট হৈ পৰে, কেতিয়াও তাতকৈ অধিক নহয়। max_tokens অনুমতি দিয়ে। যেতিয়া চিন্তা কৰা বন্ধ কৰা হয়... tool_choice এটা টুল ব্যৱহাৰ কৰিবলৈ বাধ্য কৰে, আৰু যেতিয়া অনুৰোধটো এটা টুল লুপত অব্যাহত থাকে (ইয়াৰ শেষৰ বাৰ্তাটো এটা টুল ৰিজাল্ট), কাৰণ Anthropic-এ ইয়াৰ আগৰ স্বাক্ষৰিত চিন্তন (signed thinking) পুনৰ আৰম্ভ কৰিবলৈ প্ৰয়োজন হয়। একেই কথা Responses আৰু Messages এণ্ডপইণ্টবোৰৰ ক্ষেত্ৰতো প্ৰযোজ্য।

যুক্তিটো পুনৰ আহে message.reasoning_content, অথবা delta.reasoning_content ষ্ট্ৰীম কৰাৰ সময়ত, উত্তৰটোত কেতিয়াও মিহলি নকৰিব। যুক্তি হৈছে আউটপুট আৰু ভিতৰত এনেদৰে চাৰ্জ কৰা হয় completion_tokensকিছু প্ৰদানকাৰে একেবাৰে reasoning text টো প্ৰদান নকৰে, তথাপিও ইয়াৰ বাবে পইচা কাটি লোৱা হয়।

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "reasoning_effort": "high",
    "messages": [{"role": "user", "content": "Is 2^61 - 1 prime? Show why."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    reasoning_effort="high",
    messages=[{"role": "user", "content": "Is 2^61 - 1 prime? Show why."}],
)
message = reply.choices[0].message
print(getattr(message, "reasoning_content", None))
print(message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  reasoning_effort: "high",
  messages: [{ role: "user", content: "Is 2^61 - 1 prime? Show why." }],
});
console.log(reply.choices[0].message.reasoning_content);
console.log(reply.choices[0].message.content);

মডেলৰ প্ৰতিশব্দসমূহ

মডেলৰ নামৰ এটা প্রত্যয়ে আন কোনো ক্ষেত্ৰ অবিহনে অনুৰোধটো কেনেদৰে পৰিচালনা কৰা হয় তাক সলনি কৰে। সেইবোৰে সম্পূৰ্ণ আইডি আৰু চুটি নামত একেধৰণে কাম কৰে, যেনেকৈ anthropic/claude-sonnet-5:online.

প্ৰত্যয়প্ৰভাৱ
:onlineপ্ৰথমে ৱেবত সন্ধান কৰে, যেনে plugins: [{"id": "web"}]চাওক। ৱেব সন্ধান.
:thinkingউচ্চ যুক্তিৰ প্ৰচেষ্টা; ওপৰত nymbot/auto, যুক্তিৰ পথ। যুক্তি কৰিব নোৱাৰা এটা আৰ্হিত, 400 model_not_found & ldquo; ৰ সৈতে কোনো অন্তিম বিন্দু পোৱা নগল & rdquo;।
:nitro, :floor, :exacto, :extendedগৃহীত আৰু আওকাণ কৰা হ’ল। প্ৰতিটো কেটেলগ মডেলৰ এটা ৰুট আছে, গতিকে বাছনি কৰিবলৈ তাতকৈ খৰতকীয়া, সস্তীয়া বা দীঘল কোনো ৰুট নাই; সাফিক্সসমূহ (suffixes) অনুমতি দিয়া হৈছে যাতে অন্যান্য চাৰ্ভিচৰ পৰা কপি কৰা মডেলৰ নামবোৰ এতিয়াও কাম কৰিব পাৰে।

আন যিকোনো প্রত্যয় উপেক্ষা কৰা হয়। সম্পূৰ্ণ নামটো প্ৰথমে চেষ্টা কৰা হয়, সেয়েহে এটা মডেল যাৰ আইডি-ত প্ৰকৃততে এটা কোলন থাকে তথাপিও কাম কৰে; এনে নকৰিলে, এটা মডেলৰ সৈতে মিল নোহোৱালৈকে প্ৰতিশব্দবোৰ একে সময়তে শেষৰ এটাৰ পৰা আঁতৰাই পেলোৱা হয়। এটা মডেলৰ নাম সৰ্বাধিক 4টা প্ৰতিশব্দৰ সৈতে সৰ্বাধিক 200 আখৰ দীঘল হ'ব পাৰে; এটা দীঘল নামটোৰ সৈতে অস্বীকাৰ কৰা হয়। 400 invalid_value.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5:thinking",
    "messages": [{"role": "user", "content": "Plan a three-day trip to Lisbon."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5:thinking",
    messages=[{"role": "user", "content": "Plan a three-day trip to Lisbon."}],
)
print(reply.choices[0].message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5:thinking",
  messages: [{ role: "user", content: "Plan a three-day trip to Lisbon." }],
});
console.log(reply.choices[0].message.content);

যিকোনো চেট মডেলয়ে লাইভ ৱেবৰ পৰা উত্তৰ দিব পাৰে। Nymbot-এ শেষৰ ব্যৱহাৰকাৰী বাৰ্তাটো (ইয়াৰ প্ৰথম ২,০০০টা চৰিত্ৰ) বিচাৰি উলিয়ায়, শ্ৰেষ্ঠ পৃষ্ঠা সমূহ পঢ়ে আৰু প্ৰশ্নটোৰ সৈতে সেইবোৰ মডেলটোক দিয়ে, যিবোৰ বাহিৰৰ বিষয়বস্তু হিচাপে চিহ্নিত কৰা হয় যাৰ পৰা মডেলটোৱে নিৰ্দেশনা নলব লাগে। ইয়াত দুটা মোড আছে:

  • সদায় সন্ধান কৰক: "plugins": [{"id": "web", "max_results": 5}], বা এ :online মডেলৰ ওপৰত প্ৰতিশব্দ।
  • যেতিয়া ই সহায় কৰে তেতিয়া সন্ধান কৰা।: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}], হিচাপেও গ্ৰহণ কৰা হয় web_search_preview বা openrouter:web_search. Nymbot কেৱল তেতিয়াহে সন্ধান কৰে যেতিয়া প্ৰশ্নটোৱে বৰ্তমানৰ তথ্যৰ প্ৰয়োজন আছে যেন লাগে, একে ধৰণৰ পৰীক্ষা যিটো এপটোৱে ব্যৱহাৰ কৰে।

max_results ডিফল্টভাৱে 5 আৰু সৰ্বাধিক 10। উৎসবোৰ পুনৰ ভিতৰলৈ আহে। nymbot.web_search.sources, প্ৰতিটোৰে সৈতে এটা title, snippet আৰু url, আৰু এনেদৰে url_citation বাৰ্তাৰ ওপৰত টীকাসমূহ।

প্ৰতিটো চলা সন্ধানৰ বাবে $0.008 খৰচ হয়, টোকেনৰ উপৰিও, যিটো sats-লৈ ৰূপান্তৰ কৰা হয়, আৰু ই hold ৰ অংশ। ইয়াৰ দ্বাৰা পঢ়া পৃষ্ঠাগুলিও ইনপুট টোকেন, গতিকে ৱেবৰ পৰা পোৱা এটা উত্তৰৰ খৰচ একে প্ৰশ্নটো কেৱল সাধাৰণভাৱে সুধাতকৈ বেছি হয়, কেতিয়াবা বহুত গুণ বেছি।

উত্তৰ, আংশিকভাৱে

"nymbot": {
  "balance": "pro",
  "charged_credits": 0.431,
  "charged_sats": 43.1,
  "balance_credits": 411.994,
  "balance_sats": 41199.4,
  "web_search": {
    "sources": [
      { "title": "Lightning Network - Wikipedia", "snippet": "The Lightning Network is a payment protocol...", "url": "https://en.wikipedia.org/wiki/Lightning_Network" }
    ]
  }
}

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "plugins": [{"id": "web", "max_results": 5}],
    "messages": [{"role": "user", "content": "What changed in the latest Bitcoin Core release?"}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "What changed in the latest Bitcoin Core release?"}],
    extra_body={"plugins": [{"id": "web", "max_results": 5}]},
)
print(reply.choices[0].message.content)
for source in reply.model_extra["nymbot"]["web_search"]["sources"]:
    print(source["url"])

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  plugins: [{ id: "web", max_results: 5 }],
  messages: [{ role: "user", content: "What changed in the latest Bitcoin Core release?" }],
});
console.log(reply.choices[0].message.content);
for (const source of reply.nymbot.web_search.sources) console.log(source.url);

প্ৰতিক্ৰিয়াৰ এ. পি. আই.

OpenAI-ৰ নতুন ফৰ্মেট, যিটো OpenAI Agents SDK আৰু Codex-এ ব্যৱহাৰ কৰে। ই Chat Completions-ৰ দৰেই একে মডেল, বিলিং আৰু ফিচাৰসমূহৰ ওপৰত চলে।

POST https://nymbot.ai/api/v1/responses - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন।

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
modelশাৰীহয়যিহেতু চ্যাট সম্পূৰ্ণ কৰক, উপসৰ্গসমূহো অন্তৰ্ভুক্ত।
inputষ্ট্ৰিং বা এৰেহয়এটা শাৰী, বা বস্তুৰ তালিকাঃ বাৰ্তা (ভূমিকা) user, assistant, system, developer) লগত। input_text, input_image আৰু output_text অংশ, আৰু function_call আৰু function_call_output সঁজুলিৰ বাবে সামগ্ৰী। input_image এটা লয় image_url লিংক বা ডাটা ইউ. আৰ. এল., ফাইল আই. ডি. নহয়। reasoning আৰু web_search_call বস্তুবোৰ বাদ দিয়া হয়; item_reference অস্বীকাৰ কৰা হয়।
instructionsশাৰীনাই।ব্যৱস্থাপ্ৰণালীৰ নিৰ্দেশনা।
max_output_tokensপূৰ্ণসংখ্যানাই।লিখিবলৈ আটাইতকৈ বেছি টোকেন।
temperature
top_p
সংখ্যানাই।নমুনা নিয়ন্ত্ৰণ, য'ত মডেলটোৱে সেইবোৰ লৈ যায়।
tools
tool_choice
parallel_tool_calls
এৰে, ষ্ট্ৰিং বা অবজেক্ট, বুলিয়াননাই।ফাংচন টুলছ, ৰিপন্সৰ আকৃতিত ({"type": "function", "name": …, "parameters": …}). A web_search বা web_search_preview সঁজুলিটো অন হৈ আছে ৱেব সন্ধান যেতিয়া ই সহায় কৰে। অন্যান্য বিল্ট-ইন সঁজুলিবোৰ অস্বীকাৰ কৰা হয়।
reasoningবস্তুটোনাই।{"effort": "minimal" | "low" | "medium" | "high"}. xhigh আৰু max মানে high; none ইয়াক বন্ধ কৰি দিয়ক।
text.format
response_format
বস্তুটোনাই।গঠনমূলক আউটপুট, জে. এছ. অ '. এন. স্কিমা হিচাপে বা json_object.
metadataবস্তুটোনাই।প্ৰতিক্ৰিয়াত সলনি নোহোৱাকৈ ঘূৰাই দিয়া হৈছে। সৰ্বাধিক 16টা শাৰীৰ মান, 64টা আখৰলৈকে চাবি আৰু 512 পৰ্যন্ত মান।
streamবুলিয়াননাই।তলত বৰ্ণনা কৰা অনুসৰি অনুষ্ঠানসমূহ সম্প্ৰচাৰ কৰক।
storeবুলিয়াননাই।অৱহেলিত। একো সংৰক্ষণ কৰা হোৱা নাই, আৰু প্ৰতিক্ৰিয়াই সদায় কয় "store": false.
previous_response_id
conversation
background
স্ট্ৰিং, অবজেক্ট, বুলিয়াননাই।সমৰ্থন কৰা নাই: 400 unsupported_parameterপ্ৰতিক্ৰিয়াসমূহ সংৰক্ষণ কৰা নহয়, গতিকে গোটেই কথোপকথনটো পঠিয়াই দিয়ক input প্ৰতিবাৰেই।

প্ৰতিক্ৰিয়া

{
  "id": "resp_8c1e4b0f9a2d4e61",
  "object": "response",
  "created_at": 1790726400,
  "status": "completed",
  "model": "anthropic/claude-sonnet-5",
  "output": [
    {
      "type": "message",
      "id": "msg_2b7f",
      "role": "assistant",
      "status": "completed",
      "content": [{ "type": "output_text", "text": "A Lightning invoice is...", "annotations": [] }]
    }
  ],
  "output_text": "A Lightning invoice is...",
  "usage": {
    "input_tokens": 1240,
    "input_tokens_details": { "cached_tokens": 0 },
    "output_tokens": 380,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 1620
  },
  "incomplete_details": null,
  "error": null,
  "instructions": null,
  "store": false,
  "previous_response_id": null,
  "metadata": {},
  "nymbot": { "balance": "pro", "charged_credits": 0.162, "charged_sats": 16.2, "balance_credits": 412.425, "balance_sats": 41242.5 }
}

এটা সঁজুলিৰ অনুৰোধ ইয়াত দেখা যায় output এ হিচাপে function_call সঁজুলিৰ সৈতে call_id, name আৰু argumentsফলাফলটো এটা হিচাপে ঘূৰাই পঠিওৱা function_call_output একে বস্তুৰ সৈতে call_idযুক্তি কৰা, যেতিয়া মডেলটোৱে ইয়াক ঘূৰাই দিয়ে, হ'ল reasoning সঁজুলিৰ সৈতে reasoning_text বিষয়বস্তু, প্ৰথমে তালিকাভুক্ত। status হৈছে incomplete যেতিয়া উত্তৰটো আহিল max_output_tokens অথবা প্ৰদানকাৰীয়ে অস্বীকাৰ কৰিছিল, incomplete_details.reason তাত ছেট কৰা max_output_tokens বা content_filterপ্ৰতিক্ৰিয়াটোৱে অ'পেনএআইৰ দৰে অনুৰোধৰ ছেটিংছ (তাপমাত্ৰা, সঁজুলি, সঁজুলিৰ পছন্দ ইত্যাদি) প্ৰতিধ্বনিত কৰে, আৰু nymbot ব্যয় বস্তু।

ধাৰাবাহিকভাৱে, প্ৰতিটো অনুষ্ঠান এটা event: শাৰী আৰু এ data: এ-ৰ সৈতে শাৰী sequence_number, এই ক্ৰমতঃ response.created, response.in_progress, response.output_item.added, response.content_part.added, যিকোনো সংখ্যক response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.done, আৰু শেষত response.completed ব্যৱহাৰ আৰু খৰচৰ সৈতে। এটা উত্তৰ সংক্ষিপ্ত কৰি ইয়াৰ সৈতে শেষ কৰা হয় response.incomplete ইয়াৰ পৰিৱৰ্তে, আৰু ধাৰাটো আৰম্ভ হোৱাৰ পিছত এটা বিফলতা response.failed. Reasoning streams এটা নিজৰ বিষয় হিচাপে আহে response.reasoning_text.delta আৰু .doneটুল কলবোৰ বাৰ্তাৰ পিছত আহে, প্ৰতিটো বস্তুৰ সৈতে response.function_call_arguments.delta আৰু .done.

স্থিতিকেতিয়া
400নাই। model বা input; previous_response_id, conversation, background বা এটা item_reference (unsupported_parameter); এটা সমৰ্থিত সঁজুলি বা সমলৰ ধৰণ।
402, 403, 404, 429, 502, 503চেট সম্পূৰ্ণ কৰাৰ ক্ষেত্ৰত।

cURL

curl https://nymbot.ai/api/v1/responses \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "instructions": "Answer in one short paragraph.",
    "input": "What is a Lightning invoice?"
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

response = client.responses.create(
    model="anthropic/claude-sonnet-5",
    instructions="Answer in one short paragraph.",
    input="What is a Lightning invoice?",
)
print(response.output_text)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const response = await client.responses.create({
  model: "anthropic/claude-sonnet-5",
  instructions: "Answer in one short paragraph.",
  input: "What is a Lightning invoice?",
});
console.log(response.output_text);

নৃতাত্ত্বিক বাৰ্তা

Anthropic-ৰ ফৰ্মেট, Anthropic SDK আৰু Claude Code-ৰ বাবে। ই কেৱল Claude নহয়, কেটেলগৰ প্ৰতিটো মডেলৰ লগতে কাম কৰে: অনুৰোধটো অনুবাদ কৰা হয়, একে পাইপলাইনৰ মাজেৰে পৰিচালনা কৰা হয়, আৰু পুনৰ অনুবাদ কৰি ঘূৰাই দিয়া হয়।

POST https://nymbot.ai/api/v1/messages - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন, যেনে x-api-key বা Authorization: Bearer.

ইয়াৰ পৰা anthropic-version আৰু anthropic-beta শীৰ্ষকসমূহ গ্ৰহণ কৰা হয় আৰু উপেক্ষা কৰা হয়। এন্থ্ৰপিক মডেলৰ নামসমূহ সূচীৰ সৈতে মিলোৱা হয়, সেয়েহে ক্ল'ড ক'ড আৰু এছডিকেসমূহে তেওঁলোকে ইতিমধ্যে ব্যৱহাৰ কৰা নামসমূহৰ সৈতে কাম কৰেঃ

  • এজন নাম যাক কেটেলগটোৱে জানে, যেনে claude-sonnet-5 বা anthropic/claude-opus-5, যেনেকৈ আছে তেনেদৰে ব্যৱহাৰ কৰা হয়।
  • অন্যথা এটা তাৰিখ (-20260514), -latest, এটা সংস্কৰণ টেগ যেনে -v1, এনেকুৱা এটা ব্ৰেকেটযুক্ত ট্যাগ যেনে [1m] আৰু এটা anthropic/ বা anthropic. প্ৰিফিক্সবোৰ আঁতৰাই দিয়া হয়, আৰু পাৰ্শ্ব সংস্কৰণত ডট আৰু ডেশ দুয়োটা পদ্ধতিৰে চেষ্টা কৰি দেখা হয় (claude-haiku-4-5 বিচাৰি উলিয়াওক claude-haiku-4.5).
  • যদি সেইটো এতিয়াও একোৰে সৈতে মিল নাখায়, পৰিয়ালটো (ওপাছ, চনেট বা হাইকু) ব্যৱহাৰ কৰা হয়, যেতিয়ালৈকে সূচীৰ সংস্কৰণটো বিচাৰি পোৱাতকৈ একে বা নতুন হয়।
  • একোৰ সৈতে মিল নাখোৱা এটা নাম ঘূৰি আহে 404 not_found_error.
ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
modelশাৰীহয়এটা কেটেলগ মডেল আইডি, অথবা এটা Anthropic মডেলৰ নাম।
max_tokensপূৰ্ণসংখ্যাহয়লিখিবলৈ আটাইতকৈ বেছি টোকেন।
messagesএৰেহয়user আৰু assistant প্ৰত্যাহ্বান, সৈতে text, image (বেছ64 বা ইউ. আৰ. এল. উৎস), tool_use আৰু tool_result ব্লকসমূহ। thinking পূৰ্বৰ বাৰৰ ব্লকবোৰ গ্ৰহণ কৰা হয় আৰু পেলাই দিয়া হয়।
systemষ্ট্ৰিং বা এৰেনাই।সিস্টেম প্ৰম্পট, এটা ষ্ট্ৰিং বা টেক্সট ব্লক হিচাপে।
temperature
top_p
সংখ্যানাই।নমুনা নিয়ন্ত্ৰণ, য'ত মডেলটোৱে সেইবোৰ লৈ যায়। top_k গৃহীত কৰা হৈছে আৰু পেলাই দিয়া হৈছে।
stop_sequencesষ্ট্ৰিংছৰ এৰে (array of strings)নাই।উত্তৰটো সমাপ্ত কৰা পাঠ। সৰ্বাধিক ৪ টা স্ট্ৰিং, প্ৰতিটো সৰ্বাধিক ২৫৬ ক্যৰেক্টাৰ।
tools
tool_choice
এৰে, অবজেক্টনাই।সঁজুলিৰ সৈতে name, description আৰু input_schemaএ. web_search চাৰ্ভাৰ টুলটো অন হয় ৱেব সন্ধান; এন্থ্ৰপিকৰ অন্যান্য বিল্ট-ইন সঁজুলিবোৰ (বাশ, টেক্সট এডিটৰ, কম্পিউটাৰ ব্যৱহাৰ) ৰ সৈতে অস্বীকাৰ কৰা হৈছে unsupported_tool. tool_choice লয় auto, any, tool বা none, আৰু disable_parallel_tool_use.
thinkingবস্তুটোনাই।{"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} বা {"type": "disabled"}. বাজেট এটা প্ৰচেষ্টাৰ স্তৰ বাছি লয়: ২,০৪৮ ৰ তলত নগণ্য, ২,০৪৮ ৰ পৰা নিম্ন, ৮,১৯২ ৰ পৰা মধ্যম, ১৬,৩৮৪ ৰ পৰা উচ্চ। অ্যাডাপ্টিভ ব্যৱহাৰ কৰে output_config.effort, বা উচ্চ।
streamবুলিয়াননাই।Anthropic ৰ ইভেণ্ট ফৰ্মেটত ষ্ট্ৰীম কৰক।
metadataবস্তুটোনাই।গ্ৰহণ কৰা হয় আৰু উপেক্ষা কৰা হয়।

প্ৰতিক্ৰিয়া

{
  "id": "msg_01c7a2f93e5b4d08",
  "type": "message",
  "role": "assistant",
  "model": "anthropic/claude-sonnet-5",
  "content": [{ "type": "text", "text": "A Lightning invoice is..." }],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 1240,
    "output_tokens": 380,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0
  },
  "nymbot": { "balance": "pro", "charged_credits": 0.162, "charged_sats": 16.2, "balance_credits": 412.425, "balance_sats": 41242.5 }
}

content ধৰি ৰাখিবও পাৰে tool_use ব্লকছ এণ্ড এ thinking ব্লক, যাৰ signature খালী। stop_reason হৈছে end_turn, max_tokens, tool_use বা refusal, একে ধৰণৰ পদ্ধতিৰে কৰা হৈছিল finish_reason ওপৰত চ্যাট সম্পূৰ্ণ কৰক; stop_sequence সদায় হয় null, যেতিয়া এটা ষ্টপ চাৰ্য্য সমাপ্ত হৈছিল তেতিয়াও। input_tokens কেৱল নতুন ইনপুটহে গণনা কৰা হয়; কেশ্ব কৰা ইনপুট দুটা কেশ্ব ক্ষেত্ৰত আছে। nymbot বস্তু আৰু সেইটো X-Nymbot-Cost-Sats হেডাৰ।

প্ৰচাৰিত, ঘটনাসমূহ হ'ল Anthropic-ৰ: message_start, content_block_start, ping, content_block_delta (text_delta, input_json_delta বা thinking_delta), content_block_stop, message_delta বন্ধ হ্ৰাসৰ কাৰণৰ সৈতে, ব্যৱহাৰ আৰু সেইটো nymbot ব্যয়ৰ লক্ষ্যবস্তু, আৰু message_stopএ. ping মডেলটো কাম কৰি থকাৰ সময়ছোৱাত প্ৰতি ১৫ ছেকেণ্ডতো পঠোৱা হয়। টেক্সটৰ পিছত টুল কলসমূহ আহে, প্ৰতিটো এটা... tool_use ইয়াৰ সম্পূৰ্ণ ইনপুট এটাত ব্লক কৰক input_json_delta.

এই এণ্ডপইণ্টৰ ত্ৰুটিসমূহে Anthropic-ৰ ফৰ্মেট ব্যৱহাৰ কৰে: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}. A চমু ভাৰসাম্য হ'ল 402 billing_error, এটা অতিৰিক্ত ভৰ সম্পন্ন প্ৰদানকাৰু (an overloaded provider) 503 overloaded_error. ষ্ট্ৰিম আৰম্ভ হোৱাৰ পিছত এটা বিফলতা এটা ... হিচাপে পঠোৱা হয় error ঘটনা।

cURL

curl https://nymbot.ai/api/v1/messages \
  -H "x-api-key: $NYMBOT_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "What is a Lightning invoice?"}]
  }'

Python

import os
import anthropic

client = anthropic.Anthropic(base_url="https://nymbot.ai/api", api_key=os.environ["NYMBOT_API_KEY"])

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "What is a Lightning invoice?"}],
)
print(message.content[0].text)

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nymbot.ai/api", apiKey: process.env.NYMBOT_API_KEY });

const message = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "What is a Lightning invoice?" }],
});
console.log(message.content[0].text);

টোকেন গণনা কৰা হৈছে

এটানে কিমান ইনপুট টোকেন এটা Messages ৰিকোৱেষ্টে ব্যৱহাৰ কৰিব তাৰ এটা অনুমান, যাতে ক্লায়েণ্টে ইয়াক পঠোৱাৰ আগতে পৰীক্ষা কৰিব পাৰে। ই বিনামূলীয়া, কিন্তু তথাপিও এটা কী (key)ৰ প্ৰয়োজন।

POST https://nymbot.ai/api/v1/messages/count_tokens — এটা API key লাগিব। বিনামূলীয়া।

দেহটো একেই আছে প্ৰেৰিত বাৰ্তাসমূহ, অবিহনে max_tokensমডেলৰ নাম সমাধান কৰিব লাগিব। গণনা হৈছে এক অনুমানঃ চিস্টেম প্ৰমপ্টৰ আখৰ, বাৰ্তা, সঁজুলি কল আৰু সঁজুলিৰ সংজ্ঞাসমূহক চাৰিৰে ভাগ কৰা, আৰু প্ৰতিটো ছবিৰ বাবে 1,600 যোগ কৰা। ই প্ৰদানকাৰীৰ নিজৰ টোকেনাইজাৰ নহয়, সেয়েহে প্ৰকৃত গণনা পৃথক হ'ব পাৰে। ইয়াৰ কেপত উপনীত হোৱা এটা চাবি এতিয়াও ইয়াক ব্যৱহাৰ কৰিব পাৰে।

প্ৰতিক্ৰিয়া

{ "input_tokens": 318 }

cURL

curl https://nymbot.ai/api/v1/messages/count_tokens \
  -H "x-api-key: $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "What is a Lightning invoice?"}]
  }'

Python

import os
import anthropic

client = anthropic.Anthropic(base_url="https://nymbot.ai/api", api_key=os.environ["NYMBOT_API_KEY"])

count = client.messages.count_tokens(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "What is a Lightning invoice?"}],
)
print(count.input_tokens)

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nymbot.ai/api", apiKey: process.env.NYMBOT_API_KEY });

const count = await client.messages.countTokens({
  model: "claude-sonnet-5",
  messages: [{ role: "user", content: "What is a Lightning invoice?" }],
});
console.log(count.input_tokens);

মডেলসমূহ তালিকাভুক্ত কৰা হৈছে

API-এ গ্ৰহণ কৰা প্ৰতিটো মডেল আৰু জেনেৰেটৰ, ইয়াৰ খৰচৰ সৈতে। এই তালিকাখন এপটোৰ পিকাৰৰ (picker) দৰেই একে লাইভ কেটেলগৰ পৰা পঢ়া হয়, গতিকে ই সদায় সেইটোৱেই হ’ব যিটো চাৰ্ভাৰটোৱে চলাই থাকিব।

GET https://nymbot.ai/api/v1/models — কোনো চাবিৰ প্ৰয়োজন নাই। পাঁচ মিনিটৰ বাবে কেচ কৰা হৈছে।

GET /api/v1/models/{id} এটা এণ্ট্ৰী প্ৰদান কৰে।

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
typeস্ট্ৰিং (কুৱেৰী)নাই।chat (অবিকল্পিত), image, video, audio, embedding বা all. কেইবাটাও দিব পাৰি, যেনে image,video.

মূল্যবোৰ হৈছে আপুনি যি পৰিশোধ কৰে, ইতিমধ্যে মাচুল আৰু মাৰ্জিনৰ সৈতে, ডলাৰত আৰু বৰ্তমানৰ বিটকোইন মূল্যত ছেটত। balance মডেলটোৱে কোনটো ভাৰসাম্য ব্যয় কৰে সেইটো কয়। nymbot_key এপটোত মডেলটোৰ সংক্ষিপ্ত নাম। created প্ৰায়েই 0, কিয়নো কেটেলগটোৱে কোনো মডেল কেতিয়া যোগ কৰা হৈছিল তাৰ ৰেকৰ্ড ৰাখে নাই। প্ৰকাশিত টোকেন ৰেট নথকা এটা মডেলৰ মূল্য নিৰ্ধাৰণ কৰা হয় per_request ইয়াৰ পৰিৱৰ্তে।

nymbot/auto সদায় প্ৰথম, মূল্য হিচাপে variable, এটাৰ সৈতে routes প্ৰতিটো মানদণ্ডৰ ৰুটৰ হাৰসমূহ দিয়া তালিকাখনত Vision আৰু Reasoning উল্লেখ কৰা হৈছে, কিন্তু Tools উল্লেখ কৰা হোৱা নাই।

GET /api/v1/models/{id} অনুৰোধ হিচাপে একেটা নাম আৰু উপনাম গ্ৰহণ কৰে, আৰু তেওঁলোকে সমাধান কৰা মডেলৰ বাবে প্ৰৱেশ ঘূৰাই দিয়ে।

প্ৰতিক্ৰিয়া

{
  "object": "list",
  "data": [
    {
      "id": "anthropic/claude-sonnet-5",
      "object": "model",
      "type": "chat",
      "owned_by": "anthropic",
      "name": "Claude Sonnet 5",
      "created": 0,
      "context_length": 1000000,
      "max_output_tokens": 64000,
      "architecture": { "input_modalities": ["text", "image"], "output_modalities": ["text"] },
      "supported_parameters": ["max_tokens", "temperature", "tools", "tool_choice", "reasoning", "response_format", "stop"],
      "capabilities": { "vision": true, "video": false, "tools": true, "reasoning": true, "web_search": true },
      "balance": "pro",
      "pricing": {
        "type": "per_token",
        "currency": "USD",
        "input_per_1M_tokens": 4.725,
        "output_per_1M_tokens": 23.625,
        "cache_read_per_1M_tokens": 0.4725,
        "sats_input_per_1M_tokens": 4038,
        "sats_output_per_1M_tokens": 20192
      },
      "description": "...",
      "nymbot_key": "claude-sonnet"
    }
  ]
}

অন্যান্য প্ৰকাৰবোৰ:

  • ছবি প্ৰৱেশী থকা আছে capabilities (accepts_image_url, requires_image_url, edit) আৰু এটা মূল্য per_generation.
  • ভিডিঅ " প্ৰৱেশী থকা আছে max_duration_seconds আৰু resolutions, আৰু এটা মূল্য per_second প্ৰতিটো ৰিজলিউচনৰ বাবে।
  • অডিঅ' (Audio) প্ৰৱেশী থকা আছে audio_type speech বা transcription, মূল্য নিৰ্ধাৰণ কৰা হৈছে per_1k_chars বা per_minute.
  • অন্তৰ্ভুক্ত কৰা হৈছে প্ৰৱেশী থকা আছে dimensions, context_length, max_inputs আৰু প্ৰতি মিলিয়ন ইনপুট টকেনৰ এটা মূল্য।

মূল্য তালিকাভুক্ত কৰা হৈছে "estimated": true এয়া এপটোৰ এটা অনুমান যিটো জেনেৰেটৰৰ বাবে যাৰ মূল্য প্ৰকাশ কৰা হোৱা নাই। এটা অজ্ঞাত type ফলাফলসমূহ 400.

cURL

curl "https://nymbot.ai/api/v1/models?type=chat"

Python

import requests

models = requests.get("https://nymbot.ai/api/v1/models", params={"type": "chat"}).json()["data"]
for m in models:
    print(m["id"], m["balance"], m["pricing"].get("input_per_1M_tokens"))

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/models?type=chat");
const { data } = await res.json();
for (const m of data) console.log(m.id, m.balance, m.pricing.input_per_1M_tokens);