Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel AI özelliklerini API kredilerini tüketmeden test etme
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel AI özelliklerini API kredilerini tüketmeden test etme

Yazılım

Laravel AI özelliklerini API kredilerini tüketmeden test etme

teknomers
Son güncelleme: 14 Temmuz 2026 10:36
teknomers
Paylaş
Paylaş

Laravel ile AI Özelliklerini Test Etme Rehberi

AI özelliklerini test etmenin pahalı kısmı API maliyetleri değildir. Asıl sorun, yanlış güven duygusudur. Laravel testleriniz yalnızca bir kontrolcünün 200 döndüğünü kanıtlarsa, AI davranışını test etmiyorsunuz. Gerçekten, uygulamanızın bir ağ isteği yapabildiğini test ediyorsunuz.

Contents
  • Modeli Bir Harici Bağımlılık Olarak Ele Alın
    • Örnek:
  • Sahte Model Yanıtlarını Kullanma
    • HTTP Entegrasyonları için:
  • Yanlış Yapılandırılmış Çıktıları Test Edin
  • Ayrıntılı Hata Durumlarını Zorlayın
    • Doğru Asserts:
  • Yaygın Hata Durumları Oluşturun
    • Kesinti Testlerinde:
  • Aİ Davranışını Gözden Geçirin
    • Testlere Dikkat Edin:

Modeli Bir Harici Bağımlılık Olarak Ele Alın

Eğer kontrolcünüz, işiniz veya Livewire bileşeniniz OpenAI ile doğrudan iletişim kuruyorsa, testleriniz hızla kırılgan hale gelir. Nakliye tüm detaylarına bağlı şekilde ürünü test etmekle kalırsınız.

Daha iyi bir yöntem, AI entegrasyonunuzu tek bir uygulama servisi arkasına yerleştirmektir. Bu servis, AiReply, DraftResult veya SupportAnswer gibi küçük, uygulamaya özgü bir sonuç nesnesi döndürebilir. Kontrolcüleriniz uygulama davranışını test eder. Sağlayıcı entegrasyonu daha dar bir test kümesine tabi tutulur.

Bu sınır önemlidir, çünkü sahte verileriniz sözleşmenizi yansıtmalıdır, sağlayıcının tüm yükünü değil. Sağlayıcılar alanları değiştirir. Uygulamanız bu değişiklikten etkilenmediği sürece umursamamalıdır.

Örnek:


namespace App\Services\Ai;

final class ProductCopyService
{
    public function __construct(private OpenAiResponsesClient $client) {}

    public function generate(string $name, string $audience): ProductCopyResult
    {
        $response = $this->client->create([
            'model' => 'gpt-5.4',
            'input' => "Write concise product copy for {$name} aimed at {$audience}.",
        ]);

        return new ProductCopyResult(
            headline: data_get($response, 'output_text', ''),
            tokensUsed: (int) data_get($response, 'usage.total_tokens', 0),
        );
    }
}
    

Artık uygulama testleriniz tüm sağlayıcı alanlarını bilmek zorunda değildir. Sadece geçerli bir ProductCopyResult’ın nasıl göründüğünü bilmelidirler.

Sahte Model Yanıtlarını Kullanma

Pek çok ekip erken durarak bir 200 OK ve birkaç metin kullanarak işi bitiriyor. Bu sadece modelin tam olarak beklediğiniz gibi davrandığı mutlu yolu kapsar.

İhtiyacınız olan en az üç sınıf sahte yanıt:

  • Uygulamanızın kabul etmesi gereken geçerli bir yanıt.
  • Uygulamanızın reddedeceği veya normalleştireceği yapısal olarak geçerli bir yanıt.
  • Uygulamanızın düzgün bir şekilde işlemesi gereken bir sağlayıcı hatası.

HTTP Entegrasyonları için:


use Illuminate\Support\Facades\Http;
use function Pest\Laravel\postJson;

it('stores generated copy without calling the real API', function () {
    Http::fake([
        'api.openai.com/*' => Http::response([
            'output_text' => 'Ship faster with a Laravel-first AI workflow.',
            'usage' => ['total_tokens' => 148],
        ], 200),
    ]);

    $response = postJson('/products/copy', [
        'name' => 'QCode Deploy',
        'audience' => 'Laravel teams',
    ]);

    $response
        ->assertOk()
        ->assertJsonPath('headline', 'Ship faster with a Laravel-first AI workflow.');

    Http::assertSent(function ($request) {
        return str($request->url())->contains('/v1/responses')
            && $request['model'] === 'gpt-5.4';
    });
});
    

Yanlış Yapılandırılmış Çıktıları Test Edin

AI hataları genelde çökmeler değildir. Genellikle oldukça makul görünen yanlış çıktılardır. Örnekler:

  • Markdown sınırları içinde dönen JSON.
  • Yapısal bir yük içerisindeki eksik alanlar.
  • Sözdizimsel olarak geçerli fakat anlamsal olarak yanlış olan argümanlar.

Bunlar, üretim temizlik işlerinden sizi kurtaran testlerdir.


it('rejects product copy when the model returns empty content', function () {
    Http::fake([
        'api.openai.com/*' => Http::response([
            'output_text' => '',
            'usage' => ['total_tokens' => 83],
        ], 200),
    ]);

    $response = postJson('/products/copy', [
        'name' => 'QCode Deploy',
        'audience' => 'Laravel teams',
    ]);

    $response
        ->assertStatus(422)
        ->assertJsonPath('message', 'AI returned an unusable result.');
});
    

Ayrıntılı Hata Durumlarını Zorlayın

Model belirli bir aracı çağırırsa, basit testler yıkılmaya başlar. Bir çıkış kümesi yerine, bir mini iş akışı testi yapıyorsunuz. Bu detay önemlidir çünkü kötü ilişkileri test etmek kolaydır.

Doğru Asserts:

  • Aracın yalnızca bir kez çağrıldığını doğrulamak.
  • Parçalanmış argümanların beklenen şemaya uyduğunu test etmek.
  • Son kullanıcı yanıtının, hayal ürünü veriler değil, araç çıktısına göre yansıtılması.

it('executes the stock lookup tool and returns the final answer', function () {
    Http::fakeSequence()
        ->push([
            'output' => [[
                'type' => 'function_call',
                'call_id' => 'call_123',
                'name' => 'lookupInventory',
                'arguments' => json_encode(['sku' => 'QC-DEPLOY']),
            ]],
        ], 200)
        ->push([
            'output_text' => 'QCode Deploy is in stock and ships this week.',
        ], 200);

    $tool = Mockery::mock(InventoryLookup::class);
    $tool->shouldReceive('forSku')
        ->once()
        ->with('QC-DEPLOY')
        ->andReturn(['in_stock' => true, 'eta' => 'this week']);

    $this->app->instance(InventoryLookup::class, $tool);

    $response = $this->postJson('/support/ask', [
        'question' => 'Can I get QCode Deploy this week?',
    ]);

    $response
        ->assertOk()
        ->assertJsonPath('answer', 'QCode Deploy is in stock and ships this week.');
});
    

Yaygın Hata Durumları Oluşturun

Model, artık mevcut olmayan bir aracı talep edebilir veya gerekli anahtarları olmayan argümanlar ile başlayabilir. Bu tür hataları test etmemişseniz, AI özelliğiniz hala bir demodur.

Kesinti Testlerinde:


it('falls back gracefully when the provider times out', function () {
    Http::fake(function () {
        throw new ConnectionException('Timed out contacting AI provider.');
    });

    $response = $this->postJson('/support/ask', [
        'question' => 'Summarize this order issue',
    ]);

    $response
        ->assertStatus(503)
        ->assertJsonPath('message', 'AI is temporarily unavailable.');
});
    

Aİ Davranışını Gözden Geçirin

Aİ değişikliklerini gözden geçirmek, mühendislik kalitesini artırır. Uygulama testlerinizi belirli bir sınırda tutarak, gerçek sağlayıcı çağrılarınızı nadir hale getirerek, güvenilirliği artırabilirsiniz.

Testlere Dikkat Edin:

  • Yalnızca normalleştirilmiş çıktılara dayanarak test edin.
  • Snapshot alırken yalnızca kendi DTO’nuzu veya kırpılmış JSON şeklini alın, ham yükleri değil.
  • Sadece bir veya iki canlı entegrasyon testi yapmaya özen gösterin, bu da oturum açma, model eskime veya yarı bozuk istek biçimini yakalamak için yeterli olacaktır.

Sıfır kredilendirme ve neredeyse sıfır rastgelelik ile günlük test setinize odaklanın. Bu, unit ve feature test kategorilerinin AI işleyişini deterministik bir şekilde daima koruduğunu, gerçek API çağrılarının ise yalnızca doğrulama olarak kalması gerektiğini belirten bir kuraldır.

Laravel AI testleriniz hala canlı bir model üzerine bağımlıysa anlamlı görünmek için, probleminiz bütçede değil. Probleminiz sınırın çok gevşek olmasıdır.

Sınırı sıkılaştırın, doğru katmanları sahteleyin ve öncelikle zor durumları test edin. AI özelliklerinizi API kredilerini veya güveninizi zarar vermeden gönderin.

Kaynak: Orijinal Makale

Geliştirici Günlüğü: 2026-07-04
Laravel’i VPS’ye GitHub Actions ile Dağıtma (Sıfır Downtime CI/CD)
Kiracılar Arası Artisan Komutlarını Çalıştırma: tenants:run Kılavuzu (stancl/tenancy)
whereHas() ve whereRelation(): Kısayollar Yerine Okunabilirlik
FNF Uzlaşma Süreci: Nedir ve Nasıl Çalışır?
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale SNK’nın Suudi Arabistan Bağlantıları Üzerine GDQ Yayını İptal Edildi
Sonraki Makale Microsoft’un ShinyHunters Faaliyetleri Bağlantılı Üç Salesforce Saldırısı!

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

ABD, Güneş Işığını Yansıtan Gece Aydınlatıcı Uyduyu Onayladı!
Genel
Acil: ABD, Fidye Yazılımı Desteği Nedeniyle İlk VPN Servisini Yasakladı
Siber Güvenlik
Microsoft’un ShinyHunters Faaliyetleri Bağlantılı Üç Salesforce Saldırısı!
Siber Güvenlik
SNK’nın Suudi Arabistan Bağlantıları Üzerine GDQ Yayını İptal Edildi
Oyun
Yeni Hazine Keşfi: Siyah Bayrak Hayranları için Farklı Bir Bakış
Oyun
2026 yılında Bağımsız Geliştiriciler için En İyi Özellik Bayrağı Araçları (Ücretsiz ve Uygun Fiyatlı Seçenekler)
Yazılım
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?