Fact-Checking, Artikelschreiben und Argumentationsanalyse — lokal und kostengünstig.
  • TypeScript 96.8%
  • Shell 3.2%
Find a file
dschlueter 1d80740da3 docs(readme): Roadmap → To Do umbenannt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 05:07:14 +02:00
agenten fix(tests): Precision 50%→90%, Recall 90% — Prompt + Corpus-Fixes 2026-05-12 04:52:12 +02:00
docs feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
lib feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
tests fix(tests): Precision 50%→90%, Recall 90% — Prompt + Corpus-Fixes 2026-05-12 04:52:12 +02:00
types feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
.gitignore feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
AGENTS.md feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
BEDIENUNGSANLEITUNG.md feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
HANDOFF.md feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
package-lock.json feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
package.json feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
PI_PROMPT.md feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
README.md docs(readme): Roadmap → To Do umbenannt 2026-05-12 05:07:14 +02:00
TODO.md feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
tsconfig.json feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00
WORKLOG.md feat: Pi Text-Agent — initialer Commit (sauberes Repo) 2026-05-12 04:21:48 +02:00

Pi Text-Agent

Lokales Multi-Agenten-System für Fact-Checking, Artikelschreiben und Argumentationsanalyse. Läuft als Pi-Extension-Paket und als CLI. Zwei lokale KI-Backends: Ollama und llama.cpp (★ bevorzugt für Reasoning-Modelle), Webrecherche via Perplexity.


Was es kann

Artikel-Text
    │
    ├─► extract_claims_llama ★  → Welche Behauptungen stecken im Text?
    │
    ├─► verify_article_llama ★  → Welche Behauptungen sind wahr / falsch?
    │       └─► verify_claim_llama ★  → Einzelne Behauptung prüfen
    │
    ├─► write_article_llama ★   → Neuen Artikel nur aus verifizierten Fakten schreiben
    │
    └─► analyze_logic_llama ★   → Welche logischen Fehlschlüsse enthält der Text?

Suchanfrage
    └─► research_web            → Webrecherche via Perplexity

★ = llama.cpp-Backend (bevorzugt); Ollama-Varianten ohne Suffix ebenfalls verfügbar

Voraussetzungen

  • llama.cpp-Server mit Qwopus3.6-35B-A3B-v1-Q4_K_M.gguf auf Port 8000 (★ bevorzugtes Backend)
  • Ollama mit qwen3.5:27b und deepseek-r1:32b (Fallback-Backend + Logik-Analyse)
  • Perplexity API Key (PERPLEXITY_API_KEY) — für Webrecherche und Fact-Checking
  • Pi Coding Agent — für den Extension-Modus
  • Node.js ≥ 20 (empfohlen: v22 via nvm)
  • Optional: OpenRouter API Key (OPENROUTER_API_KEY) — für Cloud-Modelle
# llama.cpp-Server starten (GPU 2, Port 8000)
llama-server --model Qwopus3.6-35B-A3B-v1-Q4_K_M.gguf --host 0.0.0.0 --port 8000 -c 32768

# Ollama-Modelle laden (für ollama-logic-editor + Fallback)
ollama pull qwen3.5:27b
ollama pull deepseek-r1:32b

Schnellstart

cd ~/Pi_Agent_Projekts/text_agent

# ★ llama.cpp-Pipeline (empfohlen)
npx tsx agenten/llama-claim-extractor.ts "Die Inflationsrate betrug 2024 in Deutschland 3,2%."
npx tsx agenten/llama-verifier.ts "Die EZB hat den Leitzins im Juni 2024 gesenkt."
npx tsx agenten/llama-verify-article.ts --job-id mein-artikel "$(cat artikel.txt)"
npx tsx agenten/llama-writer.ts --from-job mein-artikel --style blog

# Fehlschlüsse analysieren (★ llama.cpp)
npx tsx agenten/llama-logic-editor.ts --only-fallacies "$(cat essay.txt)"

Agenten

Agent Pi-Tool Modell Kosten
llama-claim-extractor.ts extract_claims_llama Qwopus3.6-35B (llama.cpp) kostenlos
llama-verifier.ts verify_claim_llama Perplexity + Qwopus3.6 ~$0.0050.015/Claim
llama-verify-article.ts verify_article_llama Perplexity + Qwopus3.6 ~$0.050.15/Artikel
llama-writer.ts write_article_llama Qwopus3.6 (llama.cpp) kostenlos
ollama-claim-extractor.ts extract_claims qwen3.5:27b (Ollama) kostenlos
ollama-verifier.ts verify_claim Perplexity + qwen3.5:27b ~$0.0050.015/Claim
ollama-verify-article.ts verify_article Perplexity + qwen3.5:27b ~$0.050.15/Artikel
ollama-writer.ts write_article qwen3.5:27b (Ollama) kostenlos
llama-logic-editor.ts analyze_logic_llama Qwopus3.6 (llama.cpp) kostenlos
ollama-logic-editor.ts analyze_logic deepseek-r1:32b (Ollama) kostenlos
research-web.ts research_web Perplexity ~$0.0010.005

★ = llama.cpp-Backend, bevorzugt (kein Ollama-Timeout bei Reasoning-Modellen)


Job-Speicher

llama-verify-article.ts --job-id <slug> sichert jeden Schritt in ~/.pi/agent/jobs/:

~/.pi/agent/jobs/2026-04-16_mein-artikel/
├── input.txt         ← Originaltext
├── claims.json       ← Extrahierte Behauptungen
├── perplexity/
│   ├── c001.json     ← Perplexity-Ergebnis pro Claim (gecacht!)
│   └── c002.json
├── report.json       ← Verifikationsbericht
├── article.md        ← Fertiggestellter Artikel
└── meta.json         ← Status, Timestamps, Kosten

Bei Unterbrechung: denselben Befehl nochmals aufrufen. Bereits abgeschlossene Schritte — inklusive bereits bezahlter Perplexity-Anfragen — werden übersprungen.


Verzeichnisstruktur

text_agent/
├── agenten/           ← Agenten (Pi-Extension + CLI)
├── lib/
│   ├── perplexity.ts  ← Perplexity-API-Wrapper
│   ├── router.ts      ← Model-Router (lokal/cloud)
│   ├── logger.ts      ← File-Logger (~/.pi/agent/logs/)
│   ├── jobs.ts        ← Job-Speicher (~/.pi/agent/jobs/)
│   └── cache.ts       ← SHA256-Claim-Cache (~/.pi/agent/cache/perplexity/)
├── schemas/           ← JSON-Schema-Definitionen
├── tests/
│   ├── corpus/        ← 10 Testfälle (input.txt, expected.json, notes.md)
│   └── run_corpus.sh  ← Precision/Recall-Test-Runner
├── types/             ← TypeScript-Typ-Stubs
└── docs/
    └── ARCHITECTURE.md

Deployment als Pi-Extension

# Symlinks anlegen (einmalig)
mkdir -p ~/.pi/agent/extensions/fact-checker
ln -s ~/Pi_Agent_Projekts/text_agent/lib ~/.pi/agent/extensions/lib
for agent in ollama-claim-extractor llama-claim-extractor \
             ollama-verifier llama-verifier \
             ollama-verify-article llama-verify-article \
             ollama-logic-editor llama-logic-editor \
             ollama-writer llama-writer; do
  ln -s ~/Pi_Agent_Projekts/text_agent/agenten/${agent}.ts \
        ~/.pi/agent/extensions/fact-checker/${agent}.ts
done

# In Pi nach Änderungen
/reload

Dokumentation

Datei Inhalt
BEDIENUNGSANLEITUNG.md Ausführliche Nutzungsanleitung mit Beispielen
docs/ARCHITECTURE.md Technische Architektur, Datenfluß, VRAM-Details
AGENTS.md Arbeitsgrundlage für Pi Coding Agent
HANDOFF.md Aktueller Projektstand für Entwickler-Übergaben
TODO.md Offene Aufgaben nach Priorität

To Do

Priorität Feature Beschreibung
P1 Mehrsprachigkeit Ollama-Agenten --lang-Flag und mehrsprachige Prompts für alle ollama-*-Agenten (analog zu den llama.cpp-Varianten)
P1 Parallelisierung 3-Phasen-Pipeline: Claim-Extraktion sequenziell → Perplexity aller Fälle parallel → Batch-Synthese in einem llama.cpp-Aufruf; Ziel: ~75% kürzere Laufzeit
P2 Weggelassene Fakten erkennen Vergleich zwischen Originaltext und generiertem Artikel — Meldung wenn prüfbare Fakten im Artikel fehlen oder weggelassen wurden
P2 Fakten-Gewichtung Claims nach Relevanz und Belegbarkeit gewichten; wichtigere Fakten erhalten höheres Gewicht in Precision/Recall und im Artikel-Output

Technische Details

  • Sprache: TypeScript (ESM), keine Build-Schritte — direkt via npx tsx
  • llama.cpp: OpenAI-kompatibles API /v1/chat/completions, Schema als JSON-Literal im System-Prompt, /no_think-Prefix für Reasoning-Modelle
  • Ollama structured output: format: <JSON-Schema>, stream: false, num_ctx: 8192
  • Chunking: Texte > 4000 Zeichen werden automatisch in Abschnitte ≤ 3000 Zeichen aufgeteilt
  • Parallelität: Max. 5 gleichzeitige Perplexity-Anfragen; llama.cpp und Ollama sequenziell
  • Retry: 3 Versuche mit 15s Pause bei Verbindungsfehlern
  • Getestet auf: Ubuntu, 2× RTX 3090 (24 GB), Node.js v22