Teadmistebaas Arendajad
Chat, vastused ja sõnumid
Kolm võimalust küsida mudelilt midagi, kolmes vormingus kliendid juba räägivad, kõik käivad samadel mudelitel ja arveldatakse samamoodi.
See leht on mugavuse huvides masintõlgitud. Kohaldatav on ingliskeelne originaalversioon.
Chat täiendused
OpenAI vestlusvorming ja peaaegu iga tööriist toetab. saatke vestlus seni ja saada järgmine sõnum tagasi.
POST https://nymbot.ai/api/v1/chat/completions Vaja on tulekahju võtmet.
Ainult model ja messages Valitud mudel ei võta proovivõtu parameetrit, mis langeb ilma veata, nii et üks taotlus keha töötab mudelite vahel. supported_parametersSee, mida tagasi lükatakse, on midagi, mida mudel ei saa üldse teha: pildid mudelile, mis ei näe, tööriistad mudelile, mis ei saa neid kutsuda.
| väljad | tüüpi | Nõutav | Kirjeldus |
|---|---|---|---|
model | Stringid | Jah | nymbot/auto (või auto) Nymboti marsruudi jaoks standardse tasakaalu või kataloogi mudeli ID-ga, näiteks anthropic/claude-sonnet-5 Pro tasakaalu. Rakenduse lühikesed nimed ja aliasid aktsepteeritakse samuti. Piisab. |
messages | Armeenia | Jah | Suhtlemine - rollid system, developer (käsitletud kui süsteem) user, assistant ja toolSisu on string või nimekiri text ja image_url osad; pildid ainult kasutaja sõnumites. input_audio ja failide osad on keeldutud. |
stream | boolind | Ei ole | Saada vastus nii, nagu see on kirjutatud. Streamimine. |
stream_options | objektiks | Ei ole | {"include_usage": true} lisab lõpliku tükki koos tokenide arvuga ja kuludega. |
max_tokensmax_completion_tokens | integreeritud | Ei ole | Vähenenud mudeli maksimaalsele, kui see on suurem.Samuti määrab, kui palju hoiab oma saldo, nii et väiksem arv vajab alustamiseks vähem krediiti. |
temperaturetop_p | numbri | Ei ole | Proovide kontrollimine : temperature vahemikus 0 kuni 2, top_p 0 kuni 1 |
stop | string või array | Ei ole | Vastuse lõpetav tekst: string või maksimaalselt 4 stringit, igaüks maksimaalselt 256 tähemärki. nymbot/auto. |
seed | integreeritud | Ei ole | Korduvproovide võtmiseks, kui mudel seda toetab. |
presence_penaltyfrequency_penalty | numbri | Ei ole | Korduvad kontrollid, igaüks -2 kuni 2. |
response_format | objektiks | Ei ole | {"type": "json_object"} või {"type": "json_schema", "json_schema": {…}}, kus mudel seda toetab. nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string või objekt, boolean | Ei ole | Funktsionaalne kõne. vaata Tööriistad kõned• a web_search Tööriist muutub WEB otsingMaksimaalselt 128 tööriista ja 512 KB määratlusi, mis on varjatud maksimaalselt 64 taseme sügavusega; rohkem on 400. |
reasoning_effortreasoning | Võrk, objekti | Ei ole | "minimal", "low", "medium" või "high"või {"effort": "high"}. "none" või {"enabled": false} Lülita see välja.Vaadake Põhjendamine. |
plugins | Armeenia | Ei ole | [{"id": "web", "max_results": 5}] otsib alati veebist esimesena.Kuni 10 tulemust. |
n | integreeritud | Ei ole | Ainult 1. kõik muu naaseb 400. |
logit_biasusermetadata | objekti, objekti või string | Ei ole | Vastu võetud ja mitte saadetud. logit_bias kaardid maksimaalselt 300 token ID-ga numbritele -100 kuni 100; user maksimaalselt 256 tähemärki; metadata Hoiab maksimaalselt 16 string väärtust, võtmeid kuni 64 tähemärki ja väärtusi kuni 512. |
Vastus on tavaline chat.completionVõttes arvesse kulusid usage.cost
(dollarites) ja nende nymbot objektiks on. model on lahendatud mudeli id, nii et lühike nimi naaseb täieliku nimena. message.reasoning_contenteraldatud vastusest.
vastus
{
"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 on välja töötatud sellest, mis tagasi tuli, kuna pakkujad teatavad sellest erinevalt: tool_calls Kui mees nõuab tööriistu, length kui vastus kasutas kõiki lubatud märke (või mudel kulutas need kõik põhjendama ja ei kirjutanud vastust), content_filter kui teenusepakkuja keeldub ja stop
Vastasel juhul usage.completion_tokens_details.reasoning_tokens on alati 0: varjatud põhjenduste tokenid loetakse ja laaditakse completion_tokens.
| staatuse | Millal |
|---|---|
400 | Ei ole model või messages (missing_required_parameter); heli või faili osa või pildid mudelile, mis ei näe neid (unsupported_content); rohkem kui 20 pilti (too_many_images); proovivõtu parameeter vale tüüpi või vahemikku (invalid_value); pildi link, mis ei ole avalik (invalid_image_url); tööriistad mudelil, mis ei saa neid nimetada (unsupported_tool); n muud kui 1; a :thinking Täiendus mudelile, mis ei saa põhjendada (model_not_found(või teenuseosutaja on taotluse tagasi lükanud)upstream_rejected). |
402 | Tasakaal, mida mudel kulutab, ei saa katta hoidmist. |
403 | Kõige hullem juhul ei sobi võtme kappi (key_limit_reached1) madalam max_tokens Või tõsta pead. |
404 | Ei ole sellise nimega mudelit (model_not_found). |
429 | Võtme maksumuse piir või teenusepakkuja (upstream_rate_limited). |
502, 503 | Teenusepakkuja ei ole (upstream_error) või on ülekoormatud (upstream_overloadedja koos Retry-AfterMitte midagi ei nõuta, välja arvatud juhul, kui teenusepakkuja on selle katse eest tasunud. |
Iga aktsia seisukood on loetletud allpool vigu.
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);
Streamimine
koos "stream": true vastus saabub serveri saadetud sündmuste kujul, samal ajal kui mudel seda kirjutab. chat.completion.chunk on a data: liin, ja vool lõpeb data: [DONE]Mõtted tulevad sisse
delta.reasoning_contentVastus on selles delta.content.
Streami midagi, mis võib võtta rohkem kui umbes 100 sekundit, näiteks pikk vastus, suur vastus.
max_tokens taotlus, mida ei voogesitata, ei saada midagi, kuni vastus on lõppenud, ja võrk teie ja Nymboti vahel võib sulgeda tühja ühenduse pärast umbes 100 sekundit; mudel lõpeb endiselt ja see, mida ta kirjutas, laaditakse, kuid vastus on kadunud. voog saadab Keep-alive, nii et see jääb avatuks nii kaua, kui mudel kirjutab.
voolab
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]
- Liinid, mis algavad
:on elus kommentaarid, mis saadetakse iga 15 sekundi järel, kui mudel mõtleb. - Küsige
"stream_options": {"include_usage": true}et saada viimane tükk üleval, tühjachoices, token loeb, maksumus janymbotobjektiks on. - Kui sulgete ühenduse varakult, ei peatu mudel: Nymbot loeb ülejäänud teenusepakkuja voolu kuni 25 sekundiks, et saada oma tokenide arv ja maksate, mida teenusepakkuja teatab.
- Viga enne esimest tükki, näiteks
401või402, naaseb tavalise JSONi kujul koos staatuse koodiga, mitte vooluna.data: {"error": {…}}sündmus, ja vool lõpeb ilma[DONE]. - Nõuded tööriistadega ja mudelid OpenAI vastuste transpordis ei voola pakkujalt.
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);
}
Tööriistad kõned
Kirjeldage funktsioone tools ja mudel võib küsida, et keegi helistaks vastamise asemel.Te käivitate funktsiooni, lisate selle tulemuse tool Sõnum sama
tool_call_idNymbot ei käivita kunagi teie funktsioone; see edastab mudeli taotluse teile tagasi.
tool_choice võtab "auto", "none",
"required" või {"type": "function", "function": {"name": "…"}}Modeli nimekiri tähistab, millised mudelid võivad kasutada tööriistu (capabilities.toolsTööriistad on keeldunud 400 unsupported_tool on nymbot/auto ja vähestel kataloogimudelitel, mis töötavad OpenAI Responses'i transpordil, millele Nymbot ei saa tööriistu edasi anda.
koos "stream": true, tööriistadega päring töötab ühes tükis ja saadetakse seejärel tavalise tükikese järjekorras: roll, üks tükk, mis kannab iga tööriista kõne koos selle indeksi, id, nime ja argumentidega, ja lõpetamise tükk.
Vastus on osaliselt
"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);
Pildid taotluses
Mudelid koos capabilities.vision saab lugeda pilte. lisada image_url
osa kasutaja sõnumile, kas avalikkusega https:// link või a
data:image/…;base64, URL. Kuni 20 pilti taotluse kohta. SVG pildid on tagasi lükatud, ja nii on link üle 4096 tähemärgi või üks kasutajanime või parooliga (400 invalid_image_url(Üks valikuline detail on
auto, low või high.
koos nymbot/auto, taotlus, millel on selles pilt, suunatakse standardmudelile, mida saab näha. capabilities.vision Keeldub pildistamast
400 unsupported_contentPildid võivad olla ainult kasutaja sõnumites.Link peab näitama avalikku võõrustajat; Nymbot edastab pildi mudeli pakkujale ja ei hoia seda.
Pilt laaditakse sisse sisendmoodulitena, mida teenusepakkuja loeb, nagu ka ülejäänud taotlus.
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);
Põhjendamine
Mudelid koos capabilities.reasoning Võite mõelda enne, kui nad vastavad. küsida rohkem või vähem sellest koos reasoning_effort ("minimal", "low",
"medium" või "high") või "reasoning": {"effort": "high"}või lisada :thinking mudeli nimele, mis tähendab suurt pingutust. mudelil ilma põhjendamata ignoreeritakse seadistust. nymbot/auto, :thinking saadab taotluse standardse põhjenduse marsruudile.
Antroopsete mudelite puhul muutub jõupingutuste eelarve umbes 1000, 2 000, 8 000 või 16 000 tokeniks, mitte kunagi rohkem kui max_tokens Mõtlemine on maha jäetud, kui
tool_choice jõuab tööriista, ja kui taotlus jätkub tööriistakuju (selle viimane sõnum on tööriista tulemus), sest Anthropic vajab varem allkirjastatud mõtteviisi, et jätkata seda.
Põhjendused tulevad tagasi message.reasoning_contentvõi
delta.reasoning_content kui voogesitus, ei segata kunagi vastusesse. põhjendamine on väljund ja laaditakse sellisena sisse completion_tokensMõned teenusepakkujad ei tagasta põhjenduste teksti üldse ja see on endiselt tasutud.
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);
Modelleeritud suffiksid
Mudeli nime tähis muudab seda, kuidas taotlust käsitletakse, ilma teise välja kasutamata. anthropic/claude-sonnet-5:online.
| Piisab | Mõju |
|---|---|
:online | Kõigepealt otsitakse internetti, nagu plugins: [{"id": "web"}]See on WEB otsing. |
:thinking | Kõrge kaalutlusvõime; on nymbot/auto, põhjenduse tee.Mudelil, mis ei suuda põhjendada, 400 model_not_found “ ei ole leitud lõplikke punkte” |
:nitro, :floor, :exacto, :extended | Iga kataloogi mudelil on üks marsruut, nii et ei ole kiiremini, odavamalt ega pikemalt valida; järeltulijad on lubatud, nii et teistest teenustest kopeeritud mudelite nimed töötavad ikka veel. |
Kõik teised lisad ignoreeritakse. Kogu nimi proovitakse kõigepealt, nii et mudel, mille ID sisaldab tõesti koloni, töötab endiselt; kui seda ei tehta, eemaldatakse lisad ükshaaval, kuni mudel vastab. 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);
WEB otsing
Nymbot otsib viimast kasutaja sõnumit (tema esimesed 2000 tähemärki), loeb parimaid lehekülgi ja annab need küsimusega mudelile, mis on tähistatud välise sisuga, mida mudel ei tohiks juhiseid võtta.
- Alati otsida:
"plugins": [{"id": "web", "max_results": 5}]või a:onlinePiisab ka mudelist. - Otsige, kui see aitab:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Samuti aktsepteeritakse kuiweb_search_previewvõiopenrouter:web_searchNymbot otsib ainult siis, kui küsimus vajab praegust teavet, sama test, mida rakendus kasutab.
max_results on 5 vaikimisi ja maksimaalselt 10.
nymbot.web_search.sourcesIgaüks koos a title, snippet ja
urlja kui url_citation Märkused sõnumi kohta.
Iga otsing, mis jookseb, maksab $ 0,008, teisendatakse satsiks, tokenite peal ja see on osa hoidmisest. lehed, mida ta loeb, on sisend tokenid ka, nii et veebist saadud vastus maksab rohkem kui sama küsimus külmalt, mõnikord mitu korda rohkem.
Vastus on osaliselt
"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);
Vastused API
OpenAI uuem formaat, mida kasutavad OpenAI Agents SDK ja Codex. See töötab samadel mudelitel, arveldamisel ja funktsioonidel nagu Chat Completions.
POST https://nymbot.ai/api/v1/responses Vaja on tulekahju võtmet.
| väljad | tüüpi | Nõutav | Kirjeldus |
|---|---|---|---|
model | Stringid | Jah | kui Chat täiendusedLisad on kaasas. |
input | string või array | Jah | string või loetelu objektidest: sõnumid (rollid user, assistant, system, developer) koos input_text, input_image ja output_text osad ja function_call ja function_call_output Tooted tööriistade jaoks. input_image Võta üks image_url link või andmete URL, mitte faili id. reasoning ja web_search_call esemed on välja lülitatud; item_reference See on keeldunud. |
instructions | Stringid | Ei ole | Süsteemi juhised . |
max_output_tokens | integreeritud | Ei ole | Kõige rohkem trikke kirjutada. |
temperaturetop_p | numbri | Ei ole | Proovide võtmine, kus mudel neid võtab. |
toolstool_choiceparallel_tool_calls | array, string või objekt, boolean | Ei ole | Tööriistade funktsioonid, vastused kujul ({"type": "function", "name": …, "parameters": …}a) a web_search või web_search_preview Tööriist muutub WEB otsing Kui see aitab, siis keelduvad muud sisseehitatud tööriistad. |
reasoning | objektiks | Ei ole | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh ja max tähendab high; none Pöörake see välja. |
text.formatresponse_format | objektiks | Ei ole | Struktureeritud väljund, näiteks JSONi skeem või json_object. |
metadata | objektiks | Ei ole | Tagastatakse vastuses muutumatuna. maksimaalselt 16 string-väärtusel kuni 64 tähemärki ja kuni 512 väärtust. |
stream | boolind | Ei ole | Stream sündmused nagu allpool kirjeldatud. |
store | boolind | Ei ole | Ignoreeritud. miski ei ole salvestatud ja vastus ütleb alati "store": false. |
previous_response_idconversationbackground | String, objekt ja boolean | Ei ole | Ei toeta : 400 unsupported_parameterVastuseid ei salvestata, seega saatke kogu vestlus input Iga kord |
vastus
{
"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 }
}
Tööriista taotlus ilmub output kui a function_call Eesmärk koos
call_id, name ja argumentsSaada tulemus tagasi a
function_call_output Artikkel sama kohta call_idMõtlemine, kui mudel tagastab selle, on reasoning Eesmärk koos reasoning_text Sisu on loetletud kõigepealt. status on incomplete Kui vastus lööb
max_output_tokens või teenusepakkuja keeldub
incomplete_details.reason Seadke kaks max_output_tokens või
content_filterVastus kajastab ka taotluse seadistusi (temperatuur, tööriistad, tööriistavalik jne), nagu OpenAI teeb, ja kannab nymbot Maksab objekti eest.
Streamed, iga sündmus on event: Liin ja A data: Liin koos a
sequence_numberSelles järjekorras siis: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedÜkskõik milline arv response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.doneJa lõpuks response.completed kasutamise ja kuludega. vastus lõigatakse lühikeseks response.incomplete selle asemel, ja ebaõnnestumine pärast voolu algust response.failedPõhjendades voolu kui oma objekti response.reasoning_text.delta ja .doneTööriista kõned tulevad pärast sõnumit, millest igaüks on response.function_call_arguments.delta
ja .done.
| staatuse | Millal |
|---|---|
400 | Ei ole model või input; previous_response_id, conversation, background Või üks item_reference (unsupported_parameter); toetamata tööriist või sisu tüüp. |
402, 403, 404, 429, 502, 503 | Mis puudutab chat lõpetamist. |
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);
Antroopsed sõnumid
See töötab iga mudeliga kataloogis, mitte ainult Claude: taotlus tõlgitakse, käib läbi sama toru ja tõlgitakse tagasi.
POST https://nymbot.ai/api/v1/messages - vajab API võtmet, nagu x-api-key või Authorization: Bearer.
OÜ anthropic-version ja anthropic-beta Antroopsed mudeli nimed on kataloogiga kooskõlas, nii et Claude Code ja SDK-d töötavad juba kasutatavate nimedega:
- Nimi, mida kataloog teab, näiteks
claude-sonnet-5võianthropic/claude-opus-5Kasutatakse nii nagu see on. - kuupäeva kohta (
-20260514),-latestSellise versiooni nagu-v1Nagu sellist tüüpi brändi[1m]ja üksanthropic/võianthropic.Eesliide on eemaldatud ja punktid ja joonised versioonis on proovitud mõlemal viisil (claude-haiku-4-5leiabclaude-haiku-4.5). - Kui see veel ei sobi, kasutatakse perekonda (Opus, Sonnet või Haiku), kui kataloogi versioon on sama või uuem kui taotletud versioon.
- Nimi, mis ei vasta midagi tagastab
404not_found_error.
| väljad | tüüpi | Nõutav | Kirjeldus |
|---|---|---|---|
model | Stringid | Jah | Kataloogi mudeli id või antropoloogiline mudeli nimi. |
max_tokens | integreeritud | Jah | Kõige rohkem trikke kirjutada. |
messages | Armeenia | Jah | user ja assistant pöörduvad, koos text, image (base64 või URL allikas) tool_use ja tool_result Kõik blokeerivad. thinking Varasemate ringide plokid on vastu võetud ja maha jäetud. |
system | string või array | Ei ole | Süsteemi soovitus, nagu string või teksti plokid. |
temperaturetop_p | numbri | Ei ole | Proovide võtmine, kus mudel neid võtab. top_k on aktsepteeritud ja langenud. |
stop_sequences | Array stringid | Ei ole | Tekst, mis lõpetab vastuse, maksimaalselt 4 stringit, igaüks maksimaalselt 256 tähemärki. |
toolstool_choice | Sildid, objektid | Ei ole | Tööriistad koos name, description ja input_schema• a web_search Serveri tööriist muutub WEB otsingAnthropic'i muud sisseehitatud tööriistad (bash, tekstiredaktor, arvuti kasutamine) on keelatud unsupported_tool. tool_choice võtab auto, any, tool või noneja disable_parallel_tool_use. |
thinking | objektiks | Ei ole | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} või {"type": "disabled"}Eelarve valib jõupingutuste taseme: alla 2,048 minimaalne, alates 2,048 madal, alates 8,192 keskmine, alates 16,384 kõrge. output_config.effortvõi kõrge. |
stream | boolind | Ei ole | Stream Anthropic'i sündmuste vormingus. |
metadata | objektiks | Ei ole | aktsepteeritud ja ignoreeritud. |
vastus
{
"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 Võib ka hoida tool_use Blokid ja a thinking
Blokeerimine, mis signature See on tühi. stop_reason on
end_turn, max_tokens, tool_use või refusalTöötas samamoodi nagu finish_reason on
Chat täiendused; stop_sequence Alati on
null, isegi siis, kui peatusjoon lõpetas vastuse. input_tokens loeb ainult värske sisend; vahemälu sisend on kahes vahemälu väljas.
nymbot Objekti ja X-Nymbot-Cost-Sats Kõrvaltoimed
Streamed, sündmused on Anthropic: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta või thinking_delta),
content_block_stop, message_delta Peatamise põhjus, kasutamine ja nymbot Objekti maksumus ja message_stop• a ping saadetakse ka iga 15 sekundi järel, kui mudel töötab.Tööriistakõned saabuvad pärast teksti, igaüks
tool_use blokeerides kogu sisendit ühes input_json_delta.
Selle lõpppunkti vead kasutavad Anthropic'i vormi:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Lühike tasakaal on 402 billing_errorÜlekoormatud teenusepakkuja
503 overloaded_errorEbaõnnestumine pärast voolu alustamist saadetakse error Üritus .
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);
Tokenide arvutamine
Hinnang selle kohta, kui palju sisendtooteid sõnumite taotlus kasutab, et klient saaks enne saatmist kontrollida.
POST https://nymbot.ai/api/v1/messages/count_tokens Vaja on API võtmet.
Keha on sama, mis Sõnumidja ilma max_tokens; mudeli nimi peab lahendama. Arv on hinnang: süsteemi juhendi märgid, sõnumid, tööriistakõned ja tööriista määratlused jagunevad neljaks, pluss 1,600 iga pildi jaoks. See ei ole pakkuja enda tokenizer, nii et tegelik arv võib erineda.
vastus
{ "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);
Nimekiri mudelitest
Iga mudel ja generaator API aktsepteerib, mida see maksab. nimekiri loetakse sama live kataloogi kui rakenduse valik, nii et see on alati see, mida server töötab.
GET https://nymbot.ai/api/v1/models - ei ole vaja võtmeid. peidetud viis minutit.
GET /api/v1/models/{id} Tagasta üks sissepääs.
| väljad | tüüpi | Nõutav | Kirjeldus |
|---|---|---|---|
type | String (või küsimus) | Ei ole | chat (Kõik need defektid on image, video, audio, embedding või allMõned neist võivad olla, nagu image,video. |
Hinnad on see, mida maksate, mille tasu ja marginaal on juba olemas, dollarites ja hinnas praeguse Bitcoini hinnaga. balance See näitab, millist tasakaalu mudel kulutab.
nymbot_key on mudeli lühike nimi rakenduses. created on alati 0, kuna kataloog ei registreeri, millal mudel lisati. per_request selle asemel.
nymbot/auto on alati esimene, hinnatakse kui variablekoos a
routes See loetleb visiooni ja põhjendusi, kuid mitte tööriistu.
GET /api/v1/models/{id} aktsepteerib taotlusena samu nimesid ja pseudonüüme ning tagastab selle mudeli sisendi, millele nad otsustavad.
vastus
{
"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"
}
]
}
Teised tüübid :
- pildid Sissepääs on
capabilities(accepts_image_url,requires_image_url,edit) ja hindper_generation. - Videod Sissepääs on
max_duration_secondsjaresolutionsJa hind onper_secondiga resolutsiooni kohta. - Audiosüsteem Sissepääs on
audio_typespeechvõitranscriptionHinnadper_1k_charsvõiper_minute. - Sisseehitatud Sissepääs on
dimensions,context_length,max_inputsJa hind ühe miljoni sisend tokenid.
Märgistatud hinnad "estimated": true on rakenduse hinnang generaatorile, mille hind ei ole avaldatud. type Tagastamine 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);