Bir LLM sohbetiyle AI özellikli bir uygulamayı nasıl tasarlayacağınızı, inşa edeceğinizi ve yayınlayacağınızı öğrenin: mimari, promptlar, araçlar, RAG, güvenlik, UX, test ve maliyetler.

Bir model seçmeden veya bir chatbot arayüzü tasarlamadan önce sohbet deneyiminin ne için olduğunu belirleyin. “Bir LLM sohbeti ekle” bir kullanım durumu değildir—kullanıcılar sohbet istemez; sonuçlar isterler: yanıtlar, tamamlanmış eylemler ve daha az gidip gelme.
Kullanıcının bakış açısından bir cümlelik bir problem ifadesi yazın. Örneğin: “Beş farklı sekme açmadan iade politikamız hakkında hızlı, doğru cevaplara ihtiyacım var” veya “Bir destek biletiyi doğru detaylarla bir dakikadan kısa sürede oluşturmak istiyorum.”
Yardımcı bir kontrol: cümleden “sohbet” kelimesini çıkardığınızda cümle hâlâ anlamlıysa, gerçek bir kullanıcı ihtiyacını tanımlıyorsunuz demektir.
İlk sürümü odaklı tutun. Asistanınızın uçtan uca halletmesi gereken küçük bir görev seti seçin, örneğin:
Her görevin net bir “tamamlandı” durumu olmalı. Asistan görevi güvenilir şekilde tamamlayamazsa, gerçek bir AI uygulaması değil demo gibi hissedilir.
Asistanın işe yaradığını nasıl anlayacağınızı belirleyin. İş ve kalite metriklerinin karışımını kullanın:
Her metrik için bir başlangıç hedefi seçin. Kabaca hedefler bile ürün kararlarını basitleştirir.
Her şeyi şekillendirecek sınırları yazın:
Net bir kullanım durumu, küçük bir görev listesi, ölçülebilir metrikler ve açık kısıtlarla, LLM sohbetinizin geri kalanı tahmin yerine pratik takaslar haline gelir.
Doğru modeli seçmek heyecandan çok uyuma dayanır: kalite, hız, maliyet ve operasyonel çaba. Seçiminiz kullanıcı deneyiminden devam eden bakıma kadar her şeyi şekillendirir.
Hosted sağlayıcılar hızlı entegrasyon sağlar: metin gönderirsiniz, metin alırsınız; ölçeklendirme, güncellemeler ve donanımı onlar halleder. Bu genellikle Yapay zeka uygulama geliştirme için en iyi başlangıçtır çünkü LLM sohbeti deneyiminizde iterasyon yaparken aynı zamanda bir altyapı ekibi olmanız gerekmez.
Takaslar: büyük ölçekte maliyetler daha yüksek olabilir, veri yerleşimi seçenekleri sınırlı olabilir ve üçüncü tarafın çalışma süresi ve politika kısıtlarına bağımlı olursunuz.
Kendi modelinizi çalıştırmak veri işleme, özelleştirme ve yüksek hacimde potansiyel olarak daha düşük marjinal maliyet üzerinde daha fazla kontrol sağlar. Ayrıca on-prem dağıtım veya katı yönetişim gerekiyorsa yardımcı olur.
Takaslar: model sunma, GPU kapasite planlaması, izleme, yükseltmeler ve olay müdahalesi tamamen sizin sorumluluğunuzda olur. Yığınınız iyi ayarlı değilse gecikme kötü olabilir; kullanıcıya yakın dağıtırsanız iyi olabilir.
Konteksti fazla almayın. Tipik mesaj uzunluğunu ve dahil edeceğiniz geçmiş veya alınan içerik miktarını tahmin edin. Daha uzun konteks pencereleri sürekliliği artırabilir, ama genellikle maliyet ve gecikmeyi de yükseltir. Birçok sohbet akışı için daha küçük bir pencere artı iyi bir retrieval (sonradan anlatılanlar bölümünde) tam metin transkriptleri doldurmaktan daha verimlidir.
Bir chatbot arayüzü için gecikme bir özelliktir: kullanıcılar gecikmeleri anında hisseder. Karmaşık istekler için daha kaliteli bir model, rutin görevler (özetleme, yeniden yazma, sınıflandırma) için daha hızlı/ucuz bir modeli düşünün.
Basit bir yönlendirme stratejisi tasarlayın: birincil model ve kesinti, hız limiti veya maliyet kontrolü için bir veya iki yedek. Pratikte bu, “önce birincili dene, sonra düşür” anlamına gelebilir; çıktı formatını tutarlı tutarak uygulamanızın bozulmamasını sağlayın.
Bir sohbet deneyimi yüzeyde “basit” görünebilir, ama arkasındaki uygulama net sınırlar gerektirir. Amaç, modeli değiştirmeyi, araç eklemeyi ve güvenlik kontrollerini sıkılaştırmayı UI yeniden yazmadan kolaylaştırmaktır.
1) Sohbet UI (istemci katmanı)
Ön yüzü etkileşim desenlerine odaklayın: streaming yanıtlar, mesaj yeniden deneme ve atıflar veya araç sonuçlarını gösterme. Model mantığını burada tutmaktan kaçının ki UI değişikliklerini bağımsız gönderebilesiniz.
2) AI Servisi (API katmanı)
UI'nin /chat, /messages ve /feedback için çağırdığı özel bir backend servisi oluşturun. Bu servis kimlik doğrulama, oran sınırlaması ve istek şekillendirme (system promptlar, biçim kuralları) işlemlerini yönetmeli. Bunu ürününüz ile kullandığınız model arasındaki sabit sözleşme gibi düşünün.
3) Orkestrasyon katmanı (AI servisinin içinde veya ayrı bir servis olarak)
“Zekâ”nın sürdürülebilir hale geldiği yer burasıdır: araç/fonksiyon çağırma, retrieval (RAG), politika kontrolleri ve çıktı doğrulama. Orkestrasyonu modüler tutmak, arama, bilet oluşturma, CRM güncellemeleri gibi yetenekleri prompt metniyle iç içe geçirmeden eklemenizi sağlar.
Eğer ürün kabuğunda (UI + backend + dağıtımlar) hızlı ilerlemek ve prompt, araçlar ve RAG üzerinde iterasyon yapmak istiyorsanız, Koder.ai gibi bir vibe-coding platformu, sohbetten tam yığın uygulama üretmenize ve hazır olduğunuzda kaynak kodunu dışa aktarmanıza yardımcı olabilir.
Konuşmaları saklayın, ama ayrıca kullanıcı profilleri (tercihler, izinler) ve olaylar (araç çağrıları, RAG sorguları, kullanılan model, gecikme) saklayın. Olay verisi, sonradan hata ayıklama ve değerlendirme yapılmasını sağlar.
Yapılandırılmış yük mesajı meta verisi (ham hassas metin değil), metrikler (gecikme, token kullanımı, araç hata oranları) ve UI → API → araçlar arası izlemeyi kaydedin. Bir şey bozulduğunda cevabı bilmek istersiniz: hangi adım başarısız oldu, hangi kullanıcı için ve neden—tahmin yürütmeden.
Sohbet deneyiminiz “akıllı” hissettirmek için tutarlı olmalı. Prompt ve çıktı standartları, ürününüz ile model arasındaki sözleşmedir: ne yapabileceği, nasıl konuşacağı ve uygulamanızın güvenilir şekilde kullanabileceği yanıt biçimi.
Asistanın rolünü, kapsamını ve tonunu belirten bir system message ile başlayın. Spesifik tutun:
Her şeyi system mesajına sıkıştırmaktan kaçının. Sabit politikaları ve davranışları oraya koyun; değişken içerikleri (kullanıcı verileri veya alınan bağlam) başka yere koyun.
UI'nız bir sonucu (kartlar, tablolar, durum etiketleri) render etmesi gerektiğinde, sadece doğal dil kırılgan olur. Uygulamanızın yanıtları deterministik olarak ayrıştırabilmesi için yapılandırılmış çıktılar—tercihen bir JSON şeması—kullanın.
Örnek: require a response shaped like { \"answer\": string, \"next_steps\": string[], \"citations\": {\"title\": string, \"url\": string}[] }. İlk başta katı doğrulama yapmasanız bile, hedef bir şema olması sürprizleri azaltır.
Asistanın reddetmesi gereken, doğrulaması gereken ve öneride bulunabileceği şeyler için açık kurallar yazın. Güvenli varsayılanlar ekleyin:
Her isteğin aynı yapıya sahip olması için tekrar edilebilir bir şablon kullanın:
Bu ayrım, promptları bozmadan hata ayıklamayı, değerlendirmeyi ve geliştirmeyi kolaylaştırır.
Bir sohbet deneyimi gerçekten işe yarar hale geldiğinde iş yapabilir: bilet oluşturmak, bir siparişi sorgulamak, toplantı planlamak veya bir e-posta taslağı hazırlamak. Anahtar nokta, modelin eylem önermesine izin vermek ama gerçekte ne çalıştırılacağını backend'in kontrol etmesidir.
Güvenli şekilde izin verebileceğiniz eylemlerin dar ve açık bir listesinden başlayın, örneğin:
Bir eylem para, erişim veya veri görünürlüğünü değiştiriyorsa baştan “riskli” kabul edin.
Modelin “bir API isteği yazmasını” istemek yerine get_order_status(order_id) veya create_ticket(subject, details) gibi küçük bir araç seti (fonksiyonlar) sunun. Model bir aracı ve yapılandırılmış argümanları seçer; sunucunuz bunları çalıştırır ve sonucu sohbete geri döndürür.
Bu, hataları azaltır, davranışı öngörülebilir kılar ve ne denendiğine dair net denetim günlükleri oluşturur.
Araç argümanlarına asla güvenmeyin. Her çağrıda:
Model öneri yapmalı; backend doğrulamalı.
Geri alınamaz veya yüksek etkili adımlar için insan dostu bir onay ekleyin: yapılacakların kısa özeti, hangi verilerin etkileneceği ve net bir “Onayla / İptal Et” seçeneği. Örnek: “Order #1842 için $50 kredi isteyeceğim. Onaylıyor musunuz?”
Sohbet deneyiminiz ürününüz, politikalarınız veya müşteri geçmişi hakkında sorulara yanıt vermesi gerekiyorsa, tüm bilgiyi promptlara “gömmeye” veya modelin genel eğitimine güvenmeye çalışmayın. Retrieval-Augmented Generation (RAG), uygulamanızın en alakalı parçaları çalışma zamanında kendi içeriğinizden çekmesini sağlar ve LLM'in bu bağlamla yanıtlamasına izin verir.
Pratik bir ayrım:
Bu, promptları basit tutar ve asistanın kendinden emin ama yanlış olma riskini azaltır.
RAG kalitesi ön işleme büyük ölçüde bağlıdır:
Her chunk için embedding oluşturup bunları bir vektör veritabanında (veya vektör destekli arama motorunda) saklayacaksınız. Dil ve alanınıza uygun bir embedding modeli seçin. Ardından ölçeğinize ve kısıtlarınıza uygun bir depolama yaklaşımı seçin:
RAG cevapları kullanıcıların doğrulamasına izin verdiğinde daha inandırıcı olur. Yanıtla birlikte atıflar döndürün: belge başlığını ve kısa bir alıntıyı gösterin, kaynağa göreli yollarla link verin (örneğin, /docs/refunds). Bağlantı veremiyorsanız (özel belgeler), net bir kaynak etiketi gösterin (“Policy: Refunds v3, updated 2025-09-01”).
İyi yapıldığında, RAG LLM sohbetinizi daha dayanıklı, güncel ve denetlenebilir kılar.
Hafıza, LLM sohbetinin tek seferlik bir Soru-Cevap yerine devam eden bir ilişki gibi hissettirmesini sağlar. Aynı zamanda maliyeti kolayca artırabileceğiniz veya saklamamanız gereken verileri depolayabileceğiniz en kolay yerlerden biridir. Basit başlayın ve kullanım durumunuza uygun bir strateji seçin.
Çoğu uygulama şu desenlerden birine uyar:
Pratik bir yaklaşım kısa vadeli özet + isteğe bağlı uzun vadeli profil: model bağlam farkındalığını korur, ama tam transkripti her yere taşımamış olursunuz.
Ne sakladığınızı açıkça belirtin. Ham transkriptleri “her ihtimale karşı” saklamayın. Yapısal alanları tercih edin (örn. tercih edilen dil) ve kimlik bilgileri, sağlık bilgisi, ödeme verileri gibi gerekçelendiremeyeceğiniz şeyleri toplamaktan kaçının.
Hafıza saklarsanız, onu operasyonel loglardan ayırın ve saklama kuralları belirleyin.
Konuşmalar büyüdükçe token kullanımı (ve gecikme) artar. Eski mesajları kompakt bir notta özetleyin:
Sonra sadece en yeni birkaç dönüşü ve özetin kendisini tutun.
UI'de net kontroller ekleyin:
Bu küçük özellikler güvenlik, uyum ve kullanıcı güvenini büyük ölçüde artırır.
İyi bir LLM sohbet deneyimi büyük ölçüde UX'tir. Arayüz belirsiz veya yavaşsa, model doğru olsa bile kullanıcı cevaplara güvenmez.
Basit bir düzenle başlayın: net bir giriş kutusu, görünür gönder düğmesi ve kolay taranan mesajlar.
Kullanıcıların nelerin olduğunu her zaman bilmesi için mesaj durumları ekleyin:
Uzun konuşmalar için zaman damgaları (en azında mesaj grubu başına) ve ince ayraçlar ekleyin. Bu, kullanıcıların daha sonra dönüp neyin değiştiğini anlamalarına yardımcı olur.
Toplam üretim süresi aynı olsa bile, token akışı uygulamayı daha hızlı hissettirir. Hemen bir yazma göstergesi gösterin, sonra yanıtı geldikçe akıtın. “Üretimi durdur” desteği verirseniz kullanıcılar kontrolde hisseder—özellikle cevap yön değiştirdiğinde.
Birçok kullanıcı ne sormaları gerektiğini bilmez. Birkaç hafif yardımcı başarılı oturumları artırır:
Baştan başarısızlıklar için tasarlayın: ağ kopmaları, oran limitleri ve araç hataları olacak.
Dostça, spesifik mesajlar kullanın (“Bağlantı koptu. Yeniden denemek ister misiniz?”), tek tıklamayla yeniden deneme sunun ve kullanıcının taslak metnini koruyun. Uzun istekler için açık zaman aşımı belirleyin, sonra “Tekrar dene” durumu sunun: yeniden dene, promptu düzenle veya yeni bir konu başlat seçenekleriyle.
Uygulamanız sohbet edebiliyorsa, aynı zamanda kandırılabilir, kötüye kullanılabilir veya zorlanabilir. Güvenlik ve emniyeti bir ürün gereksinimi olarak değerlendirin, “iyi olur” olarak değil. Amaç: zararlı çıktıları önlemek, kullanıcı ve şirket verilerini korumak ve sistemi kötüye kullanıma karşı dayanıklı tutmak.
Uygulamanızın reddetmesi gerekenleri, sınırlı cevap vereceği durumları ve el değiştirme gerektirenleri tanımlayın. Yaygın kategoriler: özkıyım, tıbbi/hukuki/finansal tavsiye, nefret/hakaret, cinsel içerik (özellikle çocuklarla ilgili), kötü amaçlı yazılım üretimi veya güvenlikten kaçma istekleri.
Üretimden önce (ve bazen sonra) hafif bir moderasyon adımı uygulayın. Hassas konularda daha güvenli bir cevap moduna geçin: yüksek seviyede bilgi verin, profesyonel yardım önerin ve adım adım talimatlardan kaçının.
Alınan belgelerin ve kullanıcı mesajlarının kötü amaçlı talimatlar içerebileceğini varsayın. Şunlar arasında katı bir ayrım tutun:
Pratikte: alınan pasajları referans metin olarak açıkça etiketleyin, hiçbir zaman instruction katmanına doğrudan karıştırmayın ve modelin bunları sadece soruyu cevaplamak için kullanmasına izin verin. Loglardan sırları kırpın ve API anahtarlarını promptlara koymayın.
Özel verilere veya ücretli kaynaklara dokunan her şey için kimlik doğrulama zorunlu kılın. Kullanıcı/IP başına oran limitleri, kazıyıcı desenleri için anomali tespiti ve araç çağrılarında sert sınırlar ekleyin ki maliyetler kontrolden çıkmasın.
Sohbet UI'sine görünür bir “Cevabı rapor et” düğmesi ekleyin. Raporları bir inceleme kuyruğuna yönlendirin, konuşma bağlamını (PII minimize edilmiş) ekleyin ve yüksek riskli durumlar veya tekrar eden politika ihlalleri için insan operatöre yükseltme yolu sağlayın.
Bir LLM sohbet deneyimini göz kararıyla kontrol edip gerçek kullanıcı gelince işe yarayacağını umamazsınız. Yayına almadan önce değerlendirmeyi bir ürün kalite kapısı gibi ele alın: “iyi”nin ne olduğunu tanımlayın, bunu tekrar tekrar ölçün ve regresyon varsa sürümü engelleyin.
Küçük ama temsil edici bir konuşma test seti oluşturarak başlayın. Tipik başarılı yolları, dağınık kullanıcı mesajlarını, belirsiz istekleri ve kenar durumları (desteklenmeyen özellikler, eksik veriler, politika ihlali girişimleri) dahil edin. Her senaryo için beklenen sonuçları ekleyin: ideal cevap, hangi kaynakların atıf yapılması gerektiği (RAG kullanılıyorsa) ve ne zaman asistanın reddetmesi gerektiği.
Kullanıcı güveniyle eşleştirilen birkaç temel metriği takip edin:
Basit bir değerlendirici rubrik (1–5 puan + kısa “neden”) gayri resmi geri bildirimden çok daha etkilidir.
Botunuz eylem yapıyorsa, araç çağrılarını bir API uç noktasını test eder gibi dikkatle test edin:
Araç girdilerini/çıktılarını denetlenecek şekilde loglayın.
Prompt ve UI değişiklikleri için varsayımsal gönderimler yerine A/B testleri kullanın. Önce sabit test setinizde varyantları karşılaştırın; sonra (güvenliyse) üretimde küçük bir trafik diliminde test edin. Sonuçları sadece “daha güzel duruyor” yerine iş başarısı metriklerine (görev tamamlama, çözüm süresi, yönlendirme oranı) bağlayın.
Bir sohbet deneyimi prototipte “ücretsiz” hissedebilir, ama üretimde fatura, yavaş yanıtlar veya kesintilerle sizi şaşırtabilir. Maliyet, hız ve çalışma süresini sonradan düşünmek yerine ürün gereksinimi olarak ele alın.
Konuşma başı token kullanımını tahmin ederek başlayın: ortalama kullanıcı mesaj uzunluğu, gönderdiğiniz kontekst miktarı, tipik çıktı uzunluğu ve araç/lookup çağrı sıklığı. Beklenen günlük sohbet sayısıyla çarpın ve bir temel değer elde edin; ardından bütçe uyarıları ve sert limitler koyun ki bir entegrasyon hesabınızı boşaltamasın.
Pratik bir taktik: pahalı parçaları önce sınırla:
Çoğu gecikme (1) model süresi ve (2) araç/veri kaynaklarını beklemekten gelir. İkisini de azaltabilirsiniz:
Her mesaj en büyük modelinizi gerektirmez. Yönlendirme kuralları (veya küçük bir sınıflandırıcı) kullanarak daha küçük, daha ucuz bir modelin basit görevleri (SSS, biçimlendirme, basit çıkarım) ele almasını; daha büyük modelin karmaşık muhakeme, çok adımlı planlama veya hassas konuşmaları yönetmesini sağlayın. Bu genelde hem maliyeti hem hızı iyileştirir.
LLM'ler ve araç çağrıları bazen başarısız olur. Plan yapın:
İyi yapıldığında, kullanıcılar hızlı, istikrarlı bir asistan deneyimler ve sizin maliyetleriniz öngörülebilir olur.
LLM sohbet deneyiminizi göndermek gerçek işin başlangıcıdır. Kullanıcılar ölçekli olarak etkileşime girince yeni hata modları, yeni maliyetler ve asistanı daha akıllı hissettirmek için promptları sıkılaştırma ve retrieval içeriğini iyileştirme fırsatları keşfedeceksiniz.
Teknik sinyalleri kullanıcı deneyimine bağlayan izleme kurun. En azından gecikme (p50/p95), hata oranları ve belirgin hata kategorilerini—model zaman aşımı, araç/fonksiyon çağrı hataları, retrieval başarısızlıkları ve UI teslim sorunları—takip edin.
Faydalı bir desen, her mesaj için şu alanları içeren tek bir yapılandırılmış event yayınlamaktır: model adı/sürümü, token sayıları, araç çağrıları (isim + durum), retrieval istatistikleri (dönen doküman sayısı, skorlar) ve kullanıcıya görünen sonuç (başarı/terk/yönlendirme).
Hata ayıklamak ve geliştirmek için örneklere ihtiyaç duyarsınız—ama bunları sorumlu şekilde saklayın. Promptları ve model çıktıları otomatik kırpma ile hassas alanları (e-posta, telefon, adres, ödeme bilgileri, erişim tokenları) kaldırarak loglayın. Ham metin erişimini sınırlı, süreli ve denetlenebilir tutun.
Değerlendirme için konuşmaları tekrar oynatmanız gerekiyorsa, temizlenmiş bir transkript ve hassas içerik için ayrı şifrelenmiş bir blob saklayın; böylece çoğu iş akışı ham veriye dokunmaz.
UI'ye hafif bir geri bildirim kontrolü ekleyin (başparmak yukarı/aşağı + isteğe bağlı yorum). Olumsuz geri bildirimleri şu öğelerle bir inceleme kuyruğuna yönlendirin:
Sonra aksiyon alın: prompt talimatlarını düzeltin, retrieval kaynaklarına eksik bilgiyi ekleyin ve aynı sorunun sessizce geri gelmesini önleyecek hedefli testler oluşturun.
LLM davranışı evrilir. Kullanıcılara neyin geliştirileceğini bildiren açık bir yol haritası yayınlayın (doğruluk, desteklenen eylemler, diller, entegrasyonlar). Özelliklerin plana göre farklı olduğu durumlarda—ör. daha yüksek oran limitleri, daha uzun geçmiş, premium modeller—kullanıcıları /pricing sayfasına yönlendirin ve bu limitleri ürün UI içinde açıkça gösterin.
Hızlı gönderip daha sonra tamamen özel bir yığına “mezuniyete” geçmeyi hedefliyorsanız, başlangıçta Koder.ai üzerinde bir versiyon inşa etmeyi (kaynak kodu dışa aktarma ve snapshot/rollback destekleriyle) ve kullanım arttıkça değerlendirme, güvenlik ve gözlemlenebilirlik uygulamalarıyla sertleştirmeyi düşünün.