مواد پر جائیں۔
نمبوٹ پر واپس جائیں

علم کی بنیاد ڈویلپرز

چیٹ، جوابات اور پیغامات

کسی ماڈل سے کچھ پوچھنے کے تین طریقے، تین فارمیٹس میں کلائنٹ پہلے ہی بولتے ہیں، سب ایک ہی ماڈل پر چلتے ہیں اور اسی طرح بل دیتے ہیں۔

CHAT مکمل کریں

اوپن اے آئی چیٹ فارمیٹ، اور تقریبا ہر ٹول سپورٹ کرتا ہے۔ اب تک کی گفتگو بھیجیں اور اگلا پیغام واپس حاصل کریں۔

POST https://nymbot.ai/api/v1/chat/completions - ایک API کلید کی ضرورت ہے۔

صرف 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 0 سے 2 تک، top_p 0 سے 1 تک
stopسٹرنگ یا صفنہیںجواب کے اختتام پر متن: ایک string یا زیادہ سے زیادہ 4 string، ہر ایک زیادہ سے زیادہ 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 KB تعریفیں، زیادہ سے زیادہ 64 سطحوں پر گہری نیسٹڈ۔ 400.
reasoning_effort
reasoning
زمرہ:Objectنہیں"minimal", "low", "medium" یا "high"، یا {"effort": "high"}. "none" یا {"enabled": false} اسے بند کر دیں۔ دیکھیں دلائل.
pluginsصف بندینہیں[{"id": "web", "max_results": 5}] ہمیشہ سب سے پہلے ویب تلاش کرتا ہے.
nپورےنہیںصرف 1. کچھ اور واپس آتا ہے 400.
logit_bias
user
metadata
Object، String، Object کے بارے میںنہیںقبول کیا اور نہیں بھیجا گیا. logit_bias - 100 سے 100 تک کے نمبروں کے لیے زیادہ سے زیادہ 300 ٹوکن آئی ڈیز کے نقشے۔ user زیادہ سے زیادہ 256 علامات metadata زیادہ سے زیادہ 16 سٹرنگ ویلیوز، 64 حروف تک کیز اور 512 تک کی ویلیوز رکھتا ہے۔

جواب ایک معمول ہے chat.completionمیں قیمت کے ساتھ usage.cost ($) اور اس میں nymbot آبجیکٹ۔ model کیا حل شدہ ماڈل آئی ڈی ہے، اس لیے ایک مختصر نام مکمل نام کے طور پر واپس آتا ہے۔ اگر ماڈل جواب دینے سے پہلے استدلال کرتا ہے، تو اس کی استدلال میں ہے 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 کے علاوہ ؛ a :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 جواب سرور سے بھیجے گئے واقعات کے طور پر آتا ہے جب کہ ماڈل اسے لکھتا ہے۔ ہر واقعہ ایک ہے chat.completion.chunk اے پر data: لکیر، اور ندی اس کے ساتھ ختم ہوتی ہے data: [DONE]استدلال آتا ہے delta.reasoning_content، جواب میں delta.content.

کسی بھی ایسی چیز کو اسٹریم کریں جس میں تقریبا 100 سیکنڈ سے زیادہ وقت لگ سکتا ہے، جیسے کہ لمبا جواب، بڑا جواب max_tokens ایک درخواست جو سٹریم نہیں کی جاتی ہے، جواب مکمل ہونے تک کچھ بھی نہیں بھیجتی ہے، اور آپ اور Nymbot کے درمیان نیٹ ورک تقریبا 100 سیکنڈ کے بعد ایک غیر معمولی رابطے کو بند کر سکتا ہے؛ ماڈل اب بھی ختم ہوتا ہے اور وہ کیا لکھا ہے، چارج کیا جاتا ہے، لیکن جواب کھو جاتا ہے.

سلسلہ

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 فراہم کرنے والے کے باقی ٹرانسمیشن کو 25 سیکنڈ تک پڑھتا ہے، اس کے ٹوکن کی تعداد حاصل کرنے کے لئے، اور آپ ادا کرتے ہیں جو فراہم کنندہ رپورٹ کرتا ہے.
  • پہلے حصے سے پہلے ایک غلطی، جیسے 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, 22 اور تمہارا رفیق کوئی دیوانہ نہیں ہے400 invalid_image_url)۔ ایک اختیاری detail ہے auto, low یا high.

کے ساتھ nymbot/autoاس میں تصویر کے ساتھ ایک درخواست کو ایک معیاری ماڈل کی طرف روانہ کیا جاتا ہے جو دیکھ سکتا ہے۔ بغیر تصویر کے ایک کیٹلاگ ماڈل capabilities.vision اس کے ساتھ تصاویر لینے سے انکار کر دیتا ہے 400 unsupported_contentتصاویر صرف صارف کے پیغامات میں ہوسکتی ہیں. لنک کو ایک عوامی میزبان پر اشارہ کرنا چاہئے؛ Nymbot تصویر کو ماڈل کے سپلائر کو منتقل کرتا ہے اور اسے محفوظ نہیں کرتا.

ایک تصویر کو ان پٹ ٹوکن کے طور پر چارج کیا جاتا ہے جو فراہم کنندہ اس کے لیے شمار کرتا ہے، باقی درخواست کی طرح۔

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 درخواست کو معیاری دلیل کی راہ پر بھیجتا ہے.

انتھروپک ماڈلز پر کوشش تقریبا 1, 000، 2, 000، 8, 000 یا 16, 000 ٹوکن کا سوچنے والا بجٹ بن جاتی ہے، کبھی بھی اس سے زیادہ نہیں۔ max_tokens سوچنے کی اجازت دیتا ہے، سوچنے کی اجازت دیتا ہے tool_choice کسی ٹول کو مجبور کرتا ہے، اور جب درخواست ٹول لوپ کو جاری رکھتی ہے (اس کا آخری پیغام ٹول کا نتیجہ ہوتا ہے)، کیونکہ اینتھروپک کو اسے دوبارہ شروع کرنے کے لیے پہلے سے دستخط شدہ سوچ کی ضرورت ہوتی ہے۔ یہی بات جوابات اور پیغامات کے اختتامی نکات پر بھی لاگو ہوتی ہے۔

دلائل واپس آتے ہیں message.reasoning_content، یا delta.reasoning_content اسٹریمنگ کرتے وقت، جواب میں کبھی نہیں ملایا جاتا ہے۔ استدلال آؤٹ پٹ ہے اور اندر اس طرح چارج کیا جاتا ہے completion_tokensکچھ سپلائرز اصل میں دلیل کے متن کو واپس نہیں کرتے ہیں، اور یہ اب بھی چارج کیا جاتا ہے.

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قبول کیا گیا اور نظر انداز کیا گیا۔ ہر کیٹلاگ ماڈل کا ایک راستہ ہوتا ہے، اس لیے چننے کے لیے کوئی تیز، سستا یا لمبا راستہ نہیں ہے۔ لاحقہ کی اجازت ہے لہذا دوسری خدمات سے نقل کیے گئے ماڈل کے نام اب بھی کام کرتے ہیں۔

کسی بھی دوسرے لاحقہ کو نظر انداز کر دیا جاتا ہے۔ پورے نام کو پہلے آزمایا جاتا ہے، لہذا ایک ماڈل جس کی شناخت میں واقعی ایک کالون ہوتا ہے اب بھی کام کرتا ہے۔ ایسا نہ کرنے پر، لاحقہ کو ایک وقت میں آخر سے ہٹا دیا جاتا ہے جب تک کہ ایک ماڈل مماثل نہ ہو۔ ایک ماڈل کا نام زیادہ سے زیادہ 200 حروف لمبا ہو سکتا ہے جس میں زیادہ سے زیادہ 4 لاحقہ ہوتے ہیں۔ ایک طویل نام کے ساتھ انکار کر دیا جاتا ہے۔ 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);

کوئی بھی چیٹ ماڈل لائیو ویب سے جواب دے سکتا ہے۔ نمبوٹ آخری صارف کے پیغام (اس کے پہلے 2, 000 حروف) کی تلاش کرتا ہے، بہترین صفحات کو پڑھتا ہے اور انہیں سوال کے ساتھ ماڈل کو دیتا ہے، جسے بیرونی مواد کے طور پر نشان زد کیا گیا ہے جس سے ماڈل کو ہدایات نہیں لینی چاہئیں۔ دو طریقے ہیں:

  • ہمیشہ تلاش کریں: "plugins": [{"id": "web", "max_results": 5}]، یا اے :online ماڈل پر لاحقہ۔
  • تلاش کریں جب یہ مدد کرتا ہے: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}]کے طور پر بھی قبول کیا گیا web_search_preview یا openrouter:web_searchنمبوٹ صرف اس وقت تلاش کرتا ہے جب ایسا لگتا ہے کہ اسے موجودہ معلومات کی ضرورت ہے، وہی ٹیسٹ جو ایپ استعمال کرتا ہے۔

max_results ڈیفالٹ طور پر 5 ہے اور زیادہ سے زیادہ 10۔ ذرائع واپس آتے ہیں nymbot.web_search.sourcesہر ایک کے ساتھ ایک title, snippet اور urlاور جیسا url_citation پیغام پر دستخط کریں.

ہر تلاش جو چلتی ہے اس کی قیمت $0.008 ہے، جسے ٹوکن کے اوپر سیٹس میں تبدیل کیا جاتا ہے، اور یہ ہولڈ کا حصہ ہے۔ اس کے ذریعے پڑھے جانے والے صفحات بھی ان پٹ ٹوکن ہوتے ہیں، اس لیے ویب سے جواب کی قیمت اسی سوال سے زیادہ ہوتی ہے جو کبھی کبھی کئی گنا زیادہ پوچھا جاتا ہے۔

جواب، جزوی طور پر

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

جوابات API

OpenAI کے جدید ترین فارمیٹ، OpenAI ایجنٹس SDK اور کوڈکس کی طرف سے استعمال کیا جاتا ہے. یہ چیٹ مکمل کے ساتھ اسی ماڈل، فیسنگ اور خصوصیات پر چلتا ہے.

POST https://nymbot.ai/api/v1/responses - ایک API کلید کی ضرورت ہے۔

میدانقسممطلوبتفصیل
modelسٹرنگجی ہاںجہاں تک بات ہے CHAT مکمل کریں، لاحقہ شامل ہیں۔
inputسٹرنگ یا صفجی ہاںایک سٹرنگ، یا آئٹمز کی فہرست: پیغامات (کردار) user, assistant, system, developer) کے ساتھ input_text, input_image اور output_text حصے، اور function_call اور function_call_output آلات کے لیے اشیاء۔ input_image ایک لے image_url لنک یا ڈیٹا URL، ایک فائل ID نہیں ہے. reasoning اور web_search_call اشیاء کو چھوڑ دیا جاتا ہے ؛ item_reference انکار کیا گیا ہے
instructionsسٹرنگنہیںنظام کی ہدایات۔
max_output_tokensپورےنہیںسب سے زیادہ ٹوکری لکھنے کے لئے.
temperature
top_p
نمبرنہیںنمونہ کنٹرول، جہاں ماڈل ان کو لے جاتا ہے.
tools
tool_choice
parallel_tool_calls
صف، سٹرنگ یا آبجیکٹ، بولیننہیںفائلوں کے ساتھ کام کرنے کے لئے ({"type": "function", "name": …, "parameters": …}) اے۔ web_search یا web_search_preview ٹول آن ہو جاتا ہے ویب تلاش جب یہ مدد کرتا ہے تو دیگر داخلہ آلات کو رد کیا جاتا ہے.
reasoningاشیاءنہیں{"effort": "minimal" | "low" | "medium" | "high"}. xhigh اور max معنی high; none اسے بند کر دیں
text.format
response_format
اشیاءنہیںایک JSON نظام کے طور پر، یا json_object.
metadataاشیاءنہیںجواب میں تبدیل نہیں کیا گیا۔ زیادہ سے زیادہ 16 سیڑھیوں کے اعداد و شمار پر، زیادہ سے زیادہ 64 حروف اور زیادہ سے زیادہ 512 اعداد و شمار.
streamبولیننہیںاسٹریم ایونٹس جیسا کہ ذیل میں بیان کیا گیا ہے۔
storeبولیننہیںنظر انداز کیا گیا۔ کچھ بھی محفوظ نہیں ہے، اور جواب ہمیشہ کہتا ہے "store": false.
previous_response_id
conversation
background
String، Object، Boolean کے بارے میںنہیںمعاون نہیں: 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: A کے ساتھ لائن 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‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬ ‫‪ ،‬دوسرے‬‬ 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 پیغام

اینتھروپک کی شکل، اینتھروپک ایس ڈی کے اور کلاڈ کوڈ کے لیے۔ یہ کیٹلاگ کے ہر ماڈل کے ساتھ کام کرتا ہے، نہ صرف کلاڈ: درخواست کا ترجمہ کیا جاتا ہے، اسی پائپ لائن سے چلایا جاتا ہے، اور دوبارہ ترجمہ کیا جاتا ہے۔

POST https://nymbot.ai/api/v1/messages ایک API کلید کی ضرورت ہے، جیسا کہ x-api-key یا Authorization: Bearer.

کے anthropic-version اور anthropic-beta Anthropic ماڈل ناموں کی فہرست کے ساتھ مطابقت کی جاتی ہے، لہذا Claude Code اور SDKs ان ناموں کے ساتھ کام کرتے ہیں جو وہ پہلے سے ہی استعمال کرتے ہیں:

  • ایک نام جس کا کاتالٹ جانتا ہے، جیسے 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سٹرنگجی ہاںکیٹلاگ ماڈل آئی ڈی، یا اینتھروپک ماڈل کا نام۔
max_tokensپورےجی ہاںسب سے زیادہ ٹوکری لکھنے کے لئے.
messagesصف بندیجی ہاںuser اور assistant کے ساتھ مڑ جاتا ہے text, image (بیس 64 یا یو آر ایل ماخذ)، tool_use اور tool_result بلاکس۔ thinking پہلے کے موڑ کے بلاکس کو قبول کیا جاتا ہے اور گرا دیا جاتا ہے۔
systemسٹرنگ یا صفنہیںسٹرنگ یا ٹیکسٹ بلاکس کے طور پر سسٹم پرامپٹ۔
temperature
top_p
نمبرنہیںنمونہ کنٹرول، جہاں ماڈل ان کو لے جاتا ہے. top_k قبول اور چھوڑ دیا گیا ہے.
stop_sequencesStrings کے مترادفاتنہیںمتن جو جواب کو ختم کرتا ہے۔ زیادہ سے زیادہ 4 تار، ہر ایک میں زیادہ سے زیادہ 256 حروف۔
tools
tool_choice
صف، آبجیکٹنہیںTools کے ساتھ 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"}بجٹ ایک کوشش کی سطح کا انتخاب کرتا ہے: کم از کم 2.048، کم سے کم 2.048، 8192 اوسط سے، 16384 اعلی سے. 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 پر CHAT مکمل کریں; stop_sequence ہمیشہ ہوتا ہے null، یہاں تک کہ جب ایک سٹاپ سیکوینس جواب ختم کرتا ہے۔ input_tokens صرف تازہ داخلات کا حساب کرتا ہے؛ کیچ انٹرویو دو کیچ فیلڈز میں ہے. nymbot آبجیکٹ اور X-Nymbot-Cost-Sats ہیڈر

اسٹریمڈ، واقعات اینتھروپک کے ہیں: 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 یہ بھی ہر 15 سیکنڈ میں بھیج دیا جاتا ہے جبکہ ماڈل کام کرتا ہے. tool_use اس کے پورے ان پٹ کو ایک میں بلاک کریں input_json_delta.

اس اختتامی نقطہ پر غلطیاں اینتھروپک کی شکل کا استعمال کرتی ہیں: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}ایک مختصر توازن ہے 402 billing_error، ایک اوورلوڈڈ فراہم کنندہ 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);

Token کا حساب

اس بات کا تخمینہ کہ پیغامات کی درخواست میں کتنے ان پٹ ٹوکن استعمال ہوں گے، تاکہ کلائنٹ بھیجنے سے پہلے چیک کر سکے۔ یہ مفت ہے، لیکن پھر بھی ایک کلید کی ضرورت ہے۔

POST https://nymbot.ai/api/v1/messages/count_tokens - ایک اے پی آئی کلید درکار ہے۔ مفت۔

جسم وہی ہے جس کے لیے پیغاماتکے بغیر max_tokens، ماڈل کا نام حل کرنے کی ضرورت ہے. شمار ایک اندازہ ہے: سسٹم پائلٹ، پیغامات، آلے کالز اور آلے کی تعریفیں چار سے تقسیم کی جاتی ہیں، اس کے علاوہ ہر تصویر کے لئے 1,600. یہ سپلائر کے اپنے tokenizer نہیں ہے، لہذا حقیقی شمار مختلف ہوسکتا ہے.

جوابات

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

نمونوں کی فہرست سازی

ہر ماڈل اور جنریٹر جسے اے پی آئی قبول کرتا ہے، اس کی قیمت کے ساتھ۔ فہرست کو اسی لائیو کیٹلاگ سے پڑھا جاتا ہے جیسا کہ ایپ کا چننے والا ہوتا ہے، لہذا یہ ہمیشہ وہی ہوتا ہے جو سرور چلائے گا۔

GET https://nymbot.ai/api/v1/models - کوئی چابی درکار نہیں۔ پانچ منٹ کے لیے کیش کیا گیا۔

GET /api/v1/models/{id} ایک اندراج واپس کرتا ہے۔

میدانقسممطلوبتفصیل
typeسٹرنگ (استفسار)نہیںchat (ڈیفالٹ)، image, video, audio, embedding یا allکئی دیے جا سکتے ہیں، جیسا کہ image,video.

قیمتیں وہی ہیں جو آپ ادا کرتے ہیں، فیس اور مارجن کے ساتھ پہلے سے ہی، ڈالر میں اور موجودہ Bitcoin قیمت پر sats میں. balance یہ بتاتا ہے کہ ماڈل کون سا توازن خرچ کرتا ہے۔ nymbot_key ایپ میں ماڈل کا مختصر نام ہے. created ہمیشہ 0 ہے، کیونکہ کیتالیف نہیں ریکارڈ کرتا ہے جب ایک ماڈل شامل کیا گیا تھا. per_request اس کے بجائے

nymbot/auto ہمیشہ سب سے پہلے ہے، قیمت کے طور پر variable، اے کے ساتھ routes فہرست ہر معیاری راستے کی شرح فراہم کرتا ہے. یہ نقطہ نظر اور منطق کی فہرست ہے، لیکن اوزار نہیں.

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_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);