KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Bramki danych i modelu
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- W PermissionAndModelGates przypisz każdą odmowę do deklaracji, uprawnienia albo polityki danych.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
Uprawnienie i polityka danych są odrębnymi warunkami. Walidacja może odrzucić model lub narzędzie przed jakąkolwiek próbą wykonania. Zapisane diagnostyki opisują właśnie te bramki; nie są symulowaną rozmową z modelem.
Praca z kodem źródłowym
Bramki uprawnień i modelu (bez prawdziwego modelu)
`kret ai ask` pokazuje bramki przed jakimkolwiek połączeniem: bez przyznanych `kretai.use`/`kretai.model.use` → `KCS-KAI-0302`; z przyznaniem, ale bez lokalnego serwera modeli → `KCS-KAI-0301`. Oba wyniki są odmową — żadne dane nie opuszczają komputera.
kretai "1.0"
// Model lokalny: serwer modeli na tym komputerze (protokół chat/completions — llama.cpp server, Ollama, LM Studio).
// Polityka „local-only”: brama wymusza, żeby połączenie kończyło się na adresie pętli zwrotnej — dane nie opuszczają komputera.
model local.small {
provider "local"
name "qwen2.5:7b"
endpoint "http://127.0.0.1:11434"
dataPolicy "local-only"
maxOutputTokens 1024
timeout 2min
}
tool counter.read {
description "Odczytuje wartość licznika o podanej nazwie."
handler "Tools.readCounter"
parameter name String "Nazwa licznika, np. orders"
returns "Int64"
permissions {
kretdb.open
kretdb.read
}
sideEffects "none"
}
tool counter.add {
description "Zwiększa licznik o podaną wartość i zwraca nowy stan."
handler "Tools.addCounter"
parameter name String "Nazwa licznika"
parameter amount Int64 "O ile zwiększyć"
returns "Int64"
permissions {
kretdb.open
kretdb.read
kretdb.write
}
sideEffects "write"
requiresConfirmation true
}
// Agent tylko do odczytu.
agent reader {
model local.small
system "Odpowiadasz krótko i tylko na podstawie danych z narzędzi."
tools counter.read
permissions {
kretdb.open
kretdb.read
}
limits {
maxSteps 4
maxToolCalls 8
timeout 2min
}
}
// Agent, który może zmieniać dane — każde wywołanie narzędzia zapisującego wymaga potwierdzenia.
agent assistant {
model local.small
system "Pomagasz prowadzić liczniki. Zanim coś zmienisz, sprawdź obecny stan."
tools counter.read counter.add
delegates reader
permissions {
kretdb.open
kretdb.read
kretdb.write
}
limits {
maxSteps 8
maxToolCalls 16
timeout 5min
maxTokens 200000
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kretai "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.// Model lokalny: serwer modeli na tym komputerze (protokół chat/completions — llama.cpp server, Ollama, LM Studio).Komentarz autora; nie jest wykonywany.// Polityka „local-only”: brama wymusza, żeby połączenie kończyło się na adresie pętli zwrotnej — dane nie opuszczają komputera.Komentarz autora; nie jest wykonywany.model local.small {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.provider "local"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.name "qwen2.5:7b"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.endpoint "http://127.0.0.1:11434"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.dataPolicy "local-only"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxOutputTokens 1024Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.timeout 2minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.tool counter.read {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.description "Odczytuje wartość licznika o podanej nazwie."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.handler "Tools.readCounter"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.parameter name String "Nazwa licznika, np. orders"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns "Int64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.sideEffects "none"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.tool counter.add {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.description "Zwiększa licznik o podaną wartość i zwraca nowy stan."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.handler "Tools.addCounter"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.parameter name String "Nazwa licznika"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.parameter amount Int64 "O ile zwiększyć"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns "Int64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.sideEffects "write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.requiresConfirmation trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.// Agent tylko do odczytu.Komentarz autora; nie jest wykonywany.agent reader {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.model local.smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.system "Odpowiadasz krótko i tylko na podstawie danych z narzędzi."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.tools counter.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.maxSteps 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxToolCalls 8Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.timeout 2minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.// Agent, który może zmieniać dane — każde wywołanie narzędzia zapisującego wymaga potwierdzenia.Komentarz autora; nie jest wykonywany.agent assistant {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.model local.smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.system "Pomagasz prowadzić liczniki. Zanim coś zmienisz, sprawdź obecny stan."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.tools counter.read counter.addOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.delegates readerOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.maxSteps 8Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxToolCalls 16Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.timeout 5minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxTokens 200000Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Oczekiwany wynik: Oba polecenia kończą się kodem 1 z właściwym kodem KCS. To jest poprawne zachowanie bramek.
Typowy błąd: Uruchamianie tego przykładu przy działającym lokalnym serwerze modeli zmieni drugi wynik — wtedy test przestaje być „bez modelu”. Prawdziwy model wymaga osobnej zgody właściciela.
Instrukcja, wersje i zapisane wyniki →Materiały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KretAI — API / CLI
KretAI — API / CLI
Polski
| API / polecenie | Opis |
|---|---|
kret ai ask <projekt> --agent <n> --prompt <t> --data <d> [--grant …] [--approve-writes] | agent z modelem lokalnym; bez przyznania → KCS-KAI-0302, bez serwera → KCS-KAI-0301 |
kret check | walidacja deklaracji i zgodności narzędzi z KretS |
KretAI — specyfikacja (zakres kontraktu 1.0)
KretAI — specyfikacja (zakres kontraktu 1.0)
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretai-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Źródła normatywne (kopie w Sources/, kolejność pierwszeństwa: decyzje właściciela → zamrożony kontrakt → kod SDK → testy):
LANGUAGE_FREEZE_1_0/04_KRETAI_SPECIFICATION.md- SDK
04_Languages/KretAi/README.md
Elementy języka
| Element | Stan w KretAI |
|---|---|
| Struktura pliku | kretai "1.0", potem bloki model, tool, agent. |
| Rozszerzenie | .kretai. |
| Komentarze | //. |
| Typy parametrów narzędzi | String Int64 Float64 Bool. |
| Logika | brak — narzędzia to funkcje KretS. |
Zakres poza kontraktem / ograniczenia
- oczekiwanie działania prawdziwego modelu (NOT_RUN; KretAI 1.1/1.2)
- użycie w Core (DISABLED do decyzji KCS)
- wpisywanie kluczy API w plikach (tylko odwołanie do Vault)
- KretAI 1.1: model lokalny (test na serwerze modeli, KCS dla
kretai.*). - KretAI 1.2: modele zdalne (decyzja FB-05, Vault).
- KretAI 1.x: narzędzia w osobnym procesie, strumieniowanie.
- Stary walidator JSON
Kret.Formats.AiContractValidator(rc.1) — LEGACY.
Pełna referencja konstrukcji: SYNTAX_REFERENCE.md.
KretAI — samouczek INTERMEDIATE
KretAI — samouczek INTERMEDIATE
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretai-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Cel: moduły, łączenie funkcji, dane, konfiguracja, komunikacja, obsługa błędów, interfejsy SDK.
Narzędzia: kret = <SDK>\Compiler\kret.exe (SDK 1.0.0-rc.3+kret.local.3), kretui-host = <SDK>\UiHost\kretui-host.exe. {DATA}/{OUT} = nowe, puste katalogi.
1. Bramki uprawnień i modelu (bez prawdziwego modelu) (KRETAI-I01-PermissionAndModelGates)
Projekt: ../../Examples/INTERMEDIATE_PermissionAndModelGates/ · klasyfikacja VALIDATION_ONLY · Playground LOCAL_VALIDATE
Kroki (katalog roboczy: katalog przykładu):
kret ai ask . --agent assistant --prompt test --data {DATA}/a— oczekiwany błąd — w wyniku:KCS-KAI-0302kret ai ask . --agent assistant --prompt test --data {DATA}/b --grant kretai.use,kretai.model.use,kretdb.open,kretdb.read,kretdb.write,logs.own.write— oczekiwany błąd — w wyniku:KCS-KAI-0301
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
W PermissionAndModelGates przypisz każdą odmowę do deklaracji, uprawnienia albo polityki danych.
Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.Podpowiedzi
- KretAI (w SDK `KretAi`) deklaruje modele, narzędzia (funkcje KretS) i agentów. Zamrożone są deklaracje, walidacja oraz bramki uprawnień i polityki danych. **Wykonanie z prawdziwym modelem nie należy do kontraktu 1.0** (KretAI 1.1+, NOT_RUN). W Core KretAI jest DISABLED.
- Odczytaj ograniczenia i oczekiwane błędy z dostarczonego samouczka; check i run są oddzielnymi krokami.
Omówienie rozwiązania
Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. Uprawnienie i polityka danych są odrębnymi warunkami. Walidacja może odrzucić model lub narzędzie przed jakąkolwiek próbą wykonania. Zapisane diagnostyki opisują właśnie te bramki; nie są symulowaną rozmową z modelem.
Podsumowanie i następny krok
Uprawnienie i polityka danych są odrębnymi warunkami. Walidacja może odrzucić model lub narzędzie przed jakąkolwiek próbą wykonania. Zapisane diagnostyki opisują właśnie te bramki; nie są symulowaną rozmową z modelem.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →