Przyjmuje Twoje zasady
Przesyłasz stan, pytania i dozwolone odpowiedzi. Serwer sprawdza strukturę zapytania i przygotowuje wejście dla modelu. Klasyfikator definiujesz przy każdym wywołaniu.
BASAL-SERVE / SILNIK 2.0
Model dostarcza prawdopodobieństwa. Serwer inferencji zamienia je w odpowiedź, z której może skorzystać Twoja aplikacja, workflow lub agent AI.
basal-serve uruchamia wagi, obsługuje zapytania i zwraca typowane, skalibrowane decyzje. Wybierasz model oraz sprzęt. Sposób zadawania pytań pozostaje ten sam.
Otwarty kod · Apache 2.0 · własna infrastruktura
Zapytania · kolejka · kalibracja
Jeden wybrany model na proces serwera
choicenoulscoremultiacttoolWagi przechowują to, czego nauczył się model. Silnik określa, jak z tej wiedzy korzysta Twój program.
Przesyłasz stan, pytania i dozwolone odpowiedzi. Serwer sprawdza strukturę zapytania i przygotowuje wejście dla modelu. Klasyfikator definiujesz przy każdym wywołaniu.
SOAM (State Once, Ask Many) pozwala wielu pytaniom korzystać z tego samego stanu. Silnik może też łączyć równoległe zapytania w partie, aby lepiej wykorzystać GPU.
Odczytuje prawdopodobieństwa opcji, stosuje kalibrację i buduje odpowiedź JSON. Dla decyzji kosztowej oblicza oczekiwany koszt działań; w razie potrzeby zwraca przekazanie sprawy człowiekowi.
vLLM, SGLang, MLX, Ollama i llama.cpp mogą wykonywać obliczenia modelu. Warstwę typowanych decyzji zapewnia przed nimi basal-serve. Zwykłe uruchomienie modelu w trybie generowania tekstu nie daje tego samego API.
Łącz różne typy pytań w jednym zapytaniu. Dla basal-2.0 dostępnych jest do 255 opcji na pytanie; tryb Ollama ma limit 20.
choiceKtóry zespół powinien obsłużyć zgłoszenie? Dostajesz wybraną opcję i rozkład prawdopodobieństw.
noulCzy opis zawiera numer zamówienia? Wynikiem jest prawdopodobieństwo odpowiedzi „tak”.
scoreJak pilna jest sprawa? Definiujesz uporządkowane poziomy, a serwer zwraca rozkład i wartość oczekiwaną poziomu.
multiReklamacja, dostawa i zwrot mogą dotyczyć jednej wiadomości. Każda etykieta ma niezależne prawdopodobieństwo; ich suma nie musi wynosić 100%.
acteksperymentalnePodajesz koszty działań dla możliwych wyników. Serwer wybiera najniższy oczekiwany koszt, także gdy najlepszym działaniem jest konsultacja z człowiekiem.
tooleksperymentalnePrzekazujesz definicje narzędzi w formacie MCP, OpenAI lub Anthropic. basal wybiera narzędzie, odpowiedź bez narzędzia, pytanie do użytkownika albo brak pasującej opcji.
"facts": "auto" uzupełnia polski stan o obliczone daty i kwoty. Kod wykonuje rachunki; model ocenia znaczenie faktów w opisanych zasadach procesu.Ten sam punkt wejścia do decyzji, różne sposoby wykonania obliczeń. Tryb dobierasz do sprzętu, wag i ruchu aplikacji.
| Środowisko | Tryb | Co warto wiedzieć |
|---|---|---|
| NVIDIA GPU · tekst | fastfast-nocompile | Główny silnik PyTorch. Kompilacja i CUDA graphs w fast; szybszy start bez kompilacji w fast-nocompile. |
| NVIDIA GPU · FP8 | fp8 | Porty FP8 na zgodnym GPU. HP ZGX Nano (NVIDIA DGX Spark) wymaga stosu CUDA dobranego do Blackwell. |
| Apple Silicon | mlxmps | MLX z portami 8-bit albo PyTorch na GPU Maca. Używaj kalibracji właściwej dla wybranego silnika. |
| CPU i lokalne pliki GGUF | eager --device cpugguf / ollama / llamacpp | PyTorch na CPU lub pliki GGUF. Dla Ollama i llama.cpp basal-serve łączy się z osobno uruchomionym serwerem. |
| Alternatywne serwery CUDA | vllmsglang | Wspólne API basal nad innym backendem obliczeń. Domyślny kontekst wynosi 4096 tokenów; zmienisz go przez --max-len. |
| basal-omni · obraz i dźwięk | eager --media on | NVIDIA GPU, wagi bf16. W tym wydaniu bez trybu fast i portów MLX, FP8 czy GGUF. Media przesyłasz przez HTTP API. |
Tryb NVFP4 na Blackwell jest eksperymentalny i może obniżyć trafność. Pełne wymagania sprzętowe i instalację zależności opisuje dokumentacja projektu.
Przykłady zakładają zainstalowany silnik 2.0, zgodny PyTorch i dostęp do wskazanych wag. Dla modelu 4.5B wyłącz pamięć podręczną szablonu przez --template-prefix off.
basal-serve \
--model Remek/basal-2.0-4.5B \
--mode fast --template-prefix off \
--host 127.0.0.1 --port 8000Wymaga zależności basal[mlx] i portu MLX. Polecenie udostępnia to samo HTTP API na lokalnym porcie.
basal-serve \
--model Remek/basal-2.0-4.5B-MLX-8bit \
--mode mlx --host 127.0.0.1 --port 8000Wymaga zależności basal[media] oraz NVIDIA GPU. Pole media w HTTP API przenosi obrazy i dźwięk. Film trzeba wcześniej rozdzielić na klatki i ścieżkę audio.
basal-serve \
--model Remek/basal-omni-1.0-mini \
--mode eager --media on \
--host 127.0.0.1 --port 8000Wyślij JSON do POST /v1/systemone. W n8n wystarczy węzeł HTTP Request; w aplikacji — zwykły klient HTTP albo klient Python basal.
{
"state": "Przesyłka dotarła uszkodzona. Proszę o wymianę.",
"questions": {
"department": {
"type": "choice",
"instructions": "Który zespół powinien obsłużyć sprawę?",
"criteria": {
"claims": "Reklamacje i wymiana towaru",
"sales": "Pytania przed zakupem",
"billing": "Faktury i płatności"
}
},
"reply_needed": {
"type": "noul",
"instructions": "Czy klient oczekuje odpowiedzi?"
}
}
}W polu answers znajdziesz wynik każdego pytania pod jego nazwą. choice zwraca klucz opcji, noul — prawdopodobieństwo „tak”. Odpowiedź zawiera też model oraz usage z informacją o liczbie pytań, tokenach i czasie obliczenia.
statequestionsanswersTo definicja zapytania, nie wynik pomiaru. W tej prezentacji nie wywołujemy modelu.
GET /health Stan usługiGET /v1/models Informacje o załadowanym modeluPOST /v1/basal Alias API decyzjiMCP to standard łączenia aplikacji AI z narzędziami. Silnik 2.0 udostępnia własny serwer MCP: agent może poprosić basal o decyzję przez to samo połączenie, przez które korzysta z innych narzędzi.
decideStan, pytanie i opcje. Obsługuje choice, noul, score oraz multi. Zwraca wynik pytania i nazwę modelu.
decide_manyPełna mapa questions jak w HTTP API. Obsługuje także act z kosztami i max_error, typ tool oraz facts. Zwraca answers, model i usage.
Oba narzędzia wyłącznie zwracają decyzje. Nie wykonują poleceń, nie uruchamiają innych narzędzi i nie generują ich argumentów. Wykonanie oraz sprawdzenie uprawnień należą do aplikacji korzystającej z MCP.
basal-serve \
--model Remek/basal-2.0-4.5B \
--mode fast --template-prefix off \
--host 127.0.0.1 --port 8000 --mcp onMCP wymaga opcjonalnych zależności basal[mcp]. Domyślnie jest wyłączone. Po włączeniu endpoint /mcp działa przez Streamable HTTP na tym samym porcie i korzysta z tej samej kolejki co /v1/systemone.
W kliencie obsługującym Streamable HTTP dodaj adres http://127.0.0.1:8000/mcp. Przykład dla Claude Code:
claude mcp add --transport http basal http://127.0.0.1:8000/mcpJeżeli klient uruchamia narzędzia jako lokalne procesy, użyj mostka basal-mcp. Zastąp ścieżkę do programu własną ścieżką bezwzględną:
{
"mcpServers": {
"basal": {
"command": "/path/to/basal-env/bin/basal-mcp",
"args": ["--url", "http://127.0.0.1:8000"]
}
}
}Mostek przekazuje zapytania do uruchomionego serwera; nie ładuje drugiej kopii modelu.
Argumenty wywołania narzędzia decide_many. Definicje narzędzi są opcjami do wyboru; basal nie uruchamia tu żadnego z nich.
{
"state": "Klient pyta, gdzie jest zamówienie ZAM-42. Status nie został jeszcze sprawdzony.",
"questions": {
"next_step": {
"type": "tool",
"instructions": "Które narzędzie jest potrzebne teraz?",
"tools": [
{
"name": "get_order_status",
"description": "Odczytuje aktualny status zamówienia.",
"inputSchema": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"]
}
},
{
"name": "list_products",
"description": "Wyświetla katalog dostępnych produktów.",
"inputSchema": {"type": "object", "properties": {}}
}
]
},
"missing_order_id": {
"type": "noul",
"instructions": "Czy brakuje numeru zamówienia?"
}
}
}Typ tool zwraca nazwę wybranego narzędzia lub opcję answer_directly, ask_user albo none. To agent uzupełnia argumenty i decyduje o wykonaniu zgodnie z uprawnieniami.
Model na własnym urządzeniu. Możesz uruchomić basal na HP ZGX Nano i połączyć klientów przez tunel SSH lub własną bramę. Serwer nie ma wbudowanego uwierzytelniania; dostęp z sieci kontrolujesz poza nim. Przetwarzanie w basal pozostaje lokalne, ale agent korzystający z chmurowego LLM może osobno wysyłać do niego swój kontekst.
Zakres obecnego MCP. Narzędzia przyjmują stan tekstowy lub JSON. Nie mają parametru media: obrazy i dźwięk dla basal-omni przesyłasz przez HTTP API. MCP i typ tool są eksperymentalne; trafność decyzji sprawdź na własnych zadaniach.
Najważniejsze opcje serwera. Wszystkie flagi i ich wartości sprawdzisz przez basal-serve --help.
| Opcja | Do czego służy |
|---|---|
--model / --mode | Repozytorium lub lokalny katalog wag oraz backend obliczeń. Każdy proces serwera ładuje wybrany model. |
--calibration | Własny plik kalibracji. Domyślnie serwer wybiera plik dla silnika, jeśli jest dostarczony, albo podstawowy CALIBRATION.json. |
--soam on | Wspólny stan dla wielu pytań i kolejności opcji. Domyślnie włączone; efekty zależą od backendu i zapytania. |
--max-batch--batch-window-ms | Łączenie równoległych zapytań w partie. Domyślnie maksymalnie 64, okno pod obciążeniem 3 ms; bez kolejki odpowiedź jest liczona od razu. |
--scheduler | Porządkowanie długich i krótkich zapytań w silniku CUDA. Wyłączenie przywraca obsługę według kolejności nadejścia. |
--deterministic | Powtarzalne odpowiedzi na tej samej maszynie, bez łączenia żądań różnych klientów. Dotyczy silników działających wewnątrz procesu i może zmniejszyć przepustowość. |
--context-overflow | truncate skraca środek zbyt długiego stanu i raportuje to w usage.truncated; refuse odrzuca takie zapytanie. |
--template-prefix off | Zalecane dla basal-2.0 4.5B: pamięć podręczna szablonu nie przeszła testu tego modelu. Mini i max mogą korzystać z ustawienia auto. |
--log-decisions | Zapis prawdopodobieństw w pliku JSONL do analizy działania procesu i późniejszego wykorzystania informacji zwrotnej. |
--mcp on--media on | Opcjonalny interfejs dla agentów albo obsługa obrazów i audio w HTTP API basal-omni. Obie funkcje są domyślnie wyłączone i wymagają odpowiednich zależności. |
max_error w pytaniach act i tool korzysta z progów pliku kalibracji. Brak odpowiedniego progu oznacza przekazanie decyzji człowiekowi. Cel 5% nie gwarantuje takiego błędu na nowych danych — sprawdź pokrycie i trafność we własnym procesie.
basal-calibrate dopasowuje temperatury i progi na oznaczonych przykładach, z użyciem wybranego silnika. To osobny krok; sam serwer nie uczy się automatycznie z ruchu.
Tryb --think auto dotyczy tylko basal-2.0 4.5B, wymaga vLLM i jest domyślnie wyłączony. W Werdykcie pogarszał wynik. evidence wymaga osobnej głowicy, której modele basal-2.0 nie dostarczają.