BASAL-SERVE / SILNIK 2.0

Twoje modele.
Jeden interfejs decyzyjny.

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

OD PYTANIA DO DECYZJI
AplikacjaWorkflowAgent AI
TWÓJ SERWERbasal-serve
lokalnie

Zapytania · kolejka · kalibracja

TEKSTbasal-2.0
TEKST / OBRAZ / DŹWIĘKbasal-omni

Jeden wybrany model na proces serwera

ODPOWIEDŹ DLA TWOJEGO KODUDecyzja + prawdopodobieństwa
choicenoulscoremultiacttool
01 / WARSTWA MIĘDZY MODELEM A APLIKACJĄ

Od wag do działającej usługi.

Wagi przechowują to, czego nauczył się model. Silnik określa, jak z tej wiedzy korzysta Twój program.

01

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.

02

Współdzieli obliczenia

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.

03

Zwraca wynik w kontrakcie API

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.

02 / PYTASZ O WYNIK, NIE O AKAPIT

Sześć sposobów na decyzję.

Łą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.

choice

Jedna z opcji

Który zespół powinien obsłużyć zgłoszenie? Dostajesz wybraną opcję i rozkład prawdopodobieństw.

noul

Tak czy nie

Czy opis zawiera numer zamówienia? Wynikiem jest prawdopodobieństwo odpowiedzi „tak”.

score

Ocena na skali

Jak pilna jest sprawa? Definiujesz uporządkowane poziomy, a serwer zwraca rozkład i wartość oczekiwaną poziomu.

multi

Wiele pasujących etykiet

Reklamacja, dostawa i zwrot mogą dotyczyć jednej wiadomości. Każda etykieta ma niezależne prawdopodobieństwo; ich suma nie musi wynosić 100%.

acteksperymentalne

Działanie z uwzględnieniem kosztu

Podajesz 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.

tooleksperymentalne

Następne narzędzie agenta

Przekazujesz 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.

Fakty przed decyzją. "facts": "auto" uzupełnia polski stan o obliczone daty i kwoty. Kod wykonuje rachunki; model ocenia znaczenie faktów w opisanych zasadach procesu.
03 / WYBIERASZ ŚRODOWISKO

Serwer, Mac albo CPU.

Ten sam punkt wejścia do decyzji, różne sposoby wykonania obliczeń. Tryb dobierasz do sprzętu, wag i ruchu aplikacji.

ŚrodowiskoTrybCo warto wiedzieć
NVIDIA GPU · tekstfast
fast-nocompile
Główny silnik PyTorch. Kompilacja i CUDA graphs w fast; szybszy start bez kompilacji w fast-nocompile.
NVIDIA GPU · FP8fp8Porty FP8 na zgodnym GPU. HP ZGX Nano (NVIDIA DGX Spark) wymaga stosu CUDA dobranego do Blackwell.
Apple Siliconmlx
mps
MLX z portami 8-bit albo PyTorch na GPU Maca. Używaj kalibracji właściwej dla wybranego silnika.
CPU i lokalne pliki GGUFeager --device cpu
gguf / ollama / llamacpp
PyTorch na CPU lub pliki GGUF. Dla Ollama i llama.cpp basal-serve łączy się z osobno uruchomionym serwerem.
Alternatywne serwery CUDAvllm
sglang
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ękeager --media onNVIDIA 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.

Uruchomienie tekstowego basal-2.0 na GPU

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 8000
Uruchomienie na Macu z MLX

Wymaga 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 8000
Uruchomienie basal-omni z obrazem i dźwiękiem

Wymaga 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 8000
04 / DLA APLIKACJI I WORKFLOW

Jeden stan. Kilka pytań.

Wyślij JSON do POST /v1/systemone. W n8n wystarczy węzeł HTTP Request; w aplikacji — zwykły klient HTTP albo klient Python basal.

POST /v1/systemone
{
  "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?"
    }
  }
}

Odpowiedź gotowa do użycia w kodzie

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.

state
Fakty i zasady potrzebne do decyzji.
questions
Osobne pytania o wspólny kontekst.
answers
Typowane wyniki i prawdopodobieństwa.

To 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 decyzji
05 / MODEL CONTEXT PROTOCOL · EKSPERYMENTALNE

Agent pyta.
basal pomaga wybrać następny krok.

MCP 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.

  1. 01 / AGENTZbiera stan i opcje
  2. 02 / BASAL PRZEZ MCPZwraca decyzję i pewność
  3. 03 / AGENT LUB APLIKACJAWykonuje dozwoloną akcję
decide

Jedno pytanie

Stan, pytanie i opcje. Obsługuje choice, noul, score oraz multi. Zwraca wynik pytania i nazwę modelu.

decide_many

Kilka pytań o jeden stan

Peł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 / MCP
basal-serve \
  --model Remek/basal-2.0-4.5B \
  --mode fast --template-prefix off \
  --host 127.0.0.1 --port 8000 --mcp on

MCP 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.

Połączenie klienta MCP: HTTP albo stdio

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/mcp

Jeż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.

Przykład: wybór narzędzia i sprawdzenie brakujących danych

Argumenty wywołania narzędzia decide_many. Definicje narzędzi są opcjami do wyboru; basal nie uruchamia tu żadnego z nich.

MCP / decide_many
{
  "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.

06 / KONTROLA NAD WYKONANIEM

Ustawienia dopasowane do procesu.

Najważniejsze opcje serwera. Wszystkie flagi i ich wartości sprawdzisz przez basal-serve --help.

OpcjaDo czego służy
--model / --modeRepozytorium lub lokalny katalog wag oraz backend obliczeń. Każdy proces serwera ładuje wybrany model.
--calibrationWłasny plik kalibracji. Domyślnie serwer wybiera plik dla silnika, jeśli jest dostarczony, albo podstawowy CALIBRATION.json.
--soam onWspó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.
--schedulerPorządkowanie długich i krótkich zapytań w silniku CUDA. Wyłączenie przywraca obsługę według kolejności nadejścia.
--deterministicPowtarzalne 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-overflowtruncate skraca środek zbyt długiego stanu i raportuje to w usage.truncated; refuse odrzuca takie zapytanie.
--template-prefix offZalecane 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-decisionsZapis 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.

Próg jest regułą procesu

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.

Kalibracja na Twoich danych

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.

Eksperymenty mają swój zakres

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ą.

OD INTERFEJSU DO WDROŻENIA

Podłącz decyzję do swojego procesu.