قاعدة المعرفة المطورين
الصوت والردود والرسائل
ثلاثة طرق لتسأل عن شيء ما، في ثلاثة أنواع العملاء يتحدثون بالفعل، كل شيء يعمل على نفس النماذج وتتلقى نفس الطريقة.
تمت ترجمة هذه الصفحة آليًا من أجل الراحة. النسخة الأصلية الإنجليزية هي النسخة التي تنطبق.
Chat التكامل
إنتاج OpenAI، و الذي يدعم تقريبا كل أدوات. إرسال المحادثة حتى الآن والحصول على الرسالة التالية.
POST https://nymbot.ai/api/v1/chat/completions تحتاج إلى مفتاح API.
فقط model و messages يتم تخفيض مزيج من النماذج المختارة التي لا تتخذ دون خطأ ، لذلك يتم تشغيل جسم طلب واحد في جميع النماذج. supported_parametersما يتم رفضه بدلاً من رفضه هو ما لا يمكن القيام به من قبل النماذج: صور للنماذج التي لا يمكن رؤيتها، أدوات للنماذج التي لا يمكن سماعها.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
model | String | نعم | nymbot/auto (أو auto) لتوجيه Nymbot على التوازن القياسي ، أو ID نموذج الكاتالون مثل anthropic/claude-sonnet-5 على توازن Pro. يتم قبول الأسماء القصيرة والمسميات الخاصة من التطبيق أيضًا. قد تنتهي في ما يكفي. |
messages | Array | نعم | الكلمات الدلالية: Roles system, developer (تصنيفها كوسيلة) user, assistant و toolالمحتوى هو سلسلة أو قائمة من text و image_url أجزاء: الصور فقط في رسائل المستخدم. input_audio يتم رفض جزء من الملفات. |
stream | بولين | لا | إرسال الإجابة كما هو مكتوب. streaming. |
stream_options | المقاومة | لا | {"include_usage": true} يضيف جزءًا نهائيًا مع عدد التقييم والمكلفة. |
max_tokensmax_completion_tokens | النسيج | لا | أقل إلى حد كبير من النماذج إذا كان أعلى. يحدد أيضًا كم يتم الاحتفاظ بها من النفقات الخاصة بك، لذلك يحتاج عدد أقل من النفقات إلى أقل من النفقات للبدء. |
temperaturetop_p | رقم | لا | التحكم في نموذج: temperature من 0 إلى 2, top_p من 0 إلى 1. |
stop | String أو Array | لا | النص الذي ينتهك الإجابة: سلسلة أو أكثر من 4 سلسلة، كل منها لا يزيد عن 256 علامة. nymbot/auto. |
seed | النسيج | لا | لتثبيت النماذج المتكررة ، حيث يدعم النماذج. |
presence_penaltyfrequency_penalty | رقم | لا | تكرار التحكم ، كل من -2 إلى 2. |
response_format | المقاومة | لا | {"type": "json_object"} أو {"type": "json_schema", "json_schema": {…}}حيث يستخدم هذا النموذج، ولا يستخدمه nymbot/auto. |
toolstool_choiceparallel_tool_calls | الكتلة أو الكتلة أو الكتلة ، Boolean | لا | الوظيفة الالكترونية: See أداة الدعوة. a web_search أداة تتحول إلى البحث WEBفي ما يزيد على 128 أدوات و 512 كيلو بايت من تعريفات، في ما يزيد على 64 مستويًا عميقًا. 400. |
reasoning_effortreasoning | الذاكرة ، المحاكاة | لا | "minimal", "low", "medium" أو "high"أو أو {"effort": "high"}. "none" أو {"enabled": false} ارفع عنهم.ملاحظة التكيف. |
plugins | Array | لا | [{"id": "web", "max_results": 5}] دائما يبحث على الانترنت أولا. حتى 10 نتائج. |
n | النسيج | لا | 1 - كل شيء آخر يعود 400. |
logit_biasusermetadata | أداة , String , Object | لا | يتم قبولها ولا يتم إرسالها logit_bias خرائط في ما لا يقل عن 300 هاتف ذكي إلى الأرقام من -100 إلى 100؛ user ما يصل إلى 256 علامة؛ metadata يحتوي على ما يصل إلى 16 قسماً من القيم، وأكثر من 64 علامة، وأكثر من 512 قسماً. |
الإجابة هي عادة chat.completionمع التكلفة في usage.cost
(في الدولار) و في nymbot الموضوع . model هو اسم النماذج المختلطة، لذلك يعود اسم القصير إلى النماذج الكاملة. 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 عندما استخدم الإجابة كل تيموثيوم المسمى (أو كان النموذج يستغرق كل ذلك في التفكير ولا يكتب أي إجابة)، content_filter عندما يرفض المشترك، و stop
غير ذلك . usage.completion_tokens_details.reasoning_tokens هو دائمًا 0: يتم تقييم الأسهم المفروشة، وتخصيصها، في completion_tokens.
| الوضع | عندما |
|---|---|
400 | لا model أو messages (missing_required_parameter) ؛ جزء صوتي أو ملف ، أو صور لـ نموذج لا يمكن رؤيته (unsupported_content(أكثر من 20 صورة)too_many_images(أو على سبيل المثال، أو على سبيل المثال، أو على سبيل المثال، أو على سبيل المثال، أو على سبيل المثال.invalid_value) ؛ رابط الصورة الذي لا يمكن أن يكون عاملا (invalid_image_url)؛ أدوات على نموذج لا يمكن تسميته (unsupported_tool); n أولاً : 1 ؛ A :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 على a data: الجانب، والطريق ينتهي مع data: [DONE]السبب الحقيقي الذي يصل إلى
delta.reasoning_contentوإذا كان الإجابة في delta.content.
إرسال أي شيء قد يستغرق أكثر من 100 ثانية، مثل إجابة طويلة،
max_tokens أو نموذج التفكير. لا يتم نقل طلب حتى يتم إجمالي الإجابة، ويمكن أن تنتهي الشبكة بينك وبين Nymbot بعد حوالي 100 ثانية، ويمكن أن تنتهي النموذج أيضًا وأيضًا يتم تحميل ما كتبه، ولكن يتم فقد الإجابة.
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]
- خطوط تبدأ مع
:يتم إرسال التعليقات كل 15 ثانية في حين أن النماذج تفكر. - طلب من
"stream_options": {"include_usage": true}للحصول على آخر قطعة أعلى ، مع غطاءchoicesولهذا السبب، فإن التكلفة وnymbotالموضوع . - يتم تقسيم الشحن بعد انتهاء الشحن.إذا قمت بإغلاق الاتصال في وقت مبكر ، لا يتم وقف النماذج: يقرر Nymbot بقية الشحن للمورد ، لمدة 25 ثانية ، للحصول على عدد الورق ، و يمكنك دفع ما تقول للمورد.إلا أنه يتم تقسيم الشحن من الدخول الخاص بك وما الذي كتبه ، بالإضافة إلى جميع التمويلات الناتجة عن النموذج لهذا السبب.
- خطأ قبل الخطأ الأول ، مثل
401أو402، يعود كجهاز JSON العادي مع رمز الوضع ، وليس كوجبة.data: {"error": {…}}حوادث، وتنتهي الشمس دون[DONE]. - لا تتدفق الطلبات مع الأدوات، ونماذج على نقل OpenAI Responses من المورد، لكنها لا تزال تتردد مع تدفق صحيح، يتم إرسالها بعد الانتهاء من الرد.
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_idNymbot لا يقوم بتنفيذ وظائفك أبدا، بل يترك طلب النموذج إلىك.
tool_choice تأخذ "auto", "none",
"required" أو {"type": "function", "function": {"name": "…"}}يتم تحديد الأدوات التي يمكن استخدامها في هذه الأدوات (capabilities.tools) يتم رفض الأدوات مع 400 unsupported_tool ذاك nymbot/auto و على النماذج القليلة من الكاتالونات التي تعمل على نقل OpenAI Responses ، والتي لا يمكن لـ Nymbot إرسال الأدوات.
مع "stream": trueيتم تشغيل طلب مع الأدوات في قطعة واحدة ثم يتم إرسالها كجزء عادي: الدور، وقطعة واحدة تحمل كل مكالمة الأدوات مع مؤشرها، والقياس، والسمع والقبول، والقطعة النهائية.
الإجابة، جزئياً
"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:// الرابط أو a
data:image/…;base64, أولاً: تخصيص أربعة أجزاء من أجزاء من أجزاء من أجزاء أجزاء من أجزاء أجزاء أجزاء من أجزاء أجزاء أجزاء من أجزاء أجزاء أجزاء من أجزاء أجزاء أجزاء أجزاء من أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجزاء أجز400 invalid_image_url(الإختيارية detail هي
auto, low أو high.
مع nymbot/auto، يتم إرسال طلب مع صورة في ذلك إلى نموذج قياسي يمكن رؤيته. capabilities.vision رفض الصور مع
400 unsupported_contentيمكن أن تكون الصور فقط في الرسائل المستخدمة. يجب أن يظهر الرابط إلى مستخدم عام؛ Nymbot يترك الصورة إلى مكاتب النماذج ولا يحفظها.
يتم مكافأة الصورة كوينات الدخول التي يقدرها المورد ، مثل بقية الطلب.
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 إرسال الطلب إلى الطريق القياسي القياسي.
على النماذج الإثيوبية، يصبح الجهد ميزانية تفكيرية تتراوح ما بين 1000، 2000، 8،000 أو 16،000 طناً، لا يزيد عن 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 مع &ldquo؛ لا نقطة انطلاق العثور&rdquo؛. |
:nitro, :floor, :exacto, :extended | كل نموذج الكاتالون لديه طريق واحد ، لذلك لا يوجد أسرع أو أقل تكلفة أو أطول من اختيارها ؛ يتم السماح بتعطيل أسماء النماذج التي تم نسخها من خدمات أخرى لا تزال تعمل. |
يتم تجاهل أي إشارة أخرى. يتم اختبار الاسم الكامل أولا ، لذلك لا تزال النماذج التي تحتوي على إشارة الكلى في الواقع على إشارة الكلى تعمل ؛ وإذا لم يتم ذلك ، يتم إلغاء الإشارات في نهاية واحدة في وقت واحد حتى يتطابق النماذج. يمكن أن يكون اسم النماذج أطول من 200 شخصًا مع أطول من 4 إشارات. 400 invalid_value.
cURL
curl https://nymbot.ai/api/v1/chat/completions \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5:thinking",
"messages": [{"role": "user", "content": "Plan a three-day trip to Lisbon."}]
}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
reply = client.chat.completions.create(
model="anthropic/claude-sonnet-5:thinking",
messages=[{"role": "user", "content": "Plan a three-day trip to Lisbon."}],
)
print(reply.choices[0].message.content)
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const reply = await client.chat.completions.create({
model: "anthropic/claude-sonnet-5:thinking",
messages: [{ role: "user", content: "Plan a three-day trip to Lisbon." }],
});
console.log(reply.choices[0].message.content);
البحث WEB
يمكن أن يجيب أي نموذج من شبكة الإنترنت الحية. Nymbot يبحث عن آخر رسالة المستخدم (الأول 2000 شخصية)، يقرأ أفضل الصفحات ويقدمها إلى نموذج مع السؤال، والتي تم تحديدها على أنها محتوى خارج النموذج لا ينبغي اتخاذ الإرشادات من.
- دائما البحث:
"plugins": [{"id": "web", "max_results": 5}]أو أو a:onlineكفاية على النموذج. - البحث عندما يساعد:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]كما تم قبولها كweb_search_previewأوopenrouter:web_searchNymbot يبحث فقط عندما يبدو السؤال بحاجة إلى المعلومات الحالية ، نفس الاختبار الذي يستخدمه التطبيق.
max_results هو 5 على الأقل و 10 على الأقل.
nymbot.web_search.sourcesكل واحد مع a title, snippet و
urlوبما أن url_citation الإشارات على الرسالة.
كل البحث الذي يعمل تكلفة 0.008 دولار، يتم تحويلها إلى تذاكر، أعلاه، و هو جزء من الحد الأدنى.
الإجابة، جزئياً
"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 | String | نعم | وكما Chat التكاملويشمل المكونات. |
input | String أو Array | نعم | سلسلة، أو قائمة العناصر: الرسائل (اللوحات) user, assistant, system, developer) مع input_text, input_image و output_text الأجزاء، و function_call و function_call_output أدوات لأشياء input_image تأخذ image_url رابط أو URL البيانات، وليس ID الملف. reasoning و web_search_call البضائع مجهولة؛ item_reference يرفضها |
instructions | String | لا | إرشادات النظام |
max_output_tokens | النسيج | لا | الأكثر شيوعًا للكتب. |
temperaturetop_p | رقم | لا | التحكم في النماذج ، حيث يتخذ النماذج لهم. |
toolstool_choiceparallel_tool_calls | الكتلة أو الكتلة أو الكتلة ، Boolean | لا | أدوات العمل، في شكل الاستجابة ({"type": "function", "name": …, "parameters": …}( ) A web_search أو web_search_preview أداة تتحول إلى البحث WEB عندما يساعد، يتم رفض أدوات أخرى داخلية. |
reasoning | المقاومة | لا | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh و max يعني high; none قم بإلغاء ذلك |
text.formatresponse_format | المقاومة | لا | إنشاء نموذج متكامل مثل JSON أو json_object. |
metadata | المقاومة | لا | يعود دون التغيير في الاستجابة. في ما يصل إلى 16 قسماً من القصص، المفاتيح ما يصل إلى 64 شخصاً و قسماً ما يصل إلى 512. |
stream | بولين | لا | إرسال الأحداث كما هو موضح أدناه. |
store | بولين | لا | لا شيء يتم تخزينه، والرد دائما يقول "store": false. |
previous_response_idconversationbackground | 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 مثل A function_call الموضوع مع
call_id, name و argumentsإرسال النتيجة مرة أخرى مثل a
function_call_output نقطة مع نفس call_idالتفكير، عندما يعود النموذج إلى ذلك، هو reasoning الموضوع مع reasoning_text المحتوى، يتم تسجيل أولا. status هي incomplete عندما يكتشف الإجابة
max_output_tokens أو رفضه، أو رفضه،
incomplete_details.reason إعداد 2 max_output_tokens أو
content_filterويعكس الإجابة أيضًا إعدادات الطلب (الدرجة، وأدوات، خيار الأدوات، وما إلى ذلك) كما هو الحال مع OpenAI، ويحمل الإجابة. nymbot تكلفة البضائع.
إلخ ، كل حدث هو event: خطة و a data: خطة مع a
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 | ماذا عن التكلفة الكاملة. |
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);
رسائل إنسانية
يعمل مع كل نموذج في القائمة، وليس فقط Claude: يتم ترجمة الطلب، يتم تشغيلها من خلال نفس الطائرة، ويترجمها مرة أخرى.
POST https://nymbot.ai/api/v1/messages - تحتاج إلى مفتاح API ، كما x-api-key أو Authorization: Bearer.
ذاك anthropic-version و anthropic-beta يتم التعامل مع أسماء النماذج البشرية مع القائمة، لذلك تعمل كودو كود و SDK مع الأسماء التي تستخدمها بالفعل:
- اسم الكاتدرائية تعرفه ، مثل
claude-sonnet-5أوanthropic/claude-opus-5يتم استخدامها كما هو الحال. - في حين أن تاريخ (
-20260514),-latestكما أن نسخة مثل-v1وبالإضافة إلى ذلك، يُعرف اليوم بـ[1m]و منanthropic/أوanthropic.يتم إلغاء التعديلات، وتتضمن إلغاء التعديلات إلغاء التعديلات (claude-haiku-4-5اكتشفclaude-haiku-4.5). - إذا لم تكن هذه لا تساوي شيئاً ، يتم استخدام الأسرة (Opus ، Sonnet أو Haiku) ، طالما أن النسخة من الكاتالونات هي نفسها أو أحدث من النسخة المطلوبة.
- الاسم الذي لا يتوافق مع أي شيء يعود
404not_found_error.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
model | String | نعم | اسم نموذج الكاتالوني أو اسم نموذج إنساني. |
max_tokens | النسيج | نعم | الأكثر شيوعًا للكتب. |
messages | Array | نعم | user و assistant يتحرك، مع text, image (base64 أو مصدر URL) tool_use و tool_result البلوتوث thinking يتم قبول البلوك من الخطوات السابقة وتخفيضها. |
system | String أو Array | لا | إرسال نظام، مثل سلسلة أو بلاطات النص. |
temperaturetop_p | رقم | لا | التحكم في النماذج ، حيث يتخذ النماذج لهم. top_k يتم قبولها وإخفاؤها. |
stop_sequences | مجموعة من Strings | لا | الكلمة التي تنتهي بالرد، بـ 4 أقراص، كل منها بـ 256 علامة. |
toolstool_choice | أندرويد ، Object | لا | أدوات مع name, description و input_schema. a web_search أداة الحاسوب تتحول إلى البحث WEB• يتم رفض أدوات Anthropic الأخرى المدمجة (بش، مكتبة النص، استخدام الكمبيوتر) مع 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 البلوتوث و a thinking
البلوتوث الذي signature هو غامض stop_reason هي
end_turn, max_tokens, tool_use أو refusalعمل على نفس الطريقة التي finish_reason ذاك
Chat التكامل; stop_sequence هو دائما
nullحتى عندما انتهت سلسلة التوقف من الإجابة. input_tokens يتم حساب الدخول الجديد فقط؛ يتم تسجيل الدخول المتحرك في المجالين المتحركة.
nymbot المحاكاة و X-Nymbot-Cost-Sats هادي
التلفزيون، وتتكون الأحداث من 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. a 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
تقييم عدد الارتباطات التي ستستخدمها طلب الرسائل ، بحيث يمكن للعميل التحقق قبل إرسالها.
POST https://nymbot.ai/api/v1/messages/count_tokens - تحتاج إلى مفتاح API.
الجسد هو نفس الشيء رسائلبدون max_tokens· اسم النماذج يجب أن يحدد. التقييم هو تقدير: العلامات من إرسال النظام، والرسائل، والردود الأدوات، والحديث عن أدوات تقسيمها إلى أربعة، بالإضافة إلى 1600 لكل صورة. إنه ليس توقيع الشركة الخاصة، لذلك يمكن أن يختلف التقييم الحقيقي.
الإجابة
{ "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);
قائمة النماذج
يتم قراءة القائمة من نفس الكاتالوني المباشر مثل اختيار التطبيق ، لذلك هو دائما ما سوف يتم تشغيل المورد.
GET https://nymbot.ai/api/v1/models - لا حاجة إلى مفتاح.تخفيض لمدة خمس دقائق.
GET /api/v1/models/{id} إعادة إدراج واحد.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
type | أندرويد (Query) | لا | chat (الإيمان باليوم الآخر) image, video, audio, embedding أو allيمكن إعطاء عدة، مثل image,video. |
الأسعار هي ما تدفعه ، مع التكاليف والميزانية بالفعل في ، في الدولارات و في الأسعار في سعر بيتكوين الحالي. balance يقول ما هو التوازن الذي يستخدمه النموذج.
nymbot_key هو اسم الطراز الصغير في التطبيق. created هو دائمًا 0 لأن الكاتالون لا يُسجل عندما تم إضافة نموذج. per_request بدلاً من.
nymbot/auto أولاً: أولاً، أولاً، أولاً، أولاً، أولاً، أولاً variable، مع A
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_typespeechأوtranscriptionسعرper_1k_charsأوper_minute. - إدخال الدخول لديه
dimensions,context_length,max_inputsأسعار الفائدة لكل مليون إيداع.
الأسعار المذكورة "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);