Skip to content

Consile-ApS/self-improving-agent

Repository files navigation

Dansk self-improving agent — POC

Et åbent referenceimplementeret mønster for self-improving agents på dansk B2B-domæne, oversat 1:1 fra OpenAI/Thrive's Tax AI cookbook.

Domænet i POC'en er fradragsklassificering af bilag (driftsomkostning, repræsentation, personalegode, etc.) — men selve loopet er domæne-agnostisk. Pointen er ikke at klassificere fradrag rigtigt, men at vise hvordan et trace → eval → handoff → review → deploy-loop bygges, så agenten beviseligt bliver bedre over tid.

Disclaimer: Dette er en POC til at demonstrere et arkitekturmønster. Den er ikke godkendt skatterådgivning, og må ikke bruges som beslutningsgrundlag i reelle skattesager.

Hvorfor

OpenAI's case med Thrive Holdings viste 97 % nøjagtighed på 7.000 amerikanske selvangivelser. Tallet er imponerende, men det interessante er mønstret bag: et loop hvor revisorernes rettelser systematisk bliver til evals og kodeforbedringer. Det mønster er bærbart til mange danske B2B-domæner — revision, jura, bogføring, forsikring, lønadministration — og kan bygges af et mindre team i dag.

Læs den underliggende analyse på consile.dk/ai.

De tre søjler

Søjle Hvad Hvor i repo
1. Production traces OpenTelemetry JSONL pr. agent-run src/traces/
2. Practitioner feedback → evals Reviewer-UI promoverer gentagne rettelser src/reviewer/, evals/
3. Agent-agnostisk handoff Codex / Claude Code / Cursor kan læse samme handoff agent_handoff/

Se ARCHITECTURE.md for det fulde billede.

Quickstart

Offline (ingen API-nøgler, ingen Docker) — for at se loopet virke

python -m venv .venv
.venv/Scripts/python.exe -m pip install -e . # eller `uv sync`
LLM_PROVIDER=mock PYTHONPATH=. bash scripts/demo_full_loop.sh

Forventet output: Baseline 82.5 % → Post-handoff 97.5 % (+15 pp).

Fuld stack (med API + RAG)

# 1. Start postgres+pgvector og ollama
docker compose up -d
docker exec -it $(docker ps -qf name=ollama) ollama pull nomic-embed-text

# 2. Installer
uv sync
cp .env.example .env  # tilføj ANTHROPIC_API_KEY (default) eller OPENAI_API_KEY

# 3. Kør hele loopet manuelt
./scripts/01_ingest_rules.sh           # indekser DJV + LL § 8 i pgvector
./scripts/02_run_pilot.sh              # klassificer bilag → runs/pilot.jsonl
./scripts/03_collect_corrections.sh    # promovér ≥1 fejl-mønster til eval
./scripts/04_generate_handoff.sh       # producér agent_handoff/handoff_v001.md
./scripts/05_run_evals.sh              # kør promptfoo eval suite

# 4. Reviewer-UI (i stedet for auto_review)
uv run python -m src.reviewer.app --run pilot   # åbn http://localhost:8000

Loopet, i konkrete tal (fra scripts/demo_full_loop.sh)

Baseline (v001 prompt):                82.5 % accuracy  (33/40)
Efter handoff (v002 prompt):           97.5 % accuracy  (39/40)
Delta:                                +15.0 percentpoint
Auto-promoverede eval-cases:           1
Citation-coverage:                    100 %
Output-contract violations:             0

Tallene falder fordi mock-provideren i LLM_PROVIDER=mock har et indbygget fejlmønster — den klassificerer forretningsmiddage med kunder som DRIFT_FULDT i stedet for REPRAESENTATION_25. Loopet finder mønstret, promoterer det til en eval, og v002-prompten (foreslået af handoff'et) lukker hullet. Det er det samme mønster som beskrevet i OpenAI's case med Thrive Holdings.

Kør handoff'et med din egen agent

Loopet producerer en agent-agnostisk agent_handoff/handoff_v{n}.md. Se eksempler:

Filformatet er en simpel markdown-kontrakt med mål, ikke-mål, eval-pass-betingelser og evidens fra traces. Enhver kodningsagent med repo-adgang kan læse den.

Udvid til dit eget domæne

POC'en er bygget sådan at domæne-laget kan udskiftes. For at adde et nyt domæne (fx momsklassificering):

  1. Tilføj regler under data/rules/
  2. Tilføj syntetiske cases i data/synthetic_expenses.csv (eller en søster-fil)
  3. Tilføj eval-cases i evals/cases/
  4. Trace-skemaet og loopet ændres ikke

Licens

Apache 2.0. Se LICENSE.

About

POC: self-improving agent-loop pattern (trace -> eval -> handoff) applied to Danish tax deduction classification. Reference implementation inspired by OpenAI/Thrive Tax AI.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors