Quando o PHP encontra a IA: por que isso funciona
\n\nImagine: você está escrevendo código em PHP e, de repente, ganha um colega que nunca dorme, não pede salário e consegue gerar em segundos a descrição de mil produtos, escrever um e-mail para o cliente ou até ajudar a depurar uma consulta SQL complexa. Parece ficção científica? Pois é realidade com a integração do ChatGPT em projetos PHP.
\n\nO PHP sempre foi o "cavalo de batalha" da web, mas com a chegada da IA, ele ganhou um novo fôlego. Não é mais preciso escrever toneladas de código repetitivo manualmente — a rede neural cuida da rotina, enquanto você foca na arquitetura. Neste artigo, vamos mostrar como conectar o ChatGPT à sua aplicação PHP, de forma prática e direta.
\n\nO que você precisa para começar?
\n\nAntes de mergulhar no código, verifique se você tem:
\n\n- \n
- PHP 8.0+ — para usar recursos modernos (tipagem, atributos). \n
- cURL — para enviar requisições à API da OpenAI. \n
- Chave de API da OpenAI — cadastre-se em platform.openai.com e crie uma chave. \n
- Composer — para gerenciar dependências (embora seja possível sem ele). \n
Pronto? Vamos nessa.
\n\nConexão básica: enviando a primeira requisição ao ChatGPT
\n\nVamos começar pelo mais simples — enviar uma mensagem ao ChatGPT e receber a resposta. A OpenAI usa uma API REST, então precisamos apenas de uma requisição HTTP. Veja a classe mínima para funcionar:
\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("Erro na API: $httpCode - $response");\n }\n\n $result = json_decode($response, true);\n return $result['choices'][0]['message']['content'] ?? '';\n }\n}\n\n// Uso\n$client = new ChatGPTClient('sua-chave-de-api-aqui');\necho $client->ask('Escreva uma saudação curta para um site em PHP');\n\nEste código é a base. Observe que usamos gpt-3.5-turbo — é barato e rápido. Para tarefas mais complexas, você pode trocar para gpt-4, mas o custo é maior.
Tratamento de erros e limites
\n\nProjetos reais exigem um tratamento mais robusto. Adicione retentativas para o erro 429 (muitas requisições) e logging:
\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)); // espera exponencial\n continue;\n }\n throw $e;\n }\n }\n}\n\nCenários avançados: da geração de conteúdo à análise de dados
\n\nAgora que a base está pronta, vamos ver como o Cha