Full-Stack Web

Next.js 16 App Router ve Vercel AI SDK ile Generative UI / Agentic Arayüz Geliştirme

Kullanıcıya sadece metin cevabı vermek yerine dinamik React bileşenleri (Generative UI) render eden modern yapay zekâ web uygulamaları inşa edin.

Güncellendi: 9 Eylül 20265 dk
Paylaş:XLinkedIn

Özet & Doğrudan Çözüm (TL;DR)

Next.js 16/15 App Router ve Vercel AI SDK entegrasyonu, kullanıcıya salt statik metin cevapları vermek yerine arayüzde doğrudan dinamik, etkileşimli React Server Components (Generative UI) render edilmesini sağlar. Model bir hisse senedi, uçuş veya sipariş analizi yaptığında metin yerine canlı grafikler, interaktif filtreler ve sipariş onay kartları istemciye akıtılır.

Önemli Çıkarımlar:

  • Metinden Bileşene (Text to Component): LLM yanıtları JSON veri yerine doğrudan çalışan React bileşen ağacı olarak yayınlanır.
  • Server Actions ve React Server Components (RSC): İstemci bundle'ını şişirmeden sunucu tarafında veri çekme ve render etme.
  • 5-Durumlu Akış: Yükleme (Skeleton Shimmer), akış (Streaming), hata (Error Boundary), boş veri ve başarı durumları.
  • Tip Güvenliği: Zod şemaları ile LLM çıktı parametrelerinin derleme zamanında doğrulanması.

1. Generative UI Paradigması Nedir?

Geleneksel chatbot arayüzleri markdown metin kutularıyla sınırlıdır. Kullanıcı 'BIST 100 bankacılık hisselerini kıyasla' dediğinde chatbot uzun bir metin listesi yazar.

Generative UI mimarisinde ise yapay zeka bir aracı (tool) tetikler ve bu araç sunucuda doğrudan interaktif bir `<StockComparisonChart />` React bileşeni oluşturarak istemciye aktarır. Kullanıcı grafik üzerinde zoom yapabilir, filtreleri değiştirebilir ve doğrudan butonlara tıklayabilir.

2. Vercel AI SDK ile Server-Side Component Streaming

Aşağıdaki mimari, Server Actions kullanarak modelin çağrısıyla canlı React bileşeni render eden temel akışı gösterir:

actions/ai-agent.tsx
"use server";

import { createStreamableUI } from "ai/rsc";
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { z } from "zod";
import { StockPriceCard } from "@/components/stock-price-card";

export async function submitUserMessage(userInput: string) {
  const uiStream = createStreamableUI(<div className="animate-pulse">Analiz ediliyor...</div>);

  (async () => {
    await generateText({
      model: openai("gpt-4o"),
      prompt: userInput,
      tools: {
        showStockCard: {
          description: "BIST hisse senedi detay kartını render eder",
          parameters: z.object({
            symbol: z.string().describe("Hisse kodu, örn: THYAO"),
            price: z.number().describe("Son işlem fiyatı"),
            changePercent: z.number().describe("Günlük yüzde değişim")
          }),
          execute: async ({ symbol, price, changePercent }) => {
            uiStream.done(
              <StockPriceCard symbol={symbol} price={price} change={changePercent} />
            );
          }
        }
      }
    });
  })();

  return { display: uiStream.value };
}

3. 5-Durumlu Dayanıklılık (Skeleton, Empty, Error ve Optimistic)

Generative UI bileşenleri tasarlanırken akış kesintileri ve API gecikmeleri hesaba katılmalıdır. Bileşen yüklenirken Skeleton Shimmer animasyonu gösterilmeli; bağlantı koparsa hata maskelenerek kullanıcıya 'Yeniden Dene' butonu sunulmalıdır.

Sıkça Sorulan Sorular

Generative UI istemci bundle boyutunu artırır mı?

Hayır. Bileşenler React Server Component (RSC) olarak sunucuda render edildiğinden, ağır kütüphaneler (grafik motorları, hesaplama scriptleri) istemci JS bundle'ına dahil edilmez.

Next.js 16 ve React 19 ile uyumlu mudur?

Evet. Vercel AI SDK v4+ sürümü React 19 Server Actions ve async request mimarisiyle tam uyumlu çalışmaktadır.

Doğrulanmış Kaynaklar ve Dokümantasyon

İlgili Teknik Rehberler

Bu mimariyle bağlantılı diğer üretim odaklı rehber ve vaka analizlerini inceleyin: