Liikuge sisu juurde
Tagasi Nymboti juurde

Teadmistebaas Arendajad

Chat, vastused ja sõnumid

Kolm võimalust küsida mudelilt midagi, kolmes vormingus kliendid juba räägivad, kõik käivad samadel mudelitel ja arveldatakse samamoodi.

Chat täiendused

OpenAI vestlusvorming ja peaaegu iga tööriist toetab. saatke vestlus seni ja saada järgmine sõnum tagasi.

POST https://nymbot.ai/api/v1/chat/completions Vaja on tulekahju võtmet.

Ainult model ja messages Valitud mudel ei võta proovivõtu parameetrit, mis langeb ilma veata, nii et üks taotlus keha töötab mudelite vahel. supported_parametersSee, mida tagasi lükatakse, on midagi, mida mudel ei saa üldse teha: pildid mudelile, mis ei näe, tööriistad mudelile, mis ei saa neid kutsuda.

väljadtüüpiNõutavKirjeldus
modelStringidJahnymbot/auto (või auto) Nymboti marsruudi jaoks standardse tasakaalu või kataloogi mudeli ID-ga, näiteks anthropic/claude-sonnet-5 Pro tasakaalu. Rakenduse lühikesed nimed ja aliasid aktsepteeritakse samuti. Piisab.
messagesArmeeniaJahSuhtlemine - rollid system, developer (käsitletud kui süsteem) user, assistant ja toolSisu on string või nimekiri text ja image_url osad; pildid ainult kasutaja sõnumites. input_audio ja failide osad on keeldutud.
streamboolindEi oleSaada vastus nii, nagu see on kirjutatud. Streamimine.
stream_optionsobjektiksEi ole{"include_usage": true} lisab lõpliku tükki koos tokenide arvuga ja kuludega.
max_tokens
max_completion_tokens
integreeritudEi oleVähenenud mudeli maksimaalsele, kui see on suurem.Samuti määrab, kui palju hoiab oma saldo, nii et väiksem arv vajab alustamiseks vähem krediiti.
temperature
top_p
numbriEi oleProovide kontrollimine : temperature vahemikus 0 kuni 2, top_p 0 kuni 1
stopstring või arrayEi oleVastuse lõpetav tekst: string või maksimaalselt 4 stringit, igaüks maksimaalselt 256 tähemärki. nymbot/auto.
seedintegreeritudEi oleKorduvproovide võtmiseks, kui mudel seda toetab.
presence_penalty
frequency_penalty
numbriEi oleKorduvad kontrollid, igaüks -2 kuni 2.
response_formatobjektiksEi ole{"type": "json_object"} või {"type": "json_schema", "json_schema": {…}}, kus mudel seda toetab. nymbot/auto.
tools
tool_choice
parallel_tool_calls
array, string või objekt, booleanEi oleFunktsionaalne kõne. vaata Tööriistad kõned• a web_search Tööriist muutub WEB otsingMaksimaalselt 128 tööriista ja 512 KB määratlusi, mis on varjatud maksimaalselt 64 taseme sügavusega; rohkem on 400.
reasoning_effort
reasoning
Võrk, objektiEi ole"minimal", "low", "medium" või "high"või {"effort": "high"}. "none" või {"enabled": false} Lülita see välja.Vaadake Põhjendamine.
pluginsArmeeniaEi ole[{"id": "web", "max_results": 5}] otsib alati veebist esimesena.Kuni 10 tulemust.
nintegreeritudEi oleAinult 1. kõik muu naaseb 400.
logit_bias
user
metadata
objekti, objekti või stringEi oleVastu võetud ja mitte saadetud. logit_bias kaardid maksimaalselt 300 token ID-ga numbritele -100 kuni 100; user maksimaalselt 256 tähemärki; metadata Hoiab maksimaalselt 16 string väärtust, võtmeid kuni 64 tähemärki ja väärtusi kuni 512.

Vastus on tavaline chat.completionVõttes arvesse kulusid usage.cost (dollarites) ja nende nymbot objektiks on. model on lahendatud mudeli id, nii et lühike nimi naaseb täieliku nimena. message.reasoning_contenteraldatud vastusest.

vastus

{
  "id": "chatcmpl-5f1c0a9e27d84b3c",
  "object": "chat.completion",
  "created": 1790726400,
  "model": "anthropic/claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A Lightning invoice is a one-time payment request..."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1240,
    "completion_tokens": 380,
    "total_tokens": 1620,
    "prompt_tokens_details": { "cached_tokens": 0 },
    "completion_tokens_details": { "reasoning_tokens": 0 },
    "cost": 0.01895
  },
  "nymbot": {
    "balance": "pro",
    "charged_credits": 0.162,
    "charged_sats": 16.2,
    "balance_credits": 412.425,
    "balance_sats": 41242.5
  }
}

finish_reason on välja töötatud sellest, mis tagasi tuli, kuna pakkujad teatavad sellest erinevalt: tool_calls Kui mees nõuab tööriistu, length kui vastus kasutas kõiki lubatud märke (või mudel kulutas need kõik põhjendama ja ei kirjutanud vastust), content_filter kui teenusepakkuja keeldub ja stop Vastasel juhul usage.completion_tokens_details.reasoning_tokens on alati 0: varjatud põhjenduste tokenid loetakse ja laaditakse completion_tokens.

staatuseMillal
400Ei ole model või messages (missing_required_parameter); heli või faili osa või pildid mudelile, mis ei näe neid (unsupported_content); rohkem kui 20 pilti (too_many_images); proovivõtu parameeter vale tüüpi või vahemikku (invalid_value); pildi link, mis ei ole avalik (invalid_image_url); tööriistad mudelil, mis ei saa neid nimetada (unsupported_tool); n muud kui 1; a :thinking Täiendus mudelile, mis ei saa põhjendada (model_not_found(või teenuseosutaja on taotluse tagasi lükanud)upstream_rejected).
402Tasakaal, mida mudel kulutab, ei saa katta hoidmist.
403Kõige hullem juhul ei sobi võtme kappi (key_limit_reached1) madalam max_tokens Või tõsta pead.
404Ei ole sellise nimega mudelit (model_not_found).
429Võtme maksumuse piir või teenusepakkuja (upstream_rate_limited).
502, 503Teenusepakkuja ei ole (upstream_error) või on ülekoormatud (upstream_overloadedja koos Retry-AfterMitte midagi ei nõuta, välja arvatud juhul, kui teenusepakkuja on selle katse eest tasunud.

Iga aktsia seisukood on loetletud allpool vigu.

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);

Streamimine

koos "stream": true vastus saabub serveri saadetud sündmuste kujul, samal ajal kui mudel seda kirjutab. chat.completion.chunk on a data: liin, ja vool lõpeb data: [DONE]Mõtted tulevad sisse delta.reasoning_contentVastus on selles delta.content.

Streami midagi, mis võib võtta rohkem kui umbes 100 sekundit, näiteks pikk vastus, suur vastus. max_tokens taotlus, mida ei voogesitata, ei saada midagi, kuni vastus on lõppenud, ja võrk teie ja Nymboti vahel võib sulgeda tühja ühenduse pärast umbes 100 sekundit; mudel lõpeb endiselt ja see, mida ta kirjutas, laaditakse, kuid vastus on kadunud. voog saadab Keep-alive, nii et see jääb avatuks nii kaua, kui mudel kirjutab.

voolab

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]
  • Liinid, mis algavad : on elus kommentaarid, mis saadetakse iga 15 sekundi järel, kui mudel mõtleb.
  • Küsige "stream_options": {"include_usage": true} et saada viimane tükk üleval, tühja choices, token loeb, maksumus ja nymbot objektiks on.
  • Kui sulgete ühenduse varakult, ei peatu mudel: Nymbot loeb ülejäänud teenusepakkuja voolu kuni 25 sekundiks, et saada oma tokenide arv ja maksate, mida teenusepakkuja teatab.
  • Viga enne esimest tükki, näiteks 401 või 402, naaseb tavalise JSONi kujul koos staatuse koodiga, mitte vooluna. data: {"error": {…}} sündmus, ja vool lõpeb ilma [DONE].
  • Nõuded tööriistadega ja mudelid OpenAI vastuste transpordis ei voola pakkujalt.

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);
}

Tööriistad kõned

Kirjeldage funktsioone tools ja mudel võib küsida, et keegi helistaks vastamise asemel.Te käivitate funktsiooni, lisate selle tulemuse tool Sõnum sama tool_call_idNymbot ei käivita kunagi teie funktsioone; see edastab mudeli taotluse teile tagasi.

tool_choice võtab "auto", "none", "required" või {"type": "function", "function": {"name": "…"}}Modeli nimekiri tähistab, millised mudelid võivad kasutada tööriistu (capabilities.toolsTööriistad on keeldunud 400 unsupported_tool on nymbot/auto ja vähestel kataloogimudelitel, mis töötavad OpenAI Responses'i transpordil, millele Nymbot ei saa tööriistu edasi anda.

koos "stream": true, tööriistadega päring töötab ühes tükis ja saadetakse seejärel tavalise tükikese järjekorras: roll, üks tükk, mis kannab iga tööriista kõne koos selle indeksi, id, nime ja argumentidega, ja lõpetamise tükk.

Vastus on osaliselt

"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);

Pildid taotluses

Mudelid koos capabilities.vision saab lugeda pilte. lisada image_url osa kasutaja sõnumile, kas avalikkusega https:// link või a data:image/…;base64, URL. Kuni 20 pilti taotluse kohta. SVG pildid on tagasi lükatud, ja nii on link üle 4096 tähemärgi või üks kasutajanime või parooliga (400 invalid_image_url(Üks valikuline detail on auto, low või high.

koos nymbot/auto, taotlus, millel on selles pilt, suunatakse standardmudelile, mida saab näha. capabilities.vision Keeldub pildistamast 400 unsupported_contentPildid võivad olla ainult kasutaja sõnumites.Link peab näitama avalikku võõrustajat; Nymbot edastab pildi mudeli pakkujale ja ei hoia seda.

Pilt laaditakse sisse sisendmoodulitena, mida teenusepakkuja loeb, nagu ka ülejäänud taotlus.

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);

Põhjendamine

Mudelid koos capabilities.reasoning Võite mõelda enne, kui nad vastavad. küsida rohkem või vähem sellest koos reasoning_effort ("minimal", "low", "medium" või "high") või "reasoning": {"effort": "high"}või lisada :thinking mudeli nimele, mis tähendab suurt pingutust. mudelil ilma põhjendamata ignoreeritakse seadistust. nymbot/auto, :thinking saadab taotluse standardse põhjenduse marsruudile.

Antroopsete mudelite puhul muutub jõupingutuste eelarve umbes 1000, 2 000, 8 000 või 16 000 tokeniks, mitte kunagi rohkem kui max_tokens Mõtlemine on maha jäetud, kui tool_choice jõuab tööriista, ja kui taotlus jätkub tööriistakuju (selle viimane sõnum on tööriista tulemus), sest Anthropic vajab varem allkirjastatud mõtteviisi, et jätkata seda.

Põhjendused tulevad tagasi message.reasoning_contentvõi delta.reasoning_content kui voogesitus, ei segata kunagi vastusesse. põhjendamine on väljund ja laaditakse sellisena sisse completion_tokensMõned teenusepakkujad ei tagasta põhjenduste teksti üldse ja see on endiselt tasutud.

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);

Modelleeritud suffiksid

Mudeli nime tähis muudab seda, kuidas taotlust käsitletakse, ilma teise välja kasutamata. anthropic/claude-sonnet-5:online.

PiisabMõju
:onlineKõigepealt otsitakse internetti, nagu plugins: [{"id": "web"}]See on WEB otsing.
:thinkingKõrge kaalutlusvõime; on nymbot/auto, põhjenduse tee.Mudelil, mis ei suuda põhjendada, 400 model_not_found “ ei ole leitud lõplikke punkte”
:nitro, :floor, :exacto, :extendedIga kataloogi mudelil on üks marsruut, nii et ei ole kiiremini, odavamalt ega pikemalt valida; järeltulijad on lubatud, nii et teistest teenustest kopeeritud mudelite nimed töötavad ikka veel.

Kõik teised lisad ignoreeritakse. Kogu nimi proovitakse kõigepealt, nii et mudel, mille ID sisaldab tõesti koloni, töötab endiselt; kui seda ei tehta, eemaldatakse lisad ükshaaval, kuni mudel vastab. 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 otsib viimast kasutaja sõnumit (tema esimesed 2000 tähemärki), loeb parimaid lehekülgi ja annab need küsimusega mudelile, mis on tähistatud välise sisuga, mida mudel ei tohiks juhiseid võtta.

  • Alati otsida: "plugins": [{"id": "web", "max_results": 5}]või a :online Piisab ka mudelist.
  • Otsige, kui see aitab: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Samuti aktsepteeritakse kui web_search_preview või openrouter:web_searchNymbot otsib ainult siis, kui küsimus vajab praegust teavet, sama test, mida rakendus kasutab.

max_results on 5 vaikimisi ja maksimaalselt 10. nymbot.web_search.sourcesIgaüks koos a title, snippet ja urlja kui url_citation Märkused sõnumi kohta.

Iga otsing, mis jookseb, maksab $ 0,008, teisendatakse satsiks, tokenite peal ja see on osa hoidmisest. lehed, mida ta loeb, on sisend tokenid ka, nii et veebist saadud vastus maksab rohkem kui sama küsimus külmalt, mõnikord mitu korda rohkem.

Vastus on osaliselt

"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);

Vastused API

OpenAI uuem formaat, mida kasutavad OpenAI Agents SDK ja Codex. See töötab samadel mudelitel, arveldamisel ja funktsioonidel nagu Chat Completions.

POST https://nymbot.ai/api/v1/responses Vaja on tulekahju võtmet.

väljadtüüpiNõutavKirjeldus
modelStringidJahkui Chat täiendusedLisad on kaasas.
inputstring või arrayJahstring või loetelu objektidest: sõnumid (rollid user, assistant, system, developer) koos input_text, input_image ja output_text osad ja function_call ja function_call_output Tooted tööriistade jaoks. input_image Võta üks image_url link või andmete URL, mitte faili id. reasoning ja web_search_call esemed on välja lülitatud; item_reference See on keeldunud.
instructionsStringidEi oleSüsteemi juhised .
max_output_tokensintegreeritudEi oleKõige rohkem trikke kirjutada.
temperature
top_p
numbriEi oleProovide võtmine, kus mudel neid võtab.
tools
tool_choice
parallel_tool_calls
array, string või objekt, booleanEi oleTööriistade funktsioonid, vastused kujul ({"type": "function", "name": …, "parameters": …}a) a web_search või web_search_preview Tööriist muutub WEB otsing Kui see aitab, siis keelduvad muud sisseehitatud tööriistad.
reasoningobjektiksEi ole{"effort": "minimal" | "low" | "medium" | "high"}. xhigh ja max tähendab high; none Pöörake see välja.
text.format
response_format
objektiksEi oleStruktureeritud väljund, näiteks JSONi skeem või json_object.
metadataobjektiksEi oleTagastatakse vastuses muutumatuna. maksimaalselt 16 string-väärtusel kuni 64 tähemärki ja kuni 512 väärtust.
streamboolindEi oleStream sündmused nagu allpool kirjeldatud.
storeboolindEi oleIgnoreeritud. miski ei ole salvestatud ja vastus ütleb alati "store": false.
previous_response_id
conversation
background
String, objekt ja booleanEi oleEi toeta : 400 unsupported_parameterVastuseid ei salvestata, seega saatke kogu vestlus input Iga kord

vastus

{
  "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 }
}

Tööriista taotlus ilmub output kui a function_call Eesmärk koos call_id, name ja argumentsSaada tulemus tagasi a function_call_output Artikkel sama kohta call_idMõtlemine, kui mudel tagastab selle, on reasoning Eesmärk koos reasoning_text Sisu on loetletud kõigepealt. status on incomplete Kui vastus lööb max_output_tokens või teenusepakkuja keeldub incomplete_details.reason Seadke kaks max_output_tokens või content_filterVastus kajastab ka taotluse seadistusi (temperatuur, tööriistad, tööriistavalik jne), nagu OpenAI teeb, ja kannab nymbot Maksab objekti eest.

Streamed, iga sündmus on event: Liin ja A data: Liin koos a sequence_numberSelles järjekorras siis: response.created, response.in_progress, response.output_item.added, response.content_part.addedÜkskõik milline arv response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.doneJa lõpuks response.completed kasutamise ja kuludega. vastus lõigatakse lühikeseks response.incomplete selle asemel, ja ebaõnnestumine pärast voolu algust response.failedPõhjendades voolu kui oma objekti response.reasoning_text.delta ja .doneTööriista kõned tulevad pärast sõnumit, millest igaüks on response.function_call_arguments.delta ja .done.

staatuseMillal
400Ei ole model või input; previous_response_id, conversation, background Või üks item_reference (unsupported_parameter); toetamata tööriist või sisu tüüp.
402, 403, 404, 429, 502, 503Mis puudutab chat lõpetamist.

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);

Antroopsed sõnumid

See töötab iga mudeliga kataloogis, mitte ainult Claude: taotlus tõlgitakse, käib läbi sama toru ja tõlgitakse tagasi.

POST https://nymbot.ai/api/v1/messages - vajab API võtmet, nagu x-api-key või Authorization: Bearer.

OÜ anthropic-version ja anthropic-beta Antroopsed mudeli nimed on kataloogiga kooskõlas, nii et Claude Code ja SDK-d töötavad juba kasutatavate nimedega:

  • Nimi, mida kataloog teab, näiteks claude-sonnet-5 või anthropic/claude-opus-5Kasutatakse nii nagu see on.
  • kuupäeva kohta (-20260514), -latestSellise versiooni nagu -v1Nagu sellist tüüpi brändi [1m] ja üks anthropic/ või anthropic. Eesliide on eemaldatud ja punktid ja joonised versioonis on proovitud mõlemal viisil (claude-haiku-4-5 leiab claude-haiku-4.5).
  • Kui see veel ei sobi, kasutatakse perekonda (Opus, Sonnet või Haiku), kui kataloogi versioon on sama või uuem kui taotletud versioon.
  • Nimi, mis ei vasta midagi tagastab 404 not_found_error.
väljadtüüpiNõutavKirjeldus
modelStringidJahKataloogi mudeli id või antropoloogiline mudeli nimi.
max_tokensintegreeritudJahKõige rohkem trikke kirjutada.
messagesArmeeniaJahuser ja assistant pöörduvad, koos text, image (base64 või URL allikas) tool_use ja tool_result Kõik blokeerivad. thinking Varasemate ringide plokid on vastu võetud ja maha jäetud.
systemstring või arrayEi oleSüsteemi soovitus, nagu string või teksti plokid.
temperature
top_p
numbriEi oleProovide võtmine, kus mudel neid võtab. top_k on aktsepteeritud ja langenud.
stop_sequencesArray stringidEi oleTekst, mis lõpetab vastuse, maksimaalselt 4 stringit, igaüks maksimaalselt 256 tähemärki.
tools
tool_choice
Sildid, objektidEi oleTööriistad koos name, description ja input_schema• a web_search Serveri tööriist muutub WEB otsingAnthropic'i muud sisseehitatud tööriistad (bash, tekstiredaktor, arvuti kasutamine) on keelatud unsupported_tool. tool_choice võtab auto, any, tool või noneja disable_parallel_tool_use.
thinkingobjektiksEi ole{"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} või {"type": "disabled"}Eelarve valib jõupingutuste taseme: alla 2,048 minimaalne, alates 2,048 madal, alates 8,192 keskmine, alates 16,384 kõrge. output_config.effortvõi kõrge.
streamboolindEi oleStream Anthropic'i sündmuste vormingus.
metadataobjektiksEi oleaktsepteeritud ja ignoreeritud.

vastus

{
  "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 Võib ka hoida tool_use Blokid ja a thinking Blokeerimine, mis signature See on tühi. stop_reason on end_turn, max_tokens, tool_use või refusalTöötas samamoodi nagu finish_reason on Chat täiendused; stop_sequence Alati on null, isegi siis, kui peatusjoon lõpetas vastuse. input_tokens loeb ainult värske sisend; vahemälu sisend on kahes vahemälu väljas. nymbot Objekti ja X-Nymbot-Cost-Sats Kõrvaltoimed

Streamed, sündmused on Anthropic: message_start, content_block_start, ping, content_block_delta (text_delta, input_json_delta või thinking_delta), content_block_stop, message_delta Peatamise põhjus, kasutamine ja nymbot Objekti maksumus ja message_stop• a ping saadetakse ka iga 15 sekundi järel, kui mudel töötab.Tööriistakõned saabuvad pärast teksti, igaüks tool_use blokeerides kogu sisendit ühes input_json_delta.

Selle lõpppunkti vead kasutavad Anthropic'i vormi: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}Lühike tasakaal on 402 billing_errorÜlekoormatud teenusepakkuja 503 overloaded_errorEbaõnnestumine pärast voolu alustamist saadetakse error Üritus .

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);

Tokenide arvutamine

Hinnang selle kohta, kui palju sisendtooteid sõnumite taotlus kasutab, et klient saaks enne saatmist kontrollida.

POST https://nymbot.ai/api/v1/messages/count_tokens Vaja on API võtmet.

Keha on sama, mis Sõnumidja ilma max_tokens; mudeli nimi peab lahendama. Arv on hinnang: süsteemi juhendi märgid, sõnumid, tööriistakõned ja tööriista määratlused jagunevad neljaks, pluss 1,600 iga pildi jaoks. See ei ole pakkuja enda tokenizer, nii et tegelik arv võib erineda.

vastus

{ "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);

Nimekiri mudelitest

Iga mudel ja generaator API aktsepteerib, mida see maksab. nimekiri loetakse sama live kataloogi kui rakenduse valik, nii et see on alati see, mida server töötab.

GET https://nymbot.ai/api/v1/models - ei ole vaja võtmeid. peidetud viis minutit.

GET /api/v1/models/{id} Tagasta üks sissepääs.

väljadtüüpiNõutavKirjeldus
typeString (või küsimus)Ei olechat (Kõik need defektid on image, video, audio, embedding või allMõned neist võivad olla, nagu image,video.

Hinnad on see, mida maksate, mille tasu ja marginaal on juba olemas, dollarites ja hinnas praeguse Bitcoini hinnaga. balance See näitab, millist tasakaalu mudel kulutab. nymbot_key on mudeli lühike nimi rakenduses. created on alati 0, kuna kataloog ei registreeri, millal mudel lisati. per_request selle asemel.

nymbot/auto on alati esimene, hinnatakse kui variablekoos a routes See loetleb visiooni ja põhjendusi, kuid mitte tööriistu.

GET /api/v1/models/{id} aktsepteerib taotlusena samu nimesid ja pseudonüüme ning tagastab selle mudeli sisendi, millele nad otsustavad.

vastus

{
  "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"
    }
  ]
}

Teised tüübid :

  • pildid Sissepääs on capabilities (accepts_image_url, requires_image_url, edit) ja hind per_generation.
  • Videod Sissepääs on max_duration_seconds ja resolutionsJa hind on per_second iga resolutsiooni kohta.
  • Audiosüsteem Sissepääs on audio_type speech või transcriptionHinnad per_1k_chars või per_minute.
  • Sisseehitatud Sissepääs on dimensions, context_length, max_inputs Ja hind ühe miljoni sisend tokenid.

Märgistatud hinnad "estimated": true on rakenduse hinnang generaatorile, mille hind ei ole avaldatud. type Tagastamine 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);