Белем базасы Разработчиклар
Чат, җаваплар һәм хәбәрләр
Модельдән берәр нәрәләрне сорауның өч тәсемәсе, клиентлар һәрчак кулланган өч форматта, барысы да бер төрле моделдә эшли һәм бер төрле тәсем белән түләү ителә.
Бу бит уңайлык өчен машинага тәрҗемә ителгән. Инглизчә оригиналь - кулланыла торган версия.
Чат тулыландырулары
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_tokensmax_completion_tokens | бүтсел | Юк | Язылырга мөмкин булган токеннарның максималь саны. Әгәр күбрәк булса, модельның максималь күләменә кадәр төшәрелә. Шул ук балансыгыздан ниччә акча алынырга икәнен дә билгели, шуңа күрә кечкенәрак сан башларга азрак кредит тәләп итә. |
temperaturetop_p | сан | Юк | Танлау контрольләре: temperature 0-тән 2-гә кадәр, top_p 0-дан 1-гә. |
stop | строка яки массив | Юк | Җавапны тәмамлый текст: берString яки максимум 4 String, һәрберсе максимум 256 символ. Шуннан файдаланмый nymbot/auto. |
seed | бүтсел | Юк | Модель бу негойлык кабул иткәндә, кайталанышлы семплинг өчен. |
presence_penaltyfrequency_penalty | сан | Юк | Кайталану контролләре, һәрберсе -2-дән 2-гә кадәр. |
response_format | предмет | Юк | {"type": "json_object"} яки {"type": "json_schema", "json_schema": {…}}, модель аныклый турган җирдә. Истетелми nymbot/auto. |
toolstool_choiceparallel_tool_calls | массив, strung яки объект, boolean | Юк | Функция чакыру. Карагыз курал чакырулары. А web_search бер инструмент кабыла web searchМаксимум 128 инструмент һәм 512 КБ аныкламалар, максимум 64 уровень тиклектә; күбрәге — 400. |
reasoning_effortreasoning | строка, объект | Юк | "minimal", "low", "medium" яки "high", яки {"effort": "high"}. "none" яки {"enabled": false} бәхетсез итә. Кара ниһәйләргә җитәкләп бару. |
plugins | массив | Юк | [{"id": "web", "max_results": 5}] һәрвакыт аллабын интернеттә эчтәлек эзли. 10 нәтиҗәгә кадәр. |
n | бүтсел | Юк | Төннә 1. Башка нәрсә булса да кайта kazanlar 400. |
logit_biasusermetadata | объект, строка, объект | Юк | Кабул ителгән һәм алга җибәрелмәгән. 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 | бүтсел | Юк | Язу өчен иң күп токеннар. |
temperaturetop_p | сан | Юк | Семплинг контрольләре, модель аларны каердән ала. |
toolstool_choiceparallel_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.formatresponse_format | предмет | Юк | Структуралы чыгарыш, JSON схемасы булача яки json_object. |
metadata | предмет | Юк | Җавапта үзгәрешсез калдырылды. Максимум 16 төрле строка мәсьәләсе, ключлар 64 символга кадәр һәм мәсьәләләр 512 символга кадәр. |
stream | булеан | Юк | Түбәндәгечә стримlaпsend итерүләрне үткәрегез. |
store | булеан | Юк | Игнорланган. Ничтә дә сакланмый, һәм җавап һәрвакыт түлдә әйтә "store": false. |
previous_response_idconversationbackground | строка, объект, булев | Юк | Кулланырга кирәк түгел: 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, 503 | Chat 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) кулланыла.
- Матчлы бернәрсе дә булмаган исем кайта була
404not_found_error.
| Тәнәсе | Төп | Зарыл | Тасвирлама |
|---|---|---|---|
model | сызык | Әйе | Каталог модель ID, яки Anthropic модель исеме. |
max_tokens | бүтсел | Әйе | Язу өчен иң күп токеннар. |
messages | массив | Әйе | user һәм assistant бөрелмәләр, белән text, image (base64 яки URL чыганагы), tool_use һәм tool_result блоктар. thinking түгәрән turnнардан калган блокнар кабул ителә һәм түбәлгә ташлана. |
system | строка яки массив | Юк | Система промпты, сыйгым булача яки текст блоклары булача. |
temperaturetop_p | сан | Юк | Семплинг контрольләре, модель аларны каердән ала. top_k кабул ителә һәм түштерелә. |
stop_sequences | строкалар массивы | Юк | Җавапны тәмамлый текст. Максимум 4 сабырлык, һәрберсе максимум 256 символ. |
toolstool_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_typespeechяки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);