Pāriet uz saturu
Atpakaļ uz Nymbot

Zināšanu bāze Izstrādātāji

Chat, atbildes un ziņojumi

Trīs veidi, kā lūgt modeli kaut ko, trīs formātos klienti jau runā, visi darbojas uz tiem pašiem modeļiem un rēķina vienādi.

Chat pabeigšana

OpenAI tērzēšanas formāts, un tas, ko atbalsta gandrīz katrs rīks. nosūtīt sarunu līdz šim un saņemt nākamo ziņojumu atpakaļ.

POST https://nymbot.ai/api/v1/chat/completions Vajadzīga API atslēga.

Tikai model un messages Izvēlētā modeļa neņemamais paraugu ņemšanas parametrs tiek izlaists bez kļūdas, tāpēc viens pieprasījuma ķermenis darbojas starp modeļiem. supported_parametersTas, kas tiek noraidīts, nevis atstāts, ir tas, ko modelis vispār nevar darīt: attēli modelim, kas nevar redzēt, rīki modelim, kas nevar tos izsaukt.

LaukuVeidsNepieciešamsApraksts
modelStringaJānymbot/auto (vai auto) Nymbot maršrutēšanai uz standarta līdzsvaru vai kataloga modeļa id, piemēram, anthropic/claude-sonnet-5 tiek pieņemti arī lietojumprogrammas īstie nosaukumi un uzvārdi. var beigties ar pietiekami.
messagesArēnaJāRunāšana - lomas system, developer (tā tiek uzskatīta par sistēmu), user, assistant un toolSaturs ir virkne vai saraksts ar text un image_url daļas; attēli tikai lietotāju ziņojumos. input_audio un failu daļas tiek noraidītas.
streamboļševikuNēSūtiet atbildi, kā tas ir rakstīts. skatīt Streamēšana.
stream_optionsObjektsNē{"include_usage": true} pievieno galīgo gabalu ar žetonu skaitļiem un izmaksām.
max_tokens
max_completion_tokens
IntegrācijaNēVisvairāk zīmes rakstīt. Samazināts līdz modeļa maksimumam, ja tas ir augstāks. Tāpat nosaka, cik daudz tiek turēts no jūsu bilances, tāpēc mazākam skaitam ir nepieciešams mazāk kredīta, lai sāktu.
temperature
top_p
NumursNēSampling kontroles pasākumi: temperature No 0 līdz 2, top_p No 0 līdz 1.
stopStrings vai arrayNēTeksts, kas beidzas ar atbildi: virkne vai ne vairāk kā 4 virknes, katra ne vairāk kā 256 rakstzīmes. nymbot/auto.
seedIntegrācijaNēAtkārtotai paraugu ņemšanai, ja modelis to atbalsta.
presence_penalty
frequency_penalty
NumursNēAtkārtošanas kontroles, katra no -2 līdz 2.
response_formatObjektsNē{"type": "json_object"} vai {"type": "json_schema", "json_schema": {…}}, kur modelis to atbalsta. netiek izmantots nymbot/auto.
tools
tool_choice
parallel_tool_calls
array, string vai objekts, booleanNēFunkcija zvanīšana. skatīt Rotaļlietu zvanu• A web_search Instruments pārvēršas WEB meklēšanaVisvairāk 128 rīki un 512 KB definīcijas, kas iestrādāti visvairāk 64 līmeņu dziļumā; vairāk ir 400.
reasoning_effort
reasoning
Strēle, objektsNē"minimal", "low", "medium" vai "high"vai {"effort": "high"}. "none" vai {"enabled": false} Izslēdziet to. skatīt pamatojums.
pluginsArēnaNē[{"id": "web", "max_results": 5}] vienmēr vispirms meklē tīmekli. līdz 10 rezultātiem.
nIntegrācijaNē1 Viss pārējais atgriežas 400.
logit_bias
user
metadata
objekts, ķēde, objektsNēPieņemts un netiek nosūtīts. logit_bias kartes ar ne vairāk kā 300 token ID cipariem no -100 līdz 100; user Maksimālais skaits 256 rakstzīmes; metadata saglabā ne vairāk kā 16 virknes vērtības, atslēgas līdz 64 rakstzīmēm un vērtības līdz 512.

Atbilde ir parastā chat.completionAr izmaksām uz usage.cost ASV dolāros un nymbot Objekts ir. model ir atrisinātais modeļa id, tāpēc īss nosaukums atgriežas kā pilns. message.reasoning_contentAtsevišķi no atbildes.

Atbilde

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

finish_reason ir izstrādāta no tā, kas atgriezās, jo pakalpojumu sniedzēji to ziņo citādi: tool_calls Kad modelis lūdza rīkus, length kad atbilde izmantoja katru pieļaujamo žetonu (vai modelis tos visus iztērēja, pamatojot un nerakstot nevienu atbildi), content_filter ja piegādātājs ir atteicies, un stop Pretējā gadījumā usage.completion_tokens_details.reasoning_tokens vienmēr ir 0: slēptās domāšanas žetoni tiek skaitīti un iekasēti completion_tokens.

StatussKad
400Nē model vai messages (missing_required_parameter); audio vai failu daļa, vai attēli modelim, kas tos nevar redzēt (unsupported_content); vairāk nekā 20 attēli (too_many_images(Pāradresēts no Nīderlandes) Nīderlandes Nīderlandes Nīderlandes (invalid_value); attēla saite, kas nav publiska (invalid_image_url); rīki uz modeļa, kas nevar tos saukt (unsupported_tool); n Citiem vārdiem sakot, a :thinking pielikums uz modeļa, kas nevar saprast (model_not_found(vai arī piegādātājs ir noraidījis pieprasījumu)upstream_rejected).
402Līdzeklis, ko modelis tērē, nevar segt turēšanu.
403Sliktākais gadījums neatbilst atslēgas kapai (key_limit_reached• zemāka max_tokens Vai arī paceliet galvu.
404Nav modeļa ar šo nosaukumu (model_not_found).
429Piegādātājs vai piegādātājs (upstream_rate_limited).
502, 503Piegādātājs neizdevās (upstream_error) vai ir pārslogots (upstream_overloaded, ar Retry-AfterNekas netiek iekasēts, ja vien pakalpojumu sniedzējs nav iekasējis par mēģinājumu.

Katras akcijas statusa kodi ir uzskaitīti zemāk kļūdas.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [
      {"role": "system", "content": "Answer in one short paragraph."},
      {"role": "user", "content": "What is a Lightning invoice?"}
    ],
    "max_tokens": 400
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[
        {"role": "system", "content": "Answer in one short paragraph."},
        {"role": "user", "content": "What is a Lightning invoice?"},
    ],
    max_tokens=400,
)
print(reply.choices[0].message.content)
print(reply.usage.cost)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [
    { role: "system", content: "Answer in one short paragraph." },
    { role: "user", content: "What is a Lightning invoice?" },
  ],
  max_tokens: 400,
});
console.log(reply.choices[0].message.content);
console.log(reply.usage.cost);

Streamēšana

ar "stream": true atbilde ierodas kā servera nosūtītie notikumi, kamēr modelis to raksta. chat.completion.chunk ir a data: līnija, un plūsma beidzas ar data: [DONE]Saprātīgums ienāk delta.reasoning_contentAtbilde uz delta.content.

Straumēt jebko, kas var aizņemt vairāk nekā aptuveni 100 sekundes, piemēram, garu atbildi, lielu max_tokens pieprasījums, kas netiek straumēts, nesūta neko, līdz atbilde ir pabeigta, un tīkls starp jums un Nymbot var slēgt tukšu savienojumu pēc aptuveni 100 sekundēm; modelis joprojām beidzas un tas, ko viņš rakstīja, tiek uzlādēts, bet atbilde ir zaudēta.

Stream

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{"content":"A Lightning invoice"},"finish_reason":null}]}

: keep-alive

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[],"usage":{"prompt_tokens":1240,"completion_tokens":380,"total_tokens":1620,"cost":0.01895},"nymbot":{"balance":"pro","charged_credits":0.162,"charged_sats":16.2,"balance_credits":412.425,"balance_sats":41242.5}}

data: [DONE]
  • līnijas, kas sākas ar : ir dzīvi komentāri, kas tiek nosūtīti ik pēc 15 sekundēm, kamēr modelis domā.
  • Jautājiet par "stream_options": {"include_usage": true} lai iegūtu pēdējo gabalu augšpusē, ar tukšu choices, tokens skaitās, izmaksas un nymbot Objekts ir.
  • Ja jūs aizverat savienojumu agri, modelis netiek apturēts: Nymbot izlasa pārējo piegādātāja plūsmu, līdz 25 sekundēm, lai iegūtu tā žetonu skaitu, un jūs maksājat to, ko piegādātājs ziņo.
  • Kļūda pirms pirmās daļas, piemēram, 401 vai 402, atgriežas kā parasts JSON ar savu statusa kodu, nevis kā straumi. data: {"error": {…}} notikums, un plūsma beidzas bez [DONE].
  • Pieprasījumi ar rīkiem un modeļiem OpenAI Atbildes transportā netiek sūtīti no piegādātāja.Viņi joprojām atbild ar derīgu plūsmu, nosūtot, kad atbilde ir pabeigta.

cURL

curl -N https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nymbot/auto",
    "stream": true,
    "stream_options": {"include_usage": true},
    "messages": [{"role": "user", "content": "Write a haiku about sats."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

stream = client.chat.completions.create(
    model="nymbot/auto",
    stream=True,
    stream_options={"include_usage": True},
    messages=[{"role": "user", "content": "Write a haiku about sats."}],
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)
    elif chunk.usage:
        print("\ncost:", chunk.usage.cost)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const stream = await client.chat.completions.create({
  model: "nymbot/auto",
  stream: true,
  stream_options: { include_usage: true },
  messages: [{ role: "user", content: "Write a haiku about sats." }],
});
for await (const chunk of stream) {
  if (chunk.choices.length) process.stdout.write(chunk.choices[0].delta.content || "");
  else if (chunk.usage) console.log("\ncost:", chunk.usage.cost);
}

Rotaļlietu zvanu

Apraksta funkcijas tools un modelis var lūgt vienu zvanīt, nevis atbildēt. Jūs palaist funkciju, pievienot tās rezultātu kā tool Ziņojums ar tādu pašu tool_call_idNymbot nekad neveic jūsu funkcijas; tas pārsūta modeļa pieprasījumu atpakaļ jums.

tool_choice ņem "auto", "none", "required" vai {"type": "function", "function": {"name": "…"}}Modelu saraksts norāda, kādi modeļi var izsaukt rīkus (capabilities.toolsInstrumenti tiek noraidīti ar 400 unsupported_tool ir nymbot/auto un par dažiem kataloga modeļiem, kas darbojas OpenAI Responses transportā, kam Nymbot nevar nodot rīkus.

ar "stream": true, pieprasījums ar rīkiem darbojas vienā gabalā un pēc tam tiek nosūtīts kā normāla gabala secība: loma, viena gabala, kurā katrs rīks tiek izsaukts ar tā indeksu, ID, nosaukumu un argumentiem, un gala gabals.

Atbilde – daļēji

"choices": [
  {
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "tool_calls": [
        {
          "id": "call_7d2e",
          "type": "function",
          "function": { "name": "get_invoice_status", "arguments": "{\"invoice_id\":\"a41f\"}" }
        }
      ]
    },
    "finish_reason": "tool_calls"
  }
]

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{"role": "user", "content": "Has invoice a41f been paid?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_invoice_status",
        "description": "Look up whether an invoice is paid.",
        "parameters": {
          "type": "object",
          "properties": {"invoice_id": {"type": "string"}},
          "required": ["invoice_id"]
        }
      }
    }]
  }'

Python

import json, os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

tools = [{
    "type": "function",
    "function": {
        "name": "get_invoice_status",
        "description": "Look up whether an invoice is paid.",
        "parameters": {
            "type": "object",
            "properties": {"invoice_id": {"type": "string"}},
            "required": ["invoice_id"],
        },
    },
}]
messages = [{"role": "user", "content": "Has invoice a41f been paid?"}]

reply = client.chat.completions.create(model="anthropic/claude-sonnet-5", messages=messages, tools=tools)
call = reply.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)

messages.append(reply.choices[0].message)
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps({"paid": True})})

final = client.chat.completions.create(model="anthropic/claude-sonnet-5", messages=messages, tools=tools)
print(final.choices[0].message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const tools = [{
  type: "function",
  function: {
    name: "get_invoice_status",
    description: "Look up whether an invoice is paid.",
    parameters: {
      type: "object",
      properties: { invoice_id: { type: "string" } },
      required: ["invoice_id"],
    },
  },
}];
const messages = [{ role: "user", content: "Has invoice a41f been paid?" }];

const reply = await client.chat.completions.create({ model: "anthropic/claude-sonnet-5", messages, tools });
const call = reply.choices[0].message.tool_calls[0];
const args = JSON.parse(call.function.arguments);

messages.push(reply.choices[0].message);
messages.push({ role: "tool", tool_call_id: call.id, content: JSON.stringify({ paid: true }) });

const final = await client.chat.completions.create({ model: "anthropic/claude-sonnet-5", messages, tools });
console.log(final.choices[0].message.content);

Fotogrāfijas pieprasījumā

modeļi ar capabilities.vision var lasīt attēlus. pievienot image_url dalīties ar lietotāju ziņojumā, vai nu ar auditoriju https:// Saite vai a data:image/…;base64, URL. līdz 20 attēliem uz pieprasījumu. SVG attēli tiek noraidīti, un tā ir saite vairāk nekā 4096 rakstzīmes vai viens ar lietotājvārdu vai paroli tajā (400 invalid_image_url• Opcionāls detail ir auto, low vai high.

ar nymbot/auto, pieprasījums ar attēlu tajā tiek novirzīts uz standarta modeli, kas var redzēt. capabilities.vision Atteikties no attēliem 400 unsupported_contentAttēli var būt tikai lietotāja ziņojumos. saite jānorāda uz publisku saimnieku; Nymbot nodod attēlu modeļa piegādātājam un neuzglabā to.

Attēls tiek iekasēts kā piegādātāja ieejas žetoni, tāpat kā pārējais pieprasījums.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "What is in this picture?"},
        {"type": "image_url", "image_url": {"url": "https://example.com/receipt.jpg"}}
      ]
    }]
  }'

Python

import base64, os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

with open("receipt.jpg", "rb") as f:
    data_url = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "What is in this picture?"},
            {"type": "image_url", "image_url": {"url": data_url}},
        ],
    }],
)
print(reply.choices[0].message.content)

JavaScript

import { readFile } from "node:fs/promises";
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const dataUrl = "data:image/jpeg;base64," + (await readFile("receipt.jpg")).toString("base64");

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [{
    role: "user",
    content: [
      { type: "text", text: "What is in this picture?" },
      { type: "image_url", image_url: { url: dataUrl } },
    ],
  }],
});
console.log(reply.choices[0].message.content);

pamatojums

modeļi ar capabilities.reasoning var domāt, pirms viņi atbild. lūgt vairāk vai mazāk no tā ar reasoning_effort ("minimal", "low", "medium" vai "high") vai "reasoning": {"effort": "high"}vai pievienot :thinking uz modeļa nosaukumu, kas nozīmē lielu piepūli. Uz modeļa bez pamatojuma iestatījums tiek ignorēts. nymbot/auto, :thinking nosūta pieprasījumu uz standarta pamatojuma maršrutu.

Anthropic modeļos centieni kļūst par domāšanas budžetu aptuveni 1000, 2 000, 8 000 vai 16 000 žetonu, nekad vairāk nekā max_tokens Domāšana ir atstāta prom, kad tool_choice piespiežot rīku, un, ja pieprasījums turpinās ar rīku loku (tā pēdējais ziņojums ir rīka rezultāts), jo Anthropic ir nepieciešama iepriekš parakstītā domāšana, lai to atsāktu.

Saprātīgums atgriežas message.reasoning_contentvai delta.reasoning_content kad straumēšanas, nekad sajaukt atbildi. pamatojums ir iznākums un tiek iekasēts kā tāds, iekšpusē completion_tokensDaži pakalpojumu sniedzēji vispār neatgriež argumentācijas tekstu, un tas joprojām tiek iekasēts.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "reasoning_effort": "high",
    "messages": [{"role": "user", "content": "Is 2^61 - 1 prime? Show why."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    reasoning_effort="high",
    messages=[{"role": "user", "content": "Is 2^61 - 1 prime? Show why."}],
)
message = reply.choices[0].message
print(getattr(message, "reasoning_content", None))
print(message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  reasoning_effort: "high",
  messages: [{ role: "user", content: "Is 2^61 - 1 prime? Show why." }],
});
console.log(reply.choices[0].message.reasoning_content);
console.log(reply.choices[0].message.content);

Pielikumu modelis

Modela nosaukuma pielikums maina pieprasījuma apstrādes veidu, neizmantojot citus laukus.Tie darbojas gan uz pilniem ID, gan īsiem vārdiem, tāpat kā anthropic/claude-sonnet-5:online.

pietiekamiEfekts
:onlineVispirms meklējiet tīmekli, piemēram, plugins: [{"id": "web"}]ŠEIT WEB meklēšana.
:thinkingAugsta racionālā piepūle; uz nymbot/auto, pamatojuma maršruts. par modeli, kas nevar pamatoties, 400 model_not_found ar “nav atrasts galamērķi”.
:nitro, :floor, :exacto, :extendedKatram kataloga modelim ir viens maršruts, tāpēc nav ātrāka, lētāka vai garāka, lai izvēlētos; papildinājumi ir atļauti, tāpēc modeļu nosaukumi, kas kopēti no citiem pakalpojumiem, joprojām darbojas.

Jebkurš cits pielikums tiek ignorēts. Vispirms tiek izmēģināts viss vārds, tāpēc modelis, kura ID patiešām satur kolonu, joprojām darbojas; ja tas netiek darīts, pielikumi tiek izņemti no gala viens pēc otra, līdz modelis atbilst. 400 invalid_value.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5:thinking",
    "messages": [{"role": "user", "content": "Plan a three-day trip to Lisbon."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5:thinking",
    messages=[{"role": "user", "content": "Plan a three-day trip to Lisbon."}],
)
print(reply.choices[0].message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5:thinking",
  messages: [{ role: "user", content: "Plan a three-day trip to Lisbon." }],
});
console.log(reply.choices[0].message.content);

Jebkurš tērzēšanas modelis var atbildēt no tiešā tīmekļa. Nymbot meklē pēdējo lietotāju ziņojumu (tās pirmās 2000 rakstzīmes), lasa labākās lapas un dod tos modelim ar jautājumu, kas atzīmēts kā ārējs saturs, no kura modelim nevajadzētu ņemt norādījumus.

  • Vienmēr meklē: "plugins": [{"id": "web", "max_results": 5}]vai a :online Pietiek ar modeli.
  • Meklējiet, kad tas palīdz: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Pieņemts arī kā web_search_preview vai openrouter:web_searchNymbot meklē tikai tad, kad jautājums izskatās, ka tam nepieciešama pašreizējā informācija, tas pats tests, ko lietotne izmanto.

max_results ir 5 pēc noklusējuma un ne vairāk kā 10. avoti atgriežas nymbot.web_search.sourcesKatrs ar a title, snippet un urlun kā url_citation Atsauksmes par ziņojumu.

Katra meklēšana, kas darbojas, maksā $ 0,008, pārvēršot par sats, virs žetoniem, un tā ir daļa no turēšanas. lapas, ko tā lasa, ir arī ievades žetoni, tāpēc atbilde no tīmekļa maksā vairāk nekā tas pats jautājums, kas uzdots auksts, dažreiz vairākas reizes vairāk.

Atbilde – daļēji

"nymbot": {
  "balance": "pro",
  "charged_credits": 0.431,
  "charged_sats": 43.1,
  "balance_credits": 411.994,
  "balance_sats": 41199.4,
  "web_search": {
    "sources": [
      { "title": "Lightning Network - Wikipedia", "snippet": "The Lightning Network is a payment protocol...", "url": "https://en.wikipedia.org/wiki/Lightning_Network" }
    ]
  }
}

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "plugins": [{"id": "web", "max_results": 5}],
    "messages": [{"role": "user", "content": "What changed in the latest Bitcoin Core release?"}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "What changed in the latest Bitcoin Core release?"}],
    extra_body={"plugins": [{"id": "web", "max_results": 5}]},
)
print(reply.choices[0].message.content)
for source in reply.model_extra["nymbot"]["web_search"]["sources"]:
    print(source["url"])

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  plugins: [{ id: "web", max_results: 5 }],
  messages: [{ role: "user", content: "What changed in the latest Bitcoin Core release?" }],
});
console.log(reply.choices[0].message.content);
for (const source of reply.nymbot.web_search.sources) console.log(source.url);

Atbildes uz ugunsgrēku

OpenAI jaunāks formāts, ko izmanto OpenAI aģenti SDK un Codex. tas darbojas ar tādiem pašiem modeļiem, rēķinu un funkcijām kā Chat Completions.

POST https://nymbot.ai/api/v1/responses Vajadzīga API atslēga.

LaukuVeidsNepieciešamsApraksts
modelStringaJāKā par Chat pabeigšanaIekļauti arī suffiksi.
inputStrings vai arrayJāStringa vai priekšmetu saraksts: ziņojumi (lomas user, assistant, system, developer) ar input_text, input_image un output_text daļas un function_call un function_call_output Raksti par instrumentiem. input_image Ņem vienu image_url saite vai datu URL, nevis faila ID. reasoning un web_search_call objekti tiek pārvietoti; item_reference Tas ir noraidīts.
instructionsStringaNēSistēmas instrukcijas .
max_output_tokensIntegrācijaNēVisvairāk žetonu, lai rakstītu.
temperature
top_p
NumursNēSampling kontroles, kur modelis ņem tos.
tools
tool_choice
parallel_tool_calls
array, string vai objekts, booleanNēFunkcijas rīki, kas veidojas atbilžu formā ({"type": "function", "name": …, "parameters": …}) a web_search vai web_search_preview Instruments pārvēršas WEB meklēšana ja tas palīdz. citi iebūvēti rīki tiek noraidīti.
reasoningObjektsNē{"effort": "minimal" | "low" | "medium" | "high"}. xhigh un max nozīmē high; none Atgrieziet to prom.
text.format
response_format
ObjektsNēstrukturēta izeja, piemēram, JSON shēma vai json_object.
metadataObjektsNēAtgrieziet nemainītu atbildi. ar ne vairāk kā 16 virknes vērtībām, atslēgas līdz 64 rakstzīmēm un vērtības līdz 512.
streamboļševikuNēStream notikumi, kā aprakstīts zemāk.
storeboļševikuNēNekas netiek uzglabāts, un atbilde vienmēr saka "store": false.
previous_response_id
conversation
background
Strings, objekts un boolejsNēNav atbalstīts : 400 unsupported_parameterAtbildes netiek saglabātas, tāpēc nosūtiet visu sarunu input Katru reizi

Atbilde

{
  "id": "resp_8c1e4b0f9a2d4e61",
  "object": "response",
  "created_at": 1790726400,
  "status": "completed",
  "model": "anthropic/claude-sonnet-5",
  "output": [
    {
      "type": "message",
      "id": "msg_2b7f",
      "role": "assistant",
      "status": "completed",
      "content": [{ "type": "output_text", "text": "A Lightning invoice is...", "annotations": [] }]
    }
  ],
  "output_text": "A Lightning invoice is...",
  "usage": {
    "input_tokens": 1240,
    "input_tokens_details": { "cached_tokens": 0 },
    "output_tokens": 380,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 1620
  },
  "incomplete_details": null,
  "error": null,
  "instructions": null,
  "store": false,
  "previous_response_id": null,
  "metadata": {},
  "nymbot": { "balance": "pro", "charged_credits": 0.162, "charged_sats": 16.2, "balance_credits": 412.425, "balance_sats": 41242.5 }
}

Ierīces pieprasījums parādās output kā a function_call punkts ar call_id, name un argumentsnosūtīt rezultātu atpakaļ kā a function_call_output Pants ar tādu pašu call_idpamatojums, kad modelis to atgriež, ir reasoning punkts ar reasoning_text saturu, kas uzskaitīts vispirms. status ir incomplete Kad atbilde nokrita max_output_tokens Pārdevējs ir atteicies, ar incomplete_details.reason iestatīt max_output_tokens vai content_filterAtbilde arī atgādina pieprasījuma iestatījumus (temperatūru, rīkus, rīku izvēli utt.), kā to dara OpenAI, un pārvadā nymbot Objekta izmaksas.

Streamed, katrs notikums ir event: Līnija un a data: Līnija ar a sequence_numberTātad šajā kārtībā: response.created, response.in_progress, response.output_item.added, response.content_part.addedJebkurš skaits no response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.doneUn beidzot response.completed ar lietošanu un izmaksām. atbilde samazina īsās beigās ar response.incomplete vietā, un neveiksme pēc tam, kad plūsma sākās ar response.failedRacionalizēt straumes kā savu priekšmetu ar response.reasoning_text.delta un .doneRīku izsaukumi nāk pēc ziņojuma, katrs kā objekts ar response.function_call_arguments.delta un .done.

StatussKad
400Nē model vai input; previous_response_id, conversation, background vai item_reference (unsupported_parameter); neatbalstīts rīks vai satura veids.
402, 403, 404, 429, 502, 503Attiecībā uz čatu pabeigšanu.

cURL

curl https://nymbot.ai/api/v1/responses \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "instructions": "Answer in one short paragraph.",
    "input": "What is a Lightning invoice?"
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

response = client.responses.create(
    model="anthropic/claude-sonnet-5",
    instructions="Answer in one short paragraph.",
    input="What is a Lightning invoice?",
)
print(response.output_text)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const response = await client.responses.create({
  model: "anthropic/claude-sonnet-5",
  instructions: "Answer in one short paragraph.",
  input: "What is a Lightning invoice?",
});
console.log(response.output_text);

Antropozīcijas vēstījumi

Tas darbojas ar katru modeli katalogā, ne tikai Claude: pieprasījums tiek tulkots, palaists caur to pašu cauruļvadu un tulkots atpakaļ.

POST https://nymbot.ai/api/v1/messages — nepieciešama API atslēga, kā x-api-key vai Authorization: Bearer.

Tās anthropic-version un anthropic-beta Antropiskie modeļu nosaukumi ir pielāgoti katalogam, tāpēc Claude Code un SDK darbojas ar tiem nosaukumiem, kurus viņi jau izmanto:

  • Nosaukums, ko katalogs zina, piemēram, claude-sonnet-5 vai anthropic/claude-opus-5Tas tiek izmantots tā, kā tas ir.
  • Attiecībā uz datumu (-20260514), -latestTāda versija kā -v1Brāļu diena, tāda kā [1m] Un viens anthropic/ vai anthropic. Prefikss tiek noņemts, un punktus un daļas versijā mēģina abos veidos (claude-haiku-4-5 Atrodas claude-haiku-4.5).
  • Ja tas joprojām neatbilst, tiek izmantota ģimene (Opus, Sonnet vai Haiku), ja vien kataloga versija ir tāda pati vai jaunāka par pieprasīto.
  • Nosaukums, kas neatbilst nekam, atgriežas 404 not_found_error.
LaukuVeidsNepieciešamsApraksts
modelStringaJāKataloga modeļa ID vai Anthropic modeļa nosaukums.
max_tokensIntegrācijaJāVisvairāk žetonu, lai rakstītu.
messagesArēnaJāuser un assistant Atgriešanās, ar text, image (base64 vai URL avots) tool_use un tool_result Bloki ir. thinking Bloki no iepriekšējām kārtām tiek pieņemti un izlaisti.
systemStrings vai arrayNēSistēmas pieprasījums, piemēram, virkne vai teksta bloki.
temperature
top_p
NumursNēSampling kontroles, kur modelis ņem tos. top_k Tiek pieņemts un atstāts.
stop_sequencesArray no stringsNēTeksts, kas beidzas ar atbildi. ne vairāk kā 4 virknes, katra ne vairāk kā 256 rakstzīmes.
tools
tool_choice
Mērķis, objektsNēInstrumenti ar name, description un input_schema• A web_search Servera rīks tiek pārvērsts WEB meklēšana; Anthropic citi iebūvēti rīki (bash, teksta redaktors, datora lietošana) tiek noraidīti ar unsupported_tool. tool_choice ņem auto, any, tool vai noneun disable_parallel_tool_use.
thinkingObjektsNē{"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} vai {"type": "disabled"}Budžets izvēlas pūļu līmeni: zem 2,048 minimuma, no 2,048 zema, no 8,192 vidēja, no 16,384 augsta. output_config.effortVai arī augstu.
streamboļševikuNēStraumēšana Anthropic notikumu formātā.
metadataObjektsNēPieņemts un ignorēts.

Atbilde

{
  "id": "msg_01c7a2f93e5b4d08",
  "type": "message",
  "role": "assistant",
  "model": "anthropic/claude-sonnet-5",
  "content": [{ "type": "text", "text": "A Lightning invoice is..." }],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 1240,
    "output_tokens": 380,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0
  },
  "nymbot": { "balance": "pro", "charged_credits": 0.162, "charged_sats": 16.2, "balance_credits": 412.425, "balance_sats": 41242.5 }
}

content Var arī turēt tool_use Bloki un a thinking Bloks, kuru signature Tā ir tukša. stop_reason ir end_turn, max_tokens, tool_use vai refusalDarbojās tāpat kā finish_reason ir Chat pabeigšana; stop_sequence Vienmēr ir null, pat tad, ja apstāšanās secība beidza atbildi. input_tokens skaitās tikai svaigi ievadi; kešatmiņas ievadi atrodas divos kešatmiņas laukos. nymbot Objekts un tā X-Nymbot-Cost-Sats Tātad header.

Streamed, notikumi ir Anthropic's: message_start, content_block_start, ping, content_block_delta (text_delta, input_json_delta vai thinking_delta), content_block_stop, message_delta ar apstāšanās iemeslu, lietošanu un nymbot objekta izmaksas un message_stop• A ping tiek nosūtīts arī ik pēc 15 sekundēm, kamēr modelis darbojas. tool_use bloks ar visu tā ievadi vienā input_json_delta.

Kļūdas šajā gala punktā izmanto Anthropic formātu: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}Īss līdzsvars ir 402 billing_errorPārslogots piegādātājs 503 overloaded_errorNepareiza darbība pēc plūsmas sākuma tiek nosūtīta kā error Pasākums .

cURL

curl https://nymbot.ai/api/v1/messages \
  -H "x-api-key: $NYMBOT_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "What is a Lightning invoice?"}]
  }'

Python

import os
import anthropic

client = anthropic.Anthropic(base_url="https://nymbot.ai/api", api_key=os.environ["NYMBOT_API_KEY"])

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "What is a Lightning invoice?"}],
)
print(message.content[0].text)

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nymbot.ai/api", apiKey: process.env.NYMBOT_API_KEY });

const message = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "What is a Lightning invoice?" }],
});
console.log(message.content[0].text);

Tokenu skaitīšana

Aprēķins par to, cik daudz ievades žetonu Messages pieprasījums izmantotu, lai klients varētu pārbaudīt, pirms tas nosūta.

POST https://nymbot.ai/api/v1/messages/count_tokens — nepieciešama API atslēga. bezmaksas

Ķermenis ir tāds pats kā ZiņojumiBez max_tokens; modeļa nosaukums ir jāatrisina. skaitīšana ir aprēķins: sistēmas pieprasījuma, ziņojumu, rīku zvanu un rīku definīciju rakstzīmes ir sadalītas pa četriem, plus 1600 katram attēlam. Tas nav pakalpojumu sniedzēja paša tokenizators, tāpēc reālais skaitlis var atšķirties. atslēga, kas ir sasniegusi savu maksimumu, joprojām to var izmantot.

Atbilde

{ "input_tokens": 318 }

cURL

curl https://nymbot.ai/api/v1/messages/count_tokens \
  -H "x-api-key: $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "What is a Lightning invoice?"}]
  }'

Python

import os
import anthropic

client = anthropic.Anthropic(base_url="https://nymbot.ai/api", api_key=os.environ["NYMBOT_API_KEY"])

count = client.messages.count_tokens(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "What is a Lightning invoice?"}],
)
print(count.input_tokens)

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nymbot.ai/api", apiKey: process.env.NYMBOT_API_KEY });

const count = await client.messages.countTokens({
  model: "claude-sonnet-5",
  messages: [{ role: "user", content: "What is a Lightning invoice?" }],
});
console.log(count.input_tokens);

Modelu saraksts

Katrs modelis un ģenerators API pieņem, ar to, ko tas maksā. saraksts tiek lasīts no tā paša tiešraides kataloga kā lietojumprogrammas pickers, tāpēc tas vienmēr ir tas, ko serveris darbosies.

GET https://nymbot.ai/api/v1/models — nav nepieciešama atslēga. Slēptas piecas minūtes.

GET /api/v1/models/{id} Atgriež vienu ievadi.

LaukuVeidsNepieciešamsApraksts
typeString (prasības vārdi)Nēchat (Tā ir deficīta situācija) image, video, audio, embedding vai allVar izmantot vairākas metodes, piemēram, image,video.

Cenas ir tas, ko jūs maksājat, ar maksu un maržu, kas jau ir, dolāros un likmēs pašreizējā Bitcoin cenā. balance Tas norāda uz to, kādu bilanci modelis tērē. nymbot_key ir modeļa īss nosaukums lietojumprogrammā. created vienmēr ir 0, jo katalogā nav ieraksta, kad modelis tika pievienots. per_request vietā.

nymbot/auto vienmēr ir pirmais, cena kā variableAr a routes saraksts, kas sniedz katra standarta maršruta likmes. tas uzskaita redzējumu un argumentus, bet ne instrumentus.

GET /api/v1/models/{id} pieņem tos pašus vārdus un uzvārdus kā pieprasījumu, un atgriež ierakstu par modeli, uz kuru viņi nolemj.

Atbilde

{
  "object": "list",
  "data": [
    {
      "id": "anthropic/claude-sonnet-5",
      "object": "model",
      "type": "chat",
      "owned_by": "anthropic",
      "name": "Claude Sonnet 5",
      "created": 0,
      "context_length": 1000000,
      "max_output_tokens": 64000,
      "architecture": { "input_modalities": ["text", "image"], "output_modalities": ["text"] },
      "supported_parameters": ["max_tokens", "temperature", "tools", "tool_choice", "reasoning", "response_format", "stop"],
      "capabilities": { "vision": true, "video": false, "tools": true, "reasoning": true, "web_search": true },
      "balance": "pro",
      "pricing": {
        "type": "per_token",
        "currency": "USD",
        "input_per_1M_tokens": 4.725,
        "output_per_1M_tokens": 23.625,
        "cache_read_per_1M_tokens": 0.4725,
        "sats_input_per_1M_tokens": 4038,
        "sats_output_per_1M_tokens": 20192
      },
      "description": "...",
      "nymbot_key": "claude-sonnet"
    }
  ]
}

Pārējie veidi:

  • Attēls Ieeja ir capabilities (accepts_image_url, requires_image_url, edit) un cena per_generation.
  • Video Ieeja ir max_duration_seconds un resolutionsUn tā cena per_second Par katru rezolūciju.
  • Audio Ieeja ir audio_type speech vai transcriptionCenas per_1k_chars vai per_minute.
  • Iebūvēšana Ieeja ir dimensions, context_length, max_inputs Un cena par miljonu ieejas žetonu.

Cenas atzīmētas "estimated": true ir lietojumprogrammas aprēķins par ģeneratoru, kura cena netiek publicēta. type Atgriešanās 400.

cURL

curl "https://nymbot.ai/api/v1/models?type=chat"

Python

import requests

models = requests.get("https://nymbot.ai/api/v1/models", params={"type": "chat"}).json()["data"]
for m in models:
    print(m["id"], m["balance"], m["pricing"].get("input_per_1M_tokens"))

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/models?type=chat");
const { data } = await res.json();
for (const m of data) console.log(m.id, m.balance, m.pricing.input_per_1M_tokens);