MoonshotAI: Kimi K3 (batch)
Kimi K3 to natywnie multimodalny model rozumowania firmy Moonshot AI do długich zadań programistycznych i pracy z wiedzą. Odczytuje tekst, obrazy i wideo, generuje tekst i obsługuje przepływy sterowane narzędziami z kontekstem o wielkości 1 048 576 tokenów oraz historią namysłu zachowywaną między krokami.
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.
Kimi K3 to multimodalny model agentowy firmy Moonshot AI z otwartymi wagami, do długofalowego programowania, pracy z wiedzą i rozumowania. Łączy tekst z natywnym wizualnym rozumieniem obrazów i wideo oraz generuje odpowiedź tekstową lub żądanie narzędzia. Producent wyróżnia rozbudowane sesje inżynierskie, duże repozytoria i zadania korzystające ze zrzutów ekranu lub wizualnej informacji zwrotnej obok kodu. Przydatny opis zadania definiuje pożądany artefakt, dowody do wykorzystania i warunek oznaczający ukończenie pracy.
Architektura i długi kontekst
Karta modelu opisuje rzadką architekturę Mixture of Experts o 2,8 bln parametrów łącznie i 104 mld aktywowanych parametrów. Projekt Stable LatentMoE wybiera 16 z 896 ekspertów na token, używając Kimi Delta Attention i Attention Residuals wraz z bramkowaną uwagą. Dokładna długość kontekstu wynosi 1 048 576 tokenów. Jest to miejsce na obszerny kontekst zadania, a nie powód do odrzucenia granic źródeł lub przestrzeni potrzebnej na wynik.
Opublikowany natywny artefakt wykorzystuje trening świadomy kwantyzacji z wagami MXFP4 i aktywacjami MXFP8. Jest to format wydania producenta, odrębny od osobno dostarczonej edycji skwantyzowanej lub twierdzenia o sposobie udostępniania modelu przez konkretną trasę. Otwarte wagi i duża liczba parametrów nie zmieniają liczby aktywnych parametrów w całkowite wymagania dotyczące przechowywania lub sprzętu.
Przygotuj obszerne zadanie programistyczne
Dostarcz istotne materiały repozytorium, istniejące zachowanie, żądaną zmianę i ograniczenia zgodności. Wskaż pliki lub interfejs, na które wynik musi wpłynąć, kontrole określające powodzenie oraz dostarczony błąd lub dane wejściowe ujawniające problem. Przydatny wynik może być ukierunkowaną zmianą kodu z wyjaśnieniem i dowodami z kontroli, które rzeczywiście uruchomiono, a nie opisem działań, których nigdy nie wykonano.
Dla wizualnego zadania programistycznego uwzględnij zrzut ekranu lub czytelny widok zamierzonego wyniku wraz z istotnym kodem i konkretną rozbieżnością. Producent opisuje przepływy obejmujące frontend, gry i CAD, które wykorzystują wizualną informację zwrotną. Poproś o zmianę łączącą kod z zaobserwowanym wynikiem i zachowaj odniesienie, aby dostarczony artefakt można było względem niego sprawdzić.
Obrazy, wideo i przygotowanie pracy z wiedzą
Szybki start producenta używa typowanych obiektów treści dla wiadomości wizualnych; content jest tablicą, a nie serializowaną reprezentacją tej tablicy. Przepływ obrazowy używa zakodowanych danych obrazu lub obsługiwanego odwołania do pliku zamiast publicznego adresu obrazu. Przykład wideo przesyła plik wideo i dostarcza uzyskane odwołanie wraz z pytaniem o jego treść. Podaj czytelne źródło i określ istotną obserwację, przedział lub relację. Przepływ wizji producenta przyjmuje obrazy JPEG, PNG, GIF, WebP, BMP, HEIC i HEIF oraz wideo MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV i 3GPP. Animowane GIF lub WebP mogą zostać zdekodowane jako wideo. Dostarcz źródło SVG jako tekst. Producent zaleca obrazy do 4096 × 2160 i wideo do 1920 × 1080; są to zalecenia rozdzielczości, a nie progi odrzucenia. Utrzymuj treść żądania w udokumentowanym limicie rozmiaru 100M i przesyłaj duże lub wielokrotnie używane multimedia jako pliki.
Dla badań opartych na wielu dokumentach oznacz źródła i określ pytania, na które powinien odpowiadać końcowy raport. Dla wyjaśnienia wideo wskaż zdarzenia lub sekwencję do analizy, zamiast żądać nieograniczonego komentarza. K3 wykorzystuje treść wizualną jako dowód do rozumowania i zwraca tekst lub żądania narzędzi. Aplikacja może przekazać te żądania narzędziom multimedialnym, aby utworzyć osobne artefakty obrazowe lub wideo.
Namysł jest zawsze włączony
Interfejs producenta K3 ma zawsze włączony namysł. Ustawienie najwyższego poziomu reasoning_effort przyjmuje low, high i max, z max jako wartością domyślną. Te wybory są specyficzne dla modelu; nie należy zakładać ustawienia bez namysłu lub wartości intensywności z innej rodziny. Wskazówki migracji producenta odróżniają K3 od K2.x przez używanie reasoning_effort zamiast przenoszenia starszej konfiguracji thinking.
Producent dokumentuje osobne reasoning_content i treść odpowiedzi końcowej w wynikach strumieniowych. Dla rozmowy wieloturowej lub przepływu narzędzi wymaga przekazania kompletnej zwróconej wiadomości asystenta bez zmian, w tym reasoning_content i tool_calls. Zachowanie tylko widocznej odpowiedzi końcowej traci informacje, których przepływ zachowanego namysłu modelu oczekuje w kolejnym kroku.
Uporządkowane odpowiedzi końcowe i częściowa kontynuacja
Szybki start dokumentuje ścisły wynik według schematu JSON dla treści wiadomości końcowej. Zdefiniuj pola i ich znaczenia wokół artefaktu potrzebnego aplikacji i parsuj tę końcową treść, zamiast łączyć ją z polem rozumowania. Uporządkowany wynik może reprezentować informacje wyodrębnione z dostarczonego materiału lub zdefiniowany format raportu; schemat ogranicza jego strukturę, a dowody źródłowe określają poprawność wartości.
Tryb partial może kontynuować dostarczony prefiks tekstowy. Przykład producenta umieszcza częściową wiadomość asystenta na końcu historii i łączy ten prefiks ze zwróconą kontynuacją do wyświetlenia. Używaj tego, gdy wymagany artefakt ma znaczący stały początek, zachowując prefiks oddzielnie od wygenerowanej reszty.
Narzędzia i ciągłość ich wyników
K3 obsługuje niestandardowe narzędzia funkcyjne. Przykład producenta wymaga narzędzia w pierwszej turze, zachowuje kompletną wiadomość asystenta, wykonuje każde zwrócone wywołanie i dodaje odpowiadający wynik narzędzia przed żądaniem odpowiedzi końcowej. Proponowane wywołanie nie jest dowodem powodzenia operacji; rzeczywisty zwrócony wynik staje się dowodem dla kolejnego kroku.
Przepływ dynamicznego ładowania wprowadza kompletną definicję narzędzia w konkretnym punkcie historii wiadomości. Definicja potrzebuje nazwy, celu i parametrów i musi pozostać w późniejszej historii, ponieważ serwer nie zachowuje tej deklaracji niezależnie. Zachowuj powiązanie możliwości narzędzi, dostarczonych argumentów i rzeczywistych obserwacji, aby długie zadanie mogło być kontynuowane od już ukończonej pracy.
Kontrola wyjścia i powtarzany kontekst
Producent dokumentuje domyślny limit generowania 131 072 tokenów, konfigurowalny do 1 048 576 w obrębie ogólnych ograniczeń kontekstu modelu. Bieżące API K3 ustala temperaturę na 1.0, top_p na 0.95, jeden wynik oraz zerowe kary obecności i częstotliwości, polecając wywołującym pominięcie tych mechanizmów próbkowania. Są to ustawienia konkretnego wariantu producenta, a nie przenośna lista regulowanych mechanizmów.
Buforowanie kontekstu jest automatyczne dla kwalifikujących się powtarzanych prefiksów, z udokumentowanymi opcjami TTL 5 minut i 1 godziny oraz 5 minutami jako ustawieniem domyślnym. Częściowe bloki cache pozostają chybieniami. Utrzymuj stabilny kontekst wielokrotnego użytku i sprawdzaj rzeczywiste zużycie, zamiast stwierdzać trafienie cache wyłącznie na podstawie powtarzanego tekstu. Dla końcowego artefaktu zachowaj dostarczone źródła, rzeczywiste dowody narzędzi i wymaganą strukturę wyniku oraz sprawdź, czy długa odpowiedź lub rezultat inżynierski spełniają podane kryteria ukończenia.
Ailoot Ultra · Batch POST /v1/batches moonshotai/kimi-k3:batch
moonshotai/kimi-k3:batchStart
Kimi K3 to natywnie multimodalny model rozumowania firmy Moonshot AI do długich zadań programistycznych i pracy z wiedzą. Odczytuje tekst, obrazy i wideo, generuje tekst i obsługuje przepływy sterowane narzędziami z kontekstem o wielkości 1 048 576 tokenów oraz historią namysłu zachowywaną między krokami.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Tekst
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Batch POST /v1/batches
- Wejście
text- Wyjście
text- Format wyjściowy
- JSON bezpośrednio w results[].response.body
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Poleendpoint | Typstring | WymaganieWymagane | Wartości i limity /v1/chat/completions | Domyślnie— |
Polemodel | Typstring | WymaganieWymagane | Wartości i limity moonshotai/kimi-k3:batch | Domyślnie— |
Polerequests | Typbatch_item[] | WymaganieWymagane | Wartości i limity Minimalna liczba elementów: 1 | Domyślnie— |
Polerequests[].custom_id | Typstring | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polerequests[].body.messages | Typmessage[] | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polecompletion_window | Typstring | WymaganieOpcjonalne | Wartości i limity 24h | Domyślnie— |
Poleprovider | Typobject|null | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polerequests[].body.model | Typstring | WymaganieOpcjonalne | Wartości i limity moonshotai/kimi-k3:batch, moonshotai/kimi-k3 | Domyślnie— |
Poleprovider.only | Typstring[] | WymaganieOpcjonalne | Wartości i limity deepinfra/bf16 | Domyślnie— |
Poleprovider.allow_fallbacks | Typboolean|null | WymaganieOpcjonalne | Wartości i limity false, null | Domyślnie— |
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktendpoint, model, requests |
Parametrmaterial_types | Kontrakttext |
Parametrrepresentation | Kontraktrequests[] bezpośrednio w żądaniu; każdy element zawiera custom_id i body |
Parametrrequest_endpoint_profile | Kontrakt/v1/chat/completions |
Parametrfile_material | KontraktWywołujący może lokalnie wczytać rzeczywisty plik JSONL w kodowaniu UTF-8 do requests[]. Nie używa się przeznaczenia przesyłanego pliku, input_file_id ani odwołania do pliku. Brak materiałów klienta lub ich pusta zawartość zatrzymują przygotowanie przed POST. |
Parametrserialization_order | Kontraktendpoint, model, provider (jeśli podano), completion_window (jeśli podano), requests na końcu |
Parametroptional_controls | Kontraktprovider.only, provider.allow_fallbacks, completion_window |
Parametrschema_scope | KontraktTreści żądań tekstowych Chat Completions w udokumentowanej strukturze Batch z danymi bezpośrednio w żądaniu. |
Cykl życia: asynchronous
GET /v1/batches/{operation_id} · Rzeczywista wartość response.id zwrócona przy pierwotnym utworzeniu; ten sam użytkownik, klucz i grupa
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)
- Wycena jawnej pamięci podręcznej
- Niewłączone Gdy zażądano jawnej pamięci podręcznej
Stawki Ailoot
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Tabela stawek | Tokeny kontekstu, więcej niż | Tokeny kontekstu, do podanej wartości włącznie | Opłata |
|---|---|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Tokeny kontekstu, więcej niż— | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.00456 / 1K tokenów Wyjście · Tokeny wyjściowe $0.0228 / 1K tokenów Wejście · Odczyt cache $0.000456 / 1K tokenów Wejście · Zapis do cache — / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
| KonfiguracjaPrzedział długości żądania 1 | Tabela stawek— | Tokeny kontekstu, więcej niż0 | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.00456 / 1K tokenów Wyjście · Tokeny wyjściowe $0.0228 / 1K tokenów Wejście · Odczyt cache $0.000456 / 1K tokenów Wejście · Zapis do cache — / 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 · Batch
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"moonshotai/kimi-k3:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
import json, os
from pathlib import Path
from urllib.request import Request, urlopen
def prepare_requests(customer_path):
path = Path(customer_path)
if not path.is_file(): raise ValueError("Customer JSONL file is missing")
items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
if not items: raise ValueError("Customer JSONL contains no requests")
ids = set()
for item in items:
if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
cid = item["custom_id"]
if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
ids.add(cid)
if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
supplied_model = item["body"].get("model")
if supplied_model is not None and supplied_model not in ['moonshotai/kimi-k3:batch', 'moonshotai/kimi-k3']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"moonshotai/kimi-k3:batch", "requests":items}
if __name__ == "__main__":
material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
body = prepare_requests(material)
key = os.environ.get("AILOOT_API_KEY", "")
if not key: raise SystemExit("Set AILOOT_API_KEY")
request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
with urlopen(request) as response:
raw = response.read()
Path("batch-create-response.json").write_bytes(raw)
print(raw.decode("utf-8"))
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
Odbieranie i zapisywanie wyników
Ailoot Ultra · Batch
JSON bezpośrednio w results[].response.body
GET /v1/batches/{operation_id}
Sprawdź status zadania
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj pełny pierwotny JSON stanu, każdy wynik i custom_id oraz pełną treść odpowiedzi lub błędu. Zapisz ukończone wyniki z results[] jako JSONL bez filtrowania.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj pierwotny identyfikator operacji. Odpowiedź 503 result_pending_check zawiera X-Should-Retry:false; nigdy nie wysyłaj ponownie pierwotnego żądania Batch, którego wynik jest nieznany.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Poleresults[].custom_id | Typstring |
Poleresults[].response.body.choices[].message.content | Typstring|null |
Poleresults[].error | Typobject|null |
Poleusage | Typobject|null |
Poleid | Typstring |
Polemodel | Typstring |
Poleendpoint | Typstring |
Polestatus | Typstring |
Polerequest_counts | Typobject |
Poleresults[].id | Typstring |
Poleresults[].response.status_code | Typinteger |
Poleresults[].response.request_id | Typstring |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowa udokumentowana struktura z danymi bezpośrednio w żądaniu, zduplikowane klucze, problem z tożsamością elementu lub konflikt ze skonfigurowanymi możliwościami modelu. | Następny krokPopraw wskazane pola przed wysłaniem jakiegokolwiek nowego żądania. |
Odpowiedź401 · authentication_error | WarunekNieprawidłowy klucz API. | Następny krokUżyj autoryzowanego klucza Ailoot. |
Odpowiedź403 · permission_error | WarunekGrupa Batch jest niedostępna. | Następny krokSprawdź uprawnienia klucza i grupy. |
Odpowiedź422 · invalid_request_error | WarunekBatch korzysta z rozliczania z salda; utworzenie w ramach subskrypcji jest odrzucane. | Następny krokUżyj autoryzowanej grupy rozliczanej z salda. |
Odpowiedź422 · price_unavailable | WarunekNie można wycenić danych wejściowych Batch. | Następny krokZachowaj odpowiedź; użyj danych wejściowych udokumentowanych dla tej rodziny API. |
Odpowiedź402 · billing_error | WarunekRezerwa dla Batch jest niedostępna. | Następny krokRozwiąż problem dopuszczenia żądania przed wysłaniem nowego. |
Odpowiedź503 · price_unavailable | WarunekCena metody Batch lub stawki natywne są niedostępne. | Następny krokZachowaj odpowiedź; nie zastępuj cen innymi. |
Odpowiedź503 · api_error | WarunekDokładna trasa dostawcy jest niedostępna. | Następny krokZachowaj odpowiedź na potrzeby naprawy trasy. |
Odpowiedź503 · result_pending_check | WarunekPierwotny wynik wymaga sprawdzenia; X-Should-Retry:false. | Następny krokZachowaj pierwotny operation_id/id i odczytuj stan operacji; nigdy nie powtarzaj pierwotnego POST. |
Odpowiedź404 · not_found | WarunekOperacja sprawdzania stanu Batch nie istnieje lub należy do innej tożsamości. | Następny krokUżyj dokładnego pierwotnego id oraz tego samego użytkownika, klucza i grupy. |
Aliasy
Aliasy modelu
Ailoot Ultra moonshotai/kimi-k3:batch
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
FAQ · MoonshotAI: Kimi K3 (batch)
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/batches·moonshotai/kimi-k3:batch:text→text- Jakich pól używa żądanie?
POST /v1/batches·moonshotai/kimi-k3:batch:endpoint,model,requests,completion_window,provider- Jakie limity obowiązują?
POST /v1/batches·moonshotai/kimi-k3:batch:requests.min_items:1