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 Filament Yönetim Paneli: AI Uygulamaları için Token Maliyetleri, İstem Yönetimi ve Temsilci Denetim İzleri
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 Filament Yönetim Paneli: AI Uygulamaları için Token Maliyetleri, İstem Yönetimi ve Temsilci Denetim İzleri

Yazılım

Laravel Filament Yönetim Paneli: AI Uygulamaları için Token Maliyetleri, İstem Yönetimi ve Temsilci Denetim İzleri

teknomers
Son güncelleme: 16 Nisan 2026 06:50
teknomers
Paylaş
Paylaş

Laravel Filament Yönetim Paneli Kurma Rehberi

AI geliştirme sürecinde, genellikle unutulan ancak büyük önem taşıyan bir özellik, yönetim panellerinin oluşturulmasıdır. Bu makalede, Laravel Filament ile AI uygulamaları için bir yönetim paneli nasıl oluşturulacağını öğreneceksiniz. Bu panel, token maliyetlerinin izlenmesi, kullanım analitiği, prompt sürüm yönetimi ve ajans denetim günlüklerini içerecektir.

Contents
  • Laravel Filament Yönetim Paneli Kurma Rehberi
    • Neden Filament ve Şimdi?
    • Kurulum ve Panel Ayarları
    • Panele Sunulacak Verilerin Modellemesi
    • Token Maliyeti İzleme: İstatistik Genel Bakış Widget’ı
    • Günlük Token Kullanımı: Grafik Widget’ı
    • Kullanım Günlüğü Kaynağı: Kullanıcı ve Model Bazında Analiz
    • Koşul Kısıtlaması
    • Sonuç

Neden Filament ve Şimdi?

Laravel ekosisteminde yönetim arayüzleri oluşturmak için ciddi bir rekabet yok. Filament v3, kapsamlı bir panel sistemi, Livewire destekli tablolar, istatistik widget’ları ve rol tabanlı yetkilendirme katmanı ile gelmektedir. Mevcut Laravel uygulamanız içine entegre edilebilir ve ayrı bir işlem veya Node frontend’i gerektirmez.

Kurulum ve Panel Ayarları

Filament’i yüklemek için aşağıdaki komutları kullanabilirsiniz:

composer require filament/filament:"^3.0" -W
php artisan filament:install --panels

Bu komut, app/Providers/Filament/AdminPanelProvider.php dosyasını oluşturur ve bunu bootstrap/app.php üzerinden kaydeder. İşte başlangıç yapılandırmasının bir örneği:

namespace App\Providers\Filament;

use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Panel;
use Filament\PanelProvider;
use Filament\Support\Colors\Color;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession;

class AdminPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->default()
            ->id('admin')
            ->path('admin')
            ->login()
            ->colors(['primary' => Color::Violet])
            ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
            ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
            ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
            ->middleware([
                EncryptCookies::class,
                AddQueuedCookiesToResponse::class,
                StartSession::class,
                AuthenticateSession::class,
                ShareErrorsFromSession::class,
                VerifyCsrfToken::class,
                SubstituteBindings::class,
                DisableBladeIconComponents::class,
                DispatchServingFilamentEvent::class,
            ])
            ->authMiddleware([Authenticate::class])
            ->authorization(fn () => auth()->user()?->is_admin ?? false);
    }
}

Yetkilendirme kontrolünü ilk günden ayarlamak önemlidir; aksi halde herhangi bir kimliği doğrulanmış kullanıcı yönetim paneline ulaşabilir.

Panele Sunulacak Verilerin Modellemesi

İlk önce veri toplamanız gereken alanlar üzerinde karar vermeniz gerekiyor. Üretimdeki bir AI uygulamasında, iki ana günlük türü dikkate alınmalıdır:

  • AI Kullanım Günlükleri: Hangi sağlayıcı, hangi model, ne kadar token kullanıldı vb. bilgileri içerir.
  • Ajan Denetim Günlükleri: Hangi ajan sınıfı hangi işlevi çağırdı, giriş ve çıkış neydi gibi verileri kaydeder.

Her ikisi de Eloquent modeller olarak oluşturulmalıdır. İşte kullanım günlüğüne ilişkin bir göç dosyasının örneği:

Schema::create('ai_usage_logs', function (Blueprint $table) {
    $table->id();
    $table->foreignId('user_id')->nullable()->constrained()->nullOnDelete();
    $table->string('provider');           // 'anthropic', 'openai'
    $table->string('model');
    $table->string('feature')->nullable(); // 'chat', 'summarize', 'agent'
    $table->integer('prompt_tokens');
    $table->integer('completion_tokens');
    $table->integer('total_tokens');
    $table->decimal('cost_usd', 10, 6)->nullable();
    $table->string('prompt_version')->nullable();
    $table->json('metadata')->nullable();
    $table->boolean('success')->default(true);
    $table->text('error_message')->nullable();
    $table->timestamps();

    $table->index(['user_id', 'created_at']);
    $table->index(['provider', 'model', 'created_at']);
    $table->index(['feature', 'created_at']);
});

Token Maliyeti İzleme: İstatistik Genel Bakış Widget’ı

Panele ilk giriş yaptığınızda görmeniz gereken şey, AI katmanının son 24 saatteki maliyetini özetleyen bir genel bakıştır. Filament’in StatsOverviewWidget bu işlemi kolayca yapar:

php artisan make:filament-widget AiStatsOverview --stats-overview

Oluşan widget tanımını şuna benzeyecek şekilde güncelleyebilirsiniz:

namespace App\Filament\Widgets;

use App\Models\AiUsageLog;
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;

class AiStatsOverview extends BaseWidget
{
    protected static ?int $sort = 1;

    protected function getStats(): array
    {
        $today  = AiUsageLog::whereDate('created_at', today());
        $month  = AiUsageLog::whereMonth('created_at', now()->month)
                            ->whereYear('created_at', now()->year);

        return [
            Stat::make("Today's Tokens", number_format($today->sum('total_tokens')))
                ->description('Across all providers and models')
                ->color('primary'),

            Stat::make("Today's Cost", '$' . number_format($today->sum('cost_usd'), 4))
                ->description('USD — live tally')
                ->color('warning'),

            Stat::make('Monthly Spend', '$' . number_format($month->sum('cost_usd'), 2))
                ->description(now()->format('F Y'))
                ->color('danger'),

            Stat::make('Failures Today', number_format($today->where('success', false)->count()))
                ->description('Inference errors across all features')
                ->color('gray'),
        ];
    }
}

Bu widget’i panel sağlayıcısındaki ->widgets() dizisine kaydedin. Widget’ınız zaten Livewire’in polling mekanizmasını kullanarak belirli aralıklarla güncellenebilir.

Günlük Token Kullanımı: Grafik Widget’ı

Brüt toplamlar faydalıdır. Ancak, eğilim çizgileri aslında sorunları sergiler. Böylece, problemi teşhis edebilmek için bir grafik widget’ı ekleyin:

php artisan make:filament-widget TokenUsageChart --chart

Oluşan widget ile ilgili veri alım mantığını aşağıdaki şekilde güncelleyebilirsiniz:

namespace App\Filament\Widgets;

use App\Models\AiUsageLog;
use Filament\Widgets\ChartWidget;

class TokenUsageChart extends ChartWidget
{
    protected static ?string $heading = 'Daily Token Usage — Last 30 Days';
    protected static ?int $sort = 2;
    public ?string $filter = 'tokens';

    protected function getFilters(): ?array
    {
        return [
            'tokens' => 'Total Tokens',
            'cost'   => 'Cost (USD)',
        ];
    }

    protected function getData(): array
    {
        $column = $this->filter === 'cost' ? 'cost_usd' : 'total_tokens';
        $label  = $this->filter === 'cost' ? 'Cost (USD)' : 'Total Tokens';

        $data = AiUsageLog::selectRaw("DATE(created_at) as date, SUM({$column}) as value")
            ->where('created_at', '>=', now()->subDays(30))
            ->groupBy('date')
            ->orderBy('date')
            ->get();

        return [
            'datasets' => [
                [
                    'label'       => $label,
                    'data'        => $data->pluck('value')->toArray(),
                    'borderColor' => '#8b5cf6',
                    'tension'     => 0.3,
                    'fill'        => false,
                ],
            ],
            'labels' => $data->pluck('date')->toArray(),
        ];
    }

    protected function getType(): string
    {
        return 'line';
    }
}

Kullanım Günlüğü Kaynağı: Kullanıcı ve Model Bazında Analiz

İstatistikler ve grafikler özeti sağlasa da, detaylı inceleme için sıralanabilir ve filtrelenebilir bir tablo gereklidir. Bunun için:

php artisan make:filament-resource AiUsageLog --generate

Oluşan kaynak tanımını güncelleyin:

namespace App\Filament\Resources;

use App\Filament\Resources\AiUsageLogResource\Pages;
use App\Models\AiUsageLog;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Filters\Filter;
use Illuminate\Database\Eloquent\Builder;

class AiUsageLogResource extends Resource
{
    protected static ?string $model           = AiUsageLog::class;
    protected static ?string $navigationIcon  = 'heroicon-o-chart-bar';
    protected static ?string $navigationGroup = 'AI Governance';
    protected static ?string $navigationLabel = 'Usage Logs';

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('user.name')
                    ->label('User')
                    ->searchable()
                    ->sortable()
                    ->placeholder('—'),

                TextColumn::make('provider')
                    ->badge()
                    ->sortable(),

                TextColumn::make('model')
                    ->searchable()
                    ->copyable(),

                TextColumn::make('feature')
                    ->badge()
                    ->color('info')
                    ->placeholder('—'),

                TextColumn::make('total_tokens')
                    ->numeric()
                    ->sortable()
                    ->summarize(Tables\Columns\Summarizers\Sum::make()->label('Total')),

                TextColumn::make('cost_usd')
                    ->money('usd')
                    ->sortable()
                    ->summarize(Tables\Columns\Summarizers\Sum::make()->label('Total')),

                TextColumn::make('prompt_version')
                    ->badge()
                    ->color('warning')
                    ->placeholder('—'),

                IconColumn::make('success')
                    ->boolean(),

                TextColumn::make('created_at')
                    ->dateTime()
                    ->sortable()
                    ->since()
                    ->toggleable(),
            ])
            ->filters([
                SelectFilter::make('provider')
                    ->options([
                        'anthropic' => 'Anthropic',
                        'openai'    => 'OpenAI',
                    ]),

                SelectFilter::make('success')
                    ->options([
                        '1' => 'Successful',
                        '0' => 'Failed',
                    ]),

                Filter::make('today')
                    ->label('Today only')
                    ->query(fn (Builder $query) => $query->whereDate('created_at', today())),
            ])
            ->defaultSort('created_at', 'desc')
            ->paginated([25, 50, 100]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\ListAiUsageLogs::route("https://dev.to/"),
        ];
    }

    public static function canCreate(): bool
    {
        return false;
    }
}

Koşul Kısıtlaması

Yönetim panelinizi güvenli bir hale getirmek için, kullanıcıların erişimi üzerinde sıkı kontrol sağlamalısınız. ->authorization() çağrısı panel sağlayıcısında sizin ilk savunma hattınızdır. Ayrıca, daha ince ayar için Laravel Politikaları kullanabilirsiniz:

->authorization(fn () => auth()->user()?->hasRole('admin') ?? false)

Sonuç

Bu makalede, Laravel kullanarak bir AI yönetim paneli kurma adımlarını açıkladık. Sağlam bir yazılım mimarisi ve etkili bir yönetişim yapısıyla, sisteminizin verimliliğini artırabilir ve oluşturduğunuz hizmetleri daha iyi yönetebilirsiniz. Geliştirmeye devam edin ve sisteminizi geliştirmek için yeni özellikler ekleyin!

Kaynak: Orijinal Makale

CRUD Kontrolcüleri Yazmayı Bırakın – DEV Community
Teknik Borcun Laravel Takımlarını Sessizce Yavaşlatması (Ve Nasıl Önlenebileceği)
Laravel ve React ile Sunucu Tarafında Renderleme (Inertia.js Kullanarak)
Çoklu Kiracı Korkusu: Laravel’de Paylaşılan ve İzole Veritabanları
CSV Yüklemelerinde Çökme Sorunlarını Durdurun: Laravel Job Gruplama Konusunda Usta Olun
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Yeni Kahramanın Ultisi Hakkında Oyunculardan Beklentiler
Sonraki Makale Uplift Desk İndirim Kodları: 570 TL’ye Kadar Tasarruf Fırsatları!

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

WinRAR Açığı: Rusya Yanlı Gruplar Ukrayna’da Hırsızlık Yapıyor!
Siber Güvenlik
Lovable, Yıllık 500 Milyon Dolar Gelir Elde Ettiğini Açıkladı
Genel
Apple Liquid Glass’tan Vazgeçti, Mac’ler Daha Şık Görünüyor
Liste
iProduction’u Nasıl Geliştirdik: Üretim Kaosunu Yapılandırılmış Otomasyona Dönüştürme
Yazılım
Bernstein: Bitcoin’daki Zayıflığın Nedeni AI Ticaretinde
Finans
2026 Rivian R2: Özellikler, Fiyat ve Ne Zaman Satışta?
Genel
//

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?