Wenn PHP auf KI trifft: Warum das funktioniert
\n\nStellen Sie sich vor: Sie schreiben Code in PHP, und plötzlich haben Sie einen Kollegen, der niemals schläft, kein Gehalt verlangt und in Sekundenschnelle eine Beschreibung für tausend Produkte generieren, eine E-Mail an einen Kunden schreiben oder sogar bei der Fehlersuche in einer komplexen SQL-Abfrage helfen kann. Klingt nach Science-Fiction? Aber nein. Das ist Realität mit der Integration von ChatGPT in PHP-Projekte.
\n\nPHP war lange Zeit das „Arbeitstier“ des Webs, aber mit dem Aufkommen der KI hat es einen zweiten Wind bekommen. Sie müssen nicht mehr tonnenweise Boilerplate-Code manuell schreiben – das neuronale Netz übernimmt die Routine, und Sie konzentrieren sich auf die Architektur. In diesem Artikel schauen wir uns an, wie Sie ChatGPT in Ihre PHP-Anwendung einbinden, und das so praktisch wie möglich.
\n\nWas Sie für den Start benötigen?
\n\nBevor wir in den Code eintauchen, stellen Sie sicher, dass Sie Folgendes haben:
\n\n- \n
- PHP 8.0+ – für die Arbeit mit modernen Features (Typisierung, Attribute). \n
- cURL – um Anfragen an die OpenAI API zu senden. \n
- OpenAI-API-Schlüssel – registrieren Sie sich auf platform.openai.com und erstellen Sie einen Schlüssel. \n
- Composer – für die bequeme Verwaltung von Abhängigkeiten (es geht auch ohne). \n
Bereit? Los geht's.
\n\nGrundlegende Verbindung: Senden der ersten Anfrage an ChatGPT
\n\nBeginnen wir mit dem Einfachsten – dem Senden einer Nachricht an ChatGPT und dem Erhalten einer Antwort. OpenAI verwendet eine REST-API, daher benötigen wir eine einfache HTTP-Anfrage. Hier ist eine minimale funktionierende Klasse:
\n\n<?php\n\nclass ChatGPTClient {\n private string $apiKey;\n private string $apiUrl = 'https://api.openai.com/v1/chat/completions';\n\n public function __construct(string $apiKey) {\n $this->apiKey = $apiKey;\n }\n\n public function ask(string $message): string {\n $data = [\n 'model' => 'gpt-3.5-turbo',\n 'messages' => [\n ['role' => 'user', 'content' => $message]\n ],\n 'temperature' => 0.7\n ];\n\n $ch = curl_init($this->apiUrl);\n curl_setopt_array($ch, [\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_POST => true,\n CURLOPT_HTTPHEADER => [\n 'Content-Type: application/json',\n 'Authorization: Bearer ' . $this->apiKey\n ],\n CURLOPT_POSTFIELDS => json_encode($data)\n ]);\n\n $response = curl_exec($ch);\n $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n curl_close($ch);\n\n if ($httpCode !== 200) {\n throw new \\RuntimeException("API error: $httpCode - $response");\n }\n\n $result = json_decode($response, true);\n return $result['choices'][0]['message']['content'] ?? '';\n }\n}\n\n// Verwendung\n$client = new ChatGPTClient('your-api-key-here');\necho $client->ask('Schreibe eine kurze Begrüßung für eine PHP-Website');\n\nDieser Code ist das Fundament. Beachten Sie: Wir verwenden gpt-3.5-turbo – er ist günstig und schnell. Für komplexe Aufgaben können Sie auf gpt-4 umsteigen, aber das ist teurer.
Fehlerbehandlung und Limits
\n\nReale Projekte erfordern eine robustere Fehlerbehandlung. Fügen Sie Wiederholungsversuche bei 429-Fehlern (zu viele Anfragen) und Logging hinzu:
\n\npublic function askWithRetry(string $message, int $maxRetries = 3): string {\n for ($attempt = 1; $attempt <= $maxRetries; $attempt++) {\n try {\n return $this->ask($message);\n } catch (\\RuntimeException $e) {\n if (str_contains($e->getMessage(), '429') && $attempt < $maxRetries) {\n sleep(pow(2, $attempt)); // exponentielle Verzögerung\n continue;\n }\n throw $e;\n }\n }\n}\n\nFortgeschrittene Szenarien: Von der Content-Generierung bis zur Datenanalyse
\n\nNachdem die Basis fertig ist, schauen wir uns an, wie Cha