Protokoll #12378
| ID | 12378 |
|---|---|
| Zeitstempel | 2025-12-24 01:09:29.479117 |
| Client | root |
| IP | Warning: Undefined array key "request_ip" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13 Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13 |
| Modell | claude-sonnet-4-20250514 |
| Status | completed |
| Tokens | 864 (Input: 0, Output: 0) |
| Dauer | 90 ms |
| Request-Zeit | Warning: Undefined array key "request_timestamp" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 18 |
| Response-Zeit | - |
Warning: Undefined array key "error_message" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 22
Request
{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/scripts\/pipeline\/generate.py",
"offset": 665,
"limit": 100
}
}
Response
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/scripts\/pipeline\/generate.py",
"content": " db.disconnect()\n\n\ndef get_critic(critic_id):\n \"\"\"Load critic from database.\"\"\"\n cursor = db.execute(\n \"\"\"SELECT c.*, p.content as prompt_content\n FROM critics c\n LEFT JOIN prompts p ON c.prompt_id = p.id\n WHERE c.id = %s AND c.is_active = 1\"\"\",\n (critic_id,),\n )\n result = cursor.fetchone()\n cursor.close()\n return result\n\n\ndef run_critic(content, critic_id, model=\"anthropic\"):\n \"\"\"\n Run a single critic on content.\n\n Returns:\n dict with feedback and rating\n \"\"\"\n db.connect()\n\n try:\n critic = get_critic(critic_id)\n if not critic:\n return {\"error\": f\"Critic {critic_id} not found\"}\n\n fokus = json.loads(critic[\"fokus\"]) if isinstance(critic[\"fokus\"], str) else critic[\"fokus\"]\n fokus_str = \", \".join(fokus)\n\n # Load prompt from database (via critic.prompt_id or fallback to generic)\n prompt_template = critic.get(\"prompt_content\")\n if not prompt_template:\n prompt_template = get_prompt(\"critic-generic\")\n if not prompt_template:\n # Ultimate fallback - should never happen if DB is properly set up\n prompt_template = \"\"\"Du bist ein kritischer Lektor mit dem Fokus auf: {fokus}\n\nAnalysiere den folgenden Text und gib strukturiertes Feedback:\n\n## Text:\n{content}\n\n## Deine Aufgabe:\n1. Prüfe den Text auf die Aspekte: {fokus}\n2. Identifiziere konkrete Verbesserungspunkte\n3. Bewerte die Qualität (1-10)\n\nAntworte im JSON-Format:\n{{\n \"rating\": 8,\n \"passed\": true,\n \"issues\": [\"Issue 1\", \"Issue 2\"],\n \"suggestions\": [\"Suggestion 1\"],\n \"summary\": \"Kurze Zusammenfassung\"\n}}\"\"\"\n\n # Format prompt with variables\n prompt = prompt_template.format(fokus=fokus_str, content=content)\n\n response = call_llm(prompt, model, client_name=\"content-studio-critique\")\n\n # Parse JSON from response with robust error handling\n import re\n\n json_match = re.search(r\"\\{[\\s\\S]*\\}\", response)\n if json_match:\n json_str = json_match.group()\n try:\n feedback = json.loads(json_str)\n feedback[\"critic_name\"] = critic[\"name\"]\n return feedback\n except json.JSONDecodeError:\n # Try to repair common JSON issues\n repaired = _repair_json(json_str)\n try:\n feedback = json.loads(repaired)\n feedback[\"critic_name\"] = critic[\"name\"]\n return feedback\n except json.JSONDecodeError:\n pass\n\n return {\n \"critic_name\": critic[\"name\"],\n \"rating\": 5,\n \"passed\": False,\n \"issues\": [\"Konnte Feedback nicht parsen\"],\n \"suggestions\": [],\n \"summary\": response[:500],\n }\n\n except Exception as e:\n return {\"error\": str(e)}\n finally:\n db.disconnect()\n",
"numLines": 100,
"startLine": 665,
"totalLines": 987
}
}
}