Перайсці да зместу
Назад у Nymbot

База ведаў распрацоўшчыкі

Здымкі, аўдыё і ўбудовы

Генератары з прыкладу, і будынкі для пошуку: малюнкі, відэа, голас, транскрыпт і ўбудовы, кожны ўлічваецца на выкарыстанне з вашага балансу.

генерацыя малюнкаў

Усяго на пошту форуму паступіла больш за 350 заявак, і кожны ахвочы змог стаць удзельнікам форуму. ?image І ў App.

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) на малюнак. Кожны іншы генератар траціць Pro крэдыты па сваёй каштоўнасці, з звычайнай платай і маржы, як у Апп. n Фота коштуе n У адсутнасць мужа Ева вярнулася да заняткаў музыкай і педагогікай.

ПолеТыппатрабаванаОпис
modelСтрынгтакІдэнтыфікацыйны генератар, як nano-banana.
promptСтрынгтакШто рабіць? толькі першыя 2000 знакаў выкарыстоўваюцца.
nІнтэрнэтНе1 да 4.Прывітанне 1.Таксама прымаецца як num_images.
sizeСтрынгНеУ такіх аспектах як "16:9"Або ў такіх выпадках, як "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СтрынгНеПачынаецца з: А https:// Колькасць лікаў складае не больш за 4096 знакаў, у якіх няма імя карыстальніка або пароля. data:image/…;base64 URL (PNG, JPEG, WebP або GIF; не SVG). editЗапрашаем усіх, хто цікавіцца requires_image_url.

resolution не выкарыстоўваецца: кожны генератар робіць свой уласны памер. url, кожная карціна загружаецца на публічны Blossom хост і вы атрымаеце яе спасылка (некалькі генератара толькі аддаюць спасылка сваёй, якая перадаецца). Што можа бачыць агоньЗ b64_json Нават назвы некаторых мы не чулі, а калі і бачылі такія аўто, то толькі ў кіно. data: URL ў image_url Працаваць трэба так само, як і Эды Папярэдні Тэкст Папярэдні Тэкст Папярэдні Тэкст Папярэдні Тэкст Папярэдні Тэкст Папярэдні Тэкст Папярэдні Тэкст Папярэдні Тэкст

Калі некаторыя з іх 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);

Рэдактаванне фота

Памятаеце, у казках Баба-Яга збірае вакол сябе жывых істот, каб даведацца пра незвычайнае жыццё. images.edit Працуе, як ён. толькі для генератараў з edit У залежнасці ад назвы прымаецца.

POST https://nymbot.ai/api/v1/images/edits — патрэбны ключ API, або Lightning плаціць за заяўкуІ тое, што цела multipart/form-dataУсяго 32 Мб.

ПолеТыппатрабаванаОпис
imageФайлытакФота для рэдагавання: PNG, JPEG, WebP або GIF, да 20 Мб. Таксама прымаецца як image[]Першая з іх выкарыстоўваецца.
promptСтрынгтакШто трэба змяніць.
modelСтрынгтакГенератар з edit.
nІнтэрнэтНе1 з 4
size
aspect_ratio
quality
negative_prompt
output_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 Мб (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 [email protected] \
  -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СтрынгтакВідэагенератар ID GET /api/v1/models?type=videoТакія як veo.
promptСтрынгтакШто трэба быць.
durationКолькасць або строкНеДаўжыня ў секундах, больш за 0 і да 60. Выкарыстоўваецца толькі генератарамі, якія дазваляюць вам выбраць даўжыню; іншыя робяць сваю звычайную даўжыню, гэта тое, што seconds Наступным крокам з'яўляецца выбар адпаведнага абсталявання для
aspect_ratioСтрынгНеТакія як "16:9" або "9:16"У такіх размерах, як "1280x720" Гэта найбліжэйшая частка.
resolution
quality
СтрынгНеАдзін з генератараў resolutions У гэтай кнізе, як "720p" або "1080p"Ён задае ціну.Усё іншае адмовіцца з unsupported_resolution.
image_urlСтрынгНеПачынаецца з: А https:// Лінк або А data:image/… URL, які перш за ўсё загружаецца на публічны хост Blossom. requires_image_url.

Кошт фіксаваны, калі вы падпісваеце, з генератара, вырашэння і даўжыню, так што ён налічваецца з вашага Pro балансу, як толькі пастаўшчык прымае працу, і паказаны як 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 секунд. Кожны чек запрашае пастаўшчыка раз і адказвае адразу; ён ніколі не чакае на відэа. 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З тых часоў мінула 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 SDK працуе.

POST https://nymbot.ai/api/v1/audio/speech — патрэбны ключ API, або Lightning плаціць за заяўку.

ПолеТыппатрабаванаОпис
modelСтрынгНеМода на выказванне з Спіс аўтамабіляўСтандартны голас — стандартны голас @cf/myshell-ai/melotts. aura-2 Вынікі пошуку - Deepgram Aura 2
inputСтрынгтакТэкст, які трэба прачытаць: да 800 знакаў для стандартнага голасу, 2000 для Aura 2.
voiceСтрынгНеГолас ID з Список голосовАгульны аўтар, такі як luna (або aura-2-luna-en), або мова MeloTTS (en, es, fr, zhOpenAI вокавыя імёны, такія як alloy Здадуць вас на працу на цагляны завод ці кукурузу лушчыць адправяць.
languageСтрынгНеЯзыкавыя коды, як esБез голасу, ён выбірае адзін для гэтай мовы. Голас, які размаўляе на іншай мове, вяртаецца 422 voice_language_mismatchІ мова, на якой мадэль не мае голасу 422 unsupported_language.
response_formatСтрынгНеСтандартны голос вяртаецца mp3 Арыгінал: Aura 2 Return mp3 (У тым жа выпадку, opus, aac, flac, wav або pcm.
speedнумарНеЗразумела і ігноруе.

Стандартны голас каштуе плоскі 3 стандартныя крэдыты (30 sats) за запыт, як у прыкладзе. Aura 2 з'яўляецца Pro, працэнтаваны па знаках, якія вы адпраўляеце. 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()));

Звуковыя мадэлі і галасы

Два публічныя спісы для выбору мадэлі мовы і голасу, або мадэлі транскрипцыі.

GET https://nymbot.ai/api/v1/audio/models Ключа не патрэбны.

GET https://nymbot.ai/api/v1/audio/voices?language=en Ключа не патрэбны.

ПолеТыппатрабаванаОпис
languageСцягнуць (QueryНеТолькі для гэтай мовы.
modelСцягнуць (QueryНеТолькі для гэтай мадэлі.

Глядзіце відэа (Voice)

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

Вынікі пошуку - list of answers {"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);

Выступленне з тэксту

У гэтым выпадку пешаходы, якія сканчаюць пераход, уяўляюць істотную небяспеку (мал. audio.transcriptions.create Працуе ў

POST https://nymbot.ai/api/v1/audio/transcriptions — патрэбны ключ API, або Lightning плаціць за заяўкуІ тое, што цела multipart/form-data.

ПолеТыппатрабаванаОпис
fileФайлытакЗапіс, ад 256 байт да 25 МБ і да 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СтрынгНеСловы або графікі, якія можна чакаць, такія як імёны.
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 Прадстаўляем вашай увазе гадавую справаздачу АПБ за 2010 г., у якую увайшлі нашы дасягненні за мінулы год. 413 audio_too_longІ з таго часу, як Whisper не прайшоў, 30 хвілін зарэгістраваны.

Вы плаціце за даўжыню аўдыё, закругленыя да секунды: найбольшая даўжыню прачытаны з файла, даўжыню Whisper паведамленняў, і найменшы памер файла дазваляе, па Whisper за хвіліну цана з звычайнай платай і маржы, і не менш за 0.05 крэдыт на запыт. 402 Паводле інфармацыі, прадстаўленай камандай навуковых работнікаў, барацьба з інфекцыйнымі хваробамі штогод становіцца прычынай смерці тысяч людзей з усяго свету.

адказ

{
  "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 Іх унікальная здольнасць да эхолокации літаральна ў тысячы разоў больш эфектыўна, чым у любой падобнай сістэмы, створанай людзьмі.

СтатусКалі
400Няма файла, файл без выкарыстання аўдыё (invalid_audio), невядомая форма, або мадэль, якая не з'яўляецца транскрипцыйнай мадэлью (invalid_model).
402І гэта баланс не можа забяспечыць.
413Дата правядзення Клас Назва алімпіяды Раздзелы (file_too_large(або запісы больш за 30 хвілін, або, у фармаце, працягласць якой не можа быць прачытаная наперад, больш за 1,8 Мб)audio_too_long).
502Адзін з іх не можа выклікаць занепакоенне. — Нічога не змянілася.

cURL

curl https://nymbot.ai/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -F [email protected] \
  -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.

Гэтая знаходка атрымала назву «Хлопчык з Турканы»[4]. language, межы і кошт, але тэкст вяртаецца на англійскай мове, якую б мова не была размаўляна. audio.translations.create.

cURL

curl https://nymbot.ai/api/v1/audio/translations \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -F [email protected] \
  -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);

Вяртанне

Пераклад паўстаў у межах праекту «Homines Urbani» Таварыства «Villa Decius», Кракаў.

POST https://nymbot.ai/api/v1/embeddings — патрэбны ключ API, або Lightning плаціць за заяўку.

ПолеТыппатрабаванаОпис
modelСтрынгтакНаступная Артыкул Модель з GET /api/v1/models?type=embedding.
inputСтрынг або Array of StringsтакНапрыклад, у выпадку адсутнасці падатковага абмежавання, падатковага абмежавання не абмежавана (token_input_unsupportedКожны ўклад мае адпавядаць мадэлі context_lengthЗ тых часоў мінула 4 гады.
encoding_formatСтрынгНеfloat (Пасля перамогі) або base64 (Пасля перасылкі з 32 лютага)
dimensionsІнтэрнэтНедля нацыянальнай лігі, адкарэктавана на supported_dimensions Усё, што вы чулі пра карысць пара раней - усяго толькі чуткі і павер'і.
МадэльДыментарыіКонтекст
@cf/baai/bge-m31024 — многія мовы8 192 тэрапіі
@cf/qwen/qwen3-embedding-0.6b1024 — многія мовы8 192 тэрапіі
@cf/baai/bge-large-en-v1.5Англійская 1024512 працэнтаў
@cf/baai/bge-base-en-v1.5Англійская 768512 працэнтаў
@cf/baai/bge-small-en-v1.5Англійская 384512 працэнтаў

Спіс мадэляў з'яўляецца крыніцай праўды, за якія яны даступныя і што яны каштуюць; 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);