Aracılığıyla paylaş


Yapay zeka aracısı

Yapay zeka aracıları belirli görevleri gerçekleştirmek, soruları yanıtlamak ve kullanıcılar için süreçleri otomatikleştirmek üzere tasarlanmıştır. Bu aracılar karmaşıklıkta büyük ölçüde farklılık gösterir. Bunlar basit sohbet botlarından yardımcı pilotlara, karmaşık iş akışlarını otonom olarak çalıştırabilen dijital veya robotik sistemler biçiminde gelişmiş yapay zeka yardımcılarına kadar uzanıyor.

Bu makalede yapay zeka aracıları için kavramsal genel bakışlar ve ayrıntılı uygulama örnekleri sağlanmaktadır.

Yapay zeka aracıları nedir?

Tek başına büyük dil modellerinden (LLM) veya kural tabanlı yazılım/donanım sistemlerinden farklı olarak yapay zeka aracıları şu yaygın özelliklere sahiptir:

  • Planlama: Yapay zeka aracıları belirli hedeflere ulaşmak için eylemleri planlayabilir ve sıralayabilir. LLM'lerin tümleştirilmesi, planlama yeteneklerinde devrim yaptı.
  • Araç kullanımı: Gelişmiş yapay zeka aracıları görevleri etkili bir şekilde gerçekleştirmek için kod yürütme, arama ve hesaplama özellikleri gibi çeşitli araçları kullanabilir. Yapay zeka aracıları genellikle işlev çağrısı aracılığıyla araçları kullanır.
  • Algı: Yapay zeka aracıları, ortamlarındaki bilgileri algılayabilir ve işleyerek daha etkileşimli ve bağlam açısından bilgi edinebilir. Bu bilgiler görsel, işitsel ve diğer duyusal verileri içerir.
  • Bellek: Yapay zeka aracıları, geçmiş etkileşimleri (araç kullanımı ve algısı) ve davranışları (araç kullanımı ve planlama) hatırlama özelliğine sahiptir. Bu deneyimleri depolar ve hatta gelecekteki eylemleri bilgilendirmek için kendi kendine yansıma gerçekleştirirler. Bu bellek bileşeni, zaman içinde aracı performansında süreklilik ve iyileştirme sağlar.

Not

Yapay zeka aracıları bağlamında bellek teriminin kullanımı bilgisayar belleği kavramından farklıdır (geçici, kalıcı olmayan ve kalıcı bellek gibi).

Copilots

Copilots bir yapay zeka aracısı türüdür. Bağımsız olarak çalışmak yerine kullanıcılarla birlikte çalışırlar. Tam otomatik aracılardan farklı olarak, yardımcı pilotlar kullanıcıların görevleri tamamlamasına yardımcı olacak öneriler ve öneriler sağlar.

Örneğin, bir kullanıcı e-posta yazarken, bir yardımcı pilot tümcecikler, cümleler veya paragraflar önerebilir. Kullanıcı ayrıca öneriyi desteklemek için yardımcı pilotdan diğer e-postalarda veya dosyalarda ilgili bilgileri bulmasını isteyebilir (bkz . alma artırılmış oluşturma). Kullanıcı önerilen bölümleri kabul edebilir, reddedebilir veya düzenleyebilir.

Otonom aracılar

Otonom aracılar daha bağımsız çalışabilir. E-posta oluşturma konusunda yardımcı olacak otonom aracılar ayarladığınızda, aşağıdaki görevleri gerçekleştirmelerini sağlayabilirsiniz:

  • Konuyla ilgili mevcut e-postalara, sohbetlere, dosyalara ve diğer iç ve genel bilgilere başvurun.
  • Toplanan bilgiler üzerinde nitel veya nicel analiz gerçekleştirin ve e-postayla ilgili sonuçlar alın.
  • Sonuçlara göre e-postanın tamamını yazın ve destekleyici kanıtları dahil edin.
  • İlgili dosyaları e-postaya ekleyin.
  • Tüm dahil edilen bilgilerin olgusal olarak doğru olduğundan ve onayların geçerli olduğundan emin olmak için e-postayı gözden geçirin.
  • Kime, Bilgi ve Gizli için uygun alıcıları seçin ve e-posta adreslerini arayın.
  • E-postayı göndermek için uygun bir zaman zamanlayın.
  • Yanıtlar bekleniyor ancak alınmıyorsa izlemeler gerçekleştirin.

Aracıları, önceki görevlerin her birini insan onayıyla veya onayı olmadan gerçekleştirecek şekilde yapılandırabilirsiniz.

Çok aracılı sistemler

Yüksek performanslı otonom aracılar elde etmek için popüler bir strateji, çok aracılı sistemlerin kullanılmasıdır. Çok aracılı sistemlerde, ister dijital ister robot biçiminde olsun, bireysel veya kolektif hedeflere ulaşmak için etkileşime geçin veya birlikte çalışın. Sistemdeki aracılar bağımsız olarak çalışabilir ve kendi bilgi veya bilgilerine sahip olabilir. Her aracı, ortamını algılama, kararlar alma ve hedeflerine göre eylemler yürütme özelliğine de sahip olabilir.

Çok aracılı sistemler şu temel özelliklere sahiptir:

  • Otonom: Her aracı bağımsız olarak çalışır. Doğrudan insan müdahalesi veya diğer aracılar tarafından kontrol edilmeden kendi kararlarını verir.
  • Etkileşimli: Aracılar bilgi paylaşmak, anlaşmak ve eylemlerini koordine etmek için birbirleriyle iletişim kurar ve işbirliği gerçekleştirir. Bu etkileşim çeşitli protokoller ve iletişim kanalları aracılığıyla gerçekleşebilir.
  • Hedefe yönelik: Çok aracılı bir sistemdeki aracılar, belirli hedeflere ulaşmak için tasarlanmıştır. Bu hedefler, tek tek hedeflerle veya aracılar arasında paylaşılan bir hedefle uyumlu hale gelebilir.
  • Dağıtılmış: Çok aracılı sistemler tek bir denetim noktası olmadan dağıtılmış bir şekilde çalışır. Bu dağıtım sistemin sağlamlığını, ölçeklenebilirliğini ve kaynak verimliliğini artırır.

Çok aracılı bir sistem, bir yardımcı pilota veya tek bir LLM çıkarımı örneğine göre aşağıdaki avantajları sağlar:

  • Dinamik mantık: Düşünce zinciri veya düşünce ağacı istemleriyle karşılaştırıldığında, çok aracılı sistemler çeşitli mantık yollarında dinamik gezintiye olanak tanır.
  • Gelişmiş yetenekler: Çok aracılı sistemler, kapsamlı karar alma süreçleri yürüterek ve görevleri birden çok aracı arasında dağıtarak karmaşık veya büyük ölçekli sorunları ele alabilir.
  • Gelişmiş bellek: Bellekli çok aracılı sistemler, daha iyi anlaşılmasını ve bilgi saklamayı sağlamak için LLM'lerin bağlam pencerelerinin üstesinden gelebilir.

Yapay zeka aracılarının uygulanması

Akıl yürütme ve planlama

Karmaşık mantık ve planlama, gelişmiş otonom ajanların işaretidir. Otonom aracılar için popüler çerçeveler, akıl yürütme ve planlama için aşağıdaki yöntemlerden birini veya daha fazlasını (arXiv arşiv sayfalarının bağlantıları ile birlikte) içerir:

  • Kendi Kendine Sor

    İlk soruyu yanıtlamadan önce modelin kendisine açıkça soru sormasını (ve yanıtlamasını) sağlayarak düşünce zincirini geliştirin.

  • Neden ve Eylem (ReAct)

    Hem akıl yürütme izlemeleri hem de göreve özgü eylemleri birbirine bağlı bir şekilde oluşturmak için LLM'leri kullanın. Akıl yürütme izlemeleri, modelin özel durumları işlemenin yanı sıra eylem planlarını başlatmaya, izlemesine ve güncelleştirmesine yardımcı olur. Eylemler, modelin ek bilgi toplamak için bilgi bankası veya ortamlar gibi dış kaynaklara bağlanmasını sağlar.

  • Planlama ve Çözme

    Tüm görevi daha küçük alt görevlere bölmek ve ardından alt görevleri plana göre gerçekleştirmek için bir plan oluşturun. Bu yaklaşım genellikle sıfır atışlı düşünce zinciri isteminde bulunan hesaplama hatalarını, eksik adım hatalarını ve anlamsal yanlış anlama hatalarını azaltır.

  • Yansıtma/Kendi Kendine eleştiri

    Görev geri bildirim sinyallerini sözlü olarak yansıtan refleks aracıları kullanın. Bu aracılar, sonraki denemelerde daha iyi karar almaya neden olmak için epizodik bellek arabelleğinde kendi yansıtıcı metinlerini tutar.

Çerçeveler

Çeşitli çerçeveler ve araçlar, yapay zeka aracılarının geliştirilmesini ve dağıtımını kolaylaştırabilir.

Gelişmiş planlama ve bellek gerektirmeyen araç kullanımı ve algısı için bazı popüler LLM düzenleyici çerçeveleri LangChain, LlamaIndex, Prompt Flow ve Semantic Kernel'tir.

AutoGen, gelişmiş ve otonom planlama ve yürütme iş akışları için 2022'nin sonlarında başlayan çok aracılı dalgayı başlattı. OpenAI'nin Yardımcıları API'si, kullanıcılarının GPT ekosisteminde yerel olarak aracılar oluşturmasına olanak tanır. LangChain Aracıları ve LlamaIndex Aracıları da aynı zamanda ortaya çıkmıştır.

İpucu

Bu makalenin devamında yer alan uygulama örneği , popüler çerçevelerden birini ve birleşik bir aracı bellek sistemini kullanarak basit bir çok aracılı sistem oluşturmayı göstermektedir.

AI aracısı bellek sistemi

2022'den 2024'e kadar yapay zeka ile geliştirilmiş uygulamalarla denemeler yapmak için yaygın olarak kullanılan uygulama, çeşitli veri iş akışları veya türleri için tek başına veritabanı yönetim sistemleri kullanıyor. Örneğin, önbelleğe alma için bellek içi veritabanı, işletimsel veriler için ilişkisel bir veritabanı (izleme/etkinlik günlükleri ve LLM konuşma geçmişi dahil) ve ekleme yönetimi için saf vektör veritabanı kullanabilirsiniz.

Ancak, tek başına veritabanlarından oluşan karmaşık bir web kullanma uygulaması yapay zeka aracısının performansına zarar verebilir. Tüm bu farklı veritabanlarını yapay zeka aracıları için uyumlu, birlikte çalışabilir ve dayanıklı bir bellek sistemiyle tümleştirmek kendi zorluğudur.

Ayrıca, sık kullanılan veritabanı hizmetlerinin çoğu yapay zeka aracı sistemlerinin ihtiyaç duyduğu hız ve ölçeklenebilirlik için en uygun değildir. Bu veritabanlarının tek tek zayıflıkları çok aracılı sistemlerde daha da şiddetlenir.

Bellek içi veritabanları

Bellek içi veritabanları hız için mükemmeldir ancak yapay zeka aracılarının ihtiyaç duyduğu büyük ölçekli veri kalıcılığıyla mücadele edebilir.

İlişkisel veritabanları

İlişkisel veritabanları, aracıların işlediği verilerin çeşitli modaliteleri ve akıcı şemaları için ideal değildir. İlişkisel veritabanları sağlama, bölümleme ve parçalama yönetimi için el ile çaba ve hatta kapalı kalma süresi gerektirir.

Saf vektör veritabanları

Saf vektör veritabanları işlemsel işlemler, gerçek zamanlı güncelleştirmeler ve dağıtılmış iş yükleri için daha az etkili olma eğilimindedir. Günümüzde popüler saf vektör veritabanları genellikle aşağıdakileri sunar:

  • Okuma ve yazma garantisi yoktur.
  • Sınırlı alım aktarım hızı.
  • Düşük kullanılabilirlik (%99,9'un altında veya 9 saat veya daha fazla yıllık kesinti).
  • Bir tutarlılık düzeyi (nihai).
  • Yoğun kaynak kullanan bellek içi vektör dizini.
  • Çok kiracılılık için sınırlı seçenekler.
  • Sınırlı güvenlik.

Güçlü bir yapay zeka aracısı bellek sisteminin özellikleri

Verimli veritabanı yönetim sistemleri yazılım uygulamalarının performansı için kritik öneme sahip olduğu gibi, LLM destekli aracılara çıkarımlarına yol gösterecek ilgili ve yararlı bilgiler sağlamak da kritik önem taşır. Sağlam bellek sistemleri, aracıların çıkarım zamanında alabildiği çeşitli türlerdeki bilgilerin düzenlenmesini ve depolanmasını sağlar.

Şu anda LLM destekli uygulamalar genellikle metinleri veya belgeleri almak için temel anlamsal arama veya vektör araması kullanan alma artırılmış nesli kullanır. Vektör araması genel bilgileri bulmak için yararlı olabilir. Ancak vektör araması belirli bir görev veya etki alanı için uygun olan belirli bağlamı, yapıyı veya ilişkileri yakalamayabilir.

Örneğin, görev kod yazmaksa, vektör araması tutarlı ve doğru kod oluşturmak için önemli olan söz dizimi ağacını, dosya sistemi düzenini, kod özetlerini veya API imzalarını alamayabilir. Benzer şekilde, görev tablosal verilerle çalışacaksa, vektör araması şemayı, yabancı anahtarları, saklı yordamları veya verileri sorgulamak veya çözümlemek için yararlı olan raporları alamayabilir.

Tek başına bellek içi, ilişkisel ve vektör veritabanlarından oluşan bir web'i (daha önce açıklandığı gibi) birlikte doku oluşturmak, çeşitli veri türleri için en uygun çözüm değildir. Bu yaklaşım, prototip aracı sistemlerinde işe yarayabilir. Ancak, gelişmiş otonom aracıların performansını engelleyebilecek karmaşıklık ve performans sorunları ekler.

Sağlam bir bellek sistemi aşağıdaki özelliklere sahip olmalıdır.

Multimodal

Yapay zeka aracısı bellek sistemleri, çeşitli görevler ve etki alanları için yararlı olabilecek meta verileri, ilişkileri, varlıkları, özetleri veya diğer bilgi türlerini depolayan koleksiyonlar sağlamalıdır. Bu koleksiyonlar belgeler, tablolar veya kod gibi verilerin yapısına ve biçimine dayalı olabilir. Alternatif olarak, kavramlar, ilişkilendirmeler veya yordam adımları gibi verilerin içeriğine ve anlamlarına da dayanabilir.

Bellek sistemleri yalnızca yapay zeka aracıları için kritik değildir. Ayrıca bu aracıları geliştiren, koruyan ve kullanan insanlar için de önemlidir.

Örneğin, insanların aracıların planlama ve yürütme iş akışlarını neredeyse gerçek zamanlı olarak denetlemesi gerekebilir. Denetim yaparken, insanlar rehberlikle kesişebilir veya aracıların diyaloglarında veya monologlarında satır içi düzenlemeler yapabilir. İnsanların son çıkışın geçerliliğini doğrulamak için aracıların nedenlerini ve eylemlerini de denetlemesi gerekebilir.

İnsan/aracı etkileşimleri büyük olasılıkla doğal veya programlama dillerinde olurken, aracılar eklemeler aracılığıyla "düşünür", "öğrenir" ve "anımsar". Bu fark, bellek sistemlerinin veri yöntemleri arasındaki tutarlılığı üzerinde başka bir gereksinim oluşturur.

Operasyonel

Bellek sistemleri, kullanıcı ve ortamla etkileşim için uygun bilgileri depolayan bellek bankaları sağlamalıdır. Bu bilgiler sohbet geçmişini, kullanıcı tercihlerini, duyusal verileri, alınan kararları, öğrenilen bilgileri veya yüksek sıklıkta ve yüksek hacimlerde güncelleştirilen diğer işletimsel verileri içerebilir.

Bu bellek bankaları, aracıların kısa vadeli ve uzun vadeli bilgileri hatırlamasına, kendilerini yinelemekten veya çelişmekten kaçınmasına ve görev tutarlılığını sürdürmesine yardımcı olabilir. Aracılar birbirini izleyen çok sayıda ilişkisiz görev gerçekleştirse bile bu gereksinimler true olmalıdır. Gelişmiş durumlarda aracılar, farklı noktalarda ayrılan veya yakınsanan çok sayıda dal planını da test edebilir.

Paylaşılabilir ama aynı zamanda ayrıştırılabilir

Makro düzeyinde bellek sistemleri, birden çok yapay zeka aracısının bir sorun üzerinde işbirliği yapmasına veya tüm aracıların erişebileceği paylaşılan bellek sağlayarak sorunun farklı yönlerini işlemesine olanak sağlamalıdır. Paylaşılan bellek, bilgi alışverişini ve aracılar arasındaki eylemlerin koordinasyonunu kolaylaştırabilir.

Aynı zamanda bellek sistemi, aracıların benzersiz istem ve bellek koleksiyonları gibi kendi kişiliklerini ve özelliklerini korumalarına izin vermelidir.

Güçlü bir yapay zeka aracısı bellek sistemi oluşturma

Yukarıdaki özellikler yapay zeka aracısı bellek sistemlerinin yüksek oranda ölçeklenebilir ve hızlı olmasını gerektirir. Bellek içi, ilişkisel ve vektör veritabanlarını (daha önce açıklandığı gibi) birlikte sık sık dokuyabilirsiniz. Erken aşama yapay zeka özellikli uygulamalar için işe yarayabilir. Ancak bu yaklaşım, gelişmiş otonom aracıların performansını engelleyebilecek karmaşıklık ve performans sorunları ekler.

Azure Cosmos DB, tüm tek başına veritabanları yerine yapay zeka aracısı bellek sistemleri için birleşik bir çözüm görevi görebilir. Sağlamlığı, OpenAI'nin ChatGPT hizmetinin yüksek güvenilirlik ve düşük bakım ile dinamik olarak ölçeklendirilmesini başarıyla sağladı. Atom kayıt dizisi altyapısıyla desteklenen bu, sunucusuz mod sunan dünyanın ilk küresel olarak dağıtılmış NoSQL, ilişkisel ve vektör veritabanı hizmetidir. Azure Cosmos DB üzerinde oluşturulan yapay zeka aracıları hız, ölçek ve basitlik sunar.

Hız

Azure Cosmos DB tek basamaklı milisaniyelik gecikme süresi sağlar. Bu özellik, hızlı veri erişimi ve yönetimi gerektiren işlemler için uygun hale getirir. Bu işlemler önbelleğe alma (hem geleneksel hem de anlamsal önbelleğe alma), işlemler ve operasyonel iş yükleridir.

Karmaşık mantık yürütmesi, gerçek zamanlı kararlar vermesi ve anında yanıtlar vermesi gereken yapay zeka aracıları için düşük gecikme süresi çok önemlidir. Ayrıca hizmetin DiskANN algoritmasını kullanması, minimum bellek tüketimiyle doğru ve hızlı vektör araması sağlar.

Ölçek

Azure Cosmos DB, genel dağıtım ve yatay ölçeklenebilirlik için geliştirilmiştir. Çok bölgeli G/Ç ve çok kiracılılık desteği sunar.

Hizmet, bellek sistemlerinin sorunsuz bir şekilde genişletilmesini ve hızla büyüyen aracıları ve ilişkili verileri takip etmesini sağlamaya yardımcı olur. Hizmet düzeyi sözleşmesindeki (SLA) kullanılabilirlik garantisi, yılda 5 dakikadan daha az kapalı kalma süresine dönüşür. Buna karşılık, saf vektör veritabanı hizmetleri 9 saat veya daha fazla kapalı kalma süresiyle birlikte gelir. Bu kullanılabilirlik, görev açısından kritik iş yükleri için sağlam bir temel sağlar. Aynı zamanda Azure Cosmos DB'deki Ayrılmış Kapasite veya Sunucusuz gibi çeşitli hizmet modelleri de finansal maliyetleri azaltmaya yardımcı olabilir.

Basitlik

Azure Cosmos DB, birden çok veritabanı işlevini tek ve uyumlu bir platformla tümleştirerek veri yönetimini ve mimarisini basitleştirebilir.

Tümleşik vektör veritabanı özellikleri, ilgili verilerin yanı sıra doğal veya programlama dillerindeki eklemeleri depolayabilir, dizinleyebilir ve sorgulayabilir. Bu özellik daha fazla veri tutarlılığı, ölçeklendirme ve performans sağlar.

Esnekliği meta verilerin, ilişkilerin, varlıkların, özetlerin, sohbet geçmişinin, kullanıcı tercihlerinin, duyusal verilerin, kararların, öğrenilen olguların veya aracı iş akışlarında yer alan diğer operasyonel verilerin çeşitli modalitelerini ve akıcı şemalarını destekler. Veritabanı, şema veya dizin yönetimi gerektirmeden tüm verileri otomatik olarak dizine alır ve bu da yapay zeka aracılarının karmaşık sorguları hızlı ve verimli bir şekilde gerçekleştirmesine yardımcı olur.

Azure Cosmos DB tamamen yönetilir ve ölçeklendirme, düzeltme eki uygulama ve yedekleme gibi veritabanı yönetim görevlerinin yükünü ortadan kaldırır. Bu ek yük olmadan geliştiriciler, temel alınan veri altyapısı konusunda endişelenmeden yapay zeka aracıları oluşturmaya ve iyileştirmeye odaklanabilir.

Gelişmiş özellikler

Azure Cosmos DB, verilerdeki değişiklikleri gerçek zamanlı olarak izlemeye ve yanıtlamaya olanak tanıyan değişiklik akışı gibi gelişmiş özellikler içerir. Bu özellik, yeni bilgilere hemen tepki vermeleri gereken yapay zeka aracıları için kullanışlıdır.

Ayrıca, çoklu ana yazma işlemleri için yerleşik destek, bölgesel hatalardan sonra bile yapay zeka aracılarının sürekli çalışmasını sağlamaya yardımcı olmak için yüksek kullanılabilirlik ve dayanıklılık sağlar.

Kullanılabilir beş tutarlılık düzeyi (güçlüden nihaiye) senaryo gereksinimlerine bağlı olarak çeşitli dağıtılmış iş yüklerini de karşılayabilir.

İpucu

Yapay zeka aracısı bellek sisteminizi oluşturmak için iki Azure Cosmos DB API'sinden birini seçebilirsiniz:

Bu API'lerin kullanılabilirlik garantileri hakkında bilgi için bkz . hizmet SLA'ları.

Uygulama örneği

Bu bölümde, bir seyahat hattı için seyahat uygulamasında seyahat sorgularını ve rezervasyonlarını işlemek için otonom bir temsilcinin uygulanması incelenmiştir.

Sohbet botları uzun süredir devam eden bir kavramdır ancak yapay zeka aracıları, doğal dile dayalı görevleri gerçekleştirmek için temel insan sohbetlerinin ötesine geçmektedir. Bu görevler geleneksel olarak kodlanmış mantık gerektirir. Bu uygulama örneğindeki yapay zeka seyahat aracısı, aracı planlaması, araç kullanımı ve algı için LangChain Aracısı çerçevesini kullanır.

Yapay zeka seyahat acentesinin birleşik bellek sistemi, gezgin sorgularını ele almak ve seyahat rezervasyonlarını kolaylaştırmak için Azure Cosmos DB'nin vektör veritabanı ve belge deposu özelliklerini kullanır. Azure Cosmos DB'nin bu amaçla kullanılması, daha önce açıklandığı gibi hız, ölçek ve basitlik sağlamaya yardımcı olur.

Örnek aracı bir Python FastAPI arka ucu içinde çalışır. React JavaScript kullanıcı arabirimi aracılığıyla kullanıcı etkileşimlerini destekler.

Önkoşullar

  • Azure aboneliği. Hesabınız yoksa Azure hesabı oluşturmadan Azure Cosmos DB'yi 30 gün boyunca ücretsiz deneyebilirsiniz. Ücretsiz deneme için kredi kartı gerekmez ve deneme süresini izleyen bir taahhüt yoktur.
  • OpenAI API'sine veya Azure OpenAI Hizmeti'ne yönelik bir hesap.
  • MongoDB için Azure Cosmos DB'de bir sanal çekirdek kümesi. Bu hızlı başlangıcı izleyerek bir tane oluşturabilirsiniz.
  • Visual Studio Code gibi tümleşik bir geliştirme ortamı.
  • Geliştirme ortamında Yüklü Python 3.11.4.

Projeyi indirme

Tüm kod ve örnek veri kümeleri bu GitHub deposunda kullanılabilir. Depo şu klasörleri içerir:

  • yükleyici: Bu klasör, Azure Cosmos DB'de örnek belgeleri ve vektör eklemelerini yüklemeye yönelik Python kodunu içerir.
  • api: Bu klasör, yapay zeka seyahat aracısını barındırmaya yönelik Python FastAPI projesini içerir.
  • web: Bu klasör React web arabiriminin kodunu içerir.

Azure Cosmos DB'ye seyahat belgeleri yükleme

GitHub deposu, yükleyici dizininde bir Python projesi içerir. Örnek seyahat belgelerini Azure Cosmos DB'ye yüklemeye yöneliktir.

Ortamı ayarlama

Aşağıdaki komutu çalıştırarak Python sanal ortamınızı yükleyici dizininde ayarlayın:

    python -m venv venv

Ortamınızı etkinleştirin ve bağımlılıkları yükleyici dizinine yükleyin:

    venv\Scripts\activate
    python -m pip install -r requirements.txt

Aşağıdaki ortam değişkenlerini depolamak için yükleyici dizininde .env adlı bir dosya oluşturun:

    OPENAI_API_KEY="<your OpenAI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure Cosmos DB>"

Belgeleri ve vektörleri yükleme

Python dosyası main.py , Verileri Azure Cosmos DB'ye yüklemek için merkezi giriş noktası görevi görür. Bu kod, GitHub deposundaki gemiler ve hedefler hakkındaki bilgiler de dahil olmak üzere örnek seyahat verilerini işler. Kod ayrıca seyahat edenlerin yapay zeka aracısını kullanarak rezervasyonlarını yapabilecekleri her gemi ve varış noktası için seyahat seyahati paketleri de oluşturur. CosmosDBLoader aracı, Azure Cosmos DB örneğinde koleksiyonlar, vektör eklemeleri ve dizinler oluşturmaktan sorumludur.

main.py içeriği şunlardır:

from cosmosdbloader import CosmosDBLoader
from itinerarybuilder import ItineraryBuilder
import json


cosmosdb_loader = CosmosDBLoader(DB_Name='travel')

#read in ship data
with open('documents/ships.json') as file:
        ship_json = json.load(file)

#read in destination data
with open('documents/destinations.json') as file:
        destinations_json = json.load(file)

builder = ItineraryBuilder(ship_json['ships'],destinations_json['destinations'])

# Create five itinerary packages
itinerary = builder.build(5)

# Save itinerary packages to Cosmos DB
cosmosdb_loader.load_data(itinerary,'itinerary')

# Save destinations to Cosmos DB
cosmosdb_loader.load_data(destinations_json['destinations'],'destinations')

# Save ships to Cosmos DB, create vector store
collection = cosmosdb_loader.load_vectors(ship_json['ships'],'ships')

# Add text search index to ship name
collection.create_index([('name', 'text')])

Yükleyici dizininden aşağıdaki komutu çalıştırarak belgeleri yükleyin, vektörleri yükleyin ve dizinler oluşturun:

    python main.py

İşte main.py çıktısı:

--build itinerary--
--load itinerary--
--load destinations--
--load vectors ships--

Python FastAPI kullanarak yapay zeka seyahat aracısını oluşturma

Yapay zeka seyahat aracısı, Python FastAPI aracılığıyla bir arka uç API'sinde barındırılır ve bu da ön uç kullanıcı arabirimiyle tümleştirmeyi kolaylaştırır. API projesi, LLM istemlerini veri katmanına, özellikle de Azure Cosmos DB'deki vektörlere ve belgelere karşı topraklayarak aracı isteklerini işler.

Aracı, özellikle API hizmet katmanında sağlanan Python işlevleri olmak üzere çeşitli araçlardan yararlanıyor. Bu makale, API kodu içindeki yapay zeka aracıları için gerekli koda odaklanır.

GitHub deposundaki API projesi aşağıdaki gibi yapılandırılmıştır:

  • Veri modelleme bileşenleri Pydantic modellerini kullanır.
  • Web katmanı bileşenleri istekleri yönlendirmek ve iletişimi yönetmekle sorumludur.
  • Hizmet katmanı bileşenleri birincil iş mantığından ve veri katmanı, LangChain Aracısı ve aracı araçlarıyla etkileşimden sorumludur.
  • Veri katmanı bileşenleri MongoDB belge depolama ve vektör araması için Azure Cosmos DB ile etkileşimden sorumludur.

API için ortamı ayarlama

API'nin geliştirilmesi ve test edilmesi için Python 3.11.4 sürümünü kullandık.

Api dizininde Python sanal ortamınızı ayarlayın:

    python -m venv venv

Api dizinindeki gereksinimler dosyasını kullanarak ortamınızı etkinleştirin ve bağımlılıkları yükleyin:

    venv\Scripts\activate
    python -m pip install -r requirements.txt

Ortam değişkenlerinizi depolamak için api dizininde .env adlı bir dosya oluşturun:

    OPENAI_API_KEY="<your Open AI key>"
    MONGO_CONNECTION_STRING="mongodb+srv:<your connection string from Azure Cosmos DB>"

Ortamı yapılandırdığınıza ve değişkenleri ayarladığınıza göre, sunucuyu başlatmak için api dizininden aşağıdaki komutu çalıştırın:

    python app.py

FastAPI sunucusu varsayılan olarak localhost geri döngü 127.0.0.1 bağlantı noktası 8000'de başlar. Aşağıdaki localhost adresini kullanarak Swagger belgelerine erişebilirsiniz: http://127.0.0.1:8000/docs.

Yapay zeka aracısı belleği için oturum kullanma

Seyahat acentesinin devam eden konuşmada daha önce sağlanan bilgilere başvurabilmesi şarttır. Bu özellik genellikle LLM'ler bağlamında bellek olarak bilinir.

Bu hedefe ulaşmak için Azure Cosmos DB örneğinde depolanan sohbet iletisi geçmişini kullanın. Her sohbet oturumunun geçmişi, yalnızca geçerli konuşma oturumundaki iletilerin erişilebilir olduğundan emin olmak için bir oturum kimliği aracılığıyla depolanır. Bu gereklilik, API'de bir Get Session yöntemin varlığının arkasındaki nedendir. Sohbet iletisi geçmişinin kullanımını göstermek için web oturumlarını yönetmek için kullanılan bir yer tutucu yöntemdir.

için /session/deneyin'i seçin.

Python FastAPI'de Oturum Al yönteminin kullanımını ve deneme düğmesinin ekran görüntüsü.

{
  "session_id": "0505a645526f4d68a3603ef01efaab19"
}

Yapay zeka aracısı için yalnızca bir oturumun benzetimini yapmanız gerekir. Stubbed-out yöntemi yalnızca ileti geçmişini izlemek için oluşturulan bir oturum kimliği döndürür. Pratik bir uygulamada, bu oturum Azure Cosmos DB'de ve potansiyel olarak React localStorageiçinde depolanır.

Web/session.py içeriği şunlardır:

    @router.get("/")
    def get_session():
        return {'session_id':str(uuid.uuid4().hex)}

Yapay zeka seyahat acentesiyle konuşma başlatma

İşlevselliğini doğrulayabileceğiniz yapay zeka aracısı ile yeni bir iletişim kutusu başlatmak için önceki adımdan aldığınız oturum kimliğini kullanın. Şu ifadeyi göndererek testi gerçekleştirin: "Rahatlatıcı bir tatil yapmak istiyorum."

için /agent/agent_chatdeneyin'i seçin.

Python FastAPI'de Aracı Sohbeti yönteminin kullanılmasının ekran görüntüsü ve deneme düğmesi.

Şu örnek parametreyi kullanın:

{
  "input": "I want to take a relaxing vacation.",
  "session_id": "0505a645526f4d68a3603ef01efaab19"
}

İlk yürütme, Tranquil Breeze Cruise ve Fantasy Seas Adventure Cruise için bir öneriyle sonuçlanmaktadır, çünkü temsilci vektör aramasında mevcut olan en rahatlatıcı yolculuklar olduğunu öngörmektedir. Bu belgeler, API'nin data.mongodb.travel.similarity_search()veri katmanında çağrılan için en yüksek puana similarity_search_with_score sahiptir.

Benzerlik arama puanları, hata ayıklama amacıyla API'den çıktı olarak görünür. çağrısından sonraki çıkış aşağıdadır data.mongodb.travel.similarity_search():

0.8394561085977978
0.8086545112328692
2

İpucu

Vektör araması için belgeler döndürülmüyorsa, sınırı veya puan filtresi değerini () içinde data.mongodb.travel.similarity_search()gerektiği[doc for doc, score in docs if score >=.78] gibi değiştirinsimilarity_search_with_score.

çağrısı agent_chat , konuşmayı oturuma göre depolamak için Azure Cosmos DB'de adlı history yeni bir koleksiyon oluşturur. Bu çağrı, aracının depolanmış sohbet iletisi geçmişine gerektiği gibi erişmesini sağlar. Aynı parametrelerle sonraki yürütmeleri agent_chat , bellekten çizildiği için farklı sonuçlar üretir.

Yapay zeka aracısını gözden geçirme

Yapay zeka aracısını API ile tümleştirirken, web arama bileşenleri tüm isteklerin başlatılmasından sorumludur. Web arama bileşenleri, arama hizmeti ve son olarak veri bileşenleri tarafından takip edilir.

Bu özel durumda, Azure Cosmos DB'ye bağlanan bir MongoDB veri araması kullanırsınız. Katmanlar, hizmet katmanında bulunan yapay zeka aracısı ve yapay zeka aracısı araç kodu ile model bileşenlerinin değişimini kolaylaştırır. Bu yaklaşım, veri kaynaklarının sorunsuz bir şekilde değiştirilebilirliğini sağlar. Ayrıca ek, daha karmaşık işlevler veya araçlarla yapay zeka aracısının özelliklerini genişletir.

Yapay zeka seyahat acentesinin FastAPI katmanlarının diyagramı.

Hizmet katmanı

Hizmet katmanı, temel iş mantığının temel taşını oluşturur. Bu özel senaryoda hizmet katmanı, LangChain Aracısı kodunun deposu olarak önemli bir rol oynar. Kullanıcı istemlerinin AI aracısı için Azure Cosmos DB verileri, konuşma belleği ve aracı işlevleriyle sorunsuz tümleştirilmesini kolaylaştırır.

Hizmet katmanı, init.py dosyasında aracıyla ilgili başlatmaları işlemek için tekil bir desen modülü kullanır. Hizmet/init.py içeriği şunlardır:

from dotenv import load_dotenv
from os import environ
from langchain.globals import set_llm_cache
from langchain_openai import ChatOpenAI
from langchain_mongodb.chat_message_histories import MongoDBChatMessageHistory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain.agents import AgentExecutor, create_openai_tools_agent
from service import TravelAgentTools as agent_tools

load_dotenv(override=False)


chat : ChatOpenAI | None=None
agent_with_chat_history : RunnableWithMessageHistory | None=None

def LLM_init():
    global chat,agent_with_chat_history
    chat = ChatOpenAI(model_name="gpt-3.5-turbo-16k",temperature=0)
    tools = [agent_tools.vacation_lookup, agent_tools.itinerary_lookup, agent_tools.book_cruise ]

    prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "You are a helpful and friendly travel assistant for a cruise company. Answer travel questions to the best of your ability providing only relevant information. In order to book a cruise you will need to capture the person's name.",
        ),
        MessagesPlaceholder(variable_name="chat_history"),
        ("user", "Answer should be embedded in html tags. {input}"),
         MessagesPlaceholder(variable_name="agent_scratchpad"),
    ]
    )

    #Answer should be embedded in HTML tags. Only answer questions related to cruise travel, If you can not answer respond with \"I am here to assist with your travel questions.\". 


    agent = create_openai_tools_agent(chat, tools, prompt)
    agent_executor  = AgentExecutor(agent=agent, tools=tools, verbose=True)

    agent_with_chat_history = RunnableWithMessageHistory(
        agent_executor,
        lambda session_id: MongoDBChatMessageHistory( database_name="travel",
                                                 collection_name="history",
                                                   connection_string=environ.get("MONGO_CONNECTION_STRING"),
                                                   session_id=session_id),
        input_messages_key="input",
        history_messages_key="chat_history",
)

LLM_init()

init.py dosyası, yöntemini kullanarak bir .env dosyasından ortam değişkenlerinin yüklenmesini load_dotenv(override=False) başlatır. Ardından aracı için adlı agent_with_chat_history bir genel değişken örneği oluşturulur. Bu aracı TravelAgent.py tarafından kullanılmak üzere tasarlanmıştır.

LLM_init() yöntemi, API web katmanı aracılığıyla konuşma için yapay zeka aracısını yapılandırmak üzere modül başlatma sırasında çağrılır. OpenAI chat nesnesi GPT-3.5 modeli aracılığıyla örneği oluşturulur ve model adı ve sıcaklık gibi belirli parametreleri içerir. chat Nesne, araç listesi ve istem şablonu, yapay zeka seyahat aracısı olarak çalışan oluşturmak AgentExecutoriçin birleştirilir.

geçmişe sahip aracı, agent_with_chat_historysohbet geçmişi (MongoDBChatMessageHistory) ile oluşturulurRunnableWithMessageHistory. Bu eylem, Azure Cosmos DB aracılığıyla tam bir konuşma geçmişini korumasını sağlar.

İstem

LLM istemi başlangıçta basit bir ifadeyle başladı "Bir kruvaziyer şirketi için yararlı ve kolay bir seyahat asistanısınız." Ancak test, "Seyahat sorularını en iyi şekilde yanıtlama, yalnızca ilgili bilgiler sağlama" yönergesini ekleyerek daha tutarlı sonuçlar elde edebileceğinizi gösterdi. Yolculuk rezervasyonu yapmak için kişinin adını yakalamak çok önemlidir." Sonuçlar, web arabiriminin görsel çekiciliklerini geliştirmek için HTML biçiminde görünür.

Aracı araçları

Araçlar , bir aracının genellikle işlev çağrısı aracılığıyla dünyayla etkileşime geçmek için kullanabileceği arabirimlerdir.

Bir aracı oluştururken, aracıyı kullanabileceği bir dizi araçla donatmalısınız. Dekoratör, @tool özel bir araç tanımlamaya en kolay yaklaşımı sunar.

Varsayılan olarak, dekoratör araç adı olarak işlev adını kullanır, ancak ilk bağımsız değişken olarak bir dize sağlayarak bunu değiştirebilirsiniz. Dekoratör, aracın açıklaması olarak işlevin docstring'ini kullanır, bu nedenle docstring'in sağlanmasını gerektirir.

Hizmet/TravelAgentTools.py içeriği şunlardır:

from langchain_core.tools import tool
from langchain.docstore.document import Document
from data.mongodb import travel
from model.travel import Ship


@tool
def vacation_lookup(input:str) -> list[Document]:
    """find information on vacations and trips"""
    ships: list[Ship] = travel.similarity_search(input)
    content = ""

    for ship in ships:
        content += f" Cruise ship {ship.name}  description: {ship.description} with amenities {'/n-'.join(ship.amenities)} "

    return content

@tool
def itinerary_lookup(ship_name:str) -> str:
    """find ship itinerary, cruise packages and destinations by ship name"""
    it = travel.itnerary_search(ship_name)
    results = ""

    for i in it:
        results += f" Cruise Package {i.Name} room prices: {'/n-'.join(i.Rooms)} schedule: {'/n-'.join(i.Schedule)}"

    return results


@tool
def book_cruise(package_name:str, passenger_name:str, room: str )-> str:
    """book cruise using package name and passenger name and room """
    print(f"Package: {package_name} passenger: {passenger_name} room: {room}")

    # LLM defaults empty name to John Doe 
    if passenger_name == "John Doe":
        return "In order to book a cruise I need to know your name."
    else:
        if room == '':
            return "which room would you like to book"            
        return "Cruise has been booked, ref number is 343242"

TravelAgentTools.py dosyası üç araç tanımlar:

  • vacation_lookup Azure Cosmos DB'de vektör araması yürütür. Seyahatle ilgili malzemeleri almak için kullanır similarity_search .
  • itinerary_lookup belirtilen bir yolcu gemisi için yolcu paketi ayrıntılarını ve zamanlamalarını alır.
  • book_cruise yolcu için bir yolcu paketi kitap.

LLM istemine bu tür yönergeler eklemiş olsanız bile, yolcunun adını ve oda numarasının yakalanmasını sağlamak için özel yönergeler ("Bir yolculuk rezervasyonu yapmak için adınızı bilmem gerekiyor") gerekli olabilir.

Yapay zeka aracısı

Aracıları temel alan temel kavram, yürütülecek eylem dizisini seçmek için bir dil modeli kullanmaktır.

Hizmet/TravelAgent.py içeriği şunlardır:

from .init import agent_with_chat_history
from model.prompt import PromptResponse
import time
from dotenv import load_dotenv

load_dotenv(override=False)


def agent_chat(input:str, session_id:str)->str:

    start_time = time.time()

    results=agent_with_chat_history.invoke(
    {"input": input},
    config={"configurable": {"session_id": session_id}},
    )

    return  PromptResponse(text=results["output"],ResponseSeconds=(time.time() - start_time))

TravelAgent.py dosyası basittir çünkü agent_with_chat_history ve bağımlılıkları (araçlar, istem ve LLM) init.py dosyasında başlatılır ve yapılandırılır. Bu dosya, kullanıcıdan alınan girişi ve konuşma belleği için oturum kimliğini kullanarak aracıyı çağırır. Daha sonra aracının PromptResponse çıkışı ve yanıt süresiyle (model/istem) döndürülür.

React kullanıcı arabirimiyle yapay zeka aracısı tümleştirmesi

Api aracılığıyla yapay zeka aracısının verilerinin başarıyla yüklenmesi ve erişilebilirliği sayesinde artık seyahat web siteniz için bir web kullanıcı arabirimi (React kullanarak) oluşturarak çözümü tamamlayabilirsiniz. React'in özelliklerini kullanmak, yapay zeka aracısının bir seyahat sitesiyle sorunsuz tümleştirmesini göstermeye yardımcı olur. Bu tümleştirme, sorgular ve rezervasyonlar için bir konuşma seyahat yardımcısı ile kullanıcı deneyimini geliştirir.

React için ortamı ayarlama

React arabirimini test etmeden önce Node.js ve bağımlılıkları yükleyin.

Proje bağımlılıklarının temiz bir yüklemesini gerçekleştirmek için web dizininden aşağıdaki komutu çalıştırın. Yükleme biraz zaman alabilir.

    npm ci

Ardından, ortam değişkenlerinin depolanmasını kolaylaştırmak için web dizininde .env adlı bir dosya oluşturun. Yeni oluşturulan .env dosyasına aşağıdaki ayrıntıları ekleyin:

REACT_APP_API_HOST=http://127.0.0.1:8000

Şimdi, React web kullanıcı arabirimini başlatmak için web dizininden aşağıdaki komutu çalıştırın:

    npm start

Önceki komutu çalıştırmak React web uygulamasını açar.

React web arabiriminde gezinme

GitHub deposunun web projesi, yapay zeka aracısı ile kullanıcı etkileşimini kolaylaştıran basit bir uygulamadır. Aracıyla sohbet etmek için gereken birincil bileşenler TravelAgent.js ve ChatLayout.js. Main.js dosyası, merkezi modül veya kullanıcı giriş sayfası olarak hizmet eder.

React JavaScript web arabiriminin ekran görüntüsü.

Ana

Ana bileşen, uygulamanın merkezi yöneticisi olarak görev alır. Yönlendirme için belirlenen giriş noktası olarak görev yapar. İşleme işlevinde, ana sayfa düzeninin çizgisini çizmek için JSX kodu üretir. Bu düzen, logolar ve bağlantılar, seyahat aracısı bileşenini barındıran bir bölüm ve uygulamanın doğası hakkında örnek bir bildirim içeren alt bilgi gibi uygulama için yer tutucu öğeleri kapsar.

main.js içeriği şunlardır:

    import React, {  Component } from 'react'
import { Stack, Link, Paper } from '@mui/material'
import TravelAgent from './TripPlanning/TravelAgent'

import './Main.css'

class Main extends Component {
  constructor() {
    super()

  }

  render() {
    return (
      <div className="Main">
        <div className="Main-Header">
          <Stack direction="row" spacing={5}>
            <img src="/mainlogo.png" alt="Logo" height={'120px'} />
            <Link
              href="#"
              sx={{ color: 'white', fontWeight: 'bold', fontSize: 18 }}
              underline="hover"
            >
              Ships
            </Link>
            <Link
              href="#"
              sx={{ color: 'white', fontWeight: 'bold', fontSize: 18 }}
              underline="hover"
            >
              Destinations
            </Link>
          </Stack>
        </div>
        <div className="Main-Body">
          <div className="Main-Content">
            <Paper elevation={3} sx={{p:1}} >
            <Stack
              direction="row"
              justifyContent="space-evenly"
              alignItems="center"
              spacing={2}
            >
              
                <Link href="#">
                  <img
                    src={require('./images/destinations.png')} width={'400px'} />
                </Link>
                <TravelAgent ></TravelAgent>
                <Link href="#">
                  <img
                    src={require('./images/ships.png')} width={'400px'} />
                </Link>
              
              </Stack>
              </Paper>
          </div>
        </div>
        <div className="Main-Footer">
          <b>Disclaimer: Sample Application</b>
          <br />
          Please note that this sample application is provided for demonstration
          purposes only and should not be used in production environments
          without proper validation and testing.
        </div>
      </div>
    )
  }
}

export default Main

Seyahat acentesi

Seyahat aracısı bileşeninin basit bir amacı vardır: kullanıcı girişlerini yakalama ve yanıtları görüntüleme. Öncelikle oturumları yakalayıp kullanıcı istemlerini FastAPI hizmetine ileterek arka uç yapay zeka aracısı ile tümleştirmeyi yönetmede önemli bir rol oynar. Sonuçta elde edilen yanıtlar, sohbet düzeni bileşeni tarafından kolaylaştırılan, görüntülenmek üzere bir dizide depolanır.

TripPlanning/TravelAgent.js içeriği şunlardır:

import React, { useState, useEffect } from 'react'
import { Button, Box, Link, Stack, TextField } from '@mui/material'
import SendIcon from '@mui/icons-material/Send'
import { Dialog, DialogContent } from '@mui/material'
import ChatLayout from './ChatLayout'
import './TravelAgent.css'

export default function TravelAgent() {
  const [open, setOpen] = React.useState(false)
  const [session, setSession] = useState('')
  const [chatPrompt, setChatPrompt] = useState(
    'I want to take a relaxing vacation.',
  )
  const [message, setMessage] = useState([
    {
      message: 'Hello, how can I assist you today?',
      direction: 'left',
      bg: '#E7FAEC',
    },
  ])

  const handlePrompt = (prompt) => {
    setChatPrompt('')
    setMessage((message) => [
      ...message,
      { message: prompt, direction: 'right', bg: '#E7F4FA' },
    ])
    console.log(session)
    fetch(process.env.REACT_APP_API_HOST + '/agent/agent_chat', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ input: prompt, session_id: session }),
    })
      .then((response) => response.json())
      .then((res) => {
        setMessage((message) => [
          ...message,
          { message: res.text, direction: 'left', bg: '#E7FAEC' },
        ])
      })
  }

  const handleSession = () => {
    fetch(process.env.REACT_APP_API_HOST + '/session/')
      .then((response) => response.json())
      .then((res) => {
        setSession(res.session_id)
      })
  }

  const handleClickOpen = () => {
    setOpen(true)
  }

  const handleClose = (value) => {
    setOpen(false)
  }

  useEffect(() => {
    if (session === '') handleSession()
  }, [])

  return (
    <Box>
      <Dialog onClose={handleClose} open={open} maxWidth="md" fullWidth="true">
        <DialogContent>
          <Stack>
            <Box sx={{ height: '500px' }}>
              <div className="AgentArea">
                <ChatLayout messages={message} />
              </div>
            </Box>
            <Stack direction="row" spacing={0}>
              <TextField
                sx={{ width: '80%' }}
                variant="outlined"
                label="Message"
                helperText="Chat with AI Travel Agent"
                defaultValue="I want to take a relaxing vacation."
                value={chatPrompt}
                onChange={(event) => setChatPrompt(event.target.value)}
              ></TextField>
              <Button
                variant="contained"
                endIcon={<SendIcon />}
                sx={{ mb: 3, ml: 3, mt: 1 }}
                onClick={(event) => handlePrompt(chatPrompt)}
              >
                Submit
              </Button>
            </Stack>
          </Stack>
        </DialogContent>
      </Dialog>
      <Link href="#" onClick={() => handleClickOpen()}>
        <img src={require('.././images/planvoyage.png')} width={'400px'} />
      </Link>
    </Box>
  )
}

Seyahat yardımcısını açmak için Yolculuğunuzu zahmetsizce planlayın'ı seçin.

Sohbet düzeni

Sohbet düzeni bileşeni, sohbetin düzenini denetler. Sohbet iletilerini sistematik olarak işler ve JSON nesnesinde belirtilen biçimlendirmeyi message uygular.

TripPlanning/ChatLayout.py içeriği şunlardır:

import React from 'react'
import {  Box, Stack } from '@mui/material'
import parse from 'html-react-parser'
import './ChatLayout.css'

export default function ChatLayout(messages) {
  return (
    <Stack direction="column" spacing="1">
      {messages.messages.map((obj, i = 0) => (
        <div className="bubbleContainer" key={i}>
          <Box
            key={i++}
            className="bubble"
            sx={{ float: obj.direction, fontSize: '10pt', background: obj.bg }}
          >
            <div>{parse(obj.message)}</div>
          </Box>
        </div>
      ))}
    </Stack>
  )
}

Kullanıcı istemleri sağ tarafta ve mavi renklidir. Yapay zeka seyahat acentesinden gelen yanıtlar sol tarafta ve yeşil renklidir. Aşağıdaki görüntüde gösterildiği gibi, konuşmada HTML biçimli yanıtlar hesaba katılır.

Sohbetin ekran görüntüsü.

Yapay zeka aracınız üretime girmeye hazır olduğunda sorgu performansını %80 artırmak ve LLM çıkarımını ve API çağrısı maliyetlerini azaltmak için anlamsal önbelleğe alma özelliğini kullanabilirsiniz. Anlamsal önbelleğe alma uygulamak için Stochastic Coder blogundaki bu gönderiye bakın.

Anlamsal önbelleğe alma diyagramı.