34025-vm/lib/OpenAIService.php
Flatlogic Bot b86f18f85f v1
2025-09-11 21:39:07 +00:00

66 lines
1.8 KiB
PHP

<?php
class OpenAIService
{
private static $apiKey;
public static function init()
{
self::$apiKey = getenv('OPENAI_API_KEY');
}
public static function getCompletion($message)
{
if (empty(self::$apiKey)) {
return ['error' => 'OpenAI API key is not configured.'];
}
$url = 'https://api.openai.com/v1/chat/completions';
$data = [
'model' => 'gpt-3.5-turbo',
'messages' => [
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => $message]
],
'max_tokens' => 150
];
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . self::$apiKey
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
return ['error' => 'API call failed: ' . $error];
}
if ($httpcode !== 200) {
return ['error' => 'API returned status ' . $httpcode . ': ' . $response];
}
$decodedResponse = json_decode($response, true);
if (isset($decodedResponse['choices'][0]['message']['content'])) {
return ['reply' => $decodedResponse['choices'][0]['message']['content']];
} elseif (isset($decodedResponse['error'])) {
return ['error' => $decodedResponse['error']['message']];
}
return ['error' => 'Unexpected API response format.'];
}
}
OpenAIService::init();