Эчтәлеккә күчү
Nymbotка кайтаргач

Белем базасы Разработчиклар

Чат, җаваплар һәм хәбәрләр

Модельдән берәр нәрәләрне сорауның өч тәсемәсе, клиентлар һәрчак кулланган өч форматта, барысы да бер төрле моделдә эшли һәм бер төрле тәсем белән түләү ителә.

Чат тулыландырулары

OpenAI чат форматы һәм бик күп инструментларка туры килешле формат. Хәзерге чатның башын җибәрегез һәм киләсе хәбәрне алыгыз.

POST https://nymbot.ai/api/v1/chat/completions — API ачкычы кирәк.

Гадӵа model һәм messages танышлы. Тәлап ителгәнなsampling параметры сайланган модельдә юк, шуңа күрә ул хатасыз сызыла, бик бер теллек (request body) барлык моделләр өчен дә яраша. Модельләр исемлеге һәр модельнең supported_parametersТүбәндәгеләр түшпадает, ә тантала: модель берничә мөмкинлекне яки эшне үමය авырулы эшләр: күрмәтә алмыйган модель өчен рәсемнәр, аларны чакыра алмыйган модель өчен инструментлар.

ТәнәсеТөпЗарылТасвирлама
modelсызыкӘйеnymbot/auto (яки auto) стандарт баланс буенча Nymbot маршрутизациясы өчен яки каталог моделе id-сы кебек, мәсәлән anthropic/claude-sonnet-5 Pro балансында. Приложениеның кыска имяләре һәм псевдонимнары да кабул ителә. 'a' белән тәмамлануы мөмкин алофикс.
messagesмассивӘйеСөйләшү. Рольләр system, developer (система булаها кабул ителә), user, assistant һәм tool. Content — бу strung яки список text һәм image_url бөлекләр; суратлар тик у пользователь хәбәрләрендә. input_audio һәм файл өлешләре кабул ителмәде.
streamбулеанЮкҖавапны язылганча җибәрегез. Кара стриминг.
stream_optionsпредметЮк{"include_usage": true} токенлар саны һәм чыгымнар белән бер topped өләш өстәргә.
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
массив, strung яки объект, booleanЮкФункция чакыру. Карагыз курал чакырулары. А web_search бер инструмент кабыла web searchМаксимум 128 инструмент һәм 512 КБ аныкламалар, максимум 64 уровень тиклектә; күбрәге — 400.
reasoning_effort
reasoning
строка, объектЮк"minimal", "low", "medium" яки "high", яки {"effort": "high"}. "none" яки {"enabled": false} бәхетсез итә. Кара ниһәйләргә җитәкләп бару.
pluginsмассивЮк[{"id": "web", "max_results": 5}] һәрвакыт аллабын интернеттә эчтәлек эзли. 10 нәтиҗәгә кадәр.
nбүтселЮкТөннә 1. Башка нәрсә булса да кайта kazanlar 400.
logit_bias
user
metadata
объект, строка, объектЮкКабул ителгән һәм алга җибәрелмәгән. logit_bias 300 токен ID-ны максимум -100 easily 100 аралындагы сандар белән бәйли; user чи максимал чик 256 символ; metadata максимум 16 строналы мәгълүматны, ключларны 64 символға кадәр һәм мәгълүматны 512 символға кадәр тоташтыра.

Җавап гадәттән-дие chat.completion, чыгымнар белән бергә usage.cost (долларга) һәм nymbot объект. model хәллителгән модель ID булып тора, шул начинәдә кыска исем тулы исем булып кайта. Әгәр модель җавап бирер алдыннан фикер юриeldә, аның фикерләнеше шурда 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Модель тоерлаган баланс блокланган сумманыCover итә алмый.
403Най ахшарак хәл өчен тәмәшкә капказы тушмый (key_limit_reached). Түбәрәк max_tokens яки чикне күтәрегез.
404Бу исемле модель юк (model_not_found).
429Ачкычның суырту лимиты, яки провайдернеңке (upstream_rate_limited).
502, 503Җиткерүче очкылды (upstream_error) яки aşırı yogın (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 арасындагы сеть 100 секундтан соң эшлимәгән bağlantны ябып торуы мөмкин; модель эшләп тә тәмамлый һәм ул язылганнар өчен акча алына, әмма җавап югалып китә. Стрим "keep-alive" сигналларын җибәрә, шуңа күрә модель язуы дәвам иткәнче ул ачык тора.

Агым

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]
  • Башлый сабырлар : модель размышләп яткан timescales, һәр 15 секундда җибәрелә торган keep-alive комментарилары. SSE клиентлары аларны тикшәм ụры.
  • Спрашуын "stream_options": {"include_usage": true} югарыдагы соңгы бүлекне, пуста... белән алырга өчен choices, токенлар саны, чыгыш һәм nymbot объект.
  • Төлләв яки түләү стрим тәмамлангач хезмәт күрсәтү өчен алына. Әгәр сез bağlantны вакытлыдан эцев, модель туктатылмый: Nymbot үзенең токенлар санына ирешү өчен провайдер стримының калган өлешен 25 секундка кадәр укый һәм сез провайдер хәбәрләгән сумманы түләйсәгез. Шул сан булмаган случаях түләү сезнең керүнегез һәм язылганнар нигезендә, плюс логик эшләгән модель өчен чыгарылырга мөмкин булган бүтлек күләме буенча баалана.
  • Тәүге блоктан алгары хата, мәсәлән 401 яки 402, статус кодыннан түгел, очракы JSON булып килә, ашкылау (stream) буларак түгел. Ашкылау башлангандан соңгы ошибка соңгы буларак килә data: {"error": {…}} вәкыйга, һәм стрим ...сыз тәмамлана [DONE].
  • Инструменты белән үткәреләгеч сураулар һәм OpenAI'ның Responses транспортын кулланырга моделләр провайдердан стрим итерелми. Алар җавап тәмамлангач, бер тапкыр җибәрелгән дөрес стрим белән җавап бирәләр.

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, һәм сөйләшүне беркаты җибәрү. Nymbot сезнең функцияләрегезне эшләтми; һул модельнең соравын сизге кайтара.

tool_choice алыйт "auto", "none", "required" яки {"type": "function", "function": {"name": "…"}}. Модельләр исемлеге кайсы моделләр инструментларны чакыра ала инеген билгелә (capabilities.tools). Курсалар китәреләләр 400 unsupported_tool өстендә nymbot/auto һәм OpenAI Responses транспортында эшли торган, Nymbot инструментлар бирә алмыйган кэталлог модельләренең чабурынчысында.

белән "stream": true, инструментлар белән үткәрүчен запрос бер бүлек итеп эшләнелә һәм аннан соң ормал чанклар ыерызы була бирелә: роль, һәр инструмент чакыруның индекса, id, исеме һәм аргументлары булган чанк һәм тәмамлау чанки. Стримле инструмент чакыруларын укыйган клиентлар аны ормал ысем тикшеләргә җергәкле итеп кабул итәләр.

Җавап, өлешлек итеп

"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. һәр сорау өчен 20тән артык рәсемгә кадәр. SVG рәсемнәр кабул ителми, шулай ук 4,096 символдан артык яки аның эчендә пользователим исеме яки пароль булган сыллыма да кабул ителми (400 invalid_image_url). Мекәп ителгән detail бар auto, low яки high.

белән nymbot/auto, сюрәтле сорау күреп толучы стандарт модельгә юллана. Каталог модель... capabilities.vision суратларга китми</text> 400 unsupported_contentСуратлар тик уlaşıучылар хәбәрләрендә гына булырга мөмкин. Сылган публик хостингка барып тирергәti; 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 модель исеменә, ул зур көчне аңлата. Размышлау (reasoning) юк булмаган модельдә бу параметр игнорилана. nymbot/auto, :thinking загламны стандарт логик маршрутына җибәрә

Anthropic моделләрендә чалкыу сәбәпле генә таفكير бюджетының күләме яки 1,000, 2,000, 8,000 яки 16,000 токеннарга тикшикле була, башкача авазым түгел max_tokens рөхсәт бирә. Дө阱ләү ... вакытта туктатыла tool_choice бер инструментны кулланырга мәҗбүр итә, һәм зыянатlı таләп инструмент циклының дәвам итүенә (аның соңгы хәбәре инструмент нәтиҗәсе) алып килсә, чөнки Anthropic элегтәге имзаланган фикерләргә улны дәвам итү өчен кирәкле. Бу шул ук Responses һәм Messages эндпоинтларына да кагыла.

Аргументлар кайта килә message.reasoning_content, яки delta.reasoning_content стриминг яуллыйнда, җавап белән бергә аралаштырмарга кирәк. Исәпләү (Reasoning) — чыгыш һәм ул шулай ук т료лләнә, эчендә 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);

Модель аломылары

Модель исемендәге а hậu башка запросның ничек эшчәнлек күрсәтүшен башка поле без үземәч син değiştir. Алар тулы idлар һәм кыска исемләр белән бер теләгәнчә эшлиләр, мәсәлән anthropic/claude-sonnet-5:online.

АлонимЭффект
:onlineТөп өйдә интернеттән эзлә, мисал өчен plugins: [{"id": "web"}]Булыш. web search.
:thinkingВысокая уйлашу чарасы; кабыт nymbot/auto, дәлилләү юлы. Дәлиллә нельзя булган модельдә, 400 model_not_found «бернекләр табылмады» белән.
:nitro, :floor, :exacto, :extendedКабул ителде һәм игнворланды.Һәр каталог моделе бер юлны эйе, шулай өчен сайларгалыктай тизрәк, дешевле яки озынрак юл юк; суффиксләргә рөхсәт бирләгән, шулай өчен башка сервислардан күчтәрелгән модель исемнәрләре дә эшлый була.

Башка берSuffix игнөлгә алына. Алтtach имя башында тулылыгы белән тикшәрелә, шуңа күрә id-сы ике бүлеккә бүленгән модель дә эшлый, ә ул эшләмәс булса, модельかいтшаш битмәгәнчә аның ахыргы suffix-лары бер-берт алына. Модель исеме максимум 200 символ һәм максимум 4 suffix булырга мөмкин; уңышсыз, аннан озынрак исеме түбәндәгечә кабул ителми: 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 соңгы пользователь хәбәрен (аның алгачкы 2,000 символын) эзләгән timescales, иң яхшы бишләрне укыган һәм аларны сорау белән бергә модельгә бирә, алар модель инструкцияләр алырга тиеш булмаган тышкы контент итеп билгеләнә. Ике режим бар:

  • Һәрвакыт эзләгез: "plugins": [{"id": "web", "max_results": 5}], яки а :online модельдәге а hậu (suffix).
  • Ярдәм иткәндә эзлә: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}], шулай ук ... дә кабул ителә web_search_preview яки openrouter:web_search. Nymbot билгелекле мәгълүмат кирлекле диерек сораулар күрелгәндә генә тикшерү ясый, приложение кулланырга бер төрле тест.

max_results 5 стандарт булып тора һәм максимум 10. Чиенәрләр түeläләр nymbot.web_search.sources, һәрберсе ... белән title, snippet һәм url, һәм чәければ url_citation хәбәргә аңлатмалар.

ҺәрBer эшләтелгән эзләү токеннарнан өстәп, sats-ларга converted ителгән $0.008 казах, һәм ул hold өлеше булып тора. Ул укыган бишәтләр дә input токеннар булып тора, шуңа күрә интернеттан алынган җавап бер бәйләнешле сораудан күбрәк казахландыра, кайчаклыгендә берничә тапкыр күбрәк.

Җавап, өлешлек итеп

"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 Agents SDK һәм Codex тарафыннан кулланыла торган OpenAIның яңа форматы. Ул Chat Completions белән бер төрле модельдарда, түләү системасында һәм функцияларда эшли.

POST https://nymbot.ai/api/v1/responses — API ачкычы кирәк.

ТәнәсеТөпЗарылТасвирлама
modelсызыкӘйеБу төさい... Чат тулыландырулары, аничкәр өзеекмәләр белән бергә.
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
массив, strung яки объект, booleanЮкФункция инструментлары, Responses формасында ({"type": "function", "name": …, "parameters": …}). А web_search яки web_search_preview бер инструмент кабыла web search күмәк булганда. Башка кереш инструментлар кабул ителми.
reasoningпредметЮк{"effort": "minimal" | "low" | "medium" | "high"}. xhigh һәм max мәне high; none уны өчтә.
text.format
response_format
предметЮкСтруктуралы чыгарыш, JSON схемасы булача яки json_object.
metadataпредметЮкҖавапта үзгәрешсез калдырылды. Максимум 16 төрле строка мәсьәләсе, ключлар 64 символга кадәр һәм мәсьәләләр 512 символга кадәр.
streamбулеанЮкТүбәндәгечә стримlaпsend итерүләрне үткәрегез.
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 һәм equally эле нәрсә call_id. Фикрләү, модель аны кайтарганда, ул ... reasoning чыкма белән reasoning_text төзелмә, беренче итеп күрсәтелгән. status бар incomplete Җавап аңлашып килгәндә max_output_tokens яки провайдер баш тартты, белән incomplete_details.reason сетка max_output_tokens яки content_filterҖавап OpenAI ми аналоги кебек сорауның параметрларын да (temperature, tools, tool choice һәм башкалар) кайтарта, һәм... 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); destekләмәгән инструмент яки контент тибы.
402, 403, 404, 429, 502, 503Chat Completions турында булса.

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 форматы, Anthropic SDK һәм Claude Code өчен. Ул тик Claude түгел, каталогдагы һәрбер модель белән дә эшли: сорау тәрҗемә ителә, бер процесс аша үтә һәм кайтырча тәрҗемә ителә.

POST https://nymbot.ai/api/v1/messages — API ачкычы кирәк, чөнки x-api-key яки Authorization: Bearer.

Бу anthropic-version һәм anthropic-beta headers кабул ителә һәм барнатыла. Anthropic модел исемнәре каталог белән җәймерләнә, шуңа значит Claude Code һәм SDKлар үзләре куллана торган исемнәр белән эшли:

  • Каталог белгән имя, мәсәлән claude-sonnet-5 яки anthropic/claude-opus-5, үз эсе чикләнгән күләмдә кулланыла.
  • Иначе дата (-20260514), -latest, версия тегы аерымы кебек -v1, төрле кундаклы тег мисал өчен [1m] һәм anthropic/ яки anthropic. префиксләр алына, әле версиядагы нуктар һәм тиреләр ике төрле тәсьәр ителә (claude-haiku-4-5 табылушлар claude-haiku-4.5).
  • Әгәрде ул һ topped нинди дә нәрсәгә дә тутмамса, каталогның версиясы соралуче версиядан дә куп яки шундый булса, семья (Opus, Sonnet яки Haiku) кулланыла.
  • Матчлы бернәрсе дә булмаган исем кайта була 404 not_found_error.
ТәнәсеТөпЗарылТасвирлама
modelсызыкӘйеКаталог модель ID, яки Anthropic модель исеме.
max_tokensбүтселӘйеЯзу өчен иң күп токеннар.
messagesмассивӘйеuser һәм assistant бөрелмәләр, белән text, image (base64 яки URL чыганагы), tool_use һәм tool_result блоктар. thinking түгәрән turnнардан калган блокнар кабул ителә һәм түбәлгә ташлана.
systemстрока яки массивЮкСистема промпты, сыйгым булача яки текст блоклары булача.
temperature
top_p
санЮкСемплинг контрольләре, модель аларны каердән ала. top_k кабул ителә һәм түштерелә.
stop_sequencesстрокалар массивыЮкҖавапны тәмамлый текст. Максимум 4 сабырлык, һәрберсе максимум 256 символ.
tools
tool_choice
массив, объектЮкКоллекциялары белән инструментлар name, description һәм input_schema. А web_search Сервер инструменты кабырга web search; Anthropicның башка ичке инструментлары (bash, текст редакторы, компьютер куллану) ... белән киттелгән unsupported_tool. tool_choice алыйт auto, any, tool яки none, һәм disable_parallel_tool_use.
thinkingпредметЮк{"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} яки {"type": "disabled"}Бюджет чаynaу seviэлен: 2,048 аша минималь, 2,048-ннән башлап төбә, 8,192-нән башлап уртача, 16,384-нән башлап югары. Адаптив шуны куллана 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 шәмәлә, модель эшләгән timescalesда һәр 15 секунд сайын җибәрелә. Куралларга чакырулар тексттан соң килә, һәрберсе... tool_use блок аның барлык керү көйләшләре белән бергә input_json_delta.

Бу эндпоинттагы хаталар Anthropic форматын кулланалар: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}. А кыска баланс — 402 billing_error, aşырык йөкләмә дәүләт непредоставл하게 җыелгән провайдер 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 запиты нинди күп кереш токеннарын кулланырга дигән балау, клиент җибәрмәдән әл دە прежде тикшерә алу өчен. Бу төлсемсез, ләкин аңа ключ кирәк.

POST https://nymbot.ai/api/v1/messages/count_tokens — API ачкычы кирәк. Мәсәфи.

Тән алдагыдагы кебек Хәбәрләр,сезсез 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 кабул иткән һәрBer модель һәм генератор, аларның баهاсы белән. Төләрмә приложение селекторы белән бер төлкәлмәктәге (live catalog) укыла, шулай итеп ул һәрвакыт сервер фигелдәге нәрсә булырга шундый була.

GET https://nymbot.ai/api/v1/models — ачәрлек кирәк түгел. Биш минутлы timescales өчен кешталды.

GET /api/v1/models/{id} бер берәмлек катырга кайтара.

ТәнәсеТөпЗарылТасвирлама
typeстрока (запрос)Юкchat (төп), image, video, audio, embedding яки all. Кулланырга була, мисал өчен: image,video.

Багалр — ул сиз түләүче нәрсә, комиссия һәм маржа алдыннан кертелгән, долларнарда һәм хәзерге Bitcoin баهاсындагы сатсаlarda. balance модель каsemaphore балансны каердан югатырга тиешлеген әйтә. nymbot_key модельнең кыскача исеме приложениеда. created һәм дә всегда 0, чынбылан каталог модель кайчан өстәлгә белдермәгән. Чәкъәбәрle токен бәхәләренәses без яөрелгән модель бәхәсле 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 һәм миллион керү токеннары өчен<br>билгеләнгән цена.

Фәйннарлар билгеләнгән "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);