Bażi ta 'għarfien Żviluppaturi
Chat, Risposti u Messaggi
Tliet modi biex tistaqsi mudell xi ħaġa, fis-tliet formats li l-klijenti jużaw wisela, kollha taħt l-istess mudelli u b'l-istess mod ta' fatturazzjoni.
Din il-paġna hija tradotta bil-magni għall-konvenjenza. L-oriġinal bl-Ingliż huwa l-verżjoni li tapplika.
Chat Completions
Il-format ta' chat tal-OpenAI, u dak li kważi kull għodda tappoġġa. Ibgħat il-konversazzjoni sa('%) issa u iqteddan l-aħjar messaġġ.
POST https://nymbot.ai/api/v1/chat/completions — jeħtieġ ċav API.
Chekk model u messages reqjiet. Parametru ta' kampjunazzjoni li l-mudell magħżul ma jieħu xejn huwa mħassir mingħajr żball, għalhekk korpus ta' petizzjoni wieħed jaħdem fuq mudelli differenti. Il-lista tal-mudelli tagħti għal kull mudell il- supported_parametersHuwa li jiġi rfidut minn qabel li jidħol f'kull xi ħaġa li l-mudell ma jistax jagħmel għal kollox: ritratti għal mudell li ma jistax jara, għodod għal mudell li ma jistax isejjaħhom.
| Kamp | Tip | Meħtieġ | Deskrizzjoni |
|---|---|---|---|
model | String | Iva | nymbot/auto (jew auto) għat rerouting ta' Nymbot fuq il-bilanċ standard, jew id ta' mudell tal-katalogu bħal anthropic/claude-sonnet-5 fuċi l-balanċ Pro. Is-isem qasir u l-alias tal-app humani wkoll. Jista' jintemm b'a suffissi. |
messages | array | Iva | Il-konversazzjoni. Roli system, developer (ittrattat bħala sistema), user, assistant u toolIl-kontenut huwa string jew lista ta' text u image_url parti; ritratti biss fil-messaġġi tal-utenti. input_audio u parts tal-fajl jirrifutaw. |
stream | boolean | Le | Ibgħat it-tweġiba kif hija miktuba. Tara streaming. |
stream_options | oġġett | Le | {"include_usage": true} jżid parti finali b'kontijiet tat-token u l-kost. |
max_tokensmax_completion_tokens | integer | Le | L-aktar tokens biex jintitfu. Inżamlet għal massimum tal-mudell jekk tkun ogħla. Issettja wkoll kemm amount jiġi żżomm mill-baġit tiegħek, għalhekk numru iżgħarriż ieqleb bżonn kreditu mniej biex jibda. |
temperaturetop_p | numru | Le | Kontrolli tal-kampjonament: temperature mill-0 għal 2, top_p minn 0 għal 1. |
stop | string jew array | Le | Test li jtemm it-tweġiba: string jew massimament 4 string, kull wieħ massimament ta' 256 karatteri. Mhuqx użat minn nymbot/auto. |
seed | integer | Le | Għal kampjonar ripetibbli, fejn il-mudell jappoġġih. |
presence_penaltyfrequency_penalty | numru | Le | Kontrolli tal-ripetizzjoni, kull wieħ mill-2 hekk kif -2 għal 2. |
response_format | oġġett | Le | {"type": "json_object"} jew {"type": "json_schema", "json_schema": {…}}, fejn il-mudell jappoġġih. Mhux użat minn nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string jew object, boolean | Le | Ħdan issejjaħ il-funzjoni. Xogħol sejħiet għal għodda. A web_search l-għodda tinfeta tfittixija fuq l-webMassim ta' 128 għodod u 512 KB ta' definizzjonijiet, imnestati massim ta' 64 livelli ta' profondità; aktar huwa a 400. |
reasoning_effortreasoning | string, oġġett | Le | "minimal", "low", "medium" jew "high", jew {"effort": "high"}. "none" jew {"enabled": false} itfan. Tara raġunament. |
plugins | array | Le | [{"id": "web", "max_results": 5}] dejjem ifittex fuq l-web l-ewwel. Sal-massim ta' 10 riżultati. |
n | integer | Le | Biss 1. Kull xejn ieħor jirritorna. 400. |
logit_biasusermetadata | oġġett, string, oġġett | Le | Aċċettat u mhux imkejjjel fuq. logit_bias immappja massimum ta' 300 ID tal-token lejn numri minn -100 għal 100; user hu isfel ta' 256 karakteri; metadata iħżem enċim maximu ta' 16 valuri tal-istring, keys sal-64 karakteri u valuri sal-512. |
Ir-risposta hija ordinarja chat.completion, bil-kost f' usage.cost
(fid-dollars) u fil- nymbot oġġett. model huwa l-ID tal-mudell irrisolut,
għalhekk ismi qasir jiġi rritornat bħala dak sħiħ. Jekk il-mudell ħażen qabel ma jwieġeb, ir-
raġunament tiegħu jinsab f' message.reasoning_content, separat mill-risposta.
Rispons
{
"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 ġie kalkulat minn dak li ġie rritornat, poiché l-fornituri jirrapportawha
differmenti: tool_calls meta l-mudell talep għal għodod, length meta
l-ispett siegħed uża kull token permess (jew il-mudell ħallas kollha u mwiexi xejn
ispett), content_filter meta l-fornitur irrefuża, u stop
otherwise. usage.completion_tokens_details.reasoning_tokens dejjem huwa 0: moħbi
it-token tal-moħħa qed jiġu kontati, u rritratati, f' completion_tokens.
| Status | Meta |
|---|---|
400 | Le model jew messages (missing_required_parameter); parti tal-awdjo jew fajl, jew ritratti għal mudell li ma jistax jaraهم (unsupported_content); aktar minn 20 ritratt (too_many_images); parametru ta' kampjunazzazzjoni tal-otip inqogħod jew barra mill-madma (invalid_value); link ta' ritratt li mhux pubbliku (invalid_image_url); għodod fuq mudell li ma jistax iċċempelhom (unsupported_tool); n minn ħarġew minn 1; a :thinking suffissi fuq mudell li ma jistax jagħmel ragionament (model_not_found); jew il-fornitur irrifjuta t-talba (upstream_rejected). |
402 | Il-bażi li l-mudell juża ma tista'x tkopri l-hold. |
403 | Il-każ l-agħar minn dan ma jaqqax mal-qoprija tal-klavijiet (key_limit_reached). Niżżej max_tokens jew żżid il-limitu. |
404 | Nefih mudell b'dak isem (model_not_found). |
429 | Il-limitazzjoni tar-rata tal-iklja, jew tal-fornitur (upstream_rate_limited). |
502, 503 | Il-fornitur falla (upstream_error) jew huwa sovrab (upstream_overloaded, b' Retry-After). Xejn ma jiġi ċċarġat im إلا jekk il-fornitur ma jixxellufx għall-attentat. |
Il-kodiċi tal-istatus li kull endpoint jaqsam huma elenkti taħt errogi.
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);
Streaming
Ma' "stream": true l-ispettar jasal bħala server-sent events waqt li l-mudell jiktbu
hija. Kull avveniment huwa a chat.completion.chunk fuq a data: linja, u l-
istrim jintemm b' data: [DONE]. Ir-raġunament jasal f'
delta.reasoning_content, it-tweġiba f' delta.content.
Istrajja kull xi ħaġa li tista' tieħu aktar minn madwar 100 sekond, bħal tweġiba twila, xi ħaġa kbira
max_tokens jew mudell ta' ragionament. Rieqwesta li mhix imstreamata ma tibgħatx xejn sakemm it-tweġiba tkun kompleta, u n-netwerk bejn inti u Nymbot jista' jagħlaq konezzjoni inattiva wara madwar 100 sekonda; il-mudell ikompli u dak li kitbet jiġi ċċarġat, iżda t-tweġiba tintilef. Stream jibgħat 'keep-alives', għalhekk jibqa' miftuħ skont kemm il-mudell jikteb.
Sajla
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]
- Linji li tibda b'
:xkom kummenti keep-alive, ims Barbija kull 15 sekonda waqt li l-mudell qed jaħseb. Il-klienti SSE jgħodlu fuqhom. - Ħares għal
"stream_options": {"include_usage": true}biex tikseb il-parti l-aħħar fuq, b'wieħed voj emptychoices, il-konti tat-token, il-kost u l-nymbotoġġett. - Il-charge jissettja wara li tispiċċa l-streaming. Jekk tagħlaq il-konnessjoni prematurament, il-mudell mhuwiex iwaqqaf: Nymbot jaqra s-strażijiet tal-fornitur, għal massimArr hum 25 sekondi, biex jilqas il-kont tax-token tiegħu, u int tħallas dak li jirrapporta l-fornitur. Mingħajr dak il-kont, il-charge jiġi stima mill-input tiegħek u minn dak li kien miktub, plus l-għan kollu tal-output għal mudell li janalizza.
- Error qabel l-ewwel parti, bħal
401jew402, jirritorna bħala JSON ordinarju bil-kodiċi status tiegħu, mhux bħala stream. Error wara li l-stream tibda jiġi rċevut bħala l-aħħardata: {"error": {…}}avveniment, u l-istrim jintemm mingħajr[DONE]. - Ir-requestijiet b'għodod, u l-mudelli fuq it-trasport Risponsijiet ta' OpenAI, ma jagħtux streaming mill-fornitur. Xorta jwieġdu b'streaming validu, li jiġi trażmetti minn meta l-tweġiba tkun kompleta.
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);
}
Appelli ta' strumenti
Deskrivi l-funzjonijiet f' tools u l-mudell jista' jitlob li wieħed jiċċempel minflok
iwieġeb. Int tiġri l-funzjoni, iżżid ir-riżultat tagħha bħala a tool messagg fuq l-istess
tool_call_id, u erġa' ibgħat il-konversazzjoni. Nymbot qatt ma jexxi l-funzjonijiet tiegħek;
huwa jgħaddi l-istaqsija tal-mudell lura għalik.
tool_choice tieħu "auto", "none",
"required" jew {"type": "function", "function": {"name": "…"}}Il-lista tal-modelli timmarka liXI mudelli jistgħu jċċempelaw għodod (capabilities.tools). L-għodod huma
rifiġut b' 400 unsupported_tool fuq nymbot/auto u fuq
il-ftit mill-modelli tal-katalogu li jaħdmu fuq it-trasport ta' Responses ta' OpenAI, li Nymbot ma jistax jgħaddi għalihom għodod.
Ma' "stream": true, talba b'għodod taġixxi f'part ieħda u mbagħad tintiexi bħala
sekwenza normali ta' partijiet: ir-rwol, part ieħda li ġġib kull appel għall-għodda b'l-index, id, ismi u
argumenti tagħha, u l-part tal-finijiet. Il-klijenti li jaqraw tcalls tal-għodda streamed jittrattawha bħalxxejn.
Risposta, parzjalment
"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);
Ritratti f'rikwistjoni
Modelli ma' capabilities.vision jista' jaqra ritratti. Żid ... image_url
parti ta' messaġġ għall-utenti, b'wieħed jew pubbliku https:// link jew a
data:image/…;base64, URL. Sal‐inteдж 20 tal-istampa għal kull talba.
L-istampi SVG huma
rifiżati, u l-istess għal link li jgħaddi minn 4,096 karakteri jew wieħed li għandu username jew password fih
(400 invalid_image_url). Fakultattiv detail huwa
auto, low jew high.
Ma' nymbot/auto, talba b'ritratt fiha hija mowna għal mudell standard li
なestà jista' jara. Mudell tal-katalogu mingħajr capabilities.vision jirrifjuta ritratti b'
400 unsupported_content. Ir-ritratti jistgħu jkunru biss fil-messaġġi tal-utenti.
Link għandu jaggiċi għal host pubbliku; Nymbot jgħaddi r-ritratt lill-fornitur tal-mudell u
machekkijux.
Immaġni tiġi ċċarġata bħala l-tokens tal-input li l-fornitur jgħod għaliha, bħal il-bqija tar- requistjoni.
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);
Razzonament
Modelli ma' capabilities.reasoning jistgħu jaħsbu qabel ma jwieġbu. Istaqsi għal aktar jew mniej
minnu b' reasoning_effort ("minimal", "low",
"medium" jew "high") jew "reasoning": {"effort": "high"}, jew
żid :thinking għall-isem tal-mudell, li jfisser sforz għoli. Fuq mudell mingħajr raġunament l-issettjar jiġi injorat. B' nymbot/auto, :thinking issends ix-
talba għar-route tal-logika standard.
Fuq il-modelli ta' Anthropic, l-isforz isir budget ta' ħsieb ta' madwar 1,000, 2,000, 8,000 jew 16,000
tokens, qatt aktar minn max_tokens tippermetti. Il-ħsieb jitwaqqaf meta
tool_choice iġbed għal tool, u meta l-ijaħbet il-joniest ikompli loop ta' tool (l-aħħar
messaġġ tiegħu huwa riżultat ta' tool), għax Anthropic għandha bżonn il-ħsieb imsigillat preċedenti biex tkompli.
L-istess japplika fuq l-endpoints tal-Responses u tal-Messages.
Ir-raġunament jerġa' jidħol message.reasoning_content, jew
delta.reasoning_content meta tistradmi, qatt ma nothing imħallat fl-istampa. Ir-raġunament huwa
output u huwa miżwergħ fuq dan, ġewwa completion_tokensXi provdejers ma jirritornawx affatto t-test tal-raġunament, u madankollu jiġi ċċarġjat.
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);
Sufissi tal-mudell
Suffissi fuq isem il-mudell jibdel kif tiġi mmaniġjata r-requesta, mingħajr kamp mill-ieħor.
Huma jaħdmu fuq ID's sħaħ u fuq ismi qosra bl-istess mod, bħal f' anthropic/claude-sonnet-5:online.
| Suffissu | Effett |
|---|---|
:online | Ikkellem l-web l-ewwel, bħal plugins: [{"id": "web"}]. Tara tfittixija fuq l-web. |
:thinking | Effort ta' ragionament għoli; fuq nymbot/auto, ir-rut tal-logika. Fuq mudell li ma jistax jirreġuna, 400 model_not_found bil “ebda pontijiet magħqud instab”. |
:nitro, :floor, :exacto, :extended | Aċċettat u mdejjaq. Kull mudell tal-katalog għandu ruta waħda, għalhekk m'hemmx toqgħa aktar veloci, aktar irżol jew ittrabba li għandek tagħżel; s-suffissi huma permessi sabiex ismi tal-mudelli maħduda minn servizzi oħra għadassim tkunu operazzjonali. |
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​&# 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);
Ispazju tal-web
Iċ-ċavrat kull mudell ta' chat jista' jwieġeb mill-web live. Nymbot ifittex l-aħħar messaggio tal-utent (l-ewwel 2,000 karatteri tiegħu), jaqra l-aqwa paġni u jagħtihom lill-mudell madal mistoqsija, immarkati bħala kontenut estern li l-mudell ma għandux jieħu instruzzjonijiet minnu. Hemm żewġ modi:
- Ippressi dejjem bil-ħsieb ta' tfittixija:
"plugins": [{"id": "web", "max_results": 5}], jew a:onlinesuffissu fuq il-mudell. - Irfek meta jgħin:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}], ukoll aċċettat bħalaweb_search_previewjewopenrouter:web_search. Nymbot ibbażża sħar biss meta l-mistoqsija tidher li għandha bżonn informazzjoni kurrenti, l-istess test li tuża l-app.
max_results huwa 5 b'mod awtomatiku u massimum 10. L-sorsi jiġu rritornati f'
nymbot.web_search.sources, kull wieħ b' title, snippet u
url, u bħal url_citation annotazzjonijiet fuq il-messaġġ.
Mhux kull bilanċ ta' tfriġa li jiġri jikkostja $0.008, konvertit għal sats, fuq it-tokens, u huwa parti minn l-hold. Il-paġni li qara huma tokens tal-input ukoll, għalhekk tweġiba mill-web tikkostja aktar minn l-istess mistoqsija mitluba mingħajr xejn, kult volte ftit xejn aktar.
Risposta, parzjalment
"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 tal-Risponsijiet
Il-format aktar ġdid ta' OpenAI, użat mill-OpenAI Agents SDK u mill-Codex. Jiddefina fuq l-istess mudelli, fatturazzjoni u karatteristiċi bħal Chat Completions.
POST https://nymbot.ai/api/v1/responses — jeħtieġ ċav API.
| Kamp | Tip | Meħtieġ | Deskrizzjoni |
|---|---|---|---|
model | String | Iva | Għal Chat Completions, inklużi suffissi. |
input | string jew array | Iva | String, jew lista ta' oġetti: messages (roles user, assistant, system, developer) ma input_text, input_image u output_text parti, u function_call u function_call_output oġġetti għat-tooled. input_image tieħu l- image_url link jew URL ta' data, mhux ID ta' fil. reasoning u web_search_call l-oġġetti qegħda jitqallu; item_reference ġie rifjutat. |
instructions | String | Le | Istruzzjonijiet tas-sistema. |
max_output_tokens | integer | Le | L-aktar tokens biex jintriku. |
temperaturetop_p | numru | Le | Kontrolli tal-kampjonament, fejn il-mudell jieħduhom. |
toolstool_choiceparallel_tool_calls | array, string jew object, boolean | Le | Strumenti tal-funzjoni, fil-forma tar-Risponsijiet ({"type": "function", "name": …, "parameters": …}). A web_search jew web_search_preview l-għodda tinfeta tfittixija fuq l-web meta jgħin. L-uċelli l-oħra integrati jiġu rifjutati. |
reasoning | oġġett | Le | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh u max ema high; none jitfih. |
text.formatresponse_format | oġġett | Le | Output strutturat, bħala schema JSON jew json_object. |
metadata | oġġett | Le | Rieset bla bidla fir-risposta. Massimu ta' 16 valur tal-String, keys sal 64 karatteri u valuri sal 512. |
stream | boolean | Le | Stream events kif iddeskrivin hawn taħt. |
store | boolean | Le | Miegħedx aċċettat. Xejn ma jiġi maħżun, u r-risposta dejjem tgħid "store": false. |
previous_response_idconversationbackground | string, oġġett, boolean | Le | M'għandux appoġġ: 400 unsupported_parameter. Ir-risposti ma jitżammux, għalhekk ibgħat il-konversazzjoni kollha f' input なびに darba. |
Rispons
{
"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 }
}
Ġara tal-applikazzjoni ta' għodda tidher f' output bħala function_call oġġett b'
call_id, name u arguments; ibgħat ir-riżultat lura bħala a
function_call_output item b'listess call_id. Rażonament, meta l-
mudell jirritorna dan, huwa a reasoning oġġett b' reasoning_text kontenut,
imsemmija l-ewwel. status huwa incomplete meta l-imposta taħbat
max_output_tokens jew il-fornitur irrifjuta, b'
incomplete_details.reason ijiet għal max_output_tokens jew
content_filterIr-risposta tirrifletti wkoll is-settings tal-appell (temperature,
tools, tool choice u oħrajn) kif tagħmel OpenAI, u ġġib il- nymbot prezz
oġġett.
Miż流 (Streamed), kull avveniment huwa an event: linja u a data: linja b'a
sequence_number, f'ordni bħal din: response.created,
response.in_progress, response.output_item.added,
response.content_part.added, kwalunkwejn numru ta' response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.done, u fl-aħħar response.completed bil-
użu u l-kost. Twegliba qasira tispiċċa b' response.incomplete minflok, u falliment
wara li l-istrim inibda b' response.failed. Il-istrimmi tal-ħsieq bħala
item proprju miegħu b' response.reasoning_text.delta u .done. Is-sejħiet tal-aċċjoniż
jiġu wara l-messaġġ, kull waħda bħala oġġett b' response.function_call_arguments.delta
u .done.
| Status | Meta |
|---|---|
400 | Le model jew input; previous_response_id, conversation, background jew item_reference (unsupported_parameter); tip ta' għodda jew kontniġenza mhux appoġġjata. |
402, 403, 404, 429, 502, 503 | Peress li dwar 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);
Messaġġi ta' Anthropic
Il-format ta' Anthropic, għall-SDKs ta' Anthropic u Claude Code. Jaħdem ma' kull mudell fil-katalogu, mhux biss Claude: it-talba tiġi tradotta, tiġi proċessata permezz tal-istess pipeline, u tiġi tradotta lura.
POST https://nymbot.ai/api/v1/messages — għandu bżonn chiave API, bħallhekk x-api-key jew Authorization: Bearer.
Il- anthropic-version u anthropic-beta headers huma aċċettati u
jiġu mibdew. Isemmien tal-modelli ta' Anthropic huma mqabbja mal-katalogu, għalhekk Claude Code u l-SDKs jaħdmu
mal-isemmien li jużaw diġà:
- Isem li l-katalogu jaf, bħal
claude-sonnet-5jewanthropic/claude-opus-5, huwa użat kif huwa. - Altrimenti data (
-20260514),-latest, tag ta' verżjoni bħal-v1, tag bracketed bħal[1m]u wieħedanthropic/jewanthropic.il-prefixijiet jitneħħu, u l-punti u d-daħal fil-verżjoni jintrievu bil-mod eżattist\}$claude-haiku-4-5tifsirienclaude-haiku-4.5). - Jekk dak għadu ma jaqbilx ma' xejn, jiġi użata l-familja (Opus, Sonnet jew Haiku), dital ma tkunx il-verżjoni tal-katalogu hija l-istess jew aktar ġdida mill-verżjoni mitluba.
- Isem li ma jtaqqa'x ma' xejn jirritorna
404not_found_error.
| Kamp | Tip | Meħtieġ | Deskrizzjoni |
|---|---|---|---|
model | String | Iva | Id tal-mudell tal-katalogu, jew ismi tal-mudell Anthropic. |
max_tokens | integer | Iva | L-aktar tokens biex jintriku. |
messages | array | Iva | user u assistant tuffi, b' text, image (sors base64 jew URL), tool_use u tool_result blokki. thinking Il-blokki minn turni preċedenti huma aċċettati u skartati. |
system | string jew array | Le | Prompt tas-sistema, bħala string jew blokki ta' tekst. |
temperaturetop_p | numru | Le | Kontrolli tal-kampjonament, fejn il-mudell jieħduhom. top_k jiġi aċċettat u mitluq. |
stop_sequences | array ta' stringijiet | Le | Test li jtemm it-tweġiba. Massima 4 stringijiet, kull wieħ massimum ta' 256 karakteri. |
toolstool_choice | array, oġġett | Le | Strumenti b' name, description u input_schema. A web_search il-verkista tas-server tmexxi lil hinn tfittixija fuq l-web; L-uċelli l-oħra integrati ta' Anthropic (bash, editor tat-test, uża l-kompjuter) jiġu rifjutati b' unsupported_tool. tool_choice tieħu auto, any, tool jew none, u disable_parallel_tool_use. |
thinking | oġġett | Le | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} jew {"type": "disabled"}Il-baġit jagħżel livell ta' sforz: taħt 2,048 minimal, minn 2,048 baxx, minn 8,192 medju, minn 16,384 għoli. L-adattiv juża output_config.effort, jew għoli. |
stream | boolean | Le | Stream fil-format tal-event ta' Anthropic. |
metadata | oġġett | Le | Aċċettat u miftuħ. |
Rispons
{
"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 jista' też heldi wkoll tool_use blokki u a thinking
blokk, ta' min signature huwa voj: stop_reason huwa
end_turn, max_tokens, tool_use jew refusal,
ħdem b'listess mod bħal finish_reason fuq
Chat Completions; stop_sequence dejjem huwa
null, anke meta sekwenza ta' waqf kemlet it-tweġiba. input_tokens kontijiet
input frisk biss; l-input imħażen qiegħed fil-żewġ kampi tal-cache. Il-kost huwa fil-
nymbot oġett u l- X-Nymbot-Cost-Sats header.
Istraumjati, l-avvenimenti huma ta' Anthropic: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta jew thinking_delta),
content_block_stop, message_delta bil-raġuni tal-waqf, l-użu u
l- nymbot objett tal-kost, u message_stop. A ping jitbaħat ukoll
kull 15 segond waqt li l-mudell qed jaħdem. Il-kalli tal-istrumenti jaslu wara t-test, kull wieħ bħala a
tool_use blokk b'l-input kollu tiegħu f'dak wieħed input_json_delta.
L-erruri fuq dan l-endpoint jużaw il-format ta' Anthropic:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}. A
bażi qasir huwa 402 billing_error, providur ipprovokat b'tagħrif żejjed
503 overloaded_error. Ftal wara li l-istrim inibda jitbagħat bħala error avveniment.
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);
Kontar ta' tokens
Stima ta kemm input tokens tal-joniċija ta' talba Messages tużi, biex il-klijent jista' jiċċekkja qabel meta jibgħatha. Huwa gratis, iżda għadu jeħtieġijiet avvanzat.
POST https://nymbot.ai/api/v1/messages/count_tokens — għandu bżonn API key. Gratwi.
Il-ġisem huwa l-istess bħal għal Messages, mingħajr max_tokens;
isem il-mudell għandu jkun resolut. Il-kont huwa stima: il-karatteri tal-prompt tas-sistema,
l-messages, it-tool calls u d-definizzjonijiet tal-tool diviżi għal erbgħa, plus 1,600 għal kull ritratt.
Mhuwiex it-tokenizer proprju tal-fornitur, għalhekk il-kont reali jista' jiddifferiċja. Klavi li laqgħet il-limitu tagħha
għadha tista' tużah.
Rispons
{ "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);
Lista tal-modelli
Kull mudell u ġeneratur li l-API taċċetta, flimkien ma' dak li jikkostaw. Il-lista tiqra mill-istess katalog tal-live kif dik tal-għażla tal-app, għalhekk hija dejjem dak li se jkun sejjer il-server.
GET https://nymbot.ai/api/v1/models — m'hemmx bżonn ċav. Kaxjat għal ħmist imins.
GET /api/v1/models/{id} jirritorna entry waħda.
| Kamp | Tip | Meħtieġ | Deskrizzjoni |
|---|---|---|---|
type | string (query) | Le | chat (id-default), image, video, audio, embedding jew all. Jistgħu jinstgħu diversi, bħala image,video. |
Il-prezzijiet huma dak li tħallas, bil-ħarfien u l-margini inklużi diġà, fid-dollri u fis-sats fuq il-
prezz attwali ta' Bitcoin. balance għid li għandux il-bażi li l-mudell juża.
nymbot_key jiżda l-isem qasir tal-mudell fl-app. created huwa sempre
0, poiché l-katalogu ma jirreġistax meta kienet mudell iżda. Mudell mingħajr tmiem ta' telfa ppubblikat
jiġi pprizza per_request minflok.
nymbot/auto dejjem huwa l-ewwel, ipprezzat bħala variable, b'
routes lista li tagħti r-rati ta' kull ruta standard. Hi telista l-taħalluf u r-raġunament, iżda
mhix it-tooli.
GET /api/v1/models/{id} taċċetta l-istess ismi u l-alias bħal tal-joniġ, u jirritorna
l-entry għall-mudell li jirreżolwuh.
Rispons
{
"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"
}
]
}
It-tipi l-oħra:
- Imaġni dħoliet għandhom
capabilities(accepts_image_url,requires_image_url,edit) u prezzuper_generation. - Vidjow dħoliet għandhom
max_duration_secondsuresolutions, u prezzper_secondgħal kull riżoluzzjoni. - Audio dħoliet għandhom
audio_typespeechjewtranscription, ipprezzatper_1k_charsjewper_minute. - Embediment dħoliet għandhom
dimensions,context_length,max_inputsu prezzu għal kull miljun token imbarrat.
Prezzijiet immarkati "estimated": true huma l-istima tal-app għal ġeneratur li l-prezz tiegħu
mhuwiex ippubblikat. Xi mhux magħruf type ritorni 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);