Protokoll #12982

ID12982
Zeitstempel2025-12-24 15:02:55.194602
Clientroot
IP145.224.72.140
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens1,875 (Input: 856, Output: 1,019)
Dauer151 ms
Request-Zeit2025-12-24 15:02:55.194602
Response-Zeit2025-12-24 15:02:55.345268

Request

{
    "event": "PreToolUse",
    "tool_name": "mcp__mcp-tasks__tasks_create",
    "tool_input": {
        "title": "RAG: Prompt-Versionierung für deterministische Reproduzierbarkeit",
        "description": "# Auftrag\n\nImplementiere Prompt-Versionierung für nachvollziehbare LLM-Aufrufe.\n\n## Voraussetzungen\n\n**ERSTE AKTION:** `docs_get(path=\"\/\")` → Lese CLAUDE.md vollständig\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",
        "type": "ai_task"
    }
}

Response

{
    "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:** `docs_get(path=\\\"\/\\\")` → Lese CLAUDE.md vollständig\\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\": \"pending\",\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-24T15:02:55.247457\",\n    \"completed_at\": null,\n    \"metadata\": {}\n  },\n  \"message\": \"Task #306 created\"\n}"
        }
    ]
}
← Vorheriger Zur Liste Nächster →