Bilgi tabanı Geliştirici
Chat, Cevaplar ve Mesajlar
Bir modelden bir şey sormak için üç yol var, üç formatta müşteriler zaten konuşuyor, hepsi aynı modellerde çalışıyor ve aynı şekilde faturalandı.
Bu sayfa kolaylık sağlamak amacıyla makine tarafından çevrilmiştir. İngilizce orijinali geçerli olan versiyondur.
Chat Tamamlandı
OpenAI sohbet biçimi, ve hemen hemen her araç destekler. şimdiye kadar konuşmayı gönderin ve bir sonraki mesajı geri alın.
POST https://nymbot.ai/api/v1/chat/completions Bir API anahtarına ihtiyacınız var.
Sadece model Ve messages Seçilen modelin almadığı bir örnekleme parametresi bir hata olmadan düşer, böylece bir talep vücudu modeller arasında çalışır. supported_parametersDüşen yerine reddedilen şey, modelin yapamayacağı bir şeydir: göremeyen bir model için resimler, onları çağıramayacak bir model için araçlar.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
model | String için | Evet | nymbot/auto (veya auto) Nymbot'un standart denge üzerinde yönlendirilmesi için veya bir katalog model kimliği gibi anthropic/claude-sonnet-5 Pro dengesi. Uygulamanın kısa isimleri ve adları da kabul edilir. yeterli. |
messages | Array | Evet | Konuşma - Roller system, developer (Sistem olarak değerlendirilecek şekilde) user, assistant Ve toolİçerik bir satır veya bir listedir text Ve image_url Parçalar; resimler yalnızca kullanıcı mesajlarında. input_audio Dosya bölümleri reddedilir. |
stream | boolean | Hayır | Cevabı yazdığınız gibi gönderin Streaming Hakkında. |
stream_options | objektifi | Hayır | {"include_usage": true} Token sayısı ve maliyeti ile son bir parça ekler. |
max_tokensmax_completion_tokens | İnternete | Hayır | Yazmak için en fazla token. Yüksekse modelin maksimumına indirilir. Aynı zamanda dengelerinizden ne kadar tuttuğunu belirler, bu nedenle daha küçük bir sayının başlamak için daha az krediye ihtiyacı vardır. |
temperaturetop_p | Numarası | Hayır | Sample Kontrolü : temperature 0 ile 2 arasında, top_p 0 ile 1 arasında. |
stop | String veya Array | Hayır | Cevabı bitiren metin: bir satır veya en fazla 4 satır, her biri en fazla 256 karakter. nymbot/auto. |
seed | İnternete | Hayır | Tekrarlanabilir örnekleme için, modelin desteklediği yerlerde. |
presence_penaltyfrequency_penalty | Numarası | Hayır | Tekrarlayıcı kontroller, her biri -2 ila 2. |
response_format | objektifi | Hayır | {"type": "json_object"} veya {"type": "json_schema", "json_schema": {…}}modelin desteklediği yerde. kullanılmaz nymbot/auto. |
toolstool_choiceparallel_tool_calls | Array, String veya Object, Boolean | Hayır | Görüntüleme işlevi: Görüntüleme Araç Çağrısı• A web_search Aracı dönüştürür Web AramaEn fazla 128 araç ve 512 KB tanım, en fazla 64 düzeyde yerleştirilmiş derin; daha fazlası 400. |
reasoning_effortreasoning | Sürtünme, Object | Hayır | "minimal", "low", "medium" veya "high"ya da {"effort": "high"}. "none" veya {"enabled": false} Dışarıya Çıkarın - Görün Düşünce. |
plugins | Array | Hayır | [{"id": "web", "max_results": 5}] Her zaman ilk arama yapar. 10 Sonuçlar |
n | İnternete | Hayır | 1. Herşey Geri Dönüyor 400. |
logit_biasusermetadata | Object, String ve Object | Hayır | Kabul edilmiş ve gönderilmemiştir. logit_bias - -100 ile 100 arasındaki rakamlara kadar en fazla 300 token kimlik kartları; user En fazla 256 karakter metadata En fazla 16 satır değerleri, en fazla 64 karakter anahtarları ve en fazla 512 değerleri içerir. |
Cevabım sıradan bir chat.completionAncak, maliyetin içinde usage.cost
(Dolar ve ABD’de nymbot objektif olarak model Çözülmüş model id'dir, böylece kısa bir isim tam olarak geri gelir. message.reasoning_contentCevaptan ayrı kalın.
Cevap
{
"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 geri geldi, çünkü sağlayıcılar farklı olarak bildirir: tool_calls Ürünler aracı istendiğinde, length Cevap her izinli token kullandığında (veya model bunların hepsini düşünerek harcadı ve hiçbir cevap yazmadı), content_filter Tüketiciler reddedildiğinde ve stop
Aksi halde usage.completion_tokens_details.reasoning_tokens her zaman 0: gizli düşünce tokenleri sayılır ve yüklenir, completion_tokens.
| statüsü | Ne zaman |
|---|---|
400 | Hayır model veya messages (missing_required_parameter); bir ses veya dosya parçası, ya da bir model için görüntüler onları göremez (unsupported_content); daha fazla 20 resim (too_many_imagesAşağıdakilerden hangisi yanlışlıkla veya yanlışlıkla belirlenir (invalid_value); resmi olmayan bir fotoğraf bağlantısı (invalid_image_url); bir model üzerinde araçlar onları çağrılamaz (unsupported_tool); n 1’den başka; a :thinking Düzeltme yapamayan bir model üzerinde suffix (model_not_found) veya tedarikçi talebi reddetti (upstream_rejected). |
402 | Modelin harcadığı bilanço tutarını karşılayamaz. |
403 | En kötü durumda anahtar kapıya uygun değil (key_limit_reached• Düşük max_tokens Ya da kapıyı kaldırın. |
404 | Hiçbir model bu isimle (model_not_found). |
429 | Anahtarın oranı sınırı, ya da sağlayıcının (upstream_rate_limited). |
502, 503 | Sürücünün başarısız olması (upstream_error) veya aşırı yüklenir (upstream_overloadedile Retry-AfterTedarikçi deneme için faturalandırılmadıkça hiçbir şey ücretlendirilir. |
Tüm Endpoint Shares'in durum kodları aşağıda listelenmiştir. Hatalar.
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 Hakkında
ile "stream": true Cevap, model yazarken sunucu tarafından gönderilen olaylar olarak gelir. chat.completion.chunk Bir a data: Aşağıdaki linke tıklayınız: The stream ends with data: [DONE]Düşünce içine girer
delta.reasoning_contentCevabın içinde delta.content.
Uzun bir cevap, büyük bir cevap gibi yaklaşık 100 saniyeden fazla süren herhangi bir şeyi aktarın.
max_tokens ya da bir mantıksal model. akışta olmayan bir talep, cevap tamamlanana kadar hiçbir şey göndermez ve sizinle Nymbot arasındaki ağ yaklaşık 100 saniye sonra boş bir bağlantı kapatabilir; model hala bitirir ve yazdığı şey yüklenir, ancak cevap kaybolur.
akış
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]
- ile başlayan çizgiler
:Her 15 saniyede bir model düşünürken gönderilen canlı yorumlardır.SSE müşterileri onları atlamaktadır. - Sormak için
"stream_options": {"include_usage": true}yukarıdaki son parçayı almak için, boş birchoices, token sayıyor, maliyeti venymbotobjektif olarak - Bağlantıyı erken kapatırsanız, model durmaz: Nymbot, token sayısını almak için tedarikçinin akışının geri kalanını 25 saniyeye kadar okuyor ve sağlayıcının bildirdiğini ödeyeceksiniz.
- Önceki İçerikBöyle Bir Yanlışlık
401veya402, bir akım olarak değil, durum kodu ile sıradan JSON olarak geri döner. akım başladıktan sonra bir hata son olarak gelirdata: {"error": {…}}olay, ve akım olmadan sona erer[DONE]. - OpenAI'nin Responses taşımacılığında araçlarla yapılan talepler ve modeller, sağlayıcıdan akış yapmaz.
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);
}
Araç Çağrısı
fonksiyonları tanımlamak için tools ve model yanıt verme yerine birini çağrılmasını isteyebilir. fonksiyonu çalıştırırsanız, sonucu bir tool Aynı mesajla
tool_call_idNymbot hiçbir zaman işlevlerinizi çalıştırmaz; modelin isteğini size geri iletir.
tool_choice alır "auto", "none",
"required" veya {"type": "function", "function": {"name": "…"}}Model listesi, hangi modellerin araçları çağırabileceğini işaretler (capabilities.tools(Aynı araçlar reddediliyor 400 unsupported_tool Benim nymbot/auto ve OpenAI'nin Responses taşımacılığında çalışan birkaç katalog modeli, Nymbot'un araçları geçemediği.
ile "stream": true, araçlarla bir isteğin tek bir parçada çalıştığı ve daha sonra normal bir parçacık sırası olarak gönderildiği: rol, her araç çağrısını endeks, id, isim ve argümanlarla taşıyan bir parçacık ve son parçacık.
Cevap: kısmen
"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);
Fotoğraflar bir talepte
Modeller ile capabilities.vision Görüntüleri okuyabilirsin. ekle image_url
bir kullanıcı mesajına, ya da bir kitleye https:// Link veya A
data:image/…;base64, 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0400 invalid_image_url) bir seçenek detail bence
auto, low veya high.
ile nymbot/auto, içeride bir resim bulunan bir talep, görülebilen standart bir modele yönlendirilir. capabilities.vision Fotoğrafları reddetmek
400 unsupported_contentGörüntüler yalnızca kullanıcı mesajlarında bulunabilir. bir bağlantı halka açık bir barındırmaya yönlendirilmelidir; Nymbot resmini model sağlayıcısına iletir ve saklamaz.
Bir resim, sağlayıcının onun için saydığı giriş tokenleri gibi, isteğin geri kalanı gibi ücretlendirilir.
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);
Düşünce
Modeller ile capabilities.reasoning cevap vermeden önce düşünebilirsin. daha fazla ya da daha az soru reasoning_effort ("minimal", "low",
"medium" veya "high") veya "reasoning": {"effort": "high"}ya da ekle :thinking model adı, yüksek çaba anlamına gelir. bir modelde neden olmadan ayar göz ardı edilir. nymbot/auto, :thinking İsteği standart akıl yürütme yoluna gönderir.
Antropik modellerde çaba yaklaşık 1.000, 2.000, 8.000 veya 16.000 tokenlik bir düşünce bütçesi haline gelir, asla daha fazla değildir. max_tokens Düşünmek: Düşünmek ne zaman bırakılır
tool_choice Bir aracı zorlayın ve isteğin bir araç döngüsüne devam ettiğinde (son mesajı bir araç sonucu), çünkü Anthropic'in yeniden başlatmak için daha önce imzalanan düşünceye ihtiyacı vardır.
Düşünce geri dönüyor message.reasoning_contentya da
delta.reasoning_content Cevapla Cevapla Cevapla Cevapla Cevapla Cevapla Cevapla Cevapla Cevapla Cevapla completion_tokensBazı sağlayıcılar mantıksal metni hiçbir şekilde iade etmez ve hala ücretlendirilir.
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 Sıkıştırma
Model adındaki bir iltifat, isteğin nasıl ele alındığını başka bir alan olmaksızın değiştirir. anthropic/claude-sonnet-5:online.
| yeterli | Etkisi |
|---|---|
:online | Öncelikle web sitesi gibi, plugins: [{"id": "web"}]Şöyle Web Arama. |
:thinking | Düşüncelere dayanıklı; on nymbot/autoDüşüncesi olmayan bir model üzerinde, 400 model_not_found ve “no endpoints found” ile ilgili herhangi bir bilgi bulunmamaktadır. |
:nitro, :floor, :exacto, :extended | Her katalog modelinin bir yolu vardır, bu yüzden daha hızlı, daha ucuz veya daha uzun bir yolu seçmek yok; devamlılıklar izin verilir, böylece diğer hizmetlerden kopyalanan model adları hala çalışır. |
Diğer herhangi bir iltifat göz ardı edilir. Tüm adı önce denir, böylece bir modelin kimliği gerçekten bir kolon içeriyor hala çalışır; bunu yapmazsanız, iltifatlar bir model eşleşene kadar bir kez sonundan alınır. Bir model adı en fazla 200 karakter uzun olabilir ve en fazla 4 iltifat; daha uzun biri ile reddedilir 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 Arama
Nymbot, son kullanıcı mesajını (ilk 2000 karakterini) arar, en iyi sayfaları okur ve bunları modelin dış içeriği olarak işaretlenmiş sorularla modeline verir.
- Her zaman arayın:
"plugins": [{"id": "web", "max_results": 5}]ya da a:onlineModel için yeterli. - Yardımcı Olduğunda Bulun:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Ayrıca kabul edildiği gibiweb_search_previewveyaopenrouter:web_searchNymbot sadece sorunun güncel bilgilere ihtiyacı olduğu gibi göründüğünde arar, uygulamanın kullandığı aynı test.
max_results varsayılan olarak 5 ve en fazla 10. Kaynaklar geri döner
nymbot.web_search.sourcesHer biri ile a title, snippet Ve
urlve as url_citation Mesajda yazılan notlar.
Çalışan her arama fiyatı $0.008, tokenlerin üstünde sats'a dönüştürülür ve o sayfaların bir parçasıdır. okuduğu sayfalar da giriş tokenlerdir, bu yüzden web'den bir yanıt aynı sorudan daha fazla maliyete mal olur, bazen birkaç kez daha fazla.
Cevap: kısmen
"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);
Cevap Ateş
OpenAI Agents SDK ve Codex tarafından kullanılan OpenAI'nin daha yeni biçimi, Chat Completions ile aynı modellerde, faturalandırma ve özelliklerde çalışır.
POST https://nymbot.ai/api/v1/responses Bir API anahtarına ihtiyacınız var.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
model | String için | Evet | olarak Chat Tamamlandısuffixler dahil olmak üzere. |
input | String veya Array | Evet | Bir satır veya öğelerin listesi: mesajlar (roller user, assistant, system, developer) ile input_text, input_image Ve output_text Parçaları ve function_call Ve function_call_output Araçlar için ürünler. input_image alır bir image_url Bağlantı veya veri URL, bir dosya kimliği değil. reasoning Ve web_search_call Ürünler iptal edilmiştir; item_reference reddedilmiştir |
instructions | String için | Hayır | Sistem talimatları |
max_output_tokens | İnternete | Hayır | Yazmak için en çok kullanılan kelimeler. |
temperaturetop_p | Numarası | Hayır | Örnekleme kontrolleri, modelin onları aldığında. |
toolstool_choiceparallel_tool_calls | Array, String veya Object, Boolean | Hayır | Cevap Yazın Cevabı ({"type": "function", "name": …, "parameters": …}) a web_search veya web_search_preview Aracı dönüştürür Web Arama Diğer eklenen araçlar reddedilir. |
reasoning | objektifi | Hayır | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh Ve max anlamı high; none Onu kapatıyorsun |
text.formatresponse_format | objektifi | Hayır | Yapısal çıkış, JSON şeması veya json_object. |
metadata | objektifi | Hayır | En fazla 16 satır değerinde, en fazla 64 karakter ve en fazla 512 değer için anahtarlar. |
stream | boolean | Hayır | Aşağıda açıklandığı gibi olayları aktarın. |
store | boolean | Hayır | Hiçbir şey saklanmaz ve cevap her zaman diyor "store": false. |
previous_response_idconversationbackground | String, Object ve Boolean | Hayır | Desteklenmiyor : 400 unsupported_parameterCevaplar kaydedilmez, bu yüzden tüm konuşmayı input Her seferinde |
Cevap
{
"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 }
}
Bir araç isteği ortaya çıkar output gibi a function_call Konu ile
call_id, name Ve argumentsSonuçları A olarak geri gönderin
function_call_output Aynı konu ile ilgili call_idDüşünce, modeli iade ettiğinde, bir reasoning Konu ile reasoning_text İlk olarak listelenen içerik. status bence incomplete Cevap Çıktığında
max_output_tokens ya da ihracatçı tarafından reddedilmiştir.
incomplete_details.reason ayarlayın max_output_tokens veya
content_filterCevap aynı zamanda OpenAI'nin yaptığı gibi isteğin ayarlarını (sıcaklık, araç seçimi ve benzeri) geri çevirir ve nymbot Objektif maliyet
Her bir olay, her bir olay bir event: Line ve A data: A ile bağlantı
sequence_numberBu sırada ise: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedHerhangi bir sayıda response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.doneVe nihayet response.completed Cevap ve Cevap: Kısa Süreli Süreli Cevap response.incomplete yerine, ve akım başladıktan sonra bir başarısızlık response.failedKendi içine akışları kendi içine akışları olarak response.reasoning_text.delta Ve .doneAraç çağrıları mesajın ardından gelir, her biri bir öğe olarak response.function_call_arguments.delta
Ve .done.
| statüsü | Ne zaman |
|---|---|
400 | Hayır model veya input; previous_response_id, conversation, background ya da bir item_reference (unsupported_parameter); Desteklenmeyen bir araç veya içerik türü. |
402, 403, 404, 429, 502, 503 | Chat tamamlamak için. |
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);
antropolojik mesajlar
Anthropic'in biçimi, Anthropic SDK'lar ve Claude Code için. Kataloğundaki tüm modellerle çalışıyor, sadece Claude'la değil: isteği tercüme ediyoruz, aynı boru hattından geçiyoruz ve geri çeviriyoruz.
POST https://nymbot.ai/api/v1/messages bir API anahtarı gerektirir, x-api-key veya Authorization: Bearer.
ve anthropic-version Ve anthropic-beta Antropik model isimleri katalogla eşleşir, bu nedenle Claude Code ve SDK'lar zaten kullandıkları isimlerle çalışır:
- bildiğimiz bir isim, örneğin
claude-sonnet-5veyaanthropic/claude-opus-5olduğu gibi kullanılır. - Bir tarih (
-20260514),-latestTıpkı bir versiyonu gibi-v1gibi bir çarşaf gibi,[1m]ve biranthropic/veyaanthropic.Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi (claude-haiku-4-5bulmakclaude-haiku-4.5). - Eğer bu hala hiçbir şey eşleşmiyorsa, aile (Opus, Sonnet veya Haiku) kullanılır, kataloğun sürümü talep edilenden aynı veya daha yeni olduğu sürece.
- Hiçbir şeyle eşleşmeyen bir isim geri döner
404not_found_error.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
model | String için | Evet | Bir katalog model id veya bir antropolojik model adı. |
max_tokens | İnternete | Evet | Yazmak için en çok kullanılan kelimeler. |
messages | Array | Evet | user Ve assistant Dönüşüm, ile text, image (base64 veya URL kaynağı) tool_use Ve tool_result Bloklar için thinking Daha önceki turlardan gelen bloklar kabul edilir ve atılır. |
system | String veya Array | Hayır | Sistem prompt, bir satır veya metin blokları gibi. |
temperaturetop_p | Numarası | Hayır | Örnekleme kontrolleri, modelin onları aldığında. top_k kabul edilmiş ve terk edilmiştir. |
stop_sequences | Array Strings Hakkında | Hayır | Cevabı bitiren metin. en fazla 4 satır, her biri en fazla 256 karakter. |
toolstool_choice | Array, Objektör | Hayır | ile aletleri name, description Ve input_schema• A web_search Server Tool Çıkıyor Web AramaAnthropic'in diğer yerleşik araçları (bash, metin editörü, bilgisayar kullanımı) unsupported_tool. tool_choice alır auto, any, tool veya noneve disable_parallel_tool_use. |
thinking | objektifi | Hayır | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} veya {"type": "disabled"}Bütçe bir çaba seviyesi seçer: 2.048 minimum altında, 2.048 düşük, 8.192 orta, 16.384 yüksek. output_config.effortYa da yüksek. |
stream | boolean | Hayır | Anthropic'in etkinlik biçiminde akış. |
metadata | objektifi | Hayır | Kabul edilmiş ve göz ardı edilmiştir. |
Cevap
{
"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 Aynı zamanda tutabilir tool_use Bloklar ve A thinking
Blok Kimin signature Boş kalmış stop_reason bence
end_turn, max_tokens, tool_use veya refusalAynı şekilde çalıştı ve finish_reason Benim
Chat Tamamlandı; stop_sequence her zaman
null, bir durdurma dizisi cevabı bitirdiğinde bile. input_tokens Sadece yeni girişler sayılır; önbelleklenen girişler iki önbellek alanında bulunur.
nymbot Objektif ve X-Nymbot-Cost-Sats Header Hakkında
Anasayfa Gündem Antropolojik Olaylar: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta veya thinking_delta),
content_block_stop, message_delta Kullanım sebebi, kullanım sebebi ve nymbot Objektif maliyet ve message_stop• A ping Aynı zamanda her 15 saniyede bir gönderilir.Tool çağrıları metnin ardından, her biri bir
tool_use Tüm içeriği bir içeride input_json_delta.
Bu son noktadaki hatalar Anthropic'in biçimini kullanır:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Kısa bir denge 402 billing_erroraşırı yüklü bir tedarikçi
503 overloaded_errorAkış başlatıldıktan sonra bir başarısızlık, bir error Bir olay.
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);
Token Sayısı
Mesaj talebinde kaç giriş tokeninin kullanılacağına dair bir tahmin, böylece bir müşteri göndermeden önce kontrol edebilir.
POST https://nymbot.ai/api/v1/messages/count_tokens Ücretsiz bir API anahtarı gerekir.
Vücut da aynı şekilde Mesajlarıolmadan max_tokens; model adı çözülmelidir. sayısı bir tahmindir: sistem iletisi, mesajlar, araç çağrıları ve araç tanımları karakterleri dört ile bölünmüş, her resim için 1600 artı. Bu sağlayıcının kendi tokenizer değildir, bu nedenle gerçek sayısı farklı olabilir. kapısına ulaşan bir anahtar hala kullanabilir.
Cevap
{ "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);
Model Listesi
API'nin her modeli ve jeneratörü ne pahasına olursa olsun kabul eder.List, uygulamanın seçicisi ile aynı canlı katalogtan okunur, bu yüzden her zaman sunucunun çalıştığıdır.
GET https://nymbot.ai/api/v1/models Anahtar gerekmiyor. 5 dakika saklandı.
GET /api/v1/models/{id} 1 giriş yapılır.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
type | String Hakkında (Query) | Hayır | chat (Düzenleme için tıklayın) image, video, audio, embedding veya allBazıları da verilebilir, örneğin image,video. |
Fiyatlar, ücret ve marjın zaten dolarlarda ve geçerli Bitcoin fiyatında sats olarak ödenen şeydir. balance modelin hangi harcama miktarını gösterdiğini gösterir.
nymbot_key Uygulamada modelin kısa adıdır. created her zaman 0, çünkü katalog bir model eklendiği zaman kaydedilmez. per_request yerine.
nymbot/auto her zaman ilk olarak, fiyat olarak variableA ile birlikte
routes Her standart rotanın oranlarını gösteren bir liste. Görüş ve düşünce listesi, ancak araçlar değil.
GET /api/v1/models/{id} isteği olarak aynı isimleri ve adları kabul eder ve karar verecekleri model için girişi iade eder.
Cevap
{
"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"
}
]
}
Diğer türler :
- Görüntü Girişler var
capabilities(accepts_image_url,requires_image_url,edit) ve bir fiyatper_generation. - Videoları Girişler var
max_duration_secondsVeresolutionsve bir fiyatper_secondHer bir karar için. - Audio Hakkında Girişler var
audio_typespeechveyatranscriptionFiyatıper_1k_charsveyaper_minute. - İçeriği Girişler var
dimensions,context_length,max_inputs1 milyon giriş token fiyatı.
Markalı Fiyatlar "estimated": true Fiyatı açıklanmamış bir jeneratör için uygulamanın tahminidir. type Geri Dönüş 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);