PHP et IA : ChatGPT comme votre nouveau collègue programmeur

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Quand PHP rencontre l'IA : pourquoi ça fonctionne

\n\n

Imaginez : vous écrivez du code en PHP, et soudain vous avez un collègue qui ne dort jamais, ne demande pas de salaire et peut générer en une seconde une description pour mille produits, écrire une lettre à un client ou même vous aider à déboguer une requête SQL complexe. Cela semble fantastique ? Et pourtant non. C'est la réalité avec l'intégration de ChatGPT dans les projets PHP.

\n\n

PHP est resté longtemps le « cheval de bataille » du web, mais avec l'arrivée de l'IA, il a trouvé un second souffle. Fini d'écrire des tonnes de code standard à la main — le réseau de neurones prend en charge la routine, et vous vous concentrez sur l'architecture. Dans cet article, nous allons voir comment connecter ChatGPT à votre application PHP, et ce de la manière la plus pratique possible.

\n\n

De quoi avez-vous besoin pour commencer ?

\n\n

Avant de plonger dans le code, assurez-vous d'avoir :

\n\n
    \n
  • PHP 8.0+ — pour travailler avec les fonctionnalités modernes (typage, attributs).
  • \n
  • cURL — pour envoyer des requêtes à l'API OpenAI.
  • \n
  • Une clé API OpenAI — inscrivez-vous sur platform.openai.com et créez une clé.
  • \n
  • Composer — pour une gestion pratique des dépendances (bien que ce soit possible sans).
  • \n
\n\n

Prêts ? C'est parti.

\n\n

Connexion de base : envoyer votre première requête à ChatGPT

\n\n

Commençons par le plus simple — envoyer un message à ChatGPT et recevoir une réponse. OpenAI utilise une API REST, nous avons donc besoin d'une simple requête HTTP. Voici une classe minimale fonctionnelle :

\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// Utilisation\n$client = new ChatGPTClient('your-api-key-here');\necho $client->ask('Écris un court message de bienvenue pour un site en PHP');
\n\n

Ce code est la base. Notez que nous utilisons gpt-3.5-turbo — il est économique et rapide. Pour des tâches complexes, vous pouvez passer à gpt-4, mais c'est plus cher.

\n\n

Gestion des erreurs et des limites

\n\n

Les projets réels nécessitent une gestion plus robuste. Ajoutez des tentatives en cas d'erreur 429 (trop de requêtes) et une journalisation :

\n\n
public 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)); // délai exponentiel\n                continue;\n            }\n            throw $e;\n        }\n    }\n}
\n\n

Scénarios avancés : de la génération de contenu à l'analyse de données

\n\n

Maintenant que la base est prête, voyons comment Cha

Blogs

Book Recommendations