Ajanın eksik bilgi gördüğünde soru sormasını sağlayan akış

Ajanın eksik bilgi gördüğünde soru sormasını sağlayan akış

Yapay Zeka Ajanlarında Eksik Bilgi Algılama: Temel Mantık

Bir yapay zeka ajanı ile konuşurken en sinir bozucu anlardan biri, sistemin eksik bilgiye rağmen kendi kafasından varsayımlar yapmasıdır. “Yarın için rezervasyon yap” dediğinizde saat, kişi sayısı veya restoran tercihi sorulmadan rastgele bir sonuç üretilmesi, kullanıcı deneyimini ciddi şekilde zedeler. Ajanın eksik bilgi gördüğünde soru sormasını sağlayan akış tam da bu sorunu çözmek için tasarlanır ve modern konuşma tasarımının temel taşlarından birinioluşturur.

Kısa Tanım: Bu akış, LLM tabanlı bir ajanın kullanıcıdan gelen talebi analiz edip, gerekli parametrelerin tamamlanıp tamamlanmadığını kontrol etmesini ve eksik olanlarıdoğal bir diyalog içinde sormasını sağlayan mimari kalıptır.

Başlamadan Önce

Bu tür bir akışı kendi projenize entegre etmeden önce bazı hazırlıklar yapmanız gerekiyor. Aşağıdaki listeler, hem teknik altyapınızı hem de kavramsal hazırlığınızı kontrol etmenize yardımcı olacak.

Gerekenler

  • OpenAI API, Claude API veya benzeri bir LLM erişimi
  • LangChain, LangGraph veya özel bir orkestrasyon katmanı
  • Temel Python veya JavaScript bilgisi
  • Konuşma geçmişini tutacak bir state management yapısı

Ön Koşullar

  • Ajanınızın hangi görevleri yerine getireceğini net tanımlamış olmalısınız
  • Her görev için “zorunlu” ve “opsiyonel” parametreleri belirlemelisiniz
  • Kullanıcı senaryolarınızı en az 10-15 örnek ile test etmiş olmalısınız

Slot Filling Kavramı: Eksik Bilgiyi Sistemli Toplama

Geleneksel chatbot dünyasından gelen “slot filling” (yuvadoldurma) kavramı, LLM çağında yeni bir boyut kazandı. Eskiden sabit kurallarla tanımlanan bu süreç, artık dinamik ve bağlamaduyarlı hale geldi. Microsoft’un Power Platform dokümantasyonunda belirtildiği gibi, modern ajanlar “proaktif slot filling” yaparak eksik bilgiyi aktif olarak arar vedoldurur.

Kilit Çıkarım: Slot filling, ajanın bir görevi tamamlamak için gereken tüm bilgi parçalarını sistematik olarak toplaması demektir. Eksik olan her parça bir “slot” olarak düşünülür.

Pratik Örnek: Restoran Rezervasyonu

Slot Adı Zorunlu mu? Örnek Değer Varsayılan
Tarih Evet “Yarın”, “15Ocak”
Saat Evet “20:00”, “akşam 8”
Kişi Sayısı Evet “4 kişi”, “ikimiz” 2
Restoran Tercihi Hayır “İtalyan”, “deniz ürünleri” Genel

Akışın Teknik Mimarisi: Adım Adım

Bu akışı kurarken izleyeceğin temel adımlar şöyle sıralanıyor. Her adım bir öncekine bağlı olduğu için sırayı atlamadanilerlemen önemli.

  1. Intent Detection (Niyet Algılama): Kullanıcının ne yapmak istediğini belirle. “Rezervasyon yap” ile “Rezervasyonumu iptal et” farklı niyetlerdir ve farklı slotlar gerektirir.
  2. Schema Tanımlama: Her intent için gerekli slotları bir şema olarak tanımla. JSON Schema veya Pydantic modelleri bu iş için idealdir. Zorunlu ve opsiyonel alanları net ayır.
  3. Entity Extraction (Varlık Çıkarma): Kullanıcının mesajından mevcut bilgileri çıkar. LLM’e “Bu mesajdan tarih, saat ve kişi sayısı bilgilerini JSON olarak çıkar” gibi bir prompt ver.
  4. Gap Analysis (Boşluk Analizi): Şemadaki zorunlu slotlar ile çıkarılan bilgileri karşılaştır. Eksik olan slotları tespit et.
  5. Clarification Generation (Açıklama Sorusu Üretme): Eksik slotlar için doğal, bağlama uygun sorular üret. Tek seferde tüm eksikleri sormak yerine, en kritik 1-2 tanesini sor.
  6. Loop veya Complete: Tüm zorunlu slotlar dolana kadar 3-5 adımlarını tekrarla. Tamamlandığında asıl görevi çalıştır.

Pro İpucu: Kullanıcıdan tek seferde 3’ten fazla bilgi isteme. Bu, konuşmayı sorgulamaya çevirir ve kullanıcı deneyimini bozar. Öncelik sırasına göre en kritik 1-2 eksikle başla.

Prompt Tasarımı: Ajanı Soru Sormaya Yönlendirme

LLM’lerindoğal eğilimi, eksik bilgiyi varsayımlarla doldurmaktır. Bu davranışı tersine çevirmek için sistem promptunda açık talimatlar vermeniz gerekiyor. Reddit’teki LangChain topluluğunda sıkça tartışılan bu konu, farklı yaklaşımlarla çözülebilir.

Etkili Prompt Stratejileri

  • Negatif Talimat: “Eksik bilgi varsa asla varsayım yapma. Bunun yerine kibarca sor.”
  • Rol Tanımı: “Sen dikkatli bir asistansın. Belirsiz durumları netleştirmeden işlem yapmazsın.”
  • Few-Shot Örnekler: Sistemin nasıl davranması gerektiğini2-3 örnek diyalogla göster.
  • Çıktı Formatı: “Yanıtını şu formatta ver: {action: ‘ask’ | ‘execute’, missing_slots: […], question: ‘…’}”

Örnek Sistem Promptu

Aşağıdaki yapı, pratikte en sık kullanılan ve başarılı sonuç veren kalıplardan biridir:

“Kullanıcı bir görev talep ettiğinde, önce gerekli tüm bilgilerin mevcut olup olmadığını kontrol et. Eksik bilgi varsa, doğrudan görevi yerine getirmeye çalışma. Bunun yerine, eksik bilgiyi nazikçe vedoğal bir dillesor. Birden fazla bilgi eksikse, en önemli olanı önce sor. Tüm gerekli bilgiler tamamlandığında görevi gerçekleştir.”

Yaygın Hatalar ve Kaçınılması Gerekenler

Bu akışı kurarken düşülen tipik tuzaklar var. Bunlardan kaçınmak, hem geliştirme sürenizi kısaltır hem de kullanıcı deneyimini iyileştirir.

  • Aşırı Sorgulama: Her küçük detay için soru sormak kullanıcıyı yorar. Makul varsayılanlar belirle (örn: kişi sayısı belirtilmezse 2 kabul et).
  • Bağlam Körlüğü: Önceki mesajlarda verilen bilgileri tekrar sormak. Konuşma geçmişini mutlaka state’te tut.
  • Robot Gibi Sorular: “Lütfen tarih parametresini girin” yerine “Hangi gün için düşünüyorsunuz?” gibi doğal ifadeler kullan.
  • Sonsuz Döngü: Kullanıcı bilgi vermek istemezse veya “bilmiyorum” derse, alternatif sun veya görevi iptal et.

LangGraph ile Pratik Uygulama

LangGraph ile Pratik Uygulama

LangChain ekosistemindeki LangGraph, bu tür akışlar için özellikle uygun bir araç. “Interrupts” özelliği sayesinde, ajanı belirli noktalarda durdurup kullanıcıdan input alabilirsiniz. Dokümantasyonlarında belirtildiği üzere, checkpointing mekanizması tam olarak graph state’ini kaydeder vedaha sonra kaldığınız yerden devam etmenizi sağlar.

Süre: Temel bir slot-filling akışını LangGraph ile kurmak, deneyimli bir geliştiricinin2-4 saatini alır. Karmaşık senaryolar için bu süre1-2 güne uzayabilir.

Risk Seviyesi: Düşük-Orta. Yanlış yapılandırma kullanıcı deneyimini bozarama veri kaybı veya güvenlik riski oluşturmaz.

Şu Durumda Ne Yaparsın?

Şu Durumda Ne Yaparsın?

Kullanıcı “Yarın bir toplantı ayarla” dediama saat, katılımcılar ve konu belirtmedi. Sistem ne yapmalı?

Doğru Yaklaşım: Önce en kritik eksik bilgiyi sor: “Toplantı saat kaçta olsun?” Kullanıcı yanıtladıktan sonra katılımcılarısor. Konu opsiyonel ise, diğer bilgiler tamamlandığında “Toplantı konusu eklemek ister misiniz?” diyesor veya boş bırak.

Sıkça Sorulan Sorular

Bu akış tüm LLM’lerle çalışır mı?

Evet, ancak performans modele göre değişir. GPT-4, Claude 3 ve Gemini Pro gibi güçlü modeller talimatlarıdaha tutarlı takip eder. Daha küçük modellerde few-shot örnekler eklemek gerekebilir.

Kaç slot için soru sormak makul?

Pratikte 3-5 zorunlu slot ideal görünüyor. Daha fazlası için form tabanlı bir arayüz düşünmek mantıklı olabilir.

Kullanıcı soruyu yanıtlamak istemezse?

Varsayılan değer sunabilir (“Aksi belirtilmezse saat10:00 olarak ayarlayayım mı?”) veya görevi iptal edip alternatif önerebilirsiniz.

Sonuç

Ajanın eksik bilgi gördüğünde soru sorması, yapay zeka uygulamalarında kullanıcı deneyiminidoğrudan etkileyen kritik bir tasarım kararıdır. Slot filling mantığını anlamak, doğru prompt tasarımı yapmak ve LangGraph gibi araçlarla akışı orkestre etmek, bu hedefe ulaşmanın temel adımlarıdır. Unutmayın: İyi bir ajan, bilmediğini kabul edip soran ajandır—varsayımlarlailerleyen değil.

Efe avatarı
Teknoloji konularını günlük hayata uyarlayan içerikler hazırlar; konuyu uzatmadan, net adımlarla anlatmaya odaklanır. Kahve eşliğinde ürün karşılaştırmaları okumak ve yeni araçları denemek rutinidir.