İçeriğe atla
Nymbot’a Dönüş

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ı.

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
modelString içinEvetnymbot/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.
messagesArrayEvetKonuş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.
streambooleanHayırCevabı yazdığınız gibi gönderin Streaming Hakkında.
stream_optionsobjektifiHayır{"include_usage": true} Token sayısı ve maliyeti ile son bir parça ekler.
max_tokens
max_completion_tokens
İnterneteHayırYazmak 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.
temperature
top_p
NumarasıHayırSample Kontrolü : temperature 0 ile 2 arasında, top_p 0 ile 1 arasında.
stopString veya ArrayHayırCevabı bitiren metin: bir satır veya en fazla 4 satır, her biri en fazla 256 karakter. nymbot/auto.
seedİnterneteHayırTekrarlanabilir örnekleme için, modelin desteklediği yerlerde.
presence_penalty
frequency_penalty
NumarasıHayırTekrarlayıcı kontroller, her biri -2 ila 2.
response_formatobjektifiHayır{"type": "json_object"} veya {"type": "json_schema", "json_schema": {…}}modelin desteklediği yerde. kullanılmaz nymbot/auto.
tools
tool_choice
parallel_tool_calls
Array, String veya Object, BooleanHayırGö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_effort
reasoning
Sürtünme, ObjectHayır"minimal", "low", "medium" veya "high"ya da {"effort": "high"}. "none" veya {"enabled": false} Dışarıya Çıkarın - Görün Düşünce.
pluginsArrayHayır[{"id": "web", "max_results": 5}] Her zaman ilk arama yapar. 10 Sonuçlar
nİnterneteHayır1. Herşey Geri Dönüyor 400.
logit_bias
user
metadata
Object, String ve ObjectHayırKabul 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
400Hayı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).
402Modelin harcadığı bilanço tutarını karşılayamaz.
403En kötü durumda anahtar kapıya uygun değil (key_limit_reached• Düşük max_tokens Ya da kapıyı kaldırın.
404Hiçbir model bu isimle (model_not_found).
429Anahtarın oranı sınırı, ya da sağlayıcının (upstream_rate_limited).
502, 503Sü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ş bir choices, token sayıyor, maliyeti ve nymbot objektif 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 401 veya 402, 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 gelir data: {"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.

yeterliEtkisi
:onlineÖncelikle web sitesi gibi, plugins: [{"id": "web"}]Şöyle Web Arama.
:thinkingDüşü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, :extendedHer 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);

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 :online Model için yeterli.
  • Yardımcı Olduğunda Bulun: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Ayrıca kabul edildiği gibi web_search_preview veya openrouter: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
modelString içinEvetolarak Chat Tamamlandısuffixler dahil olmak üzere.
inputString veya ArrayEvetBir 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
instructionsString içinHayırSistem talimatları
max_output_tokensİnterneteHayırYazmak için en çok kullanılan kelimeler.
temperature
top_p
NumarasıHayırÖrnekleme kontrolleri, modelin onları aldığında.
tools
tool_choice
parallel_tool_calls
Array, String veya Object, BooleanHayırCevap 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.
reasoningobjektifiHayır{"effort": "minimal" | "low" | "medium" | "high"}. xhigh Ve max anlamı high; none Onu kapatıyorsun
text.format
response_format
objektifiHayırYapısal çıkış, JSON şeması veya json_object.
metadataobjektifiHayırEn fazla 16 satır değerinde, en fazla 64 karakter ve en fazla 512 değer için anahtarlar.
streambooleanHayırAşağıda açıklandığı gibi olayları aktarın.
storebooleanHayırHiçbir şey saklanmaz ve cevap her zaman diyor "store": false.
previous_response_id
conversation
background
String, Object ve BooleanHayırDesteklenmiyor : 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
400Hayı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, 503Chat 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-5 veya anthropic/claude-opus-5olduğu gibi kullanılır.
  • Bir tarih (-20260514), -latestTıpkı bir versiyonu gibi -v1gibi bir çarşaf gibi, [1m] ve bir anthropic/ veya anthropic. Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi (claude-haiku-4-5 bulmak claude-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 404 not_found_error.
alanıtürüİhtiyaçAçıklama
modelString içinEvetBir katalog model id veya bir antropolojik model adı.
max_tokensİnterneteEvetYazmak için en çok kullanılan kelimeler.
messagesArrayEvetuser 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.
systemString veya ArrayHayırSistem prompt, bir satır veya metin blokları gibi.
temperature
top_p
NumarasıHayırÖrnekleme kontrolleri, modelin onları aldığında. top_k kabul edilmiş ve terk edilmiştir.
stop_sequencesArray Strings HakkındaHayırCevabı bitiren metin. en fazla 4 satır, her biri en fazla 256 karakter.
tools
tool_choice
Array, ObjektörHayırile 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.
thinkingobjektifiHayı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.
streambooleanHayırAnthropic'in etkinlik biçiminde akış.
metadataobjektifiHayırKabul 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
typeString Hakkında (Query)Hayırchat (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 fiyat per_generation.
  • Videoları Girişler var max_duration_seconds Ve resolutionsve bir fiyat per_second Her bir karar için.
  • Audio Hakkında Girişler var audio_type speech veya transcriptionFiyatı per_1k_chars veya per_minute.
  • İçeriği Girişler var dimensions, context_length, max_inputs 1 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);