Zināšanu bāze Izstrādātāji
Chat, atbildes un ziņojumi
Trīs veidi, kā lūgt modeli kaut ko, trīs formātos klienti jau runā, visi darbojas uz tiem pašiem modeļiem un rēķina vienādi.
Ērtības labad šī lapa ir mašīntulkota. Piemērotā versija ir oriģināls angļu valodā.
Chat pabeigšana
OpenAI tērzēšanas formāts, un tas, ko atbalsta gandrīz katrs rīks. nosūtīt sarunu līdz šim un saņemt nākamo ziņojumu atpakaļ.
POST https://nymbot.ai/api/v1/chat/completions Vajadzīga API atslēga.
Tikai model un messages Izvēlētā modeļa neņemamais paraugu ņemšanas parametrs tiek izlaists bez kļūdas, tāpēc viens pieprasījuma ķermenis darbojas starp modeļiem. supported_parametersTas, kas tiek noraidīts, nevis atstāts, ir tas, ko modelis vispār nevar darīt: attēli modelim, kas nevar redzēt, rīki modelim, kas nevar tos izsaukt.
| Lauku | Veids | Nepieciešams | Apraksts |
|---|---|---|---|
model | Stringa | Jā | nymbot/auto (vai auto) Nymbot maršrutēšanai uz standarta līdzsvaru vai kataloga modeļa id, piemēram, anthropic/claude-sonnet-5 tiek pieņemti arī lietojumprogrammas īstie nosaukumi un uzvārdi. var beigties ar pietiekami. |
messages | Arēna | Jā | Runāšana - lomas system, developer (tā tiek uzskatīta par sistēmu), user, assistant un toolSaturs ir virkne vai saraksts ar text un image_url daļas; attēli tikai lietotāju ziņojumos. input_audio un failu daļas tiek noraidītas. |
stream | boļševiku | Nē | Sūtiet atbildi, kā tas ir rakstīts. skatīt Streamēšana. |
stream_options | Objekts | Nē | {"include_usage": true} pievieno galīgo gabalu ar žetonu skaitļiem un izmaksām. |
max_tokensmax_completion_tokens | Integrācija | Nē | Visvairāk zīmes rakstīt. Samazināts līdz modeļa maksimumam, ja tas ir augstāks. Tāpat nosaka, cik daudz tiek turēts no jūsu bilances, tāpēc mazākam skaitam ir nepieciešams mazāk kredīta, lai sāktu. |
temperaturetop_p | Numurs | Nē | Sampling kontroles pasākumi: temperature No 0 līdz 2, top_p No 0 līdz 1. |
stop | Strings vai array | Nē | Teksts, kas beidzas ar atbildi: virkne vai ne vairāk kā 4 virknes, katra ne vairāk kā 256 rakstzīmes. nymbot/auto. |
seed | Integrācija | Nē | Atkārtotai paraugu ņemšanai, ja modelis to atbalsta. |
presence_penaltyfrequency_penalty | Numurs | Nē | Atkārtošanas kontroles, katra no -2 līdz 2. |
response_format | Objekts | Nē | {"type": "json_object"} vai {"type": "json_schema", "json_schema": {…}}, kur modelis to atbalsta. netiek izmantots nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string vai objekts, boolean | Nē | Funkcija zvanīšana. skatīt Rotaļlietu zvanu• A web_search Instruments pārvēršas WEB meklēšanaVisvairāk 128 rīki un 512 KB definīcijas, kas iestrādāti visvairāk 64 līmeņu dziļumā; vairāk ir 400. |
reasoning_effortreasoning | Strēle, objekts | Nē | "minimal", "low", "medium" vai "high"vai {"effort": "high"}. "none" vai {"enabled": false} Izslēdziet to. skatīt pamatojums. |
plugins | Arēna | Nē | [{"id": "web", "max_results": 5}] vienmēr vispirms meklē tīmekli. līdz 10 rezultātiem. |
n | Integrācija | Nē | 1 Viss pārējais atgriežas 400. |
logit_biasusermetadata | objekts, ķēde, objekts | Nē | Pieņemts un netiek nosūtīts. logit_bias kartes ar ne vairāk kā 300 token ID cipariem no -100 līdz 100; user Maksimālais skaits 256 rakstzīmes; metadata saglabā ne vairāk kā 16 virknes vērtības, atslēgas līdz 64 rakstzīmēm un vērtības līdz 512. |
Atbilde ir parastā chat.completionAr izmaksām uz usage.cost
ASV dolāros un nymbot Objekts ir. model ir atrisinātais modeļa id, tāpēc īss nosaukums atgriežas kā pilns. message.reasoning_contentAtsevišķi no atbildes.
Atbilde
{
"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 ir izstrādāta no tā, kas atgriezās, jo pakalpojumu sniedzēji to ziņo citādi: tool_calls Kad modelis lūdza rīkus, length kad atbilde izmantoja katru pieļaujamo žetonu (vai modelis tos visus iztērēja, pamatojot un nerakstot nevienu atbildi), content_filter ja piegādātājs ir atteicies, un stop
Pretējā gadījumā usage.completion_tokens_details.reasoning_tokens vienmēr ir 0: slēptās domāšanas žetoni tiek skaitīti un iekasēti completion_tokens.
| Statuss | Kad |
|---|---|
400 | Nē model vai messages (missing_required_parameter); audio vai failu daļa, vai attēli modelim, kas tos nevar redzēt (unsupported_content); vairāk nekā 20 attēli (too_many_images(Pāradresēts no Nīderlandes) Nīderlandes Nīderlandes Nīderlandes (invalid_value); attēla saite, kas nav publiska (invalid_image_url); rīki uz modeļa, kas nevar tos saukt (unsupported_tool); n Citiem vārdiem sakot, a :thinking pielikums uz modeļa, kas nevar saprast (model_not_found(vai arī piegādātājs ir noraidījis pieprasījumu)upstream_rejected). |
402 | Līdzeklis, ko modelis tērē, nevar segt turēšanu. |
403 | Sliktākais gadījums neatbilst atslēgas kapai (key_limit_reached• zemāka max_tokens Vai arī paceliet galvu. |
404 | Nav modeļa ar šo nosaukumu (model_not_found). |
429 | Piegādātājs vai piegādātājs (upstream_rate_limited). |
502, 503 | Piegādātājs neizdevās (upstream_error) vai ir pārslogots (upstream_overloaded, ar Retry-AfterNekas netiek iekasēts, ja vien pakalpojumu sniedzējs nav iekasējis par mēģinājumu. |
Katras akcijas statusa kodi ir uzskaitīti zemāk kļūdas.
cURL
curl https://nymbot.ai/api/v1/chat/completions \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5",
"messages": [
{"role": "system", "content": "Answer in one short paragraph."},
{"role": "user", "content": "What is a Lightning invoice?"}
],
"max_tokens": 400
}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
reply = client.chat.completions.create(
model="anthropic/claude-sonnet-5",
messages=[
{"role": "system", "content": "Answer in one short paragraph."},
{"role": "user", "content": "What is a Lightning invoice?"},
],
max_tokens=400,
)
print(reply.choices[0].message.content)
print(reply.usage.cost)
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const reply = await client.chat.completions.create({
model: "anthropic/claude-sonnet-5",
messages: [
{ role: "system", content: "Answer in one short paragraph." },
{ role: "user", content: "What is a Lightning invoice?" },
],
max_tokens: 400,
});
console.log(reply.choices[0].message.content);
console.log(reply.usage.cost);
Streamēšana
ar "stream": true atbilde ierodas kā servera nosūtītie notikumi, kamēr modelis to raksta. chat.completion.chunk ir a data: līnija, un plūsma beidzas ar data: [DONE]Saprātīgums ienāk
delta.reasoning_contentAtbilde uz delta.content.
Straumēt jebko, kas var aizņemt vairāk nekā aptuveni 100 sekundes, piemēram, garu atbildi, lielu
max_tokens pieprasījums, kas netiek straumēts, nesūta neko, līdz atbilde ir pabeigta, un tīkls starp jums un Nymbot var slēgt tukšu savienojumu pēc aptuveni 100 sekundēm; modelis joprojām beidzas un tas, ko viņš rakstīja, tiek uzlādēts, bet atbilde ir zaudēta.
Stream
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]
- līnijas, kas sākas ar
:ir dzīvi komentāri, kas tiek nosūtīti ik pēc 15 sekundēm, kamēr modelis domā. - Jautājiet par
"stream_options": {"include_usage": true}lai iegūtu pēdējo gabalu augšpusē, ar tukšuchoices, tokens skaitās, izmaksas unnymbotObjekts ir. - Ja jūs aizverat savienojumu agri, modelis netiek apturēts: Nymbot izlasa pārējo piegādātāja plūsmu, līdz 25 sekundēm, lai iegūtu tā žetonu skaitu, un jūs maksājat to, ko piegādātājs ziņo.
- Kļūda pirms pirmās daļas, piemēram,
401vai402, atgriežas kā parasts JSON ar savu statusa kodu, nevis kā straumi.data: {"error": {…}}notikums, un plūsma beidzas bez[DONE]. - Pieprasījumi ar rīkiem un modeļiem OpenAI Atbildes transportā netiek sūtīti no piegādātāja.Viņi joprojām atbild ar derīgu plūsmu, nosūtot, kad atbilde ir pabeigta.
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);
}
Rotaļlietu zvanu
Apraksta funkcijas tools un modelis var lūgt vienu zvanīt, nevis atbildēt. Jūs palaist funkciju, pievienot tās rezultātu kā tool Ziņojums ar tādu pašu
tool_call_idNymbot nekad neveic jūsu funkcijas; tas pārsūta modeļa pieprasījumu atpakaļ jums.
tool_choice ņem "auto", "none",
"required" vai {"type": "function", "function": {"name": "…"}}Modelu saraksts norāda, kādi modeļi var izsaukt rīkus (capabilities.toolsInstrumenti tiek noraidīti ar 400 unsupported_tool ir nymbot/auto un par dažiem kataloga modeļiem, kas darbojas OpenAI Responses transportā, kam Nymbot nevar nodot rīkus.
ar "stream": true, pieprasījums ar rīkiem darbojas vienā gabalā un pēc tam tiek nosūtīts kā normāla gabala secība: loma, viena gabala, kurā katrs rīks tiek izsaukts ar tā indeksu, ID, nosaukumu un argumentiem, un gala gabals.
Atbilde – daļēji
"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);
Fotogrāfijas pieprasījumā
modeļi ar capabilities.vision var lasīt attēlus. pievienot image_url
dalīties ar lietotāju ziņojumā, vai nu ar auditoriju https:// Saite vai a
data:image/…;base64, URL. līdz 20 attēliem uz pieprasījumu. SVG attēli tiek noraidīti, un tā ir saite vairāk nekā 4096 rakstzīmes vai viens ar lietotājvārdu vai paroli tajā (400 invalid_image_url• Opcionāls detail ir
auto, low vai high.
ar nymbot/auto, pieprasījums ar attēlu tajā tiek novirzīts uz standarta modeli, kas var redzēt. capabilities.vision Atteikties no attēliem
400 unsupported_contentAttēli var būt tikai lietotāja ziņojumos. saite jānorāda uz publisku saimnieku; Nymbot nodod attēlu modeļa piegādātājam un neuzglabā to.
Attēls tiek iekasēts kā piegādātāja ieejas žetoni, tāpat kā pārējais pieprasījums.
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);
pamatojums
modeļi ar capabilities.reasoning var domāt, pirms viņi atbild. lūgt vairāk vai mazāk no tā ar reasoning_effort ("minimal", "low",
"medium" vai "high") vai "reasoning": {"effort": "high"}vai pievienot :thinking uz modeļa nosaukumu, kas nozīmē lielu piepūli. Uz modeļa bez pamatojuma iestatījums tiek ignorēts. nymbot/auto, :thinking nosūta pieprasījumu uz standarta pamatojuma maršrutu.
Anthropic modeļos centieni kļūst par domāšanas budžetu aptuveni 1000, 2 000, 8 000 vai 16 000 žetonu, nekad vairāk nekā max_tokens Domāšana ir atstāta prom, kad
tool_choice piespiežot rīku, un, ja pieprasījums turpinās ar rīku loku (tā pēdējais ziņojums ir rīka rezultāts), jo Anthropic ir nepieciešama iepriekš parakstītā domāšana, lai to atsāktu.
Saprātīgums atgriežas message.reasoning_contentvai
delta.reasoning_content kad straumēšanas, nekad sajaukt atbildi. pamatojums ir iznākums un tiek iekasēts kā tāds, iekšpusē completion_tokensDaži pakalpojumu sniedzēji vispār neatgriež argumentācijas tekstu, un tas joprojām tiek iekasēts.
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);
Pielikumu modelis
Modela nosaukuma pielikums maina pieprasījuma apstrādes veidu, neizmantojot citus laukus.Tie darbojas gan uz pilniem ID, gan īsiem vārdiem, tāpat kā anthropic/claude-sonnet-5:online.
| pietiekami | Efekts |
|---|---|
:online | Vispirms meklējiet tīmekli, piemēram, plugins: [{"id": "web"}]ŠEIT WEB meklēšana. |
:thinking | Augsta racionālā piepūle; uz nymbot/auto, pamatojuma maršruts. par modeli, kas nevar pamatoties, 400 model_not_found ar “nav atrasts galamērķi”. |
:nitro, :floor, :exacto, :extended | Katram kataloga modelim ir viens maršruts, tāpēc nav ātrāka, lētāka vai garāka, lai izvēlētos; papildinājumi ir atļauti, tāpēc modeļu nosaukumi, kas kopēti no citiem pakalpojumiem, joprojām darbojas. |
Jebkurš cits pielikums tiek ignorēts. Vispirms tiek izmēģināts viss vārds, tāpēc modelis, kura ID patiešām satur kolonu, joprojām darbojas; ja tas netiek darīts, pielikumi tiek izņemti no gala viens pēc otra, līdz modelis atbilst. 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 meklēšana
Jebkurš tērzēšanas modelis var atbildēt no tiešā tīmekļa. Nymbot meklē pēdējo lietotāju ziņojumu (tās pirmās 2000 rakstzīmes), lasa labākās lapas un dod tos modelim ar jautājumu, kas atzīmēts kā ārējs saturs, no kura modelim nevajadzētu ņemt norādījumus.
- Vienmēr meklē:
"plugins": [{"id": "web", "max_results": 5}]vai a:onlinePietiek ar modeli. - Meklējiet, kad tas palīdz:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Pieņemts arī kāweb_search_previewvaiopenrouter:web_searchNymbot meklē tikai tad, kad jautājums izskatās, ka tam nepieciešama pašreizējā informācija, tas pats tests, ko lietotne izmanto.
max_results ir 5 pēc noklusējuma un ne vairāk kā 10. avoti atgriežas
nymbot.web_search.sourcesKatrs ar a title, snippet un
urlun kā url_citation Atsauksmes par ziņojumu.
Katra meklēšana, kas darbojas, maksā $ 0,008, pārvēršot par sats, virs žetoniem, un tā ir daļa no turēšanas. lapas, ko tā lasa, ir arī ievades žetoni, tāpēc atbilde no tīmekļa maksā vairāk nekā tas pats jautājums, kas uzdots auksts, dažreiz vairākas reizes vairāk.
Atbilde – daļēji
"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);
Atbildes uz ugunsgrēku
OpenAI jaunāks formāts, ko izmanto OpenAI aģenti SDK un Codex. tas darbojas ar tādiem pašiem modeļiem, rēķinu un funkcijām kā Chat Completions.
POST https://nymbot.ai/api/v1/responses Vajadzīga API atslēga.
| Lauku | Veids | Nepieciešams | Apraksts |
|---|---|---|---|
model | Stringa | Jā | Kā par Chat pabeigšanaIekļauti arī suffiksi. |
input | Strings vai array | Jā | Stringa vai priekšmetu saraksts: ziņojumi (lomas user, assistant, system, developer) ar input_text, input_image un output_text daļas un function_call un function_call_output Raksti par instrumentiem. input_image Ņem vienu image_url saite vai datu URL, nevis faila ID. reasoning un web_search_call objekti tiek pārvietoti; item_reference Tas ir noraidīts. |
instructions | Stringa | Nē | Sistēmas instrukcijas . |
max_output_tokens | Integrācija | Nē | Visvairāk žetonu, lai rakstītu. |
temperaturetop_p | Numurs | Nē | Sampling kontroles, kur modelis ņem tos. |
toolstool_choiceparallel_tool_calls | array, string vai objekts, boolean | Nē | Funkcijas rīki, kas veidojas atbilžu formā ({"type": "function", "name": …, "parameters": …}) a web_search vai web_search_preview Instruments pārvēršas WEB meklēšana ja tas palīdz. citi iebūvēti rīki tiek noraidīti. |
reasoning | Objekts | Nē | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh un max nozīmē high; none Atgrieziet to prom. |
text.formatresponse_format | Objekts | Nē | strukturēta izeja, piemēram, JSON shēma vai json_object. |
metadata | Objekts | Nē | Atgrieziet nemainītu atbildi. ar ne vairāk kā 16 virknes vērtībām, atslēgas līdz 64 rakstzīmēm un vērtības līdz 512. |
stream | boļševiku | Nē | Stream notikumi, kā aprakstīts zemāk. |
store | boļševiku | Nē | Nekas netiek uzglabāts, un atbilde vienmēr saka "store": false. |
previous_response_idconversationbackground | Strings, objekts un boolejs | Nē | Nav atbalstīts : 400 unsupported_parameterAtbildes netiek saglabātas, tāpēc nosūtiet visu sarunu input Katru reizi |
Atbilde
{
"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 }
}
Ierīces pieprasījums parādās output kā a function_call punkts ar
call_id, name un argumentsnosūtīt rezultātu atpakaļ kā a
function_call_output Pants ar tādu pašu call_idpamatojums, kad modelis to atgriež, ir reasoning punkts ar reasoning_text saturu, kas uzskaitīts vispirms. status ir incomplete Kad atbilde nokrita
max_output_tokens Pārdevējs ir atteicies, ar
incomplete_details.reason iestatīt max_output_tokens vai
content_filterAtbilde arī atgādina pieprasījuma iestatījumus (temperatūru, rīkus, rīku izvēli utt.), kā to dara OpenAI, un pārvadā nymbot Objekta izmaksas.
Streamed, katrs notikums ir event: Līnija un a data: Līnija ar a
sequence_numberTātad šajā kārtībā: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedJebkurš skaits no response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.doneUn beidzot response.completed ar lietošanu un izmaksām. atbilde samazina īsās beigās ar response.incomplete vietā, un neveiksme pēc tam, kad plūsma sākās ar response.failedRacionalizēt straumes kā savu priekšmetu ar response.reasoning_text.delta un .doneRīku izsaukumi nāk pēc ziņojuma, katrs kā objekts ar response.function_call_arguments.delta
un .done.
| Statuss | Kad |
|---|---|
400 | Nē model vai input; previous_response_id, conversation, background vai item_reference (unsupported_parameter); neatbalstīts rīks vai satura veids. |
402, 403, 404, 429, 502, 503 | Attiecībā uz čatu pabeigšanu. |
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);
Antropozīcijas vēstījumi
Tas darbojas ar katru modeli katalogā, ne tikai Claude: pieprasījums tiek tulkots, palaists caur to pašu cauruļvadu un tulkots atpakaļ.
POST https://nymbot.ai/api/v1/messages — nepieciešama API atslēga, kā x-api-key vai Authorization: Bearer.
Tās anthropic-version un anthropic-beta Antropiskie modeļu nosaukumi ir pielāgoti katalogam, tāpēc Claude Code un SDK darbojas ar tiem nosaukumiem, kurus viņi jau izmanto:
- Nosaukums, ko katalogs zina, piemēram,
claude-sonnet-5vaianthropic/claude-opus-5Tas tiek izmantots tā, kā tas ir. - Attiecībā uz datumu (
-20260514),-latestTāda versija kā-v1Brāļu diena, tāda kā[1m]Un viensanthropic/vaianthropic.Prefikss tiek noņemts, un punktus un daļas versijā mēģina abos veidos (claude-haiku-4-5Atrodasclaude-haiku-4.5). - Ja tas joprojām neatbilst, tiek izmantota ģimene (Opus, Sonnet vai Haiku), ja vien kataloga versija ir tāda pati vai jaunāka par pieprasīto.
- Nosaukums, kas neatbilst nekam, atgriežas
404not_found_error.
| Lauku | Veids | Nepieciešams | Apraksts |
|---|---|---|---|
model | Stringa | Jā | Kataloga modeļa ID vai Anthropic modeļa nosaukums. |
max_tokens | Integrācija | Jā | Visvairāk žetonu, lai rakstītu. |
messages | Arēna | Jā | user un assistant Atgriešanās, ar text, image (base64 vai URL avots) tool_use un tool_result Bloki ir. thinking Bloki no iepriekšējām kārtām tiek pieņemti un izlaisti. |
system | Strings vai array | Nē | Sistēmas pieprasījums, piemēram, virkne vai teksta bloki. |
temperaturetop_p | Numurs | Nē | Sampling kontroles, kur modelis ņem tos. top_k Tiek pieņemts un atstāts. |
stop_sequences | Array no strings | Nē | Teksts, kas beidzas ar atbildi. ne vairāk kā 4 virknes, katra ne vairāk kā 256 rakstzīmes. |
toolstool_choice | Mērķis, objekts | Nē | Instrumenti ar name, description un input_schema• A web_search Servera rīks tiek pārvērsts WEB meklēšana; Anthropic citi iebūvēti rīki (bash, teksta redaktors, datora lietošana) tiek noraidīti ar unsupported_tool. tool_choice ņem auto, any, tool vai noneun disable_parallel_tool_use. |
thinking | Objekts | Nē | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} vai {"type": "disabled"}Budžets izvēlas pūļu līmeni: zem 2,048 minimuma, no 2,048 zema, no 8,192 vidēja, no 16,384 augsta. output_config.effortVai arī augstu. |
stream | boļševiku | Nē | Straumēšana Anthropic notikumu formātā. |
metadata | Objekts | Nē | Pieņemts un ignorēts. |
Atbilde
{
"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 Var arī turēt tool_use Bloki un a thinking
Bloks, kuru signature Tā ir tukša. stop_reason ir
end_turn, max_tokens, tool_use vai refusalDarbojās tāpat kā finish_reason ir
Chat pabeigšana; stop_sequence Vienmēr ir
null, pat tad, ja apstāšanās secība beidza atbildi. input_tokens skaitās tikai svaigi ievadi; kešatmiņas ievadi atrodas divos kešatmiņas laukos.
nymbot Objekts un tā X-Nymbot-Cost-Sats Tātad header.
Streamed, notikumi ir Anthropic's: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta vai thinking_delta),
content_block_stop, message_delta ar apstāšanās iemeslu, lietošanu un nymbot objekta izmaksas un message_stop• A ping tiek nosūtīts arī ik pēc 15 sekundēm, kamēr modelis darbojas.
tool_use bloks ar visu tā ievadi vienā input_json_delta.
Kļūdas šajā gala punktā izmanto Anthropic formātu:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Īss līdzsvars ir 402 billing_errorPārslogots piegādātājs
503 overloaded_errorNepareiza darbība pēc plūsmas sākuma tiek nosūtīta kā error Pasākums .
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);
Tokenu skaitīšana
Aprēķins par to, cik daudz ievades žetonu Messages pieprasījums izmantotu, lai klients varētu pārbaudīt, pirms tas nosūta.
POST https://nymbot.ai/api/v1/messages/count_tokens — nepieciešama API atslēga. bezmaksas
Ķermenis ir tāds pats kā ZiņojumiBez max_tokens; modeļa nosaukums ir jāatrisina. skaitīšana ir aprēķins: sistēmas pieprasījuma, ziņojumu, rīku zvanu un rīku definīciju rakstzīmes ir sadalītas pa četriem, plus 1600 katram attēlam. Tas nav pakalpojumu sniedzēja paša tokenizators, tāpēc reālais skaitlis var atšķirties. atslēga, kas ir sasniegusi savu maksimumu, joprojām to var izmantot.
Atbilde
{ "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);
Modelu saraksts
Katrs modelis un ģenerators API pieņem, ar to, ko tas maksā. saraksts tiek lasīts no tā paša tiešraides kataloga kā lietojumprogrammas pickers, tāpēc tas vienmēr ir tas, ko serveris darbosies.
GET https://nymbot.ai/api/v1/models — nav nepieciešama atslēga. Slēptas piecas minūtes.
GET /api/v1/models/{id} Atgriež vienu ievadi.
| Lauku | Veids | Nepieciešams | Apraksts |
|---|---|---|---|
type | String (prasības vārdi) | Nē | chat (Tā ir deficīta situācija) image, video, audio, embedding vai allVar izmantot vairākas metodes, piemēram, image,video. |
Cenas ir tas, ko jūs maksājat, ar maksu un maržu, kas jau ir, dolāros un likmēs pašreizējā Bitcoin cenā. balance Tas norāda uz to, kādu bilanci modelis tērē.
nymbot_key ir modeļa īss nosaukums lietojumprogrammā. created vienmēr ir 0, jo katalogā nav ieraksta, kad modelis tika pievienots. per_request vietā.
nymbot/auto vienmēr ir pirmais, cena kā variableAr a
routes saraksts, kas sniedz katra standarta maršruta likmes. tas uzskaita redzējumu un argumentus, bet ne instrumentus.
GET /api/v1/models/{id} pieņem tos pašus vārdus un uzvārdus kā pieprasījumu, un atgriež ierakstu par modeli, uz kuru viņi nolemj.
Atbilde
{
"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"
}
]
}
Pārējie veidi:
- Attēls Ieeja ir
capabilities(accepts_image_url,requires_image_url,edit) un cenaper_generation. - Video Ieeja ir
max_duration_secondsunresolutionsUn tā cenaper_secondPar katru rezolūciju. - Audio Ieeja ir
audio_typespeechvaitranscriptionCenasper_1k_charsvaiper_minute. - Iebūvēšana Ieeja ir
dimensions,context_length,max_inputsUn cena par miljonu ieejas žetonu.
Cenas atzīmētas "estimated": true ir lietojumprogrammas aprēķins par ģeneratoru, kura cena netiek publicēta. type Atgriešanās 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);