База на знаење Развивачи
Слики, аудио и вградувања
Генераторите од апликацијата и градежните блокови за пребарување: слики, видео, говор, транскрипција и вградувања, секоја фактурирана по употреба од вашиот баланс.
Оваа страница е машински преведена за погодност. Англискиот оригинал е верзијата што се применува.
Генерација на слики
Направува една до четири слики од повик и ги враќа кога ќе бидат завршени. ?image Во апликацијата
POST https://nymbot.ai/api/v1/images/generations потребен е API клуч, или Lightning плаќање по барање.
ИД доаѓаат од GET /api/v1/models?type=imageСтандардниот генератор
@cf/black-forest-labs/flux-1-schnell, чини рамна 5 стандардни кредити (50 sats) една слика. Секој друг генератор троши Про кредити по своја цена, со вообичаената такса и маржа, како во Апликацијата. n Цената на сликите
n Поле кое генераторот не го зема е фрлено наместо одбиено; стандардниот генератор го користи само повикот.
| Полето | Тип | Потребни | Опис на |
|---|---|---|---|
model | Стринг | Да | Идентификатор за генератор, како nano-banana. |
prompt | Стринг | Да | Што да се нацрта. Само првите 2000 карактери се користат. |
n | интегритет | не | 1 до 4. Подрачливо 1. исто така се прифаќа како num_images. |
size | Стринг | не | А аспект сооднос како "16:9", или OpenAI големина како што "1792x1024", која станува најблиска до 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 и 4:5. "auto" Оставете го на генераторот. |
aspect_ratio | Стринг | не | Истото како sizeИ победува ако и двајцата се испратени. |
quality | Стринг | не | Генератор-специфични, како што се "low", "medium" или "high". |
negative_prompt | Стринг | не | Што да се остави надвор. |
output_format | Стринг | не | "png", "jpeg" или "webp". |
response_format | Стринг | не | "url" (недостапни услови) или "b64_json". |
image_url | Стринг | не | Фотографија за да започнете од: A https:// линк од најмногу 4.096 знаци без корисничко име или лозинка во него, или data:image/…;base64 URL (PNG, JPEG, WebP или GIF; не SVG). Само за генератори со editПотребни се оние со requires_image_url. |
resolution не се користи: секој генератор прави своја големина. url, секоја слика се качува на јавен Blossom домаќин и ќе го добиете нејзиниот линк (некои генератори само враќаат линк од свој, кој се пренесува). Што може да види огнотСо
b64_json сликата се враќа во одговорот и никогаш не се поставува. data: URL во image_url се проверува на ист начин како и
Еди и да се испрати на Blossom прво, така што генераторот може да го преземе; тоа повторно се брише ако барањето не успее да се наплати.
Ако некои од n слики не успеваат, ќе ги добиете оние кои работеа, се наплаќаат само за оние (плус сите на провајдерот наплатени и покрај неуспехот), и nymbot.failed кажува колку недостасуваат. Ако сите не успеат, барањето се враќа 502.
Одговор
{
"created": 1790726400,
"model": "nano-banana",
"cost": 0.2126,
"data": [
{
"url": "https://blossom.example/5c0e4b7d3a91f2e8...c4.png",
"content_type": "image/png"
}
],
"nymbot": { "balance": "pro", "charged_credits": 1.817, "charged_sats": 181.7, "balance_credits": 410.608, "balance_sats": 41060.8 }
}
| Статус | Кога |
|---|---|
400 | нема брзање; n од 1 до 4 (invalid_valueНедостаток на тежина (invalid_size) или сликата (invalid_image, invalid_image_url); модел кој постои, но не е генератор на слики (invalid_model); слика за генератор што не може да се уреди (edit_unsupported); нема слика за оној кој има потреба од тоа (image_required). |
402 | Балансот не може да ги покрие сите барани слики. |
404 | Не постои модел со тоа име (model_not_found). |
502 | Генераторот е неуспешен (upstream_errorНишто не се наплаќа освен ако провајдерот не наплати за обидот; тогаш грешката е charged_sats. |
503 | Фотографиите не можат да се хостираат во моментов (media_hosting_unavailable). b64_json Сè уште работи. |
cURL
curl https://nymbot.ai/api/v1/images/generations \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana",
"prompt": "A lighthouse at dusk, oil painting",
"size": "16:9"
}'
Python
import os
import requests
res = requests.post(
"https://nymbot.ai/api/v1/images/generations",
headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
json={"model": "nano-banana", "prompt": "A lighthouse at dusk, oil painting", "size": "16:9"},
)
res.raise_for_status()
print(res.json()["data"][0]["url"])
JavaScript
const res = await fetch("https://nymbot.ai/api/v1/images/generations", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ model: "nano-banana", prompt: "A lighthouse at dusk, oil painting", size: "16:9" }),
});
const body = await res.json();
console.log(body.data[0].url);
Редактирање слики
Ја менува сликата што ја испраќате, по повик. Ова е крајната точка за уредување на OpenAI, па OpenAI SDKs' images.edit работи како што е. Само Pro генератори со edit во списокот на модели го прифаќаат.
POST https://nymbot.ai/api/v1/images/edits потребен е API клуч, или Lightning плаќање по барањеТелото е multipart/form-dataДо 32 МБ
| Полето | Тип | Потребни | Опис на |
|---|---|---|---|
image | фајлот | Да | Сликата за уредување: PNG, JPEG, WebP или GIF, до 20 MB. image[]Првиот се користи. |
prompt | Стринг | Да | Што да се промени. |
model | Стринг | Да | Генератор со edit. |
n | интегритет | не | 1 на 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Стринг | не | Што се однесува до генерацијата. |
response_format | Стринг | не | "b64_json" (дефолтот е тука) или "url". |
Сликата што ја испраќате е проверена за да биде добро формирана PNG, JPEG, WebP или GIF, испратена како вистински тип и поставена на јавен Blossom хост, бидејќи генераторите го земаат својот влез по линк. Третирајте го како јавен. Ако уредувањето не успее и ништо не се наплаќа, хостираната копија повторно се брише. Одговорот има иста форма како и за генерација. Цената е цената на генераторот, која за некои генератори вклучува надомест за влезната слика.
Одговор
{
"created": 1790726460,
"model": "nano-banana",
"cost": 0.2126,
"data": [{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..." }],
"nymbot": { "balance": "pro", "charged_credits": 1.817, "charged_sats": 181.7, "balance_credits": 408.791, "balance_sats": 40879.1 }
}
| Статус | Кога |
|---|---|
400 | Нема слика или приказ, датотека која не е слика (invalid_image) или генератор кој не може да го уреди (edit_unsupported). |
413 | Сликата е над 20 MB (file_too_large), или целото барање над 32 MB. |
503 | Сликата не може да се хостира во моментов (media_hosting_unavailable). |
cURL
curl https://nymbot.ai/api/v1/images/edits \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F model=nano-banana \
-F image=@photo.png \
-F prompt="Make it a snowy evening"
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("photo.png", "rb") as f:
result = client.images.edit(model="nano-banana", image=f, prompt="Make it a snowy evening")
with open("edited.png", "wb") as out:
out.write(base64.b64decode(result.data[0].b64_json))
JavaScript
import fs from "node:fs";
import { writeFile } 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 result = await client.images.edit({
model: "nano-banana",
image: fs.createReadStream("photo.png"),
prompt: "Make it a snowy evening",
});
await writeFile("edited.png", Buffer.from(result.data[0].b64_json, "base64"));
Видеото
Видеото трае неколку минути, па работи во позадина. Го поднесувате, добивате идентификатор веднаш и прашувате за идентификаторот додека не се заврши.
POST https://nymbot.ai/api/v1/videos потребен е API клуч, или Lightning плаќање по барањеВраќање 202.
| Полето | Тип | Потребни | Опис на |
|---|---|---|---|
model | Стринг | Да | Идентификатор за видео генератор од GET /api/v1/models?type=videoКако што veo. |
prompt | Стринг | Да | Што треба да се случи. |
duration | Број или string | не | Должина во секунди, повеќе од 0 и до 60. Користени само од генератори кои ви овозможуваат да изберете должина; другите ги прават своите вообичаени должина, што е она што seconds во одговорот и цената следи. |
aspect_ratio | Стринг | не | Како "16:9" или "9:16"големина како што е "1280x720" станува најблискиот сооднос. |
resolutionquality | Стринг | не | Еден од генераторите resolutions во списокот на модели, како "720p" или "1080p"Тоа ја поставува цената.Сè друго е одбиено со unsupported_resolution. |
image_url | Стринг | не | Фотографија за да започнете од: A https:// Линк или А data:image/… URL, кој прво се испраќа на јавен Blossom хост. requires_image_url. |
Цената е фиксна кога ќе ја поднесете, од генераторот, резолуцијата и должината, па затоа се наплаќа од вашиот Про баланс веднаш штом провајдерот ја прифати работата и се прикажува како
cost, estimated_cost и nymbotАко провајдерот ја одбие работата, ништо не се наплаќа. Ако рендерот подоцна не успее, или завршениот клип не може да се складира и провајдерот не го наплати, наплатата се враќа еднаш, автоматски. Рендерот кој сè уште се случува по еден час се откажува и ја задржува својата наплата, бидејќи провајдерот наплаќа ренде откако го прифаќа.
Одговор на прашањето (202)
{
"id": "vid_3e9a51c07b2f4d86e0a1c4f2",
"object": "video",
"model": "veo",
"status": "in_progress",
"created": 1790726400,
"seconds": 8,
"resolution": "1080p",
"estimated_cost": 3.18,
"expires_at": 1790812800,
"cost": 3.18,
"nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180, "balance_credits": 378.808, "balance_sats": 37880.8 }
}
status Започнете како in_progressили completed Видеото е веќе во data кога генераторот веднаш го врати.
Проверете на видео
GET https://nymbot.ai/api/v1/videos/{id} Потребен е клуч кој му припаѓа на ним кој го поднел.
Одговори 202 Додека видеото е направено и 200 Прашајте на секои 5 до 10 секунди. Секоја проверка го прашува провајдерот еднаш и одговара одеднаш; никогаш не чека за видеото. Работата се чува 24 часа откако е поднесена.
GET /api/v1/videos Листа на последните 50 работни места на клучот како
{"object": "list", "data": […]}.
Одговор на прашањето (200)
{
"id": "vid_3e9a51c07b2f4d86e0a1c4f2",
"object": "video",
"model": "veo",
"status": "completed",
"created": 1790726400,
"seconds": 8,
"resolution": "1080p",
"estimated_cost": 3.18,
"expires_at": 1790812800,
"completed_at": 1790726590,
"data": { "url": "https://blossom.example/9b41d0c2e7a3f658...1e.mp4", "content_type": "video/mp4" },
"cost": 3.18,
"nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180 }
}
status е in_progress, completed или failedНеуспешна работа носи error ({"code": "generation_failed", "message": …}Ако е вратен, cost е 0 и nymbot Додатоци
refunded_credits и refunded_satsЗавршеното видео е на јавен Blossom домаќин, како генерирани слики.
| Статус | Кога |
|---|---|
400 | Нема брза; времетраењето надвор од 0 до 60 (invalid_value); резолуција која генераторот не нуди (unsupported_resolution); нема слика за генератор кој треба една (image_required); модел кој не е видео генератор (invalid_model). |
402 | Про балансот не може да го покрие видеото. |
404 | Нема такви генератори (model_not_found), или нема работа од тој идентитет за вашиот ним, или е постар од 24 часа (video_not_found). |
429 | Вашиот ним веќе има 10 видео рендерирање (video_jobs_limitПроверете ги и поднесете повеќе кога еден завршува. |
502 | Генераторот ја одби работата.Ништо не се наплаќа освен ако провајдерот не наплати за тоа. |
503 | Видеото не може да се испорача или складира во моментот (media_hosting_unavailable, service_unavailable). |
cURL
curl https://nymbot.ai/api/v1/videos \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"}'
curl https://nymbot.ai/api/v1/videos/vid_3e9a51c07b2f4d86 \
-H "Authorization: Bearer $NYMBOT_API_KEY"
Python
import os, time
import requests
headers = {"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]}
job = requests.post(
"https://nymbot.ai/api/v1/videos",
headers=headers,
json={"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"},
).json()
while True:
time.sleep(8)
status = requests.get("https://nymbot.ai/api/v1/videos/" + job["id"], headers=headers).json()
if status["status"] in ("completed", "failed"):
break
print(status["data"]["url"] if status["status"] == "completed" else status["error"])
JavaScript
const headers = {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
};
const job = await (await fetch("https://nymbot.ai/api/v1/videos", {
method: "POST",
headers,
body: JSON.stringify({ model: "veo", prompt: "Waves rolling onto a beach at sunrise", duration: 8, aspect_ratio: "16:9" }),
})).json();
let status;
do {
await new Promise((r) => setTimeout(r, 8000));
status = await (await fetch("https://nymbot.ai/api/v1/videos/" + job.id, { headers })).json();
} while (status.status !== "completed" && status.status !== "failed");
console.log(status.status === "completed" ? status.data.url : status.error);
Текст на говорот
Чита текст гласно и ја враќа самата аудио датотека, а не линк. audio.speech.create во OpenAI SDKs работи.
POST https://nymbot.ai/api/v1/audio/speech потребен е API клуч, или Lightning плаќање по барање.
| Полето | Тип | Потребни | Опис на |
|---|---|---|---|
model | Стринг | не | Моделот на говорот од Листа на аудио моделиПодрачливост: Стандардниот глас @cf/myshell-ai/melotts. aura-2 Тоа е Deepgram Aura 2. |
input | Стринг | Да | Текстот што треба да се прочита: до 800 знаци за стандардниот глас, 2.000 за Aura 2. |
voice | Стринг | не | Идентификатор за глас од Листа на гласови: аура говорник како luna (или на aura-2-luna-enНа пример, ако јазикот е мелатонин (en, es, fr, zhOpenAI гласовни имиња како alloy се прифатени и даваат стандарден глас на моделот. |
language | Стринг | не | Кодот на јазикот како esБез глас, тој избира еден за тој јазик. 422 voice_language_mismatch, и јазик за кој моделот нема глас 422 unsupported_language. |
response_format | Стринг | не | Стандардниот глас се враќа mp3 Aura 2 се враќа mp3 на дефектот, opus, aac, flac, wav или pcm. |
speed | Број | не | Прифатени и игнорирани. |
Стандардниот глас чини рамно 3 стандардни кредити (30 sats) по барање, како во апликацијата. Aura 2 е Про, ценети според ликовите што ги испраќате.
Content-TypeЦената е во X-Nymbot-Cost-Sats Ако моделот за говор не успее, ништо не се наплаќа.
Одговор
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Статус | Кога |
|---|---|
400 | Нема влез; влез над границата на моделот (input_too_long); формат кој моделот не може да произведе (unsupported_response_format); непознат глас (invalid_voice); модел кој не е модел на говор (invalid_model). |
422 | Гласот не го зборува дадениот јазик, или моделот нема глас за тоа. |
502 | Моделот за говор не успеа.Ништо не е наплатено. |
cURL
curl https://nymbot.ai/api/v1/audio/speech \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "aura-2", "voice": "luna", "input": "Your invoice has been paid."}' \
--output speech.mp3
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
audio = client.audio.speech.create(
model="aura-2",
voice="luna",
input="Your invoice has been paid.",
)
audio.write_to_file("speech.mp3")
JavaScript
import { writeFile } 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 audio = await client.audio.speech.create({
model: "aura-2",
voice: "luna",
input: "Your invoice has been paid.",
});
await writeFile("speech.mp3", Buffer.from(await audio.arrayBuffer()));
Аудио модели и гласови
Две јавни списоци за избор на модел на говор и глас, или модел на транскрипција.Постојат 41 Aura 2 англиски говорници и четири MeloTTS јазици.
GET https://nymbot.ai/api/v1/audio/models Нема потреба од клуч.
GET https://nymbot.ai/api/v1/audio/voices?language=en Нема потреба од клуч.
| Полето | Тип | Потребни | Опис на |
|---|---|---|---|
language | Структура на прашање (query) | не | Само гласови за овој јазик. |
model | Структура на прашање (query) | не | Само гласови за овој модел. |
Одговори на гласови (гласови)
{
"object": "list",
"data": [
{ "id": "luna", "name": "Luna", "provider": "deepgram", "model_id": "aura-2", "models": ["aura-2"], "language": "en", "description": "Aura 2 English voice", "gender": "female", "preview_url": null },
{ "id": "en", "name": "MeloTTS English", "provider": "myshell", "model_id": "@cf/myshell-ai/melotts", "models": ["@cf/myshell-ai/melotts", "melotts"], "language": "en", "description": "English (MeloTTS)", "gender": null, "preview_url": null }
]
}
Листа на модели одговори {"object": "list", "data": {"tts": […], "stt": […]}}Секој модел на говор дава рамнотежа, цена, max_input_chars,
response_formats, languages и default_voice; транскриптивниот модел ги дава своите алиси, max_file_bytes, max_seconds, формати и цена по минута.
cURL
curl https://nymbot.ai/api/v1/audio/models
curl "https://nymbot.ai/api/v1/audio/voices?language=en"
Python
import requests
print(requests.get("https://nymbot.ai/api/v1/audio/models").json())
for voice in requests.get("https://nymbot.ai/api/v1/audio/voices", params={"language": "en"}).json()["data"]:
print(voice["id"], voice["model_id"])
JavaScript
console.log(await (await fetch("https://nymbot.ai/api/v1/audio/models")).json());
const voices = await (await fetch("https://nymbot.ai/api/v1/audio/voices?language=en")).json();
for (const v of voices.data) console.log(v.id, v.model_id);
Говор во текст
Претвара запис во текст со Whisper. Ова е крајната точка за транскрипција на OpenAI, па
audio.transcriptions.create Работи на.
POST https://nymbot.ai/api/v1/audio/transcriptions потребен е API клуч, или Lightning плаќање по барањеТелото е multipart/form-data.
| Полето | Тип | Потребни | Опис на |
|---|---|---|---|
file | фајлот | Да | Запишувањето, од 256 бајтови до 25 MB и до 30 минути: WAV, WebM, MP4 или M4A, Ogg или Opus, MP3 и другите формати Whisper чита. |
model | Стринг | не | дефект whisper, која е Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo и @cf/openai/whisper-large-v3-turbo Значи истото. |
language | Стринг | не | Говорниот јазик, како што е enОткриено ако е напуштено. |
prompt | Стринг | не | Зборови или правопис да се очекува, како што се имиња. само првите 1.000 знаци се користат. |
response_format | Стринг | не | json на дефектот, text, srt, vtt или verbose_json. |
За WAV, WebM, MP4 и Ogg датотеки должината се чита од датотеката пред да се изврши нешто, така што снимањето повеќе од 30 минути е одбиено напред (со 3 секунди). должината на WAV датотеката доаѓа од неговата стапка на примерок, канали и големина на примерок. Должината на другите формати, како што е MP3, не може да се прочита напред, па тие се ограничени со големина: на најниската брзина на бит Nymbot претпоставува, 8 kbps, 30 минути е 1.8 MB, а поголема датотека во таков формат е одбиена со 413
audio_too_long Испратете подолги записи како WAV, WebM, MP4 или Ogg. Ако тогаш Whisper известува повеќе од 30 минути, барањето се одбива со
413 audio_too_long, и бидејќи шепотите се изврши, 30 минути се наплаќаат.
Вие плаќате за должината на аудио, заоблени до вториот: најдолгата должина прочитана од датотеката, должината Whisper извештаи, и најмалку големината на датотеката дозволува, по цена на минута Whisper со вообичаената такса и маржа, и најмалку 0.05 кредит барање. 402 Во апликацијата, транскрипцијата на гласовата порака може да биде бесплатна; на API секогаш се наплаќа.
Одговор
{
"text": "Your invoice has been paid.",
"usage": { "type": "duration", "seconds": 3 },
"nymbot": { "balance": "standard", "charged_credits": 0.05, "charged_sats": 0.5, "balance_credits": 120.35, "balance_sats": 1203.5 }
}
text враќа јасен текст, srt и vtt враќање на субтитрите и
verbose_json додава јазикот, времетраењето и сегментите на времето. За трите кои не се JSON, цената е во насловите.
| Статус | Кога |
|---|---|
400 | Нема датотека, датотека без корисен аудио (invalid_audio, непознат формат, или модел кој не е транскриптен модел (invalid_model). |
402 | Ни рамнотежата не може да го покрие тоа. |
413 | Приказната е со големина од 25 MB (file_too_large(во форма која не може да се прочита во должина од предната страна, повеќе од 1,8 MB)audio_too_long). |
502 | Whisper не може да го обработи аудиото. Ништо не е наплатено. |
cURL
curl https://nymbot.ai/api/v1/audio/transcriptions \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F file=@memo.m4a \
-F model=whisper \
-F response_format=json
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("memo.m4a", "rb") as f:
transcript = client.audio.transcriptions.create(model="whisper", file=f)
print(transcript.text)
JavaScript
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const transcript = await client.audio.transcriptions.create({
model: "whisper",
file: fs.createReadStream("memo.m4a"),
});
console.log(transcript.text);
Превод на говор на англиски
POST https://nymbot.ai/api/v1/audio/translations потребен е API клуч, или Lightning плаќање по барањеТелото е multipart/form-data.
Исто како транскрипција, со истите полиња освен language, ограничувања и цена, но текстот се враќа на англиски, без оглед на јазикот на кој се зборува. audio.translations.create.
cURL
curl https://nymbot.ai/api/v1/audio/translations \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F file=@nota.m4a \
-F model=whisper
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("nota.m4a", "rb") as f:
translation = client.audio.translations.create(model="whisper", file=f)
print(translation.text)
JavaScript
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const translation = await client.audio.translations.create({
model: "whisper",
file: fs.createReadStream("nota.m4a"),
});
console.log(translation.text);
Вградување
Претвара текст во вектори за пребарување, кластерирање и дедупликација. Моделите работат на Cloudflare и го трошат стандардниот баланс.
POST https://nymbot.ai/api/v1/embeddings потребен е API клуч, или Lightning плаќање по барање.
| Полето | Тип | Потребни | Опис на |
|---|---|---|---|
model | Стринг | Да | Вграден модел од GET /api/v1/models?type=embedding. |
input | Структура или низа на струци | Да | Постојат повеќе начини да се избегне појава на рак на белите дробови. (token_input_unsupportedСекој влез мора да одговара на моделот context_length, се брои како околу четири бајтови на токен. |
encoding_format | Стринг | не | float (недостапни услови) или base64 (little-endian 32-bit floats). |
dimensions | интегритет | не | сопствена големина на моделот, или за модел со supported_dimensions еден од нив; векторот потоа се скратува и нормализира. |
| Модел | Димензии | контекст |
|---|---|---|
@cf/baai/bge-m3 | 1024 многу јазици | 8,192 токени |
@cf/qwen/qwen3-embedding-0.6b | 1024 многу јазици | 8,192 токени |
@cf/baai/bge-large-en-v1.5 | 1024 Англиски јазик | 512 Токени |
@cf/baai/bge-base-en-v1.5 | 768 на англиски | 512 Токени |
@cf/baai/bge-small-en-v1.5 | 384 Англиски | 512 Токени |
Листата на модели е извор на вистина за кои се достапни и што чини; Google's EmbeddingGemma, со пократки вектори на барање, се појавува таму, исто така, кога каталогот има цена за тоа.
Одговор
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0213, -0.0487, 0.0112] }
],
"model": "@cf/baai/bge-m3",
"usage": { "prompt_tokens": 9, "total_tokens": 9 },
"nymbot": { "balance": "standard", "charged_credits": 0.05, "charged_sats": 0.5, "balance_credits": 1204.35, "balance_sats": 12043.5 }
}
| Статус | Кога |
|---|---|
400 | Ништо не е во прашање, ништо не е во прашање, ништо не е во прашање, ништо не е во прашање.token_input_unsupported); повеќе од 100 влезови (too_many_inputs); влез подолг од моделот зема (input_too_long); големина на моделот не може да даде (unsupported_dimensions). |
402 | Стандардната рамнотежа е премногу ниска. Вградувањата никогаш не го користат Про рамнотежата. |
404 | Не постои модел со тоа име. |
502 | Моделот не успеа.Ништо не е наплатено. |
cURL
curl https://nymbot.ai/api/v1/embeddings \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "@cf/baai/bge-m3", "input": ["Lightning invoices expire.", "Invoices on Lightning have a time limit."]}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
result = client.embeddings.create(
model="@cf/baai/bge-m3",
input=["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
)
print(len(result.data), len(result.data[0].embedding))
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const result = await client.embeddings.create({
model: "@cf/baai/bge-m3",
input: ["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
});
console.log(result.data.length, result.data[0].embedding.length);