Prisma ile AI Entegrasyonu
PHP uygulamalarında bir AI sağlayıcısını entegre ettiyseniz, bilirsiniz ki süreç genellikle karmaşıklaşır. Örneğin, OpenAI SDK’sını kullanmaya başlarsınız. Ardından müşteri, görüntü üretimi ister, bu nedenle StabilityAI eklenir — farklı SDK, farklı istek formatı ve hata yönetimi. Sonra ses transkripsiyonu talep ederler — burada Deepgram devreye girer. Sonuç olarak, her biri kendi özelliklerine, yanıt formatlarına ve yeniden deneme mantıklarına sahip üç ayrı API entegrasyonu ile uğraşmak zorunda kalırsınız.
Prisma, bu durumu düzeltir. Tek bir paket. Tek API. 25’ten fazla sağlayıcı. Metin, görüntü, ses ve video desteği sunar.
composer require aimeos/prismaPrisma Nedir?
Prisma, AI sağlayıcıları ile çalışmak için standart bir arayüz sunan, hafif ve MIT lisansına sahip bir PHP paketidir. Framework bağımlılığı yok. Altta Guzzle kullanımı var, PHP 8.2+ destekli ve temiz bir akıcı API sunuyor.
Her sağlayıcı, aynı arayüz üzerinden çalışır:
use Aimeos\Prisma\Prisma;
// OpenAI ile metin oluştur
$text = Prisma::text()
->using('openai', ['api_key' => '...'])
->write('Yenilenebilir enerji faydalarını özetle')
->text();
// StabilityAI ile görüntü oluştur
$image = Prisma::image()
->using('stabilityai', ['api_key' => '...'])
->imagine('gün batımında bir dağ manzarası')
->binary();
// Deepgram ile ses transkripti oluştur
$transcript = Prisma::audio()
->using('deepgram', ['api_key' => '...'])
->transcribe($audioFile)
->text();
// Gemini ile video tanımla
$description = Prisma::video()
->using('gemini', ['api_key' => '...'])
->describe($videoFile)
->text();Aynı model tüm API entegrasyonları için geçerlidir: Prisma::{domain}()->using(provider, config)->{method}(). Sağlayıcıları değiştirmek sadece tek bir string değiştirerek mümkün. Uygulama kodunuz her zaman aynı kalır.
Prisma’nın Uygulamadaki Önemi
Bir ürün listeleme aracı geliştiriyorsanız, şunları yapmanız gerekebilir:
- Görüntülerden ürün açıklamaları oluşturmak
- Açıklamalardan yapılandırılmış veri (isim, fiyat, kategori) çıkarmak
- Eksik olanlar için pazarlama görüntüleri oluşturmak
Prisma olmazsa, bu üç farklı SDK entegrasyonu gerektirir. Prisma ile:
use Aimeos\Prisma\Prisma;
use Aimeos\Prisma\Schema\Schema;
// 1. Bir ürün görüntüsünü tanımla
$description = Prisma::image()
->using('openai', ['api_key' => '...'])
->describe($productPhoto)
->text();
// 2. Yapılandırılmış veriyi çıkar
$schema = Schema::for('product', [
'name' => Schema::string()->required(),
'price' => Schema::number(),
'category' => Schema::string()->enum(['electronics', 'clothing', 'food', 'other']),
]);
$product = Prisma::text()
->using('gemini', ['api_key' => '...'])
->structure("Şunlardan ürün bilgilerini çıkar: {$description}", $schema)
->structured();
// ['name' => 'Kablosuz Kulaklıklar', 'price' => 79.99, 'category' => 'electronics']
// 3. Bir ürün görüntüsü oluştur
$image = Prisma::image()
->using('stabilityai', ['api_key' => '...'])
->imagine("{$product['name']} için profesyonel illüstrasyon")
->binary();Üç sağlayıcı, üç medya türü, tek bir tutarlı API. Ve yarın Gemini’yi Anthropic ile değiştirmek isterseniz, sadece bir satır değiştirirsiniz.
Runtime’da Sağlayıcı Yeteneklerini Kontrol Etme
$provider = Prisma::image()->using('clipdrop', ['api_key' => '...']);
if ($provider->has('upscale')) {
$image = $provider->upscale($lowResImage)->binary();
}
// Veya yetenek eksikse hata at
$provider->ensure('upscale'); // desteklenmiyorsa NotImplementedException atar0.4 Sürümünde Yeni Özellikler
0.4 sürümü, metin üretimi, yapılandırılmış çıktı, araç çağırma ve daha fazla özellik ekleyen büyük bir sürümdür. İşte neler eklendi:
Metin Üretimi
$response = Prisma::text()
->using('anthropic', ['api_key' => '...'])
->write('Bu görüntüyü tanımla', [File::from('photo.jpg')]);
echo $response->text();Yapılandırılmış Çıktılar
$schema = Schema::for('event', [
'title' => Schema::string()->required(),
'date' => Schema::string()->format('date')->required(),
'attendees' => Schema::array()->items(Schema::string()),
'location' => Schema::object([
'city' => Schema::string()->required(),
'country' => Schema::string(),
]),
]);
$response = Prisma::text()
->using('openai', ['api_key' => '...'])
->structure('Parse: 15 Haziran\'da Berlin\'de Alice ve Bob ile takım buluşmasına', $schema);
$event = $response->structured();
// ['title' => 'Takım buluşması', 'date' => '2026-06-15', 'attendees' => ['Alice', 'Bob'], 'location' => ['city' => 'Berlin', 'country' => 'Germany'], ]Alet Çağırma
$searchTool = Tools::make(
'search_products',
'Ürün veritabanında ara',
Schema::for('search', [
'query' => Schema::string()->description('Arama sorgusu')->required(),
'limit' => Schema::integer()->description('Maksimum sonuç')->min(1)->max(50),
]),
function(array $args): string {
$results = ProductSearch::query($args['query'], $args['limit'] ?? 10);
return json_encode($results);
}
);
$response = Prisma::text()
->using('openai', ['api_key' => '...'])
->withTools([$searchTool])
->write('100 dolardan daha düşük en iyi 3 kablosuz kulaklığı bul');Başlarken
Prisma ile çalışmaya başlamak için
composer require aimeos/prismaMinimal örnek:
use Aimeos\Prisma\Prisma;
// Metin
echo Prisma::text()
->using('openai', ['api_key' => getenv('OPENAI_API_KEY')])
->write('PHP'nin harika olmasının sebepleri nelerdir?')
->text();
// Görüntü
$binary = Prisma::image()
->using('openai', ['api_key' => getenv('OPENAI_API_KEY')])
->imagine('sunglasses takan bir PHP fili')
->binary();
file_put_contents('elephant.png', $binary);Hiçbir servis sağlayıcıya, hiçbir yapılandırma dosyasına, hiçbir framework bağımlılığına gerek yok. Sadece yükleyin ve kullanın.
Prisma, MIT lisanslı ve açık kaynaklıdır. Göz atmayı unutmayın.
Kaynak: Orijinal Makale


