Tietopohja Kehittäjät
Chat, vastaukset ja viestit
Kolme tapaa kysyä mallilta jotain, kolmessa muodossa asiakkaat puhuvat jo, kaikki toimivat samoilla malleilla ja laskutetaan samalla tavalla.
Tämä sivu on käännetty koneella käyttömukavuuden vuoksi. Englanninkielinen alkuperäinen versio on voimassa.
Chat täydentää
OpenAI chat-muoto, ja lähes jokainen työkalu tukee. Lähetä keskustelu tähän mennessä ja saada seuraava viesti takaisin.
POST https://nymbot.ai/api/v1/chat/completions Tarvitset vain API-avaimen
Vain model ja messages Valittu malli ei ota näytteenottoparametria, joka pudotetaan ilman virhettä, joten yksi pyyntö toimii mallien välillä. supported_parametersMitä hylätään sen sijaan, että hylätään, on jotain, mitä malli ei voi tehdä ollenkaan: kuvia mallista, joka ei näe, työkaluja mallille, joka ei voi kutsua niitä.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
model | Stringissä | Kyllä | nymbot/auto (tai auto) Nymbotin reititykselle vakiotaseen tai luettelon mallitunnisteeseen, kuten anthropic/claude-sonnet-5 Pro tasapaino. Sovelluksen lyhyet nimet ja aliasit hyväksytään myös. riittää. |
messages | Armeija | Kyllä | Keskustelu - roolit system, developer (käsitelty kuten järjestelmä) user, assistant ja toolSisältö on rivi tai luettelo text ja image_url osat; kuvat vain käyttäjän viesteissä. input_audio Osa tiedostoista on hylätty. |
stream | boolilainen | Ei | Lähetä vastaus sellaisena kuin se on kirjoitettu. Streamaaminen. |
stream_options | esineitä | Ei | {"include_usage": true} lisää lopullisen osan, jossa on token-laskelmat ja kustannukset. |
max_tokensmax_completion_tokens | integroitua | Ei | Suurin osa tokeneista kirjoitetaan. Alennettu mallin enimmäismäärään, jos se on korkeampi. Se asettaa myös, kuinka paljon saldoasi pidetään, joten pienempi määrä tarvitsee vähemmän luottoa aloittaakseen. |
temperaturetop_p | Määrä | Ei | Näytteenottoa koskevat valvontatoimet: temperature 0 ja 2 välillä, top_p 0 ja 1 välillä. |
stop | string tai array | Ei | Teksti, joka päättyy vastaukseen: string tai enintään 4 stringia, joista kukin on enintään 256 merkkiä. nymbot/auto. |
seed | integroitua | Ei | Toistuvaan näytteenottoon, jossa malli tukee sitä. |
presence_penaltyfrequency_penalty | Määrä | Ei | Toistuvat ohjaukset, joista jokainen on -2 -2. |
response_format | esineitä | Ei | {"type": "json_object"} tai {"type": "json_schema", "json_schema": {…}}, jossa malli tukee sitä. Ei käytetä nymbot/auto. |
toolstool_choiceparallel_tool_calls | Array, String tai Object, Boolean | Ei | Käyttöohjeet - katso Työkalut soittaa• A web_search Työkalu kääntyy WEB etsintäEnintään 128 työkalua ja 512 KB määritelmiä, jotka on sijoitettu enintään 64 tasoon syvällä; enemmän on 400. |
reasoning_effortreasoning | Kiinnitys, objektiivi | Ei | "minimal", "low", "medium" tai "high"tai {"effort": "high"}. "none" tai {"enabled": false} Käännä se pois. katso perustelut. |
plugins | Armeija | Ei | [{"id": "web", "max_results": 5}] aina etsii ensin verkossa.Jopa 10 tulosta. |
n | integroitua | Ei | 1. Kaikki muu tulee takaisin 400. |
logit_biasusermetadata | objektiivi, objektiivi, objektiivi | Ei | Hyväksytty ja ei lähetetty. logit_bias kartat enintään 300 token ID: llä numeroihin -100: sta 100: een; user enintään 256 merkkiä; metadata enintään 16 merkkijonon arvoa, enintään 64 merkin avaimet ja enintään 512 arvoa. |
Vastaus on tavallinen chat.completionKun kustannukset ovat usage.cost
Yhdysvaltain dollareissa ja nymbot kohteen kanssa. model on ratkaistu malli id, joten lyhyt nimi tulee takaisin täydellisenä. message.reasoning_contenterillään vastauksesta.
Vastaus
{
"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 kehitetty siitä, mitä tuli takaisin, koska palveluntarjoajat raportoivat siitä eri tavalla: tool_calls Kun työkalut pyydetään, length kun vastaus käytti kaikkia sallittuja tunnisteita (tai malli käytti niitä kaikkia perustelemalla eikä kirjoittanut vastausta), content_filter Jos asiakas kieltäytyy, ja stop
Toisin sanoen usage.completion_tokens_details.reasoning_tokens on aina 0: piilotetut päättelymerkit lasketaan ja laskutetaan completion_tokens.
| Tilanne | Milloin |
|---|---|
400 | Ei model tai messages (missing_required_parameter); äänen tai tiedoston osa tai kuvat mallille, joka ei näe niitä (unsupported_contentYli 20 kuvaa (too_many_images); näyteparametrin väärä tyyppi tai poissa alueesta (invalid_value); kuva linkki, joka ei ole julkinen (invalid_image_url); työkalut mallissa, joka ei voi kutsua niitä (unsupported_tool); n muut kuin 1; a :thinking Lisäys malliin, joka ei pysty perustelemaan (model_not_found) tai palveluntarjoaja hylkäsi pyynnön (upstream_rejected). |
402 | Mallin käyttämä saldo ei voi kattaa hallussapitoa. |
403 | Huonoin tapaus ei sovi avaimen korkkiin (key_limit_reachedAlempana max_tokens Tai nostaa päätä. |
404 | Ei ole mallia tällä nimellä (model_not_found). |
429 | Avaimen hinnankorko tai palveluntarjoajan (upstream_rate_limited). |
502, 503 | Toimittaja on epäonnistunut (upstream_error) tai on ylikuormitettu (upstream_overloaded, jossa Retry-AfterMitään ei veloiteta, ellei palveluntarjoaja ole veloittanut yrityksestä. |
Tilakoodit jokainen Endpoint osakkeet on lueteltu alla virheitä.
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);
Streamaaminen
kanssa "stream": true vastaus saapuu palvelimen lähettäminä tapahtumina, kun malli kirjoittaa sen. chat.completion.chunk on a data: linja, ja virta päättyy data: [DONE]Ymmärtäminen tulee sisään
delta.reasoning_contentVastaus on tässä delta.content.
Suorita suoratoistoa, joka voi kestää yli 100 sekuntia, kuten pitkä vastaus tai suuri vastaus.
max_tokens Pyyntö, jota ei lähetetä suoratoistona, ei lähetä mitään, ennen kuin vastaus on valmis, ja verkko sinun ja Nymbotin välillä voi sulkea tyhjän yhteyden noin 100 sekunnin kuluttua; malli on edelleen valmis ja se, mitä se kirjoitti, ladataan, mutta vastaus on kadonnut.
virtaa
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]
- Linjat alkavat
:ovat pysyviä kommentteja, jotka lähetetään 15 sekunnin välein, kun malli ajattelee. - Pyydä
"stream_options": {"include_usage": true}päästä viimeiseen osaan yläpuolella, jossa on tyhjächoices, token laskee, kustannukset janymbotkohteen kanssa. - Jos suljet yhteyden etukäteen, malli ei pysähdy: Nymbot lukee loput palveluntarjoajan virta, jopa 25 sekuntia, saada sen tunnusluvut, ja maksat mitä palveluntarjoaja raportoi.
- Virhe ennen ensimmäistä osumaa, kuten
401tai402, palaa tavalliseksi JSON:ksi sen tilakoodilla, ei virtalähteenä.data: {"error": {…}}tapahtuma, ja virta päättyy ilman[DONE]. - Pyynnöt työkaluilla ja malleilla OpenAI:n vastausliikenteessä eivät virtaa palveluntarjoajalta.
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);
}
Työkalut soittaa
Kuvaile toimintoja tools ja malli voi pyytää soitettavaksi sen sijaan, että vastaisi. Käytät toimintoa ja lisäät sen tuloksen tool Viesti samalla tavalla
tool_call_idNymbot ei koskaan suorita toimintoja; se lähettää mallin pyynnön takaisin sinulle.
tool_choice ottaa "auto", "none",
"required" tai {"type": "function", "function": {"name": "…"}}Malliluettelo merkitsee, mitkä mallit voivat kutsua työkaluja (capabilities.toolsTyökalut hylätään 400 unsupported_tool on nymbot/auto ja niillä harvoilla luettelomalleilla, jotka toimivat OpenAI: n Responses-liikenteessä, joille Nymbot ei voi välittää työkaluja.
kanssa "stream": true, pyyntö, jossa on työkaluja, toimii yhdessä kappaleessa ja lähetetään sitten tavanomaisena kappaleen jaksona: rooli, yksi kappale, joka kuljettaa jokaista työkalukutsua sen indekseillä, ID: llä, nimellä ja argumentteilla sekä loppuosa.
Vastaus on osittain
"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);
Kuvat pyynnöstä
Mallien kanssa capabilities.vision Voit lukea kuvia. Lisää image_url
osaksi käyttäjän viestiä, jossa on yleisö https:// linkki tai a
data:image/…;base64, URL. Enintään 20 kuvaa per pyyntö. SVG-kuvat hylätään, ja niin on linkki yli 4 096 merkkiä tai yksi käyttäjänimellä tai salasanalla (400 invalid_image_url) on valinnainen detail on
auto, low tai high.
kanssa nymbot/auto, pyyntö, jossa on kuva, reititetään standardimallille, joka voi nähdä. capabilities.vision kieltäytyy ottamasta kuvia
400 unsupported_contentLinkin on osoitettava julkiselle isännälle; Nymbot välittää kuvan mallin tarjoajalle eikä säilytä sitä.
Kuva veloitetaan palveluntarjoajan laskemina syöttötokeneinä, kuten muu pyyntö.
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);
perustelut
Mallien kanssa capabilities.reasoning voi miettiä ennen kuin he vastaavat. pyydä enemmän tai vähemmän siitä reasoning_effort ("minimal", "low",
"medium" tai "high") tai "reasoning": {"effort": "high"}tai lisätä :thinking mallin nimeen, mikä tarkoittaa suurta vaivaa. Mallissa ilman perusteluja asetus jätetään huomiotta. nymbot/auto, :thinking lähettää pyynnön vakiomuotoiseen perustelusuuntaan.
Anthropic-malleissa ponnistelu muuttuu ajattelun budjetiksi, joka on noin 1 000, 2 000, 8 000 tai 16 000 tokenia, ei koskaan enemmän kuin max_tokens Ajattelu on jätetty pois, kun
tool_choice pakottaa työkalun, ja kun pyyntö jatkuu työkalurivin (viestin viimeinen viesti on työkalun tulos), koska Anthropic tarvitsee aikaisemmin allekirjoitetun ajattelun jatkaa sitä.
Perustelut palaavat sisään message.reasoning_contenttai
delta.reasoning_content kun suoratoisto, ei koskaan sekoita vastaukseen. Perustelut ovat tulosta ja laskutetaan sellaisenaan, sisällä completion_tokensJotkut palveluntarjoajat eivät palauta perustelutekstiä lainkaan, ja se veloitetaan edelleen.
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);
Täydentävät mallit
Mallin nimen seuraaja muuttaa sitä, miten pyyntö käsitellään, ilman muuta kenttää.Ne toimivat täydellisillä tunnuksilla ja lyhyillä nimillä samalla tavalla, kuten anthropic/claude-sonnet-5:online.
| riittää | Vaikutus |
|---|---|
:online | Etsi verkossa ensin, kuten plugins: [{"id": "web"}]Näe WEB etsintä. |
:thinking | Korkean tason harjoittelua; on nymbot/autoSellaiseen malliin, jossa ei ole järkeä, 400 model_not_found ja “no endpoints found” |
:nitro, :floor, :exacto, :extended | Jokaisella katalogimallilla on yksi reitti, joten ei ole nopeampaa, halvempaa tai pidempää reittiä valita; seuraajat ovat sallittuja, joten mallin nimet, jotka on kopioitu muista palveluista, toimivat edelleen. |
Kaikki muut jäljennökset jätetään huomiotta. Koko nimi yritetään ensin, joten malli, jonka ID todella sisältää paksusuolen, toimii edelleen; jos näin ei ole, jäljennökset poistetaan lopusta yksi kerrallaan, kunnes malli vastaa. 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 etsintä
Nymbot etsii viimeistä käyttäjän viestiä (ensimmäiset 2000 merkkiä), lukee parhaat sivut ja antaa ne mallille kysymyksellä, joka on merkitty ulkoiseksi sisällöksi, josta mallin ei pitäisi ottaa ohjeita.
- Aina etsimässä:
"plugins": [{"id": "web", "max_results": 5}]tai a:onlineTäydentää mallia varten. - Etsi, kun se auttaa:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Hyväksytään myös kuinweb_search_previewtaiopenrouter:web_searchNymbot etsii vain, kun kysymys näyttää tarvitsevan ajankohtaisia tietoja, sama testi sovellus käyttää.
max_results on 5 oletusarvoisesti ja enintään 10. Lähteet palaavat
nymbot.web_search.sourcesJokaisella on a title, snippet ja
urlJa niin kuin url_citation merkinnät viestiin liittyen.
Jokainen käynnissä oleva haku maksaa 0,008 dollaria, muunnettu satsiksi, tokenien yläpuolella, ja se on osa pidätystä. Sivut, joita se lukee, ovat myös syöttötokeneitä, joten vastaus webistä maksaa enemmän kuin sama kysymys kysyi kylmä, joskus useita kertoja enemmän.
Vastaus on osittain
"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);
Vastaukset API
OpenAI: n uudempi muoto, jota käyttävät OpenAI Agents SDK ja Codex. Se toimii samoilla malleilla, laskutuksella ja ominaisuuksilla kuin Chat Completions.
POST https://nymbot.ai/api/v1/responses Tarvitset vain API-avaimen
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
model | Stringissä | Kyllä | Niin kuin Chat täydentääLisäosat ovat mukana. |
input | string tai array | Kyllä | Sarake tai luettelo kohteista: viestit (roolit user, assistant, system, developer) kanssa input_text, input_image ja output_text osia ja function_call ja function_call_output Esineitä työkaluja varten. input_image Ota yksi image_url linkki tai datan URL, ei tiedoston id. reasoning ja web_search_call esineitä on poistettu; item_reference on kieltäytynyt |
instructions | Stringissä | Ei | Järjestelmän ohjeet . |
max_output_tokens | integroitua | Ei | Eniten kirjoituksia kirjoittamiseen. |
temperaturetop_p | Määrä | Ei | Näytteenotto ohjaimet, jossa malli ottaa ne. |
toolstool_choiceparallel_tool_calls | Array, String tai Object, Boolean | Ei | Toiminnalliset työkalut, vastaukset muotoon ({"type": "function", "name": …, "parameters": …}) a web_search tai web_search_preview Työkalu kääntyy WEB etsintä kun se auttaa. Muut sisäänrakennetut työkalut hylätään. |
reasoning | esineitä | Ei | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh ja max tarkoittaa high; none Käännä se pois. |
text.formatresponse_format | esineitä | Ei | Järjestelmällinen tulos, kuten JSON-kaavio tai json_object. |
metadata | esineitä | Ei | Palautetaan vastauksessa muuttumattomana. enintään 16 merkkijonoarvoa, enintään 64 merkkiä ja enintään 512 arvoa. |
stream | boolilainen | Ei | Stream tapahtumia kuten alla kuvattu. |
store | boolilainen | Ei | Mikään ei ole tallennettu, ja vastaus sanoo aina "store": false. |
previous_response_idconversationbackground | String, Object ja Boolean | Ei | Ei ole tuettu: 400 unsupported_parameterVastauksia ei tallenneta, joten lähetä koko keskustelu input Joka kerta |
Vastaus
{
"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 }
}
Työkalupyyntö tulee näkyviin output kuin a function_call kohdan kanssa
call_id, name ja argumentsLähetä tulos takaisin a
function_call_output Kohde, jolla on sama call_idKun malli palauttaa sen, se on reasoning kohdan kanssa reasoning_text Sisältö, lueteltu ensin status on incomplete Kun vastaus osuu
max_output_tokens Toimittaja on kieltäytynyt tai
incomplete_details.reason Aseta kaksi max_output_tokens tai
content_filterVastaus myös toistaa pyynnön asetukset (lämpötila, työkalut, työkalujen valinta jne.), kuten OpenAI tekee, ja kuljettaa nymbot Objektiivin kustannukset
Vapaaehtoinen, jokainen tapahtuma on event: Linja ja a data: Linjan kanssa a
sequence_numberja tässä järjestyksessä: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedMikä tahansa määrä response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.doneja lopuksi response.completed Käyttö ja kustannukset: lyhyt vastaus response.incomplete sen sijaan, ja epäonnistuminen sen jälkeen, kun virta alkoi response.failedRationalisoimalla virrat omana kohteenaan response.reasoning_text.delta ja .doneTyökalukutsut tulevat viestin jälkeen, kukin kohteena response.function_call_arguments.delta
ja .done.
| Tilanne | Milloin |
|---|---|
400 | Ei model tai input; previous_response_id, conversation, background tai item_reference (unsupported_parameter); Tukematon työkalu tai sisältötyyppi. |
402, 403, 404, 429, 502, 503 | Mitä tulee chat-toimintoihin |
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);
Antrooppiset viestit
Se toimii jokaisen mallin luettelossa, ei vain Claude: pyyntö käännetään, kulkee läpi saman putken, ja käännetään takaisin.
POST https://nymbot.ai/api/v1/messages - tarvitset API-avaimen, kuten x-api-key tai Authorization: Bearer.
Sillä anthropic-version ja anthropic-beta Antrooppiset mallinimet vastaavat luetteloa, joten Claude Code ja SDK:t toimivat niiden nimien kanssa, joita he jo käyttävät:
- Nimi, jonka luettelo tietää, kuten
claude-sonnet-5taianthropic/claude-opus-5Sitä käytetään sellaisena kuin se on. - Muutoin päivämäärä (
-20260514),-latestTällainen versio kuin-v1Jälkimmäisessä kappaleessa, kuten[1m]ja yksianthropic/taianthropic.Tällöin esite poistetaan, ja pisteitä ja taulukoita versiossa kokeillaan molemmilla tavoilla (claude-haiku-4-5Löytääclaude-haiku-4.5). - Jos tämä ei vielä vastaa mitään, käytetään perhettä (Opus, Sonnet tai Haiku), kunhan luettelon versio on sama tai uudempi kuin pyydetty versio.
- Nimi, joka ei vastaa mitään, palaa
404not_found_error.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
model | Stringissä | Kyllä | Luettelo mallitunnus tai Anthropic mallin nimi. |
max_tokens | integroitua | Kyllä | Eniten kirjoituksia kirjoittamiseen. |
messages | Armeija | Kyllä | user ja assistant Kääntyminen, jossa text, image (base64 tai URL lähde) tool_use ja tool_result ja blokkeja. thinking Edellisistä kierroksista tulevat lohkot hyväksytään ja pudotetaan. |
system | string tai array | Ei | Järjestelmäviesti, kuten string tai tekstin lohkot. |
temperaturetop_p | Määrä | Ei | Näytteenotto ohjaimet, jossa malli ottaa ne. top_k Hyväksytään ja hylätään. |
stop_sequences | Array of stringitMuokkaa | Ei | Teksti, joka päättyy vastaukseen. Enintään 4 merkkijonoa, joista kukin on enintään 256 merkkiä. |
toolstool_choice | kohteet, kohteet | Ei | Työkalut kanssa name, description ja input_schema• A web_search Server-työkalu kääntyy päälle WEB etsintäAnthropicin muut sisäänrakennetut työkalut (bash, tekstieditori, tietokoneen käyttö) hylätään unsupported_tool. tool_choice ottaa auto, any, tool tai noneja disable_parallel_tool_use. |
thinking | esineitä | Ei | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} tai {"type": "disabled"}Budjetti valitsee ponnistelutason: alle 2,048 minimaalinen, 2,048 alhainen, 8,192 keskitasoinen, 16,384 korkea. output_config.efforttai korkealla. |
stream | boolilainen | Ei | Stream Anthropicin tapahtumamuodossa. |
metadata | esineitä | Ei | Hyväksytty ja sivuutettu. |
Vastaus
{
"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 Voidaan myös pitää tool_use Blokit ja a thinking
Blokki, jonka signature Se on tyhjä. stop_reason on
end_turn, max_tokens, tool_use tai refusaltyöskennellyt samalla tavalla kuin finish_reason on
Chat täydentää; stop_sequence on aina
null, vaikka pysähdysjärjestys lopettaisi vastauksen. input_tokens laskee vain tuoreita merkintöjä; välimuistiin tallennettuja merkintöjä on kahdessa välimuistikentässä.
nymbot Objektin ja X-Nymbot-Cost-Sats ja header.
Streamed, tapahtumat ovat Anthropic: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta tai thinking_delta),
content_block_stop, message_delta Käyttötarkoitus, käyttötarkoitus ja nymbot Objektiivin kustannukset ja message_stop• A ping myös lähetetään 15 sekunnin välein, kun malli on käynnissä. Työkalukutsut saapuvat tekstin jälkeen, kukin
tool_use Blokki koko sisällön kanssa yhdessä input_json_delta.
Virheet tässä päätepisteessä käyttävät Anthropicin muotoa:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Lyhyt tasapaino on 402 billing_errorYliannostunut palveluntarjoaja
503 overloaded_errorEpäonnistuminen virran käynnistymisen jälkeen lähetetään error Tapahtumassa on
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);
Tokenien laskeminen
Arvio siitä, kuinka monta syöttötunnusta Viestit-pyyntö käyttää, jotta asiakas voi tarkistaa ennen lähettämistä.
POST https://nymbot.ai/api/v1/messages/count_tokens Tarvitset ilmaisen API-avaimen
Keho on sama kuin Viestejäilman max_tokens; mallin nimi on ratkaistava. Laskenta on arvio: järjestelmän kehotuksen merkit, viestit, työkalukutsut ja työkalun määritelmät jaetaan neljällä, plus 1,600 jokaiselle kuvalle. Se ei ole palveluntarjoajan oma tokenizer, joten todellinen laskenta voi vaihdella. Avain, joka on saavuttanut huippunsa, voi silti käyttää sitä.
Vastaus
{ "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);
Luettelo malleista
Jokainen malli ja generaattori API hyväksyy, mitä se maksaa. Luettelo luetaan samasta live-luettelosta kuin sovelluksen valitsija, joten se on aina mitä palvelin toimii.
GET https://nymbot.ai/api/v1/models - Ei avainta tarvita. Piilotettu viisi minuuttia.
GET /api/v1/models/{id} palauttaa yhden sisäänkäynnin.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
type | Pyyntöjä (Query Strings) | Ei | chat (Tämä on epäonnistumista image, video, audio, embedding tai allNiitä voi olla useita, kuten image,video. |
Hinnat ovat sitä, mitä maksat, ja maksu ja marginaali ovat jo käytössä, dollareissa ja satsissa nykyisellä Bitcoin-hinnalla. balance Se kertoo, mihin malli kuluu.
nymbot_key on mallin lyhyt nimi sovelluksessa. created on aina 0, koska luettelo ei rekisteröi, milloin malli lisättiin. per_request sen sijaan.
nymbot/auto Se on aina ensin, hinta kuin variable, jossa a
routes Luettelo, jossa luetellaan kunkin tavanomaisen reitin hinnat.Se luettelee näkemyksen ja päättelyn, mutta ei työkaluja.
GET /api/v1/models/{id} hyväksyy samat nimet ja aliasit pyynnönä ja palauttaa mallin merkinnän, johon he päättävät.
Vastaus
{
"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"
}
]
}
Muut tyypit :
- kuvan Sisäänkäynnit ovat
capabilities(accepts_image_url,requires_image_url,edit) ja hintaper_generation. - Videoita Sisäänkäynnit ovat
max_duration_secondsjaresolutionsJa yksi hintaper_secondjokaisen päätöslauselman osalta. - ääntäminen Sisäänkäynnit ovat
audio_typespeechtaitranscriptionHinta onper_1k_charstaiper_minute. - Sisäänrakentaminen Sisäänkäynnit ovat
dimensions,context_length,max_inputsHinta miljoonaa tokenia kohden.
Merkityt hinnat "estimated": true on sovelluksen arvio generaattorista, jonka hintaa ei ole julkaistu. type Takaisin 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);