feat(logic): generator promptow do LLM + budzetowanie (LOG-29, LOG-30) #9

Merged
gitea merged 1 commits from feat/log29-30-prompt-generator into master 2026-07-21 16:44:20 +00:00
Owner

Pierwszy krok ustalonej kolejnosci. Prompt z podgladem jest uzyteczny od razu, bez
integracji API
— wysylke do modelu doda LOG-31.

LOG-29 — generator promptu (app/prompt.py)

Dwa profile: natal (ekran Interpretacje) i period (ekran Kalendarz).
Prompt po polsku, uklad: zadanie -> dane horoskopu (pozycje, osie, Lots, aspekty z orbami
i A/S, sekta, zodiak) -> wskazania z baz wg wagi -> instrukcje wyjscia -> zastrzezenie.

Twarde reguly wpisane w prompt (realizacja Twojego „odnoszacy sie do konkretnych wskazowek"):

  • kazda teza musi cytowac konkretny sygnifikator — teza bez wskazania jest niedopuszczalna,
  • zakaz wychodzenia poza dostarczone dane i korzystania z wiedzy spoza promptu,
  • przy sprzecznych wskazaniach model ma to powiedziec wprost, a nie wybierac jedno,
  • ton rzeczowy: bez wrozbiarstwa, bez straszenia, bez diagnoz medycznych.

Generowanie deterministyczne: ten sam horoskop + ten sam budzet = ten sam prompt.

LOG-30 — budzetowanie

Budzety: concise ~4 tys. / medium ~12 tys. / extensive ~30 tys. znakow.
Kolejnosc redukcji: dedup -> grupowanie z licznikiem -> sortowanie wg punktacji sily
(LOG-21) -> obciecie ogona -> skracanie dlugich opisow
. Jednostka obciecia to cale
wskazanie
— nigdy nie ucinamy w polowie. Statystyki mowia, ile weszlo, ile pominieto i
jaki byl prog; informacja o pominieciu trafia takze do tresci promptu, zeby model
wiedzial, ze oglada wybor, a nie calosc.

POST /chart/prompt zwraca sam prompt + statystyki. Nie wola zadnego modelu.

Prezentacja

Przycisk Generuj prompt (AI) na obu ekranach, wybor budzetu, pole z promptem i
kopiowanie (z fallbackiem dla http bez secure context — clipboard API tam nie dziala).

Blad znaleziony przy tescie e2e (wart uwagi)

Pierwsza wersja przy padnietej warstwie danych podstawiala pusta liste zdarzen — przez co
prognoza okresowa traciła cala os czasu i stawala sie bezuzyteczna. Warstwa danych dokłada
wylacznie WSKAZANIA; horoskop i os czasu sa czysto obliczeniowe i musza przetrwac jej awarie.
Poprawione i zabezpieczone testem.

Weryfikacja

  • 19 nowych testow; calosc 118 passed / 1 skipped (bylo 99).
  • Niezmienniki redukcji: wieksze budzety biora wiecej, najslabsze odpadaja pierwsze
    (min_score_included >= max_score_omitted), grupowanie zlewa identyczne opisy, brak
    ucinania w polowie pozycji, determinizm.
  • E2E w przegladarce: natal 3340 znakow (~835 tokenow); period 15 zdarzen, 4728 znakow —
    z pelna osia czasu mimo wylaczonej warstwy danych.

Dalej

LOG-31 (wysylka do OpenAI/Anthropic) — czeka na rozstrzygniecie Q-12 (zgoda wlasciciela
baz) i Q-13 (dostawca/model + limit kosztow) z PR #8.

Pierwszy krok ustalonej kolejnosci. Prompt z podgladem jest **uzyteczny od razu, bez integracji API** — wysylke do modelu doda LOG-31. ## LOG-29 — generator promptu (`app/prompt.py`) Dwa profile: **natal** (ekran Interpretacje) i **period** (ekran Kalendarz). Prompt po polsku, uklad: zadanie -> dane horoskopu (pozycje, osie, Lots, aspekty z orbami i A/S, sekta, zodiak) -> wskazania z baz wg wagi -> instrukcje wyjscia -> zastrzezenie. Twarde reguly wpisane w prompt (realizacja Twojego „odnoszacy sie do konkretnych wskazowek"): - **kazda teza musi cytowac konkretny sygnifikator** — teza bez wskazania jest niedopuszczalna, - zakaz wychodzenia poza dostarczone dane i korzystania z wiedzy spoza promptu, - przy sprzecznych wskazaniach model ma to **powiedziec wprost**, a nie wybierac jedno, - ton rzeczowy: bez wrozbiarstwa, bez straszenia, bez diagnoz medycznych. Generowanie **deterministyczne**: ten sam horoskop + ten sam budzet = ten sam prompt. ## LOG-30 — budzetowanie Budzety: `concise` ~4 tys. / `medium` ~12 tys. / `extensive` ~30 tys. znakow. Kolejnosc redukcji: **dedup -> grupowanie z licznikiem -> sortowanie wg punktacji sily (LOG-21) -> obciecie ogona -> skracanie dlugich opisow**. Jednostka obciecia to **cale wskazanie** — nigdy nie ucinamy w polowie. Statystyki mowia, ile weszlo, ile pominieto i jaki byl prog; informacja o pominieciu trafia **takze do tresci promptu**, zeby model wiedzial, ze oglada wybor, a nie calosc. `POST /chart/prompt` zwraca sam prompt + statystyki. Nie wola zadnego modelu. ## Prezentacja Przycisk **Generuj prompt (AI)** na obu ekranach, wybor budzetu, pole z promptem i kopiowanie (z fallbackiem dla http bez secure context — clipboard API tam nie dziala). ## Blad znaleziony przy tescie e2e (wart uwagi) Pierwsza wersja przy padnietej warstwie danych podstawiala **pusta liste zdarzen** — przez co prognoza okresowa traciła **cala os czasu** i stawala sie bezuzyteczna. Warstwa danych dokłada wylacznie WSKAZANIA; horoskop i os czasu sa czysto obliczeniowe i musza przetrwac jej awarie. Poprawione i **zabezpieczone testem**. ## Weryfikacja - **19 nowych testow**; calosc **118 passed / 1 skipped** (bylo 99). - Niezmienniki redukcji: wieksze budzety biora wiecej, najslabsze odpadaja pierwsze (`min_score_included >= max_score_omitted`), grupowanie zlewa identyczne opisy, brak ucinania w polowie pozycji, determinizm. - **E2E w przegladarce**: natal 3340 znakow (~835 tokenow); period 15 zdarzen, 4728 znakow — z pelna osia czasu mimo wylaczonej warstwy danych. ## Dalej LOG-31 (wysylka do OpenAI/Anthropic) — czeka na rozstrzygniecie **Q-12** (zgoda wlasciciela baz) i **Q-13** (dostawca/model + limit kosztow) z PR #8.
gitea added 1 commit 2026-07-21 15:32:21 +00:00
feat(logic): generator promptow do LLM + budzetowanie (LOG-29, LOG-30)
Testy / Testy warstwy logicznej (silnik) (push) Successful in 10m52s
Testy / Build obrazu silnika B (swisseph) (push) Failing after 1m8s
Testy / Kontrola składni wszystkich warstw (push) Successful in 1m21s
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 11m14s
Testy / Build obrazu silnika B (swisseph) (pull_request) Failing after 29s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 20s
80c008f076
Pierwszy krok ustalonej kolejnosci: prompt z podgladem, uzyteczny od razu
BEZ integracji API (ta przyjdzie w LOG-31).

LOG-29 — app/prompt.py:
- profil natal (ekran Interpretacje) i period (ekran Kalendarz),
- prompt po polsku: zadanie -> dane horoskopu (pozycje, osie, Lots, aspekty,
  sekta, zodiak) -> wskazania z baz wg wagi -> instrukcje -> zastrzezenie,
- twarde reguly: kazda teza musi cytowac konkretny sygnifikator, zakaz
  wychodzenia poza dostarczone dane, jawne wskazanie sprzecznosci,
- deterministyczny: ten sam horoskop + budzet = ten sam prompt.

LOG-30 — redukcja do budzetu (concise/medium/extensive):
dedup -> grupowanie z licznikiem -> sortowanie wg punktacji sily (LOG-21) ->
obciecie ogona (jednostka = CALE wskazanie) -> skracanie dlugich opisow.
Statystyki zwracaja ile weszlo/pominieto i jaki byl prog — takze w tresci
promptu, zeby model wiedzial, ze widzi wybor.

POST /chart/prompt — zwraca sam prompt + statystyki, bez wolania modelu.

Prezentacja: przycisk „Generuj prompt (AI)" na obu ekranach, wybor budzetu,
pole z promptem + kopiowanie (z fallbackiem dla http bez secure context).

WAZNE (znalezione przy tescie e2e): padnieta warstwa danych zabiera tylko
wskazania — horoskop i OS CZASU zostaja, bo sa czysto obliczeniowe. Wczesniej
blad bazy gubil cala osie czasu, czyniac prognoze okresowa bezuzyteczna.
Zabezpieczone testem.

Testy: 19 nowych, calosc 118 passed / 1 skipped. Zweryfikowane e2e w
przegladarce: profil natal (3340 znakow) i period (15 zdarzen, 4728 znakow).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea merged commit 04b26afa6d into master 2026-07-21 16:44:20 +00:00
gitea deleted branch feat/log29-30-prompt-generator 2026-07-21 16:44:23 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gitea/astrololo#9