Ana içeriğe geç

En İyi Uygulamalar

Bunlar, bir AgentFlow'u yayına almadan önce bilmeye değer kalıplar ve tuzaklardır. Çoğu, neredeyse işe yarayan gerçek akışlardan geliyor — buradaki küçük bir alışkanlık, ileride sizi kafa karıştırıcı bir hata ayıklama seansından kurtarır. Sayfanın tamamını bir kez göz gezdirin; bir şeyler ters gittiğinde ezberlenmeye değer tuzaklara geri dönün.

İyi sistem prompt'ları yazmak

Sistem prompt'u, Agent ve LLM node'larınızın kişiliğini, kurallarını ve sınırlarını aldığı yerdir. Birkaç alışkanlık büyük fark yaratır:

  • Rol konusunda net olun. "Sen bir çiçekçi için samimi bir destek asistanısın", "Sen yardımsever bir asistansın"dan daha iyidir. Rol ne kadar somut olursa, yanıtlar o kadar tutarlı olur.
  • Botun NE yapmaması gerektiğini belirtin. Ne zaman bir insana devredeceğini, hangi konuları reddedeceğini ve kendisine verilmeyen fiyatları, stokları veya politikaları asla uydurmamasını söyleyin.
  • İhtiyaç duyduğu bilgileri ona verin, tahmin ettirmeyin. Çalışma saatlerini, iade politikasını veya kısa bir SSS'i doğrudan prompt'a yapıştırın ya da bir Bilgi Getirici node'u ile çekin.
  • İstediğiniz formatı gösterin. Kısa yanıtlar istiyorsanız "bir veya iki cümleyle yanıt ver" deyin. Belirli bir yapıya ihtiyacınız varsa, modelin doğru formatlamasını ummak yerine Yapılandırılmış Çıktı kullanın.
  • Odaklı tutun. Bir node, bir iş. Her şeyi yapmaya çalışan devasa bir prompt'u ayarlamak, aralarında bir Koşul bulunan iki küçük node'dan daha zordur.
ipucu

Prompt'unuzda canlı değerlere değişkenlerle başvurun — örneğin Greet {{$flow.state.name}} veya Today is {{$current_date_time}}. Tam liste için Değişkenler'e bakın.

Flow state tasarlamak

Flow state, akışın mevcut konuşmaya dair belleğidir — konuşma ilerledikçe node'larınızın okuduğu ve yazdığı anahtar/değer verisi. Oluşturmadan önce planlayın:

  • Anahtarları tuttukları şeye göre ve küçük harfle adlandırın: name, email, order_number, issue_type.
  • İhtiyaç duyacağınız anahtarları Başlangıç node'unda tanımlayın ki ilk turdan itibaren var olsunlar, ardından bilgi topladıkça bir node'un Update Flow State ayarıyla güncelleyin.
  • Akış Değişkenlerini Kalıcı Yap'ı açın durum turlar arasında korunması gerektiğinde (çok mesajlı bir lead toplama, doldurulmakta olan bir destek talebi). Yalnızca tek bir tur içinde ihtiyaç duyduğunuz geçici değerler için kapalı bırakın. Bunun konuşma geçmişiyle nasıl etkileştiği için Bellek'e bakın.
  • Durumu geri okuyun prompt'larda, koşullarda ve araç argümanlarında {{$flow.state.<key>}} ile.
uyarı

name, email veya phone olarak adlandırılmış durum anahtarları özeldir — doğrudan bir müşterinin Lead kaydına senkronize olurlar. Aşağıdaki tuzağa bakın.

Temiz dallanma

Yönlendirme belirsiz olduğunda akışlar karmaşıklaşır. Dalları takip etmesi kolay tutun:

  • Yazabildiğiniz kurallar için Koşul kullanın — bir değerin bir şeye eşit olması, bir sayının eşiği aşması, bir durum anahtarının ayarlı olması. Hızlıdır, öngörülebilirdir ve ücretsizdir (model çağrısı yok).
  • Niyet için Koşullu Agent kullanın — "bu bir şikayet mi, bir soru mu, yoksa bir satış lead'i mi?" — bir değeri eşleştirmek değil, anlamı okumak için modele ihtiyaç duyduğunuz yerlerde.
  • Her zaman geriye kalan durumu kapsayın. Her dallanma noktasının, hiçbir şeye uymayan girdi için bir yola ihtiyacı vardır. Koşul'un yerleşik bir Else'i vardır; Koşullu Agent'ın yoktur (aşağıya bakın).
  • Dallarınızı etiketleyin. Adlandırılmış bir kenar ("şikayet", "else") canvas'ı aylar sonra bile okunabilir kılar.
  • Düz bir koşul seti yeterliyken derinlemesine iç içe geçmeyin. Geniş ve sığ olan, derin bir node merdiveninden okunması ve hata ayıklaması daha kolaydır.

Hata yönetimi

Bir şeyler başarısız olur — bir API zaman aşımına uğrar, bir müşteri beklenmedik bir şey gönderir, model hiçbir şey döndürmez. Buna göre tasarlayın:

  • Her dala bir hedef verin. Yönlendirilmemiş girdi sessizce hiçbir yere gitmez ki bu, botun müşteriyi "görmezden gelmesi" gibi görünür.
  • Bir yedek yanıtınız olsun. Hiçbir şey eşleşmediğinde, çıkmaza girmek yerine "Tam olarak anlayamadım — tekrar ifade edebilir misiniz?" diyen bir Doğrudan Yanıt'ye yönlendirin.
  • Harekete geçmeden önce doğrulayın. Bir CRM'e yazmadan veya bir onay göndermeden önce, ihtiyaç duyduğunuz değerlerin gerçekten flow state'te bulunduğunu bir Koşul ile kontrol edin.
  • Zor durumlar için bir insana devredin. Bot takıldığında bir kişinin devralabilmesi için İnsan Girişi veya manuel mod kullanın.
  • Gerçekten ne olduğunu izleyin. Bir çalıştırmayı node node izlemek ve bir akışın tam olarak nerede ters gittiğini görmek için Çalıştırmalar'ı kullanın.

Ezberlenmeye değer tuzaklar

Bunlar, çoğu oluşturucuyu yanıltan spesifik tuzaklardır. Her biri sessizdir — akış sorunsuz kaydedilir ve yalnızca çalışma zamanında yanlış davranır — bu yüzden ezberlenmeye değerler.

Koşullu Agent'ın otomatik bir "Else"i yoktur

Bir Koşullu Agent, tanımladığınız her senaryo için tam olarak bir çıkış dalı oluşturur — başka hiçbir şey değil. Düz bir Koşul'ın aksine, örtük bir Else dalı eklemez. Bir müşterinin mesajı senaryolarınızdan hiçbiriyle eşleşmezse, sessizce düşürülür ve akış o tur için basitçe durur.

Her zaman açık bir "diğer / başka bir şey" senaryosu ekleyin ve bunu mantıklı bir yedeğe (bir Doğrudan Yanıt, bir insana devir) bağlayın. Bunu isteğe bağlı değil, zorunlu olarak değerlendirin.

{{$question}} dolar işaretine ihtiyaç duyar

{{ }} şablon ifadeleri içinde çalışma zamanı değerleri $ önekiyle yazılır. Müşterinin en son mesajı {{$question}}'dır — $ ile. Dolarsız biçim {{question}} neredeyse aynı görünür ama hiçbir şeye asla çözümlenmez; sadece boş metin olarak geçer.

Bu en çok, müşterinin ne söylediğini görmek için {{$question}}'a başvurması gereken bir Koşul Agent'ın senaryo girdisinde ısırır. Aynı kural {{$flow.state.name}}, {{$vars.myVar}} ve diğer her değişken için geçerlidir. Değişkenler'e bakın.

name / email / phone durum anahtarları Lead sütunları olur

Flowera, flow state'i otomatik olarak bir müşteri Lead'ine dönüştürür — kaydetme node'u gerekmez. Bir oturumun durumu güncellendiğinde, üç anahtar adı özel olarak işlenir (büyük/küçük harf duyarsız): name, email ve phone Lead'in kendi sütunlarına eşlenir. Tanımladığınız diğer her anahtar, Lead'in özel alanlarına düşer.

İki pratik sonuç:

  • Bir lead toplayıcı mı oluşturuyorsunuz? Durum anahtarlarınızı tam olarak name, email, phone olarak adlandırın ki Lead sütunlarına düzgünce düşsünler. Lead Toplayıcı eğitimine bakın.
  • Bu adları yanlışlıkla ilgisiz veriler için (örneğin bir ürünün adı) kullanmayın — bu, müşterinin ad sütununun üzerine yazar.

Yapılandırılmış çıktı + {{output.x}}

Bir LLM node'u Yapılandırılmış Çıktı kullandığında, tek bir metin yığını yerine adlandırılmış alanlar (örneğin intent, sentiment) döndürür. Yapılandırılmış Çıktı bir LLM node özelliğidir — Agent node'unda bulunmaz.

Tuzak: {{output.x}} yalnızca kendi node'unda geçerlidir. Onu üreten node'un içinde — tipik olarak o node'un kendi Update State satırlarında — çalışır, başka hiçbir yerde çalışmaz. Başka bir node'da hiçbir şeyle eşleşmez ve müşteriye değer yerine birebir {{output.intent}} metni gider.

Başka bir node'dan erişmek için üreten node'a label'ıyla referans verin: {{ Classify.intent }}. Noktadan önceki label, canvas'taki label ile harfi harfine, büyük/küçük harf dahil aynı olmalıdır — bu noktalı biçim normalize edilmez, dolayısıyla {{ classify.intent }} sessizce hiçbir şeye çözümlenir. (Noktasız {{ Classify }} biçimi ise büyük/küçük harfe duyarsızdır; bu fark kolayca gözden kaçar.) Daha da iyisi: üreten node alanı flow state'e yazsın, siz de istediğiniz yerde {{$flow.state.<key>}} ile geri okuyun — state hem tek anlamlıdır hem de akışta ne kadar ilerlerseniz ilerleyin korunur.

İlgili