Pangkalan pengetahuan Pengembang
Chat, tanggapan dan mesej
Tiga cara untuk meminta sesuatu kepada model, dalam tiga format pelanggan sudah bercakap, semua berjalan pada model yang sama dan dibayar dengan cara yang sama.
Halaman ini diterjemahkan mesin untuk kemudahan. Versi asal bahasa Inggeris ialah versi yang digunakan.
Chat Penyelesaian
Format OpenAI chat, dan yang hampir semua alat menyokong. hantar perbualan sejauh ini dan dapatkan mesej seterusnya kembali.
POST https://nymbot.ai/api/v1/chat/completions Anda memerlukan kunci api.
sahaja model dan messages parameter sampel yang model yang dipilih tidak diambil diturunkan tanpa kesilapan, jadi satu badan permintaan berfungsi di antara model. supported_parametersApa yang ditolak daripada ditinggalkan ialah apa yang model tidak boleh lakukan sama sekali: gambar untuk model yang tidak boleh melihat, alat untuk model yang tidak boleh memanggil mereka.
| Lapangan | Jenis | diperlukan | Penerangan |
|---|---|---|---|
model | String yang | ya | nymbot/auto ( atau auto) untuk routing Nymbot pada baki standard, atau id model katalog seperti anthropic/claude-sonnet-5 pada keseimbangan Pro. Nama pendek dan alias aplikasi juga diterima. boleh berakhir dalam Cukuplah. |
messages | Rangkaian | ya | Perbincangan : Peranan system, developer (Dibaca sebagai sistem yang digunakan), user, assistant dan toolKandungan ialah string atau senarai text dan image_url bahagian; imej hanya dalam mesej pengguna. input_audio dan bahagian fail ditolak. |
stream | boolean | Tidak | Hantar jawapan seperti yang ditulis.Selengkapnya Streaming yang. |
stream_options | objek | Tidak | {"include_usage": true} menambahkan bahagian akhir dengan bilangan token dan kos. |
max_tokensmax_completion_tokens | Integra | Tidak | Sebahagian besar token untuk ditulis. diturunkan kepada maksimum model jika lebih tinggi. juga menetapkan berapa banyak yang disimpan daripada baki anda, jadi nombor yang lebih kecil memerlukan kredit yang lebih sedikit untuk bermula. |
temperaturetop_p | Nombor | Tidak | Pengawal sampel : temperature daripada 0 kepada 2, top_p daripada 0 kepada 1. |
stop | string atau array | Tidak | Teks yang mengakhiri jawapan: satu string atau maksimum 4 string, masing-masing tidak lebih daripada 256 watak. nymbot/auto. |
seed | Integra | Tidak | Untuk sampel berulang, di mana model menyokongnya. |
presence_penaltyfrequency_penalty | Nombor | Tidak | Pengawal pengulangan, setiap daripada -2 kepada 2. |
response_format | objek | Tidak | {"type": "json_object"} atau {"type": "json_schema", "json_schema": {…}}, di mana model menyokong ia.Tidak digunakan oleh nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string atau objek, boolean | Tidak | Perkhidmatan Pendaftaran. lihat Alat Panggilan. a web_search Alat bertukar kepada Pencarian webMaksimum 128 alat dan 512 KB definisi, tertanam pada maksimum 64 tahap kedalaman; lebih 400. |
reasoning_effortreasoning | Tindakan, objek | Tidak | "minimal", "low", "medium" atau "high"atau {"effort": "high"}. "none" atau {"enabled": false} Pastikan ia keluar.Selengkapnya Penyelesaian. |
plugins | Rangkaian | Tidak | [{"id": "web", "max_results": 5}] sentiasa mencari web pertama. sehingga 10 hasil. |
n | Integra | Tidak | 1. apa-apa yang lain akan kembali 400. |
logit_biasusermetadata | objek, string dan objek | Tidak | diterima dan tidak dihantar. logit_bias peta pada maksimum 300 ID token kepada nombor dari -100 hingga 100; user mempunyai maksimum 256 watak; metadata memegang sehingga 16 nilai string, kunci sehingga 64 watak dan nilai sehingga 512. |
Jawapannya ialah biasa chat.completionDengan kos dalam usage.cost
(dalam dolar) dan dalam nymbot objek yang model ialah id model yang diselesaikan, jadi nama pendek kembali sebagai nama penuh. message.reasoning_contentterpisah daripada jawapan.
Jawapan
{
"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 telah dibangunkan daripada apa yang kembali, kerana pembekal melaporkan ia berbeza: tool_calls Apabila anda telah meminta alat, length apabila jawapan menggunakan setiap token yang dibenarkan (atau model menghabiskan mereka semua berfikir dan tidak menulis sebarang jawapan), content_filter Apabila pembekal menolak, dan stop
sebaliknya usage.completion_tokens_details.reasoning_tokens sentiasa 0: token pertimbangan tersembunyi dikira, dan dikurangkan, dalam completion_tokens.
| Status | bila |
|---|---|
400 | Tidak model atau messages (missing_required_parameter); bahagian audio atau fail, atau imej untuk model yang tidak boleh melihatnya (unsupported_content); lebih daripada 20 gambar (too_many_images(Bahasa Inggeris) Perbezaan antara pengambilan sampel dan pengambilan sampel (invalid_value); pautan imej yang tidak awam (invalid_image_url); alat pada model yang tidak boleh memanggil mereka (unsupported_tool); n selain daripada 1; a :thinking Perkara-perkara yang tidak boleh dipertimbangkan (model_not_found); atau pembekal menolak permintaan (upstream_rejected). |
402 | Keseimbangan yang model membelanjakan tidak boleh menutupi kepemilikan. |
403 | Kes yang paling teruk tidak sesuai dengan cap kunci (key_limit_reached(Lebih rendah max_tokens atau menaikkan cap. |
404 | Tiada model dengan nama itu (model_not_found). |
429 | Pihak berkuasa atau penyedia perkhidmatan (upstream_rate_limited). |
502, 503 | Pembekal gagal (upstream_error(atau yang telah disemak)upstream_overloaded, dengan Retry-AfterTiada apa-apa dikenakan bayaran kecuali pembekal dikenakan bayaran untuk percubaan. |
Kod status setiap saham endpoint disenaraikan di bawah Kesilapan.
cURL
curl https://nymbot.ai/api/v1/chat/completions \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5",
"messages": [
{"role": "system", "content": "Answer in one short paragraph."},
{"role": "user", "content": "What is a Lightning invoice?"}
],
"max_tokens": 400
}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
reply = client.chat.completions.create(
model="anthropic/claude-sonnet-5",
messages=[
{"role": "system", "content": "Answer in one short paragraph."},
{"role": "user", "content": "What is a Lightning invoice?"},
],
max_tokens=400,
)
print(reply.choices[0].message.content)
print(reply.usage.cost)
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const reply = await client.chat.completions.create({
model: "anthropic/claude-sonnet-5",
messages: [
{ role: "system", content: "Answer in one short paragraph." },
{ role: "user", content: "What is a Lightning invoice?" },
],
max_tokens: 400,
});
console.log(reply.choices[0].message.content);
console.log(reply.usage.cost);
Streaming yang
dengan "stream": true jawapan datang sebagai peristiwa yang dihantar oleh pelayan manakala model menulisnya. chat.completion.chunk ialah a data: garis, dan aliran ini berakhir dengan data: [DONE]sebab-sebab masuk ke dalam
delta.reasoning_contentJawapannya ialah dalam delta.content.
Stream apa-apa yang mungkin mengambil lebih daripada kira-kira 100 saat, seperti jawapan yang panjang,
max_tokens Permintaan yang tidak disiarkan tidak menghantar apa-apa sehingga jawapan selesai, dan rangkaian antara anda dan Nymbot mungkin menutup sambungan kosong selepas kira-kira 100 saat; model masih selesai dan apa yang ditulis diisi, tetapi jawapan hilang.
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]
- baris yang bermula dengan
:adalah maklumbalas terus hidup, dihantar setiap 15 saat semasa model sedang berfikir. - Minta untuk
"stream_options": {"include_usage": true}untuk mendapatkan bahagian terakhir di atas, dengan kosongchoices, token mengira, kos dannymbotobjek yang - Pembayaran diselesaikan selepas aliran berakhir.Jika anda menutup sambungan lebih awal, model tidak dihentikan: Nymbot membaca sisa aliran pembekal, sehingga 25 saat, untuk mendapatkan bilangan token, dan anda membayar apa yang dilaporkan pembekal.Tanpa bilangan itu, bayaran dianggarkan daripada input anda dan apa yang ditulis, ditambah seluruh pengeluaran output untuk model itu sebab-sebab.
- Kesilapan sebelum bahagian pertama, seperti
401atau402, kembali sebagai JSON biasa dengan kod statusnya, bukan sebagai aliran.data: {"error": {…}}peristiwa, dan aliran berakhir tanpa[DONE]. - Permintaan dengan alat, dan model pada pengangkutan Responses OpenAI, tidak aliran daripada pembekal. mereka masih menjawab dengan aliran yang sah, dihantar apabila jawapan selesai.
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);
}
Alat Panggilan
Menyatakan fungsi dalam tools dan model boleh meminta seseorang untuk dipanggil bukannya menjawab. anda menjalankan fungsi, menambah hasilnya sebagai tool Mesej yang sama
tool_call_idNymbot tidak pernah menjalankan fungsi anda; ia menghantar permintaan model kembali kepada anda.
tool_choice mengambil "auto", "none",
"required" atau {"type": "function", "function": {"name": "…"}}Senarai model menandakan model mana yang boleh dipanggil alat (capabilities.tools) Alat-alat yang ditolak dengan 400 unsupported_tool ialah nymbot/auto dan pada beberapa model katalog yang berjalan pada pengangkutan Responses OpenAI, yang Nymbot tidak boleh melepaskan alat kepada.
dengan "stream": true, permintaan dengan alat berjalan dalam satu potongan dan kemudian dihantar sebagai siri potongan biasa: peranan, satu potongan membawa setiap panggilan alat dengan indeks, id, nama dan argumen, dan potongan akhir.
Jawapannya, sebahagian daripada
"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);
Gambar dalam permintaan
Model dengan capabilities.vision boleh baca gambar. tambahkan image_url
sebahagian kepada mesej pengguna, dengan sama ada khalayak https:// link atau a
data:image/…;base64, Pihak berkuasa telah mengesahkan bahawa ia tidak boleh digunakan untuk memindahkan maklumat yang disenaraikan di laman web ini, tetapi ia boleh digunakan untuk memindahkan maklumat yang disenaraikan di laman web ini, dan ia boleh digunakan untuk memindahkan maklumat yang disenaraikan di laman web ini. (400 invalid_image_url• Pilihan detail ialah
auto, low atau high.
dengan nymbot/auto, permintaan dengan imej di dalamnya diarahkan kepada model standard yang boleh dilihat. capabilities.vision Menolak gambar dengan
400 unsupported_contentGambar hanya boleh berada dalam mesej pengguna. pautan mesti menunjuk kepada tuan awam; Nymbot menghantar imej kepada pembekal model dan tidak menyimpannya.
Sebuah imej dikenakan bayaran sebagai token input yang dihitung oleh pembekal untuknya, seperti yang lain daripada permintaan.
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);
Penyelesaian
Model dengan capabilities.reasoning boleh berfikir sebelum mereka menjawab. minta lebih atau kurang daripada itu dengan reasoning_effort ("minimal", "low",
"medium" atau "high") atau "reasoning": {"effort": "high"}atau menambah :thinking kepada nama model, yang bermaksud usaha yang tinggi. Pada model tanpa alasan seting diabaikan. nymbot/auto, :thinking menghantar permintaan kepada laluan alasan standard.
Pada model Anthropic usaha menjadi bajet pemikiran kira-kira 1,000, 2,000, 8,000 atau 16,000 token, tidak lebih daripada max_tokens Berfikir boleh dihentikan apabila
tool_choice memaksa alat, dan apabila permintaan itu berterusan loop alat (pesan terakhirnya adalah hasil alat), kerana Anthropic memerlukan pemikiran yang ditandatangani sebelum ini untuk meneruskan.
Pendapat ini kembali ke dalam message.reasoning_contentatau
delta.reasoning_content apabila streaming, tidak pernah dicampur dalam jawapan. Penyelesaian adalah output dan dikenakan sebagai sedemikian, di dalam completion_tokensSesetengah pembekal tidak mengembalikan teks alasan sama sekali, dan ia masih dikenakan bayaran.
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);
Model Perbezaan
Sufiks pada nama model mengubah cara permintaan dikendalikan, tanpa medan lain.Mereka bekerja pada ID penuh dan nama pendek sama, seperti dalam anthropic/claude-sonnet-5:online.
| Cukuplah | Kesan |
|---|---|
:online | Mencari laman web pertama, seperti plugins: [{"id": "web"}]Tag: lihat Pencarian web. |
:thinking | Penilaian yang tinggi; pada nymbot/auto, jalan berfikir. pada model yang tidak boleh berfikir, 400 model_not_found dengan “no endpoints found”. |
:nitro, :floor, :exacto, :extended | Setiap model katalog mempunyai satu laluan, jadi tidak ada laluan yang lebih cepat, lebih murah atau lebih lama untuk dipilih; pengikut dibenarkan supaya nama model yang disalin dari perkhidmatan lain masih berfungsi. |
Mana-mana suffix lain diabaikan. Nama keseluruhan diuji terlebih dahulu, jadi model yang idnya benar-benar mengandungi kolon masih berfungsi; jika tidak, suffix diambil daripada hujung satu pada satu masa sehingga model cocok. Nama model boleh menjadi tidak lebih daripada 200 watak panjang dengan tidak lebih daripada 4 suffix; yang lebih lama ditolak dengan 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);
Pencarian web
Mana-mana model chat boleh menjawab daripada web langsung.Nymbot mencari mesej pengguna terakhir (bahagian pertama 2,000 watak), membaca halaman terbaik dan memberikannya kepada model dengan soalan, ditandai sebagai kandungan luar model tidak boleh mengambil arahan dari.
- Selalu Mencari:
"plugins": [{"id": "web", "max_results": 5}]atau a:onlinesuffix pada model. - Cari apabila ia membantu:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]juga diterima sebagaiweb_search_previewatauopenrouter:web_searchNymbot hanya mencari apabila soalan kelihatan seperti ia memerlukan maklumat semasa, ujian yang sama yang digunakan oleh aplikasi.
max_results ialah 5 secara lalai dan pada maksimum 10. sumber kembali dalam
nymbot.web_search.sourcesSetiap orang dengan a title, snippet dan
urldan sebagai url_citation Nota dalam mesej.
Setiap carian yang berjalan kos $0.008, ditukar kepada sats, di atas token, dan ia adalah sebahagian daripada hold. halaman yang dibaca adalah token input juga, jadi jawapan dari web kos lebih daripada soalan yang sama diminta sejuk, kadang-kadang beberapa kali lebih.
Jawapannya, sebahagian daripada
"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);
Penyelesaian api
Format OpenAI yang lebih baru, yang digunakan oleh OpenAI Agents SDK dan oleh Codex. Ia berjalan pada model yang sama, pengiraan dan ciri-ciri seperti Chat Completions.
POST https://nymbot.ai/api/v1/responses Anda memerlukan kunci api.
| Lapangan | Jenis | diperlukan | Penerangan |
|---|---|---|---|
model | String yang | ya | sebagai untuk Chat PenyelesaianTerdapat juga suffix. |
input | string atau array | ya | Satu string, atau senarai item: mesej (peranan user, assistant, system, developer) dengan input_text, input_image dan output_text Bahagian, dan function_call dan function_call_output item untuk alat. input_image mengambil sebuah image_url link atau data URL, bukan fail id. reasoning dan web_search_call barang-barang yang telah ditarik; item_reference telah ditolak. |
instructions | String yang | Tidak | arahan sistem |
max_output_tokens | Integra | Tidak | yang paling banyak untuk ditulis. |
temperaturetop_p | Nombor | Tidak | Pengawal sampel, di mana model mengambil mereka. |
toolstool_choiceparallel_tool_calls | array, string atau objek, boolean | Tidak | Perkara-perkara yang dimaksudkan dalam Perkara-perkara ini ({"type": "function", "name": …, "parameters": …}) a web_search atau web_search_preview Alat bertukar kepada Pencarian web apabila ia membantu. alat-alat lain yang dibina ditolak. |
reasoning | objek | Tidak | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh dan max bermaksud high; none Letakkan ia off. |
text.formatresponse_format | objek | Tidak | Hasil terstruktur, seperti skim JSON atau json_object. |
metadata | objek | Tidak | Mengembalikan tidak berubah dalam respons. Pada maksimum 16 nilai string, kunci sehingga 64 watak dan nilai sehingga 512. |
stream | boolean | Tidak | Stream peristiwa seperti yang diterangkan di bawah. |
store | boolean | Tidak | Tidak ada yang disimpan, dan jawapan sentiasa berkata "store": false. |
previous_response_idconversationbackground | String, objek dan boolean | Tidak | Tidak disokong : 400 unsupported_parameterJawapan tidak disimpan, jadi hantar keseluruhan perbualan ke input Setiap kali |
Jawapan
{
"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 }
}
Permintaan alat muncul dalam output sebagai a function_call item dengan
call_id, name dan argumentsMengembalikan hasil sebagai a
function_call_output item dengan sama call_idPertimbangan, apabila model mengembalikannya, adalah reasoning item dengan reasoning_text kandungan, disenaraikan terlebih dahulu. status ialah incomplete Apabila jawapannya mendatangkan
max_output_tokens atau pembekal yang menolak, dengan
incomplete_details.reason Sediakan 2 max_output_tokens atau
content_filterTanggapan juga mengekalkan tetapan permintaan (suhu, alat, pilihan alat dan lain-lain) seperti yang dilakukan oleh OpenAI, dan membawa nymbot kos objek
Rujukan: Setiap peristiwa merupakan satu event: garis dan a data: baris dengan a
sequence_numberDalam perintah ini: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedSebarang bilangan daripada response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.donedan akhirnya response.completed dengan penggunaan dan kos. Satu jawapan memotong akhir pendek dengan response.incomplete sebaliknya, dan kegagalan selepas aliran bermula dengan response.failed. berfikir aliran sebagai item sendiri dengan response.reasoning_text.delta dan .donePanggilan alat datang selepas mesej, masing-masing sebagai item dengan response.function_call_arguments.delta
dan .done.
| Status | bila |
|---|---|
400 | Tidak model atau input; previous_response_id, conversation, background atau sebuah item_reference (unsupported_parameter); alat atau jenis kandungan yang tidak disokong. |
402, 403, 404, 429, 502, 503 | Berkenaan dengan chat completion. |
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);
Pesan Antropologi
Format Anthropic, untuk SDK Anthropic dan Claude Code. Ia berfungsi dengan setiap model dalam katalog, bukan sahaja Claude: permintaan diterjemahkan, berjalan melalui paip yang sama, dan diterjemahkan kembali.
POST https://nymbot.ai/api/v1/messages - memerlukan kunci API, seperti x-api-key atau Authorization: Bearer.
yang anthropic-version dan anthropic-beta Nama-nama model antropik diselaraskan dengan katalog, jadi Claude Code dan SDK bekerja dengan nama-nama yang sudah mereka gunakan:
- Nama yang dikehendaki ialah Catalogue, seperti
claude-sonnet-5atauanthropic/claude-opus-5digunakan seperti yang ada. - Pada tarikh yang sama (
-20260514),-latest, sebuah versi tag seperti-v1Pada masa yang sama, tarikh seperti[1m]dan sebuahanthropic/atauanthropic.Perbezaan di antara kedua-duanya ialah pengukuran dan pengukuran (claude-haiku-4-5Menemukanclaude-haiku-4.5). - Jika itu masih tidak sesuai, keluarga (Opus, Sonnet atau Haiku) digunakan, selagi versi katalog adalah sama atau lebih baru daripada yang diminta.
- Nama yang tidak sesuai dengan apa-apa kembali
404not_found_error.
| Lapangan | Jenis | diperlukan | Penerangan |
|---|---|---|---|
model | String yang | ya | Nama model katalog, atau nama model antropik. |
max_tokens | Integra | ya | yang paling banyak untuk ditulis. |
messages | Rangkaian | ya | user dan assistant Tukar, dengan text, image (base64 atau sumber URL) tool_use dan tool_result daripada blok. thinking blok daripada putaran terdahulu diterima dan diturunkan. |
system | string atau array | Tidak | Sistem prompt, seperti string atau blok teks. |
temperaturetop_p | Nombor | Tidak | Pengawal sampel, di mana model mengambil mereka. top_k diterima dan ditinggalkan. |
stop_sequences | Kumpulan Strings | Tidak | Teks yang mengakhiri jawapan Maksimum 4 helaian, maksimum 256 watak. |
toolstool_choice | Rujukan, objek | Tidak | Alat dengan name, description dan input_schema. a web_search Server Tool berterusan Pencarian webAlat-alat lain yang dibina oleh Anthropic (bash, editor teks, penggunaan komputer) ditolak dengan unsupported_tool. tool_choice mengambil auto, any, tool atau nonedan disable_parallel_tool_use. |
thinking | objek | Tidak | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} atau {"type": "disabled"}Budget memilih tahap usaha: di bawah 2,048 minimum, dari 2,048 rendah, dari 8,192 menengah, daripada 16,384 tinggi. output_config.effortatau yang tinggi. |
stream | boolean | Tidak | Stream dalam format acara Anthropic. |
metadata | objek | Tidak | diterima dan diabaikan. |
Jawapan
{
"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 juga boleh mengekalkan tool_use blok dan a thinking
Blok yang mana signature ialah kosong. stop_reason ialah
end_turn, max_tokens, tool_use atau refusalBeliau bekerja dengan cara yang sama seperti finish_reason ialah
Chat Penyelesaian; stop_sequence sentiasa
null, walaupun apabila satu urutan berhenti mengakhiri jawapan. input_tokens hanya mengandungi input segar; input cache berada dalam kedua-dua medan cache.
nymbot Objek dan X-Nymbot-Cost-Sats kepada header
Streamed, peristiwa-peristiwa ini ialah Anthropic's: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta atau thinking_delta),
content_block_stop, message_delta dengan alasan berhenti, penggunaan dan nymbot kos objek, dan message_stop. a ping juga dihantar setiap 15 saat semasa model sedang bekerja. panggilan alat tiba selepas teks, masing-masing sebagai
tool_use blok dengan semua input dalam satu input_json_delta.
Kesilapan pada titik akhir ini menggunakan format Anthropic:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Keseimbangan yang pendek ialah 402 billing_errorPembekal yang berlebihan
503 overloaded_errorKegagalan selepas aliran telah bermula dihantar sebagai error peristiwa yang
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);
Mengikut Token
Perkiraan berapa banyak token input permintaan Mesej akan digunakan, supaya klien boleh semak sebelum ia menghantar.
POST https://nymbot.ai/api/v1/messages/count_tokens - memerlukan kunci API. percuma
badan yang sama seperti untuk Mesejdan tanpa max_tokens; nama model perlu diselesaikan. bilangan adalah perkiraan: watak-watak prompt sistem, mesej, panggilan alat dan definisi alat dibahagikan oleh empat, ditambah 1,600 untuk setiap imej. Ia bukan tokenizer penyedia sendiri, jadi bilangan sebenar boleh berbeza. Kunci yang telah mencapai capnya masih boleh menggunakannya.
Jawapan
{ "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);
Senarai Model
Setiap model dan generator yang diterima oleh API, dengan apa yang ia kos. senarai dibaca daripada katalog langsung yang sama seperti pemilih aplikasi, jadi ia sentiasa apa yang pelayan akan menjalankan.
GET https://nymbot.ai/api/v1/models — tiada kunci diperlukan. disembunyikan selama lima minit.
GET /api/v1/models/{id} Kembalikan satu entri
| Lapangan | Jenis | diperlukan | Penerangan |
|---|---|---|---|
type | Penyelesaian (Query) | Tidak | chat (Dalam hal yang demikian, image, video, audio, embedding atau allSebahagian daripada mereka boleh diberikan, seperti image,video. |
Harga adalah apa yang anda bayar, dengan yuran dan margin yang sudah ada, dalam dolar dan dalam sats pada harga Bitcoin semasa. balance menunjukkan kepada mana model itu membelanjakan.
nymbot_key ialah nama pendek model dalam app. created selalu 0 kerana katalog tidak mencatat apabila model telah ditambahkan. per_request sebaliknya.
nymbot/auto sentiasa terlebih dahulu, dibayar sebagai variableDengan a
routes senarai yang memberikan kadar setiap laluan standard. ia senarai visi dan alasan, tetapi bukan alat.
GET /api/v1/models/{id} menerima nama dan alias yang sama sebagai permintaan, dan mengembalikan entri untuk model yang mereka tentukan.
Jawapan
{
"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"
}
]
}
Jenis lain :
- imej Masuk mempunyai
capabilities(accepts_image_url,requires_image_url,edit) dan hargaper_generation. - Video yang Masuk mempunyai
max_duration_secondsdanresolutionsdan harga yangper_seconduntuk setiap resolusi. - Audio Masuk mempunyai
audio_typespeechatautranscriptionHarga yangper_1k_charsatauper_minute. - embedded Masuk mempunyai
dimensions,context_length,max_inputsdan harga per juta token input.
Harga yang ditandai "estimated": true adalah perkiraan aplikasi untuk generator yang harga tidak diterbitkan. type Kembali 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);