Μετάβαση στο περιεχόμενο
Επιστροφή στο Nymbot

Βάση γνώσεων Οι προγραμματιστές

Chat, απαντήσεις και μηνύματα

Τρεις τρόποι για να ρωτήσετε ένα μοντέλο κάτι, στις τρεις μορφές οι πελάτες ήδη μιλούν, όλοι τρέχουν στα ίδια μοντέλα και χρεώνονται με τον ίδιο τρόπο.

Συμπληρώματα chat

Το OpenAI chat format, και αυτό που σχεδόν κάθε εργαλείο υποστηρίζει. στείλτε τη συνομιλία μέχρι στιγμής και να πάρετε το επόμενο μήνυμα πίσω.

POST https://nymbot.ai/api/v1/chat/completions Χρειάζεστε ένα API κλειδί.

Μόνο model και messages Μια παράμετρος δειγματοληψίας που το επιλεγμένο μοντέλο δεν παίρνει πέφτει χωρίς σφάλμα, έτσι ώστε ένα σώμα αίτησης λειτουργεί σε όλα τα μοντέλα. supported_parametersΑυτό που απορρίπτεται αντί να πέφτει είναι κάτι που το μοντέλο δεν μπορεί να κάνει καθόλου: εικόνες για ένα μοντέλο που δεν μπορεί να δει, εργαλεία για ένα μοντέλο που δεν μπορεί να τα καλέσει.

Το πεδίοΤύποςΑπαιτείταιΠεριγραφή
modelΣτρογγυλοΝαίnymbot/auto (ή auto) για τη δρομολόγηση του Nymbot στο πρότυπο ισοζύγιο, ή ένα αναγνωριστικό μοντέλου καταλόγου όπως anthropic/claude-sonnet-5 στο ισοζύγιο Pro. Τα σύντομα ονόματα και τα ψευδώνυμα της εφαρμογής γίνονται επίσης αποδεκτά. Αρκετά.
messagesΑρέναΝαίΟ ρόλος, οι ρόλοι system, developer (Αντιμετωπίζεται ως σύστημα) user, assistant και toolΤο περιεχόμενο είναι μια σειρά ή μια λίστα text και image_url Μέρη: εικόνες μόνο στα μηνύματα των χρηστών. input_audio Τα αρχεία απορρίπτονται.
streamΜπουλάνηςΌχιΣτείλτε την απάντηση όπως είναι γραμμένη. δείτε Streaming.
stream_optionsαντικείμενοΌχι{"include_usage": true} προσθέτει ένα τελικό κομμάτι με τους αριθμούς token και το κόστος.
max_tokens
max_completion_tokens
ΙΝΤΕΡΌχιΟι περισσότερες μάρκες για να γράψετε. Μείωση στο μέγιστο του μοντέλου αν είναι υψηλότερη. επίσης καθορίζει πόσο κρατείται από το υπόλοιπο σας, έτσι ώστε ένας μικρότερος αριθμός χρειάζεται λιγότερη πίστωση για να ξεκινήσει.
temperature
top_p
ΑριθμόςΌχιΟ έλεγχος των δειγμάτων: temperature Από το 0 έως το 2, top_p Από το 0 στο 1.
stopΣύνδεσμος ή ArrayΌχιΚείμενο που τελειώνει την απάντηση: μια γραμμή ή το πολύ 4 γραμμές, το πολύ 256 χαρακτήρες το καθένα. nymbot/auto.
seedΙΝΤΕΡΌχιΓια επαναλαμβανόμενη δειγματοληψία, όπου το μοντέλο το υποστηρίζει.
presence_penalty
frequency_penalty
ΑριθμόςΌχιΕπαναλαμβανόμενοι έλεγχοι, καθένας από -2 έως 2.
response_formatαντικείμενοΌχι{"type": "json_object"} ή {"type": "json_schema", "json_schema": {…}}, όπου το μοντέλο το υποστηρίζει. Δεν χρησιμοποιείται από nymbot/auto.
tools
tool_choice
parallel_tool_calls
Σειρά ή αντικείμενο, BooleanΌχιΟδηγός λειτουργίας. δείτε Εργαλεία κλήσηςΑ Α web_search Το εργαλείο μετατρέπεται WEB ΑναζήτησηΣε 128 εργαλεία και 512 KB ορισμών, ενσωματωμένα σε 64 βαθύτερα επίπεδα. 400.
reasoning_effort
reasoning
Ετικέτα, αντικείμενοΌχι"minimal", "low", "medium" ή "high"Ή {"effort": "high"}. "none" ή {"enabled": false} Ανοίξτε το. δείτε Λόγος.
pluginsΑρέναΌχι[{"id": "web", "max_results": 5}] πάντα ψάχνει πρώτα στο διαδίκτυο. έως 10 αποτελέσματα.
nΙΝΤΕΡΌχι1 - Όλα τα υπόλοιπα επιστρέφουν 400.
logit_bias
user
metadata
Αντικείμενο, Σύνδεσμος, ΑντικείμενοΌχιΑποδεκτό και δεν αποστέλλεται. logit_bias Χάρτες με έως και 300 token ids σε αριθμούς από -100 έως 100 user Μέγιστο 256 χαρακτήρες. metadata διατηρεί έως 16 τιμές σειράς, κλειδιά έως 64 χαρακτήρες και τιμές έως 512.

Η απάντηση είναι συνηθισμένη chat.completionΜε το κόστος στο usage.cost (σε δολάρια) και στο nymbot το αντικείμενο. model είναι το λύσιμο μοντέλο id, οπότε ένα σύντομο όνομα επιστρέφει ως το πλήρες. message.reasoning_contentξεχωριστά από την απάντηση.

Απάντηση

{
  "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 είναι επεξεργασμένο από αυτό που επέστρεψε, δεδομένου ότι οι πάροχοι το αναφέρουν διαφορετικά: tool_calls Όταν το μοντέλο ζήτησε εργαλεία, length όταν η απάντηση χρησιμοποίησε κάθε επιτρεπόμενο token (ή το μοντέλο τα ξόδεψε όλα στο σκεπτικό και δεν έγραψε καμία απάντηση), content_filter Όταν ο προμηθευτής αρνείται, και stop αλλιώς usage.completion_tokens_details.reasoning_tokens είναι πάντα 0: τα κρυμμένα tokens λογικής μετρούνται και χρεώνονται, σε completion_tokens.

Το καθεστώςΠότε
400Όχι model ή messages (missing_required_parameter)? ένα μέρος ήχου ή αρχείου, ή εικόνες για ένα μοντέλο που δεν μπορεί να τα δει (unsupported_content(περισσότερες από 20 φωτογραφίες)too_many_images); μια παράμετρος δειγματοληψίας του λανθασμένου τύπου ή εκτός εμβέλειας (invalid_value); ένας σύνδεσμος εικόνας που δεν είναι δημόσια (invalid_image_url); εργαλεία σε ένα μοντέλο που δεν μπορούν να τα καλέσουν (unsupported_tool); n Άλλο από το 1· α :thinking Ένα μοντέλο που δεν μπορεί να δικαιολογηθεί (model_not_found) ή ο προμηθευτής απέρριψε το αίτημα (upstream_rejected).
402Το υπόλοιπο που δαπανά το μοντέλο δεν μπορεί να καλύψει την κατοχή.
403Η χειρότερη περίπτωση δεν ταιριάζει στο καπάκι του κλειδιού (key_limit_reached• Κάτω max_tokens Ή να σηκώσει το κεφάλι.
404Κανένα μοντέλο με αυτό το όνομα (model_not_found).
429Το όριο του ποσοστού του κλειδιού, ή του παρόχου (upstream_rate_limited).
502, 503Ο προμηθευτής απέτυχε (upstream_error) ή είναι υπερφορτωμένη (upstream_overloaded, με Retry-AfterΤίποτα δεν χρεώνεται εκτός αν ο πάροχος χρεώσει για την προσπάθεια.

Οι κωδικοί κατάστασης κάθε μετοχής τερματικού σημείου παρατίθενται κάτω από Λάθη.

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

Με "stream": true Η απάντηση έρχεται ως συμβάν που αποστέλλεται από το διακομιστή ενώ το μοντέλο το γράφει. chat.completion.chunk ΕΝ Α data: γραμμή, και το ρεύμα τελειώνει με data: [DONE]Η λογική έρχεται μέσα delta.reasoning_contentΗ απάντηση στην delta.content.

Ρυθμίστε οτιδήποτε μπορεί να διαρκέσει περισσότερο από 100 δευτερόλεπτα, όπως μια μακρά απάντηση, μια μεγάλη απάντηση. max_tokens Ένα αίτημα που δεν μεταδίδεται δεν στέλνει τίποτα μέχρι να ολοκληρωθεί η απάντηση και το δίκτυο μεταξύ σας και του Nymbot μπορεί να κλείσει μια άδεια σύνδεση μετά από περίπου 100 δευτερόλεπτα. το μοντέλο εξακολουθεί να τελειώνει και αυτό που έγραψε φορτώνεται, αλλά η απάντηση χάνεται.

ρεύμα

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]
  • Οι γραμμές που ξεκινούν με : Είναι σχόλια που στέλνονται κάθε 15 δευτερόλεπτα ενώ το μοντέλο σκέφτεται.
  • Ζητήστε για "stream_options": {"include_usage": true} για να πάρετε το τελευταίο κομμάτι πάνω, με ένα κενό choicesΤα έσοδα, το κόστος και η nymbot το αντικείμενο.
  • Εάν κλείσετε την σύνδεση νωρίς, το μοντέλο δεν σταματά: Το Nymbot διαβάζει το υπόλοιπο ρεύμα του παρόχου, για έως και 25 δευτερόλεπτα, για να πάρει τον αριθμό token του, και πληρώνετε ό, τι αναφέρει ο πάροχος.
  • Ένα λάθος πριν από το πρώτο κομμάτι, όπως 401 ή 402, επιστρέφει ως συνηθισμένο JSON με τον κώδικα κατάστασης του, όχι ως ρεύμα. data: {"error": {…}} Εκδήλωση, και το ρεύμα τελειώνει χωρίς [DONE].
  • Τα αιτήματα με τα εργαλεία και τα μοντέλα στο σύστημα ανταπόκρισης του OpenAI δεν ρέουν από τον πάροχο, αλλά εξακολουθούν να απαντούν με ένα έγκυρο ρεύμα, το οποίο αποστέλλεται μόλις ολοκληρωθεί η απάντηση.

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

Εργαλεία κλήσης

Περιγράψτε τις λειτουργίες σε tools και το μοντέλο μπορεί να ζητήσει να καλέσει έναν αντί να απαντήσει. Εκτελείτε τη συνάρτηση, προσθέστε το αποτέλεσμα ως tool Μήνυμα με το ίδιο tool_call_idΤο Nymbot δεν εκτελεί ποτέ τις λειτουργίες σας, μεταδίδει το αίτημα του μοντέλου πίσω σε εσάς.

tool_choice παίρνει "auto", "none", "required" ή {"type": "function", "function": {"name": "…"}}Η λίστα μοντέλων επισημαίνει ποια μοντέλα μπορούν να καλέσουν εργαλεία (capabilities.toolsΤα εργαλεία απορρίπτονται 400 unsupported_tool είναι nymbot/auto και στα λίγα μοντέλα καταλόγου που τρέχουν στην μεταφορά Responses του OpenAI, στα οποία το Nymbot δεν μπορεί να περάσει τα εργαλεία.

Με "stream": true, ένα αίτημα με εργαλεία εκτελείται σε ένα κομμάτι και στη συνέχεια αποστέλλεται ως κανονική ακολουθία: ο ρόλος, ένα κομμάτι που φέρει κάθε κλήση εργαλείου με τον δείκτη, το id, το όνομα και τα επιχειρήματα και το τελικό κομμάτι.

Η απάντηση, εν μέρει

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

Φωτογραφίες σε αίτηση

Μοντέλα με capabilities.vision Μπορείτε να διαβάσετε εικόνες.Προσθήκη image_url μέρος σε ένα μήνυμα χρήστη, με είτε ένα κοινό https:// Σύνδεσμος ή Α data:image/…;base64, Ο αριθμός των φωτογραφιών που αναρτώνται στην αίτηση είναι μέχρι 20 εικόνες ανά αίτημα. οι εικόνες SVG απορρίπτονται, και έτσι υπάρχει ένας σύνδεσμος άνω των 4.096 χαρακτήρων ή ένας με όνομα χρήστη ή κωδικό πρόσβασης σε αυτό (400 invalid_image_urlΈνα προαιρετικό detail είναι auto, low ή high.

Με nymbot/auto, ένα αίτημα με μια εικόνα σε αυτό κατευθύνεται σε ένα πρότυπο μοντέλο που μπορεί να δει. capabilities.vision Αρνούνται φωτογραφίες με 400 unsupported_contentΜια σύνδεση πρέπει να δείχνει σε έναν δημόσιο οικοδεσπότη. το Nymbot μεταδίδει την εικόνα στον πάροχο του μοντέλου και δεν τη διατηρεί.

Μια εικόνα χρεώνεται ως τα tokens εισόδου που μετράει ο πάροχος γι 'αυτό, όπως και το υπόλοιπο του αιτήματος.

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

ΛΟΓΙΣΜΟΣ

Μοντέλα με capabilities.reasoning μπορεί να σκεφτεί πριν απαντήσει. ζητήστε περισσότερο ή λιγότερο από αυτό με reasoning_effort ("minimal", "low", "medium" ή "high") ή "reasoning": {"effort": "high"}ή να προσθέσετε :thinking στο όνομα του μοντέλου, που σημαίνει υψηλή προσπάθεια. Σε ένα μοντέλο χωρίς αιτιολογία η ρύθμιση αγνοείται. nymbot/auto, :thinking αποστέλλει το αίτημα στην κανονική διαδρομή συλλογισμού.

Στα ανθρωπογενή μοντέλα η προσπάθεια γίνεται ένας προϋπολογισμός σκέψης περίπου 1.000, 2.000, 8.000 ή 16.000 tokens, ποτέ περισσότερο από max_tokens Σκεφτείτε, η σκέψη είναι κλειστή όταν tool_choice αναγκάζει ένα εργαλείο, και όταν το αίτημα συνεχίζει μια ροή εργαλείων (το τελευταίο του μήνυμα είναι ένα αποτέλεσμα εργαλείου), επειδή το Anthropic χρειάζεται την προηγούμενη υπογεγραμμένη σκέψη για να το επαναλάβει.

Η λογική επιστρέφει στην message.reasoning_contentΉ delta.reasoning_content κατά τη διάρκεια της ροής, ποτέ δεν αναμιγνύεται στην απάντηση. Η λογική είναι η έξοδος και χρεώνεται ως τέτοια, μέσα completion_tokensΜερικοί πάροχοι δεν επιστρέφουν το κείμενο συλλογισμού καθόλου και εξακολουθεί να χρεώνεται.

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

Μοντέλο επαρκών

Ένα επίθετο στο όνομα του μοντέλου αλλάζει τον τρόπο χειρισμού του αιτήματος, χωρίς άλλο πεδίο. anthropic/claude-sonnet-5:online.

ΑρκετάΕΠΙΠΤΩΣΗ
:onlineΑναζητά πρώτα το διαδίκτυο, όπως plugins: [{"id": "web"}]ΣΕ WEB Αναζήτηση.
:thinkingΜεγάλες προσπάθειες λογικής, στο nymbot/autoΤο μονοπάτι της λογικής.Σε ένα μοντέλο που δεν μπορεί να λογική, 400 model_not_found με “no endpoints found&rdquo?
:nitro, :floor, :exacto, :extendedΚάθε μοντέλο καταλόγου έχει μία διαδρομή, οπότε δεν υπάρχει ταχύτερη, φθηνότερη ή μεγαλύτερη διαδρομή για να επιλέξετε. τα επιπρόσθετα επιτρέπονται έτσι ώστε τα ονόματα μοντέλων που αντιγράφονται από άλλες υπηρεσίες να εξακολουθούν να λειτουργούν.

Οποιοδήποτε άλλο επίθετο αγνοείται. Το πλήρες όνομα δοκιμάζεται πρώτα, οπότε ένα μοντέλο του οποίου το αναγνωριστικό πραγματικά περιέχει ένα κολόνο εξακολουθεί να λειτουργεί. σε αντίθετη περίπτωση, τα επίθετα αφαιρούνται από το τέλος ένα τη φορά μέχρι να ταιριάζει ένα μοντέλο. 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 αναζητά το τελευταίο μήνυμα χρήστη (τους πρώτους 2.000 χαρακτήρες του), διαβάζει τις καλύτερες σελίδες και τις δίνει στο μοντέλο με την ερώτηση, που χαρακτηρίζεται ως εξωτερικό περιεχόμενο από το οποίο το μοντέλο δεν πρέπει να λαμβάνει οδηγίες.

  • Πάντα αναζητώντας: "plugins": [{"id": "web", "max_results": 5}]Ή α :online Αρκεί το μοντέλο.
  • Αναζητήστε όταν βοηθάει: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Επίσης, αποδέχεται ως web_search_preview ή openrouter:web_searchΤο Nymbot ψάχνει μόνο όταν η ερώτηση φαίνεται να χρειάζεται τρέχουσες πληροφορίες, το ίδιο τεστ που χρησιμοποιεί η εφαρμογή.

max_results είναι 5 από προεπιλογή και στο μέγιστο 10. οι πηγές επιστρέφουν στο nymbot.web_search.sourcesΟ καθένας με μια title, snippet και urlΚαι ως url_citation Σημειώσεις στο μήνυμα.

Κάθε αναζήτηση που τρέχει κοστίζει $ 0,008, μετατρέπεται σε sats, πάνω από τα tokens, και είναι μέρος του hold. οι σελίδες που διαβάζει είναι εισαγωγικά tokens πάρα πολύ, έτσι μια απάντηση από το διαδίκτυο κοστίζει περισσότερο από την ίδια ερώτηση ρωτήθηκε κρύο, μερικές φορές αρκετές φορές περισσότερο.

Η απάντηση, εν μέρει

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

ΑΠΑΝΤΗΣΗ ΦΩΤΙΑ

Η νεότερη μορφή του OpenAI, που χρησιμοποιείται από το OpenAI Agents SDK και από τον Codex. τρέχει με τα ίδια μοντέλα, τιμολόγηση και χαρακτηριστικά όπως το Chat Completions.

POST https://nymbot.ai/api/v1/responses Χρειάζεστε ένα API κλειδί.

Το πεδίοΤύποςΑπαιτείταιΠεριγραφή
modelΣτρογγυλοΝαίΩς προς Συμπληρώματα chatΣυμπεριλαμβάνονται και τα suffixes.
inputΣύνδεσμος ή ArrayΝαίΜια γραμμή ή μια λίστα στοιχείων: μηνύματα (Ρόλοι user, assistant, system, developer) με input_text, input_image και output_text Μερικά μέρη και function_call και function_call_output αντικείμενα για τα εργαλεία. input_image Πάρτε ένα image_url σύνδεση ή διεύθυνση URL δεδομένων, όχι ένα αναγνωριστικό αρχείου. reasoning και web_search_call Τα αντικείμενα παραλείπονται. item_reference έχει απορριφθεί
instructionsΣτρογγυλοΌχιΟδηγίες του συστήματος.
max_output_tokensΙΝΤΕΡΌχιΟι περισσότερες κουβέντες για να γράψετε
temperature
top_p
ΑριθμόςΌχιΔείγμα ελέγχων, όπου το μοντέλο τα παίρνει.
tools
tool_choice
parallel_tool_calls
Σειρά ή αντικείμενο, BooleanΌχιΕτικέτες ΕΡΓΑΖΟΜΕΝΑ, ΕΡΓΑΖΟΜΕΝΑ ({"type": "function", "name": …, "parameters": …}) Α web_search ή web_search_preview Το εργαλείο μετατρέπεται WEB Αναζήτηση όταν βοηθά. άλλα ενσωματωμένα εργαλεία απορρίπτονται.
reasoningαντικείμενοΌχι{"effort": "minimal" | "low" | "medium" | "high"}. xhigh και max Σημαίνει high; none να το κλείσει.
text.format
response_format
αντικείμενοΌχιΔιαρθρωμένη εξαγωγή, όπως ένα σχήμα JSON ή json_object.
metadataαντικείμενοΌχιΕπιστρέφεται αμετάβλητη στην απάντηση. σε 16 τιμές σειράς, κλειδιά έως 64 χαρακτήρες και τιμές έως 512.
streamΜπουλάνηςΌχιStream γεγονότα όπως περιγράφεται παρακάτω.
storeΜπουλάνηςΌχιΤίποτα δεν αποθηκεύεται, και η απάντηση λέει πάντα "store": false.
previous_response_id
conversation
background
String, Object και BooleanΌχιΔεν υποστηρίζεται : 400 unsupported_parameterΟι απαντήσεις δεν αποθηκεύονται, οπότε στείλτε ολόκληρη τη συνομιλία στο input Κάθε φορά

Απάντηση

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

Ένα εργαλείο αίτησης εμφανίζεται στο output Ως α function_call Θέμα με call_id, name και argumentsΣτείλτε το αποτέλεσμα πίσω ως a function_call_output Θέμα με το ίδιο call_idΗ λογική, όταν το μοντέλο το επιστρέφει, είναι μια reasoning Θέμα με reasoning_text Περιεχόμενο που αναγράφεται πρώτα. status είναι incomplete Όταν η απάντηση χτυπάει max_output_tokens Ο προμηθευτής αρνήθηκε, με incomplete_details.reason Στέλεχος max_output_tokens ή content_filterΗ απάντηση αντανακλά επίσης τις ρυθμίσεις του αιτήματος (θερμοκρασία, εργαλεία, επιλογή εργαλείων και ούτω καθεξής) όπως κάνει το OpenAI και μεταφέρει το nymbot κόστος του αντικειμένου.

Σίγουρα, κάθε εκδήλωση είναι event: Η γραμμή και η data: γραμμή με α sequence_numberΜε αυτή τη σειρά: response.created, response.in_progress, response.output_item.added, response.content_part.addedΚάθε αριθμός των response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.doneΚαι τέλος response.completed με τη χρήση και το κόστος. μια απάντηση κόβεται με response.incomplete αντίθετα, και μια αποτυχία μετά το ρεύμα ξεκίνησε με response.failedΛογικότητα των ρευμάτων ως δικό τους αντικείμενο με response.reasoning_text.delta και .doneΟι κλήσεις εργαλείων έρχονται μετά το μήνυμα, καθένα ως στοιχείο με response.function_call_arguments.delta και .done.

Το καθεστώςΠότε
400Όχι model ή input; previous_response_id, conversation, background Ή μια item_reference (unsupported_parameterΈνα μη υποστηριζόμενο εργαλείο ή τύπος περιεχομένου.
402, 403, 404, 429, 502, 503Ολοκλήρωση των chat.

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

ΑΝΘΡΩΠΙΚΟ ΜΗΝΥΜΑ

Η μορφή του Anthropic, για τα Anthropic SDKs και Claude Code. Λειτουργεί με κάθε μοντέλο στον κατάλογο, όχι μόνο Claude: το αίτημα μεταφράζεται, τρέχει μέσω του ίδιου αγωγού και μεταφράζεται πίσω.

POST https://nymbot.ai/api/v1/messages - χρειάζεται ένα κλειδί API, όπως x-api-key ή Authorization: Bearer.

Η anthropic-version και anthropic-beta Ανθρωπογενή ονόματα μοντέλων ταιριάζουν με τον κατάλογο, έτσι Claude Code και τα SDKs λειτουργούν με τα ονόματα που χρησιμοποιούν ήδη:

  • Ένα όνομα που ο κατάλογος γνωρίζει, όπως claude-sonnet-5 ή anthropic/claude-opus-5Χρησιμοποιείται όπως είναι.
  • Σε αντίθετη περίπτωση, η ημερομηνία-20260514), -latestΜια εκδοχή όπως η -v1Μια χαλαρή μέρα, όπως [1m] Και ένα anthropic/ ή anthropic. Το προφίλ αφαιρείται και τα σημεία και οι πίστες στην έκδοση δοκιμάζονται και στις δύο κατευθύνσεις (claude-haiku-4-5 Βρέθηκαν claude-haiku-4.5).
  • Εάν αυτό δεν ταιριάζει ακόμα, χρησιμοποιείται η οικογένεια (Opus, Sonnet ή Haiku), εφόσον η έκδοση του καταλόγου είναι η ίδια ή νεότερη από εκείνη που ζητήθηκε.
  • Ένα όνομα που δεν ταιριάζει με τίποτα επιστρέφει 404 not_found_error.
Το πεδίοΤύποςΑπαιτείταιΠεριγραφή
modelΣτρογγυλοΝαίΈνα αναγνωριστικό μοντέλου καταλόγου ή ένα ανθρωπογενές όνομα μοντέλου.
max_tokensΙΝΤΕΡΝαίΟι περισσότερες κουβέντες για να γράψετε
messagesΑρέναΝαίuser και assistant Γύρω, με text, image (base64 ή πηγή URL), tool_use και tool_result των μπλοκ. thinking Τα μπλοκ από προηγούμενες στροφές γίνονται δεκτά και απορρίπτονται.
systemΣύνδεσμος ή ArrayΌχιΠροειδοποίηση συστήματος, όπως μια σειρά ή μπλοκ κειμένου.
temperature
top_p
ΑριθμόςΌχιΔείγμα ελέγχων, όπου το μοντέλο τα παίρνει. top_k Αποδέχεται και εγκαταλείπει.
stop_sequencesΕτικέτες STRINGSΌχιΚείμενο που τελειώνει την απάντηση. Μέγιστο 4 στίχους, το καθένα με μέγιστο 256 χαρακτήρες.
tools
tool_choice
Ετικέτα, αντικείμενοΌχιΕργαλεία με name, description και input_schemaΑ Α web_search Το εργαλείο server μετατρέπεται σε WEB ΑναζήτησηΤα άλλα ενσωματωμένα εργαλεία του Anthropic (bash, επεξεργασία κειμένου, χρήση υπολογιστή) απορρίπτονται με unsupported_tool. tool_choice παίρνει auto, any, tool ή noneκαι disable_parallel_tool_use.
thinkingαντικείμενοΌχι{"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} ή {"type": "disabled"}Ο προϋπολογισμός επιλέγει ένα επίπεδο προσπάθειας: κάτω από 2.048 ελάχιστο, από 2.048 χαμηλό, από 8.192 μεσαίο, από 16.384 υψηλό. output_config.effortΉ και ψηλά.
streamΜπουλάνηςΌχιΑναπαραγωγή σε μορφή εκδήλωσης του Anthropic.
metadataαντικείμενοΌχιΑποδεκτή και αγνοημένη.

Απάντηση

{
  "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 Μπορεί επίσης να κρατήσει tool_use μπλοκ και α thinking Το μπλοκ, το οποίο signature Είναι άδειο stop_reason είναι end_turn, max_tokens, tool_use ή refusalΕργάστηκε με τον ίδιο τρόπο όπως finish_reason είναι Συμπληρώματα chat; stop_sequence Είναι πάντα null, ακόμη και όταν μια ακολουθία σταματήσεων τελείωσε την απάντηση. input_tokens υπολογίζεται μόνο η πρόσφατη είσοδος· η τροφοδοτούμενη είσοδος βρίσκεται στα δύο πεδία τροφοδοσίας. nymbot Το αντικείμενο και η X-Nymbot-Cost-Sats του Header.

Τα επεισόδια είναι του Anthropic: message_start, content_block_start, ping, content_block_delta (text_delta, input_json_delta ή thinking_delta), content_block_stop, message_delta Ο λόγος, η χρήση και η nymbot κόστος του αντικειμένου και message_stopΑ Α ping αποστέλλεται επίσης κάθε 15 δευτερόλεπτα ενώ το μοντέλο λειτουργεί. οι κλήσεις εργαλείων έρχονται μετά το κείμενο, το καθένα ως tool_use μπλοκ με όλη την είσοδό του σε ένα input_json_delta.

Σφάλματα σε αυτό το σημείο τερματισμού χρησιμοποιούν τη μορφή του Anthropic: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}Μια σύντομη ισορροπία είναι 402 billing_errorΈνας υπερφορτωμένος πάροχος 503 overloaded_errorΜια αποτυχία μετά την έναρξη του ρεύματος αποστέλλεται ως error Εκδήλωση .

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

Αξιολόγηση tokens

Μια εκτίμηση του πόσα tokens εισόδου θα χρησιμοποιούσε ένα αίτημα μηνυμάτων, έτσι ώστε ένας πελάτης να μπορεί να ελέγξει πριν στείλει.

POST https://nymbot.ai/api/v1/messages/count_tokens Χρειάζεστε ένα API κλειδί. δωρεάν.

Το σώμα είναι το ίδιο με το ΜηνύματαΧωρίς max_tokensΗ καταμέτρηση είναι μια εκτίμηση: οι χαρακτήρες της προειδοποίησης του συστήματος, τα μηνύματα, οι κλήσεις εργαλείων και οι ορισμοί εργαλείων διαιρούνται από τέσσερις, συν 1.600 για κάθε εικόνα. Δεν είναι το δικό του tokenizer του παρόχου, οπότε ο πραγματικός αριθμός μπορεί να διαφέρει.

Απάντηση

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

Κατάλογος μοντέλων

Κάθε μοντέλο και γεννήτρια που δέχεται το API, με ό, τι κοστίζει.Η λίστα διαβάζεται από τον ίδιο ζωντανό κατάλογο με τον επιλέκτη της εφαρμογής, οπότε είναι πάντα αυτό που θα τρέξει ο διακομιστής.

GET https://nymbot.ai/api/v1/models - Δεν χρειάζεται κλειδί. Κρυμμένο για πέντε λεπτά.

GET /api/v1/models/{id} Επιστρέφει μία είσοδος.

Το πεδίοΤύποςΑπαιτείταιΠεριγραφή
typeΕτικέτα (query)Όχιchat (Η αποτυχία είναι image, video, audio, embedding ή allΠολλές από αυτές μπορούν να δοθούν, όπως image,video.

Οι τιμές είναι αυτό που πληρώνετε, με το τέλος και το περιθώριο ήδη σε, σε δολάρια και σε δόσεις στην τρέχουσα τιμή Bitcoin. balance Εξηγεί σε ποιο ισοζύγιο δαπανάται το μοντέλο. nymbot_key είναι το σύντομο όνομα του μοντέλου στην εφαρμογή. created είναι πάντα 0, καθώς ο κατάλογος δεν καταγράφει πότε προστέθηκε ένα μοντέλο. per_request αντί.

nymbot/auto Είναι πάντα πρώτος, τιμολογείται ως variable, με μια routes Λίστα που δίνει τις τιμές κάθε τυποποιημένης διαδρομής.Αναφέρει το όραμα και το σκεπτικό, αλλά όχι τα εργαλεία.

GET /api/v1/models/{id} αποδέχεται τα ίδια ονόματα και ψευδώνυμα ως αίτημα και επιστρέφει την εγγραφή για το μοντέλο στο οποίο αποφασίζουν.

Απάντηση

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

Οι άλλοι τύποι:

  • Εικόνα Οι εισόδους έχουν capabilities (accepts_image_url, requires_image_url, edit(και μια τιμή per_generation.
  • ΒΙΝΤΕΟ Οι εισόδους έχουν max_duration_seconds και resolutionsΚαι μια τιμή per_second για κάθε ψήφισμα.
  • ΑΥΤΟΚΙΝΗΤΟ Οι εισόδους έχουν audio_type speech ή transcriptionΤιμή per_1k_chars ή per_minute.
  • Εμπλουτισμός Οι εισόδους έχουν dimensions, context_length, max_inputs και μια τιμή ανά εκατομμύριο εισερχόμενα tokens.

Τιμές Σημειωμένες "estimated": true είναι η εκτίμηση της εφαρμογής για μια γεννήτρια της οποίας η τιμή δεν δημοσιεύεται. type επιστρέφει 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);