{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"task\": {\n \"id\": 306,\n \"uuid\": \"216b4323-c1ad-4f97-b28f-d8de655bf43e\",\n \"title\": \"RAG: Prompt-Versionierung für deterministische Reproduzierbarkeit\",\n \"description\": \"# Auftrag\\n\\nImplementiere Prompt-Versionierung für nachvollziehbare LLM-Aufrufe.\\n\\n## Voraussetzungen\\n\\n**ERSTE AKTION:** Lese die Datei `\/var\/www\/CLAUDE.md` (Read-Tool)\\n\\n**Relevante Contracts:**\\n- `contracts_get(name=\\\"python-pipeline-contract_v1.0\\\")` - Python-Standards\\n- `contracts_get(name=\\\"db-access-security-protocol\\\")` - MCP-DB nutzen\\n\\n**Paradigmen (ZWINGEND):**\\n- DRY: Prompts zentral in DB, nicht im Code\\n- KISS: Einfache Versionsnummer\\n- YAGNI: Nur für Analyse-Prompts, nicht für Chat\\n\\n## Kontext\\n\\n**Referenz-Dokumentation:** `docs_get(id=100)` (RAG-Prozess, §6 Determinismus)\\n\\n**Problem:** Nicht-deterministische Schritte (Entity-Extraktion, Semantik-Analyse) sind nicht reproduzierbar, weil Prompts nicht versioniert sind.\\n\\n**Bestehendes:** `ki_content.prompts` Tabelle existiert\\n\\n## Aufgabe\\n\\n### 1. Schema erweitern\\n\\n```sql\\ndb_execute(statement=\\\"\\\"\\\"\\nALTER TABLE prompts\\n ADD COLUMN IF NOT EXISTS version VARCHAR(20) DEFAULT '1.0',\\n ADD COLUMN IF NOT EXISTS is_active BOOLEAN DEFAULT TRUE,\\n ADD COLUMN IF NOT EXISTS use_case ENUM('entity_extraction', 'relation_extraction', \\n 'semantic_analysis', 'statement_extraction', 'chat', 'content') DEFAULT 'chat'\\n\\\"\\\"\\\", database=\\\"ki_content\\\")\\n```\\n\\n### 2. chunk_semantics erweitern\\n\\n```sql\\ndb_execute(statement=\\\"\\\"\\\"\\nALTER TABLE chunk_semantics\\n ADD COLUMN IF NOT EXISTS prompt_id INT,\\n ADD COLUMN IF NOT EXISTS prompt_version VARCHAR(20),\\n ADD FOREIGN KEY (prompt_id) REFERENCES prompts(id)\\n\\\"\\\"\\\", database=\\\"ki_content\\\")\\n```\\n\\n### 3. Python-Integration\\n\\nIn `\/var\/www\/scripts\/pipeline\/analyze.py`:\\n\\n```python\\ndef get_active_prompt(use_case: str) -> dict:\\n \\\"\\\"\\\"Get active prompt for use case from database.\\\"\\\"\\\"\\n return db.get_prompt_by_use_case(use_case)\\n\\ndef analyze_chunk_semantics(chunk_id: int, text: str):\\n prompt_data = get_active_prompt('semantic_analysis')\\n \\n # LLM-Aufruf mit Prompt\\n result = call_llm(prompt_data['content'], text)\\n \\n # Speichern mit Prompt-Referenz\\n db.save_chunk_semantics(\\n chunk_id=chunk_id,\\n summary=result['summary'],\\n # ...\\n prompt_id=prompt_data['id'],\\n prompt_version=prompt_data['version']\\n )\\n```\\n\\n### 4. Initiale Prompts anlegen\\n\\n```sql\\nINSERT INTO prompts (name, content, version, use_case, is_active) VALUES\\n('Entity Extraction v1', 'Extrahiere Entitäten...', '1.0', 'entity_extraction', 1),\\n('Semantic Analysis v1', 'Analysiere den Text...', '1.0', 'semantic_analysis', 1),\\n('Statement Extraction v1', 'Extrahiere SPO-Tripel...', '1.0', 'statement_extraction', 1);\\n```\\n\\n## Validierung\\n\\n```bash\\n# Schema prüfen\\ndb_describe(table=\\\"prompts\\\", database=\\\"ki_content\\\")\\ndb_describe(table=\\\"chunk_semantics\\\", database=\\\"ki_content\\\")\\n\\n# Python Check\\n\/opt\/scripts\/python-check.sh\\n\\n# Prompt-Liste\\ndb_select(query=\\\"SELECT id, name, version, use_case, is_active FROM prompts\\\", database=\\\"ki_content\\\")\\n```\\n\\n## Qualitätskriterien\\n\\n- [ ] prompts.version Feld existiert\\n- [ ] chunk_semantics.prompt_id Feld existiert\\n- [ ] get_active_prompt() implementiert\\n- [ ] Mindestens 3 Prompts für use_cases angelegt\\n- [ ] analyze.py nutzt Prompt-Versionierung\",\n \"type\": \"ai_task\",\n \"status\": \"in_progress\",\n \"created_by\": \"mcp-tasks\",\n \"created_by_type\": \"ai\",\n \"parent_task_id\": null,\n \"due_date\": null,\n \"created_at\": \"2025-12-24T15:02:55.247455\",\n \"updated_at\": \"2025-12-24T16:15:25.664544\",\n \"completed_at\": null,\n \"metadata\": {}\n },\n \"message\": \"Task #306 status changed: pending -> in_progress\"\n}"
}
]
}