ฐานความรู้ ผู้พัฒนา
แชท คําตอบ และข้อความ
สามวิธีที่จะถามรูปแบบบางสิ่งบางอย่างในสามรูปแบบที่ลูกค้าได้พูดแล้วทั้งหมดทํางานบนรูปแบบเดียวกันและเรียกเก็บเงินในแบบเดียวกัน
หน้านี้แปลด้วยเครื่องเพื่อความสะดวก ต้นฉบับภาษาอังกฤษเป็นเวอร์ชันที่ใช้
การแชทเสร็จสิ้น
รูปแบบแชท OpenAI และหนึ่งที่เกือบทุกเครื่องมือสนับสนุน ส่งการสนทนาจนถึงตอนนี้และรับข้อความต่อไป
POST https://nymbot.ai/api/v1/chat/completions - ต้องใช้คีย์ API
เท่านั้น model และ messages มีความจําเป็น พารามิเตอร์ตัวอย่างที่รุ่นที่เลือกไม่ได้ถูกลดลงโดยไม่มีข้อผิดพลาดดังนั้นร่างกายคําขอหนึ่งทํางานระหว่างรุ่น รายชื่อรุ่นให้ตัวอย่างของแต่ละรุ่น supported_parametersสิ่งที่ถูกปฏิเสธแทนที่จะถูกทิ้งคือสิ่งที่รุ่นไม่สามารถทําได้ทั้งหมด: รูปภาพสําหรับรุ่นที่ไม่สามารถมองเห็นเครื่องมือสําหรับรุ่นที่ไม่สามารถเรียกพวกเขา
| พื้นที่ | ชนิด | ต้องการ | คําอธิบาย |
|---|---|---|---|
model | สายรัด | ใช่ | nymbot/auto (หรือ auto) สําหรับเส้นทางของ Nymbot บนสมดุลมาตรฐานหรือ id แบบแคตตาล็อกเช่น anthropic/claude-sonnet-5 บนสมดุล Pro ชื่อสั้นและตัวอักษรของแอปจะได้รับการยอมรับเช่นกัน อาจจบลงใน เติบโต. |
messages | อาร์เรย์ | ใช่ | การสนทนา บทบาท system, developer (ประมวลผลเป็นระบบ) user, assistant และ toolเนื้อหาเป็น string หรือรายการของ text และ image_url ส่วน; รูปภาพเฉพาะในข้อความของผู้ใช้ input_audio และไฟล์ส่วนที่ถูกปฏิเสธ |
stream | บูเลียน | ไม่ | ส่งคําตอบตามที่เขียน ดู สตรีมมิ่ง. |
stream_options | วัตถุ | ไม่ | {"include_usage": true} เพิ่มชิ้นส่วนสุดท้ายกับจํานวน token และค่าใช้จ่าย |
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 | ตาราง, string หรือ object, boolean | ไม่ | ฟังก์ชั่นการเรียกดู เครื่องมือโทร. a web_search เครื่องมือ Turn On ค้นหาเว็บไซต์. สูงสุด 128 เครื่องมือและ 512 กิโลไบต์ของคําจํากัดความ, นกอยู่ในความลึกสูงสุด 64 ระดับ; มากกว่า 400. |
reasoning_effortreasoning | String, วัตถุ | ไม่ | "minimal", "low", "medium" หรือ "high"หรือ {"effort": "high"}. "none" หรือ {"enabled": false} ปิดมัน ดู การพิจารณา. |
plugins | อาร์เรย์ | ไม่ | [{"id": "web", "max_results": 5}] มักจะค้นหาเว็บครั้งแรก จนถึง 10 ผล |
n | อินเทอร์ | ไม่ | เท่านั้น 1. ทุกสิ่งอื่น ๆ กลับ 400. |
logit_biasusermetadata | วัตถุ, String, Object | ไม่ | ได้รับการยอมรับและไม่ได้ส่ง logit_bias แผนที่สูงสุด 300 ID token ไปยังตัวเลขตั้งแต่ -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; a :thinking สารเติมแต่งในรูปแบบที่ไม่สามารถพิจารณาได้ (model_not_found) หรือผู้ให้บริการปฏิเสธคําขอ (upstream_rejected). |
402 | ความสมดุลที่รุ่นใช้จ่ายไม่สามารถครอบคลุมการถือครองได้ |
403 | กรณีที่เลวร้ายที่สุดไม่เหมาะกับหมวกของคีย์ (key_limit_reached) ด้านล่าง max_tokens หรือยก Cap |
404 | ไม่มีรูปแบบที่มีชื่อนี้ (model_not_found). |
429 | อัตราการ จํากัด ของคีย์หรือของผู้ให้บริการ (upstream_rate_limited). |
502, 503 | ผู้ให้บริการล้มเหลว (upstream_error) หรือเกินไป (upstream_overloadedด้วย Retry-After) ไม่มีอะไรจะถูกเรียกเก็บเงินเว้นแต่ผู้ให้บริการเรียกเก็บเงินสําหรับความพยายาม |
รหัสสถานะของแต่ละหุ้น Endpoint รายการภายใต้ ข้อผิดพลาด.
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": true คําตอบมาเป็นเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์ในขณะที่รุ่นเขียนมัน แต่ละเหตุการณ์เป็นเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์ chat.completion.chunk เป็น a data: เส้นและกระแสสิ้นสุดด้วย data: [DONE]เหตุผลที่มาถึง
delta.reasoning_contentคําตอบใน delta.content.
สตรีมสิ่งใดที่อาจใช้เวลานานกว่าประมาณ 100 วินาทีเช่นการตอบสนองที่ยาวนาน
max_tokens หรือรูปแบบการพิจารณา คําขอที่ไม่ได้สตรีมไม่ได้ส่งอะไรจนกว่าการตอบสนองจะเสร็จสมบูรณ์และเครือข่ายระหว่างคุณและ Nymbot อาจปิดการเชื่อมต่อที่ว่างเปล่าหลังจากประมาณ 100 วินาที รูปแบบยังคงเสร็จสิ้นและสิ่งที่มันเขียนจะชาร์จ แต่คําตอบจะหายไป กระแสส่ง keep-alives ดังนั้นจึงยังคงเปิดเป็นเวลานานที่รูปแบบจะเขียน
สตรีม
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 วินาทีในขณะที่รุ่นกําลังคิด ลูกค้าของ SSE หยุดพวกเขา - สอบถาม
"stream_options": {"include_usage": true}เพื่อให้ได้ส่วนสุดท้ายที่ด้านบนด้วยช่องว่างchoices, การนับ token, ค่าใช้จ่ายและnymbotวัตถุ - การชาร์จจะถอดออกหลังจากที่สตรีมสิ้นสุด หากคุณปิดการเชื่อมต่อล่วงหน้ารุ่นจะไม่ได้หยุด: Nymbot อ่านส่วนที่เหลือของสตรีมของผู้ให้บริการเป็นเวลาถึง 25 วินาทีเพื่อให้ได้จํานวน token ของมันและคุณจะจ่ายตามที่ผู้ให้บริการรายงาน โดยไม่ต้องคํานวณค่าใช้จ่ายจะประมาณจากข้อมูลเข้าของคุณและสิ่งที่เขียนขึ้นรวมถึงค่าใช้จ่ายการส่งออกทั้งหมดสําหรับรุ่นที่เหตุผล
- ข้อผิดพลาดก่อนส่วนแรกเช่น
401หรือ402, กลับมาเป็น JSON โดยปกติด้วยรหัสสถานะของมันไม่ใช่เป็นสตรีม ข้อผิดพลาดหลังจากที่สตรีมเริ่มมาเป็นสตรีมสุดท้ายdata: {"error": {…}}เหตุการณ์และกระแสสิ้นสุดโดยไม่มี[DONE]. - คําถามที่มีเครื่องมือและรุ่นบน OpenAI's 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_id, และส่งการสนทนาอีกครั้ง Nymbot ไม่เคยเรียกใช้ฟังก์ชั่นของคุณ; มันส่งคําขอของรุ่นกลับไปยังคุณ
tool_choice เติม "auto", "none",
"required" หรือ {"type": "function", "function": {"name": "…"}}รายการแบบจําลองหมายถึงรูปแบบที่สามารถเรียกเครื่องมือได้ (capabilities.tools) เครื่องมือถูกปฏิเสธด้วย 400 unsupported_tool อะไร nymbot/auto และในรูปแบบแคตตาล็อกไม่กี่รุ่นที่ทํางานบนการขนส่ง Responses ของ OpenAI ซึ่ง 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, URL. ถึง 20 ภาพต่อคําขอ ภาพ SVG จะถูกปฏิเสธและรวมถึงการเชื่อมโยงมากกว่า 4.096 ตัวหรือหนึ่งที่มีชื่อผู้ใช้หรือรหัสผ่านในนั้น (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 ส่งคําขอไปยังเส้นทางเหตุผลมาตรฐาน
บนโมเดล Anthropic ความพยายามจะกลายเป็นงบประมาณการคิดของประมาณ 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);
แบบ suffixes
ตัวบ่งชี้ในชื่อรุ่นเปลี่ยนวิธีจัดการคําขอโดยไม่มีฟิลด์อื่น พวกเขาทํางานกับ ids เต็มและชื่อสั้นเช่นเดียวกับใน anthropic/claude-sonnet-5:online.
| สะพาน | ผลกระทบ |
|---|---|
:online | ค้นหาเว็บไซต์ครั้งแรกเช่น plugins: [{"id": "web"}]นี่ ค้นหาเว็บไซต์. |
:thinking | ความพยายามในการพิจารณาสูง; บน nymbot/autoทางการพิจารณา บนรูปแบบที่ไม่สามารถพิจารณาได้ 400 model_not_found ด้วย “ ไม่มีจุดสิ้นสุดที่พบ” |
: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);
ค้นหาเว็บไซต์
โมเดลแชทใด ๆ สามารถตอบจากเว็บสด Nymbot ค้นหาข้อความผู้ใช้ล่าสุด (ตัวอักษร 2,000 ครั้งแรก) อ่านหน้าเว็บที่ดีที่สุดและส่งไปยังรุ่นที่มีคําถามที่ทําเครื่องหมายว่าเป็นเนื้อหาภายนอกที่รุ่นไม่ควรใช้คําแนะนํา จาก มีสองโหมด:
- ค้นหาเสมอ:
"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, แปลงเป็น sats, ด้านบนของโทเค็น, และมันเป็นส่วนหนึ่งของโฮสต์ หน้าที่มันอ่านเป็นโทเค็นการป้อนข้อมูลเช่นกัน, ดังนั้นคําตอบจากเว็บค่าใช้จ่ายมากกว่าคําถามเดียวกันถามเย็น, บางครั้งหลายครั้งมากขึ้น.
คําตอบบางส่วน
"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);
คําตอบ API
รูปแบบล่าสุดของ OpenAI ซึ่งใช้โดย OpenAI Agents SDK และโดย Codex มันทํางานบนรูปแบบการเรียกเก็บเงินและคุณสมบัติเดียวกันกับ Chat Completions
POST https://nymbot.ai/api/v1/responses - ต้องใช้คีย์ API
| พื้นที่ | ชนิด | ต้องการ | คําอธิบาย |
|---|---|---|---|
model | สายรัด | ใช่ | สําหรับ การแชทเสร็จสิ้นรวม suffixes |
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 | สายรัด | ไม่ | คําแนะนําระบบ |
max_output_tokens | อินเทอร์ | ไม่ | โค้ชมากที่สุดที่จะเขียน |
temperaturetop_p | หมายเลข | ไม่ | ตัวอย่างการควบคุมที่โมเดลใช้พวกเขา |
toolstool_choiceparallel_tool_calls | ตาราง, string หรือ object, boolean | ไม่ | ฟังก์ชั่นเครื่องมือในรูปแบบการตอบสนอง ({"type": "function", "name": …, "parameters": …}) A web_search หรือ web_search_preview เครื่องมือ Turn On ค้นหาเว็บไซต์ เมื่อช่วย เครื่องมือในตัวอื่น ๆ จะถูกปฏิเสธ |
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, บูเลียน | ไม่ | ไม่สนับสนุน: 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);
ข้อความ Anthropic
รูปแบบของ Anthropic สําหรับ Anthropic SDKs และ Claude Code มันทํางานกับทุกรุ่นในแคตตาล็อกไม่เพียง แต่ Claude: คําขอจะแปลผ่านท่อเดียวกันและแปลกลับ
POST https://nymbot.ai/api/v1/messages — ต้องใช้คีย์ API เช่น x-api-key หรือ Authorization: Bearer.
โซ anthropic-version และ anthropic-beta ชื่อโมเดล Anthropic ถูกจับคู่กับแคตตาล็อกดังนั้น Claude Code และ SDKs ทํางานร่วมกับชื่อที่พวกเขาใช้แล้ว:
- ชื่อที่แคตตาล็อกรู้เช่น
claude-sonnet-5หรือanthropic/claude-opus-5ใช้ได้ตามที่ - อะไรคือวันที่ (
-20260514),-latest, เวอร์ชัน tag เช่น-v1, แท็กที่กําหนดเองเช่น[1m]และหนึ่งanthropic/หรือanthropic.ตัวอักษรจะถูกลบออกและจุดและแถบในรุ่นจะถูกทดสอบทั้งสองทาง (claude-haiku-4-5ค้นหาclaude-haiku-4.5). - หากยังคงไม่ตรงกับสิ่งนี้ใช้ครอบครัว (Opus, Sonnet หรือ Haiku) ยกเว้นแต่รุ่นของแคตตาล็อกจะเหมือนกันหรือใหม่กว่ารุ่นที่ขอ
- ชื่อที่ตรงกับไม่มีอะไรกลับมา
404not_found_error.
| พื้นที่ | ชนิด | ต้องการ | คําอธิบาย |
|---|---|---|---|
model | สายรัด | ใช่ | ID รุ่นแคตตาล็อก หรือชื่อรุ่น Anthropic |
max_tokens | อินเทอร์ | ใช่ | โค้ชมากที่สุดที่จะเขียน |
messages | อาร์เรย์ | ใช่ | user และ assistant แปลง, ด้วย text, image (base64 หรือแหล่ง URL) tool_use และ tool_result บล็อก thinking บล็อกจากรอบก่อนหน้านี้ได้รับการยอมรับและลดลง |
system | string หรือ array | ไม่ | แนะนําระบบเป็น string หรือบล็อกข้อความ |
temperaturetop_p | หมายเลข | ไม่ | ตัวอย่างการควบคุมที่โมเดลใช้พวกเขา top_k ได้รับการยอมรับและลดลง |
stop_sequences | Array ของ Strings | ไม่ | ข้อความที่สิ้นสุดคําตอบ สูงสุด 4 string, สูงสุด 256 characters |
toolstool_choice | อาร์เรย์, Object | ไม่ | เครื่องมือที่มี name, description และ input_schema. a web_search เครื่องมือเซิร์ฟเวอร์ Turn On ค้นหาเว็บไซต์; เครื่องมือในตัวอื่น ๆ ของ Anthropic (bash, text editor, การใช้คอมพิวเตอร์) จะถูกปฏิเสธด้วย 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 อะไร
การแชทเสร็จสิ้น; stop_sequence เป็นเสมอ
null, แม้ว่าการหยุดลําดับจะสิ้นสุดคําตอบ input_tokens หมายถึงการป้อนใหม่เท่านั้น การป้อนแบบแคชอยู่ในสองฟิลด์แคช ค่าใช้จ่ายคือใน
nymbot Object และ X-Nymbot-Cost-Sats แฮเดอร์
สตรีมมิ่ง, กิจกรรมคือ Anthropic's: 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; ชื่อรุ่นต้องแก้ไข การคํานวณคือการคํานวณ: ตัวอักษรของคําแนะนําระบบข้อความการโทรเครื่องมือและการกําหนดเครื่องมือแบ่งออกด้วยสี่บวก 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. |
ราคาคือสิ่งที่คุณจ่ายด้วยค่าธรรมเนียมและ margin ที่อยู่แล้วในดอลลาร์และใน sats ในราคา Bitcoin ปัจจุบัน 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);