qwen2.5-omni-7b
Qwen2.5-Omni-7B łączy rozumienie tekstu, obrazów, dźwięku i wideo z wyjściem tekstowym i naturalną mową. Jego architektura Thinker-Talker dopasowuje dźwięk do czasu wideo, obsługuje interakcję strumieniową i oferuje dwa udokumentowane głosy w tej konkretnej otwartej wersji.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsqwen2.5-omni-7b - Ailoot Ultra · Anthropic Messages
POST /v1/messagesqwen2.5-omni-7b
O modelu
Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.
Przegląd: jeden model dla kilku modalności wejściowych
Qwen2.5-Omni-7B to multimodalny model Qwen typu end-to-end do tekstu, obrazów, dźwięku i wideo. Potrafi rozumieć te dane wejściowe łącznie i generować tekst z naturalną mową w procesie strumieniowym. Używaj go, gdy zadanie zależy jednocześnie od tego, co widać i słychać, lub gdy użytkownik przekazuje instrukcję głosem zamiast ją wpisywać. To konkretna wersja 7B; komercyjny Omni-Turbo i późniejsze wydania Omni mają własne kontrakty.
Kluczowe funkcje i architektura
Konstrukcja Thinker-Talker łączy rozumienie z generowaniem mowy. Thinker przetwarza zadanie multimodalne i tworzy treść tekstową, a Talker uczestniczy w formowaniu odpowiedzi mówionej. TMRoPE, multimodalny schemat pozycyjny producenta z synchronizacją czasową, synchronizuje znaczniki czasu wideo z dźwiękiem. Architekturę zaprojektowano do danych wejściowych w fragmentach i sprawnej interakcji głosowej lub wideo; ten cel projektowy nie stanowi stałej gwarancji czasu odpowiedzi dla każdego interfejsu.
Zakres zadań producenta obejmuje rozpoznawanie mowy, tłumaczenie mowy, rozumienie dźwięku, rozumowanie o obrazach, rozumienie wideo i generowanie mowy. Instrukcje mówione mogą więc uczestniczyć bezpośrednio w pytaniu multimodalnym, zamiast zawsze wymagać osobno dostarczonej transkrypcji tekstowej. Jasno określ zadanie docelowe: rozumienie klipu audio, odpowiadanie na pytanie mówione i generowanie odpowiedzi mówionej to różne zastosowania, mimo że model obsługuje wszystkie ich formy wejścia lub wyjścia.
Przygotowanie rozmowy multimodalnej
Dostarcz odpowiednie media i powiedz, jak odpowiedź ma je łączyć. W przypadku demonstracji z narracją poproś model o rozróżnienie widocznych kroków i wyjaśnień mówcy oraz wskazanie miejsc, w których są zgodne. W przypadku obrazu z pytaniem audio określ rolę obrazu i poproś o zwięzłą odpowiedź opartą na widocznej treści. W przypadku fragmentu wyłącznie dźwiękowego określ, czy celem jest rozpoznanie mowy, wyjaśnienie dźwięków, czy odpowiedź na pytanie o treść. Są to opracowane zastosowania udokumentowanego zakresu zadań.
Przykłady producenta pokazują rozmowy wyłącznie tekstowe, wyłącznie dźwiękowe, wyłącznie wideo oraz łączące media. Zachowaj oryginalną kolejność i czas wideo. Oznacz osobne materiały, aby model mógł się do nich odwoływać bez traktowania niepowiązanych dowodów jako jednego zdarzenia. Wynikiem może być sam tekst lub tekst z mową; wybierz użyteczny rezultat przed przygotowaniem żądania.
Przygotowanie generowania mowy
Procedura wersji Qwen wymaga udokumentowanego polecenia systemowego określającego możliwości audio, gdy potrzebne jest wyjście mowy. Polecenie identyfikuje Qwen i jego możliwości słuchowe, wizualne, tekstowe oraz mowy; niepowiązany zamiennik może uniemożliwić oczekiwane działanie audio. To wskazówka dotycząca pracy z wersją modelu udostępnioną przez producenta, a nie twierdzenie, że każda aplikacja udostępnia sterowanie poleceniem systemowym lub generowaniem dźwięku.
Ta konkretna wersja oferuje dwa głosy: Chelsie, ciepły głos kobiecy, i Ethan, pogodny głos męski. Chelsie jest udokumentowanym głosem domyślnym, gdy nie wybrano mówcy. Przykład generowania zapisuje mowę z częstotliwością próbkowania 24,000 Hz. Tych dwóch głosów nie należy zastępować opisem czterech głosów osobno nazwanego modelu komercyjnego.
Korzystanie z dźwięku wideo
Ścieżka dźwiękowa filmu może mieć znaczenie dla jego treści, na przykład jako instrukcje mówione lub dźwięk wywołany widocznym działaniem. Qwen udostępnia use_audio_in_video podczas przygotowania mediów, przetwarzania i generowania. Ustawienie musi być spójne na wszystkich trzech etapach i w całej rozmowie wieloturowej; niespójne ustawienia mogą dawać nieoczekiwane wyniki. Wizualna interpretacja wideo różni się więc od interpretacji audiowizualnej, nawet gdy plik jest ten sam.
Wyjście wyłącznie tekstowe i przetwarzanie wsadowe
Producent obsługuje wyjście wyłącznie tekstowe przez ustawienie return_audio=False. Pozwala też wyłączyć Talker po załadowaniu, zmniejszając zużycie pamięci GPU o około 2 GB, ale pozostawiając wyjście audio niedostępne w tej instancji. Udokumentowany przykład wsadowy z mieszanymi próbkami wymaga return_audio=False i łączy żądania tekstowe, obrazowe, dźwiękowe i wideo. Tego przykładu wsadowego nie należy przedstawiać jako potwierdzenia wsadowego generowania mowy.
Kontekst i istotne ograniczenia
Konfiguracja tekstowego rdzenia tej wersji ustawia maksymalną liczbę pozycji na 32,768. Tekst, reprezentowane media i wygenerowane odpowiedzi zużywają miejsce w sekwencji; ta wartość nie określa niezależnie uniwersalnego czasu trwania audio lub wideo. Przykłady zasobów producenta pokazują, że dłuższe wideo wymaga znacznie więcej pamięci, dlatego krótki, istotny klip jest często praktyczniejszy niż duże, niepowiązane nagranie. Przykłady nie publikują osobnego sztywnego maksimum długości odpowiedzi ani powszechnie gwarantowanego czasu trwania mediów.
Sprawdź cytaty z wypowiedzi i wnioski względem źródła, zachowaj wystarczająco dużo szczegółów wizualnych do pytania i pozostaw wynik tekstowy, gdy recenzent musi sprawdzić wyjaśnienie mówione. Udokumentowana wartość modelu to łączne rozumienie i odpowiedź tekstowa/głosowa, natomiast dokładne sterowanie głosem, przetwarzanie mediów i dostarczanie wyniku pozostają funkcjami wybranego interfejsu.
Zadanie praktyczne
Zadanie praktyczne
Przykład techniczny po angielsku
Compare demonstration notes with narration
Compare two text records of demonstration M2. Visual notes: 'Operator closes the lid, then presses Start.' Narration transcript: 'Press Start before closing the lid.' Identify the sequence disagreement and write one clarification question for the instructor. Use only these supplied records; do not claim to have watched or heard a clip.Oczekiwany wynik
A source-linked sequence comparison and one targeted clarification question.Sprawdź wynik
The answer must preserve the opposing event order and avoid inventing a resolution.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qwen2.5-omni-7b
qwen2.5-omni-7bStart
Qwen2.5-Omni-7B łączy rozumienie tekstu, obrazów, dźwięku i wideo z wyjściem tekstowym i naturalną mową. Jego architektura Thinker-Talker dopasowuje dźwięk do czasu wideo, obsługuje interakcję strumieniową i oferuje dwa udokumentowane głosy w tej konkretnej otwartej wersji.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Tekst
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Wejście
text- Wyjście
text- Format wyjściowy
- json lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity qwen2.5-omni-7b | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity Minimalna liczba elementów: 1 | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity Przykłady: system, user, assistant, tool, function Warunki: Te role są jawnie reprezentowane przez typy zgodności w kodzie źródłowym; dokładny zestaw ról pozostaje właściwy dla danego modelu. Zależy od modelu | Domyślnie— |
Polemessages[].content | Typstring|content_part[]|null | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polemessages[].tool_calls | Typtool_call[] | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polemessages[].tool_call_id | Typstring | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: role=tool; użyj rzeczywiście zwróconego ID | Domyślnie— |
Polemessages[].name | Typstring | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polemessages[].reasoning_content | Typstring | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: Przekazuj z powrotem rzeczywiście zwróconą treść rozumowania, gdy ten model jej używa | Domyślnie— |
Polemessages[].reasoning_details | Typobject|array | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polemax_tokens | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 1 Zależy od modelu | Domyślnie— |
Polemax_completion_tokens | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 1 Zależy od modelu | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Polestream_options.include_usage | Typboolean | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletemperature | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletop_p | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polestop | Typstring|string[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletools | Typfunction_tool[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletools[].type | Typstring | WymaganieOpcjonalne | Wartości i limity function Zależy od modelu | Domyślnie— |
Poletools[].function.name | Typstring | WymaganieWymagane | Wartości i limity Obowiązuje, gdy: udostępnione narzędzie funkcji | Domyślnie— |
Poletools[].function.description | Typstring | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poletools[].function.parameters | TypJSON_schema | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poletool_choice | Typstring|object | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleparallel_tool_calls | Typboolean | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleresponse_format | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polereasoning_effort | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polereasoning | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleservice_tier | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleinstructions | Typstring | WymaganieOpcjonalne | Wartości i limity Pole zgodności | Domyślnie— |
Polefunctions | Typfunction[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polefunction_call | Typstring|object | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleprompt_cache_options | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polemodalities | Typstring[] | WymaganieOpcjonalne | Wartości i limity text | Domyślnie— |
Poleprovider | Typobject | WymaganieOpcjonalne | Wartości i limity Warunki: provider.options jest odrzucane na tej tekstowej trasie Ultra | Domyślnie— |
Polecache_control.ttl | Typstring | WymaganieOpcjonalne | Wartości i limity Warunki: 1h jest odrzucane w rzeczywistych miejscach pamięci podręcznej promptów | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst · tekst UTF8
messages[].content
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages |
Parametrmaterial_types | Kontrakttext |
Parametrmessages | Kontrakttablica wiadomości o strukturze role/content |
Parametrfile_material | Kontraktrzeczywisty dokument UTF-8 wstawiony jako dosłowny tekst; bez wywnioskowanego ID pliku |
Parametroptional_controls | Kontraktstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametrcontrol_scope | Kontraktwłaściwe dla modelu; narzędzia funkcji użytkownika różnią się od narzędzi hostowanych |
Parametroutput_modalities | Kontrakttext |
Parametrhosted_operations | Kontraktfalse |
Parametrmultimodal_input_binding | Kontraktnull |
Cykl życia: synchronous_or_streamed
Wyślij dokładne ID modelu wraz z messages.
Długość kontekstu nie jest limitem wyjścia.
Plik tekstowy może dostarczyć dosłowny tekst; wejścia obrazowe/dźwiękowe/obiekty plików wymagają dokładnego powiązania.
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
Stawki Ailoot
Ceny według konfiguracji
| Konfiguracja | Tabela stawek | Opłata |
|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Opłata Wejście · Tokeny wejściowe $0.0046 / 1K tokenów Wyjście · Tokeny wyjściowe $0.0138 / 1K tokenów Wejście · Odczyt cache $0 / 1K tokenów Wejście · Zapis do cache $0 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen2.5-omni-7b", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='qwen2.5-omni-7b',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
with client.chat.completions.stream(model='qwen2.5-omni-7b',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
Odbieranie i zapisywanie wyników
Ailoot Ultra · OpenAI Chat
json lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj każdy wariant i jego treść/wywołania narzędzi/rozumowanie. W SSE składaj przyrosty według indeksu wariantu/narzędzia, zachowując końcowy powód zakończenia i dane użycia.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Polechoices[].index | Typinteger |
Polechoices[].message.content | Typstring|null |
Polechoices[].message.tool_calls | Typtool_call[] |
Polechoices[].message.reasoning_content | Typstring |
Polechoices[].message.reasoning_details | Typobject|array |
Polechoices[].finish_reason | Typstring|null |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra qwen2.5-omni-7b
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
Ailoot Ultra · Anthropic Messages POST /v1/messages qwen2.5-omni-7b
qwen2.5-omni-7bStart
Qwen2.5-Omni-7B łączy rozumienie tekstu, obrazów, dźwięku i wideo z wyjściem tekstowym i naturalną mową. Jego architektura Thinker-Talker dopasowuje dźwięk do czasu wideo, obsługuje interakcję strumieniową i oferuje dwa udokumentowane głosy w tej konkretnej otwartej wersji.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- json · sse
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Wejście
text- Wyjście
json,sse- Format wyjściowy
- JSON lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity qwen2.5-omni-7b | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity user, assistant | Domyślnie— |
Polemessages[].content | Typstring | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemax_tokens | Typinteger | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Kombinacje materiałów wejściowych
Tekst · tekst UTF-8
ciąg messages[].content
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages, max_tokens |
Parametroptional_controls | Kontraktstream |
Parametrmaterial_types | Kontrakttext |
Parametrtext_file_material | KontraktOdczytaj rzeczywisty dokument UTF-8 i umieść jego tekst we wskazanym polu input lub w ciągu treści wiadomości. |
Cykl życia: synchronous_or_streamed
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
Stawki Ailoot
Ceny według konfiguracji
| Konfiguracja | Tabela stawek | Opłata |
|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Opłata Wejście · Tokeny wejściowe $0.0046 / 1K tokenów Wyjście · Tokeny wyjściowe $0.0138 / 1K tokenów Wejście · Odczyt cache $0 / 1K tokenów Wejście · Zapis do cache $0 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
Ailoot Ultra · Anthropic Messages
{
"model": "qwen2.5-omni-7b",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen2.5-omni-7b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen2.5-omni-7b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Odbieranie i zapisywanie wyników
Ailoot Ultra · Anthropic Messages
JSON lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj wszystkie bloki treści, sygnatury myślenia i rzeczywiste ID użycia narzędzi. Złóż wszystkie przyrosty bloków SSE; pierwszy blok tekstowy nie jest pełnym wyjściem.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polemodel | Typstring |
Polecontent[] | Typtext|thinking|tool_use|other content block |
Polestop_reason | Typstring|null |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra qwen2.5-omni-7b
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
FAQ · qwen2.5-omni-7b
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/chat/completions·qwen2.5-omni-7b:text→textPOST /v1/messages·qwen2.5-omni-7b:text→json,sse- Jakich pól używa żądanie?
POST /v1/chat/completions·qwen2.5-omni-7b:model,messages,stream,modalities,providerPOST /v1/messages·qwen2.5-omni-7b:model,messages,max_tokens,stream- Jakie limity obowiązują?
POST /v1/chat/completions·qwen2.5-omni-7b:messages.min_items:1