Protokoll #5468
| ID | 5468 |
|---|---|
| Zeitstempel | 2025-12-22 22:26:49.373409 |
| 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 | 1,762 (Input: 0, Output: 0) |
| Dauer | 88 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\/dev.campus.systemische-tools.de\/src\/Controller\/ChatController.php"
}
}
Response
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Controller\/ChatController.php",
"content": "<?php\n\nnamespace Controller;\n\nuse Framework\\Controller;\nuse Infrastructure\\AI\\ModelConfig;\nuse Infrastructure\\Formatting\\ChatMessageFormatter;\nuse UseCases\\Chat\\ManageChatSessionsUseCase;\nuse UseCases\\Chat\\SendChatMessageUseCase;\n\nclass ChatController extends Controller\n{\n private ManageChatSessionsUseCase $sessionsUseCase;\n private SendChatMessageUseCase $messageUseCase;\n private ChatMessageFormatter $formatter;\n\n public function __construct(\n ?ManageChatSessionsUseCase $sessionsUseCase = null,\n ?SendChatMessageUseCase $messageUseCase = null,\n ?ChatMessageFormatter $formatter = null\n ) {\n $this->sessionsUseCase = $sessionsUseCase ?? new ManageChatSessionsUseCase();\n $this->messageUseCase = $messageUseCase ?? new SendChatMessageUseCase();\n $this->formatter = $formatter ?? new ChatMessageFormatter();\n }\n\n public function index(): void\n {\n $uuid = $this->sessionsUseCase->createSession();\n header('Location: \/chat\/' . $uuid);\n exit;\n }\n\n public function show(string $uuid): void\n {\n $session = $this->sessionsUseCase->getSession($uuid);\n\n if ($session === null) {\n header('Location: \/chat');\n exit;\n }\n\n $this->view('chat.index', [\n 'title' => $session['title'] ?? 'KI-Chat',\n 'session' => $session,\n 'messages' => $this->sessionsUseCase->getMessages($session['id']),\n 'sessions' => $this->sessionsUseCase->getAllSessions(),\n 'authorProfiles' => $this->sessionsUseCase->getAuthorProfiles(),\n 'systemPrompts' => $this->sessionsUseCase->getSystemPrompts(),\n 'collections' => $this->sessionsUseCase->getAvailableCollections(),\n 'models' => ModelConfig::getAll(),\n 'defaultModel' => ModelConfig::DEFAULT_MODEL,\n ]);\n }\n\n public function sessionList(): void\n {\n $this->view('chat.partials.session-list', [\n 'sessions' => $this->sessionsUseCase->getAllSessions(),\n 'currentUuid' => $this->getString('current') ?: null,\n ]);\n }\n\n public function message(string $uuid): void\n {\n $session = $this->sessionsUseCase->getSession($uuid);\n\n if ($session === null) {\n $this->view('chat.partials.error', ['error' => 'Session nicht gefunden.']);\n\n return;\n }\n\n $question = trim($_POST['message'] ?? '');\n $model = ModelConfig::validate($_POST['model'] ?? $session['model']);\n $sessionCollections = $this->decodeJson($session['collections'] ?? null) ?: ['documents'];\n $collections = $_POST['collections'] ?? $sessionCollections;\n $contextLimit = (int) ($_POST['context_limit'] ?? $session['context_limit'] ?? 5);\n $authorProfileId = (int) ($_POST['author_profile_id'] ?? $session['author_profile_id'] ?? 0);\n $systemPromptId = (int) ($_POST['system_prompt_id'] ?? $session['system_prompt_id'] ?? 1);\n $temperature = (float) ($_POST['temperature'] ?? $session['temperature'] ?? 0.7);\n $maxTokens = (int) ($_POST['max_tokens'] ?? $session['max_tokens'] ?? 4096);\n\n if ($this->sessionsUseCase->settingsHaveChanged($session, $model, $collections, $contextLimit, $authorProfileId, $temperature, $maxTokens)) {\n $this->sessionsUseCase->updateSettings($session['id'], $model, $collections, $contextLimit, $authorProfileId, $temperature, $maxTokens);\n }\n\n if ($question === '') {\n $this->view('chat.partials.error', ['error' => 'Bitte gib eine Frage ein.']);\n\n return;\n }\n\n if (!empty($collections)) {\n $compatibility = $this->sessionsUseCase->validateCollectionCompatibility($collections);\n if (!$compatibility['valid']) {\n $this->view('chat.partials.error', [\n 'error' => 'Collection-Fehler: ' . $compatibility['error'],\n 'details' => 'Bitte wähle nur Collections mit gleichem Embedding-Modell.',\n ]);\n\n return;\n }\n }\n\n $response = $this->messageUseCase->execute(\n sessionUuid: $uuid,\n message: $question,\n model: $model,\n collections: $collections,\n contextLimit: $contextLimit,\n authorProfileId: $authorProfileId,\n systemPromptId: $systemPromptId,\n temperature: $temperature,\n maxTokens: $maxTokens\n );\n\n if ($response->hasError()) {\n $this->view('chat.partials.error', ['error' => $response->getError()]);\n\n return;\n }\n\n $result = $response->toArray();\n $this->view('chat.partials.response', [\n 'question' => $question,\n 'result' => $result,\n 'model' => $model,\n 'formattedAnswer' => $this->formatter->formatAnswer($result['answer'] ?? ''),\n ]);\n }\n\n public function updateTitle(string $uuid): void\n {\n $session = $this->sessionsUseCase->getSession($uuid);\n\n if ($session === null) {\n $this->notFound('Session nicht gefunden');\n }\n\n $title = $this->sessionsUseCase->updateTitle($session['id'], $_POST['title'] ?? '');\n echo htmlspecialchars($title);\n }\n\n public function systemPrompt(string $uuid): void\n {\n $session = $this->sessionsUseCase->getSession($uuid);\n\n if ($session === null) {\n $this->notFound('Session nicht gefunden');\n }\n\n $result = $this->sessionsUseCase->updateSystemPrompt($session['id'], $_POST['system_prompt'] ?? '');\n $this->view('chat.partials.success', ['message' => $result->message]);\n }\n\n public function getSystemPrompt(string $uuid): void\n {\n $session = $this->sessionsUseCase->getSession($uuid);\n\n if ($session === null) {\n $this->notFound('Session nicht gefunden');\n }\n\n $this->view('chat.partials.system-prompt-modal', [\n 'session' => $session,\n 'currentPrompt' => $session['system_prompt'] ?? '',\n 'defaultPrompt' => $this->sessionsUseCase->getDefaultSystemPrompt(),\n ]);\n }\n\n public function delete(string $uuid): void\n {\n $session = $this->sessionsUseCase->getSession($uuid);\n\n if ($session !== null) {\n $this->sessionsUseCase->deleteSession($session['id']);\n }\n\n header('HX-Redirect: \/chat');\n echo 'OK';\n }\n}\n",
"numLines": 184,
"startLine": 1,
"totalLines": 184
}
}
}