Laravel, en popüler PHP framework’üdür ve OpenAI’yi eklemek, resmi openai-php/client kütüphanesi ile oldukça basittir. Bu kılavuz, kurulum, bir servis sınıfı, bir sohbet kontrolörünün oluşturulması, streaming, hata yönetimi ve test etme konularını kapsamaktadır.
Gereksinimler
Gereksinimler
- Laravel 10 veya 11, PHP 8.1+, Composer, OpenAI API anahtarı
Adım 1: Kurulum
Adım 1: Kurulum
composer require openai-php/laravel
php artisan vendor:publish --provider="OpenAI\Laravel\ServiceProvider"
Adım 2: .env Dosyası
Adım 2: .env Dosyası
OPENAI_API_KEY=sk-proj-...
Adım 3: OpenAIService
Adım 3: OpenAIService
namespace App\Services;
use OpenAI\Laravel\Facades\OpenAI;
class OpenAIService
{
public function chat(array $messages, string $model = 'gpt-4o-mini'): string
{
$response = OpenAI::chat()->create(['model' => $model, 'messages' => $messages]);
return $response->choices[0]->message->content;
}
}
Adım 4: ChatController
Adım 4: ChatController
public function send(Request $request): JsonResponse
{
$messages = $request->input('history', []);
$messages[] = [=> , => $request->input(
$reply = $this->openAI->chat($messages);
return response()->json([=> $reply, [...$messages,
[=> , => $reply]]]);
}
Adım 5: Streaming SSE
Adım 5: Streaming SSE
return response()->stream(function () use ($messages) {
foreach ($this->openAI->stream($messages) as $chunk) {
echo "data: ".json_encode([=> $chunk]) ."\n\n";
ob_flush(); flush();
}
echo "data: [DONE]\n\n";
}, 200,[=> , => ]);
Hata Yönetimi
Hata Yönetimi
use OpenAI\Exceptions\ErrorException;
use OpenAI\Exceptions\TransporterException;
try {
$reply = $this->openAI->chat($messages);
} catch (ErrorException $e) {
return response()->json([=> ], 503);
} catch (TransporterException $e) {
return response()->json([=> ], 503);
}
Test Etme
Test Etme
OpenAI::fake([CreateResponse::fake([=> [[ [=> ]]]])]);
$reply = app(OpenAIService::class)->chat([[=> , => ]]);
$this->assertEquals(, $reply);
Özet
Özet
composer require openai-php/laravel+OPENAI_API_KEY.enviçerisinde- Servis sınıfı kontrolörleri temiz tutar; stream için
response()->stream()+ SSE OpenAI::fake()gerçek API’ye dokunmadan birim testleri için kullanılır
Orijinal olarak kalyna.pro adresinde yayımlanmıştır.
Kaynak: Orijinal Makale


