Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede Python için örnek kod kullanarakKendi veri örneğinizle Sohbet'i dağıtma ve çalıştırma işlemi gösterilmektedir. Bu örnek sohbet uygulaması, Python, Azure OpenAI Hizmeti ve Azure AI Arama aracılığıyla Alma Artırılmış Oluşturma (RAG) ile inşa edilmiştir.
Uygulama, kurgusal bir şirkette çalışan avantajları hakkında kullanıcı sorularına yanıtlar sağlar. Sağlanan PDF dosyalarından içerik referansları sağlamak için Retrieval-Augmented Generation (RAG) kullanılır; bu dosyalar şunları içerebilir:
- Çalışan el kitabı
- Avantajlara genel bakış belgesi
- Şirket rollerinin ve beklentilerinin listesi
Uygulama, bu belgeleri analiz ederek doğal dil sorgularını doğru, bağlamsal olarak ilgili yanıtlarla yanıtlayabilir. Bu yaklaşım, Azure OpenAI ve Azure AI Search ile akıllı, etki alanına özgü sohbet deneyimlerini desteklemek için kendi verilerinizi nasıl kullanabileceğinizi gösterir.
Ayrıca, uygulamanın yanıt davranışını değiştirmek için ayarlarını yapılandırmayı da öğrenirsiniz.
Bu makaledeki adımları tamamladıktan sonra projeyi kendi kodunuzla özelleştirmeye başlayabilirsiniz. Bu makale, Azure OpenAI Hizmeti ve Azure AI Search ile sohbet uygulaması oluşturma konusunda size yol gösteren bir serinin parçasıdır. Serideki diğer makaleler şunlardır:
- .NET
- Java
- JavaScript
- Python arka planı ile JavaScript ön yüzü
Not
Bu makale, iyi bakımlı referans uygulamaları olarak hizmet veren birden fazla yapay zeka uygulaması şablonunu temel alır. Bu şablonlar kolayca dağıtılacak şekilde tasarlanmıştır ve kendi yapay zeka uygulamalarınızı oluşturmak için güvenilir, yüksek kaliteli bir başlangıç noktası sağlar.
Örnek uygulama mimarisi
Aşağıdaki diyagramda sohbet uygulamasının basit bir mimarisi gösterilmektedir.
Mimarinin temel bileşenleri şunlardır:
- Etkileşimli sohbet arabirimini barındıran (genellikle Python Flask veya JavaScript/React ile oluşturulan) ve kullanıcı sorularını işlenmek üzere arka uçtan gönderen bir web uygulaması.
- Dizine alınan belgeler (PDF'ler, Word dosyaları vb.) üzerinde akıllı arama gerçekleştiren ve yanıtlarda kullanılmak üzere ilgili belge alıntılarını (öbekler) döndüren bir Azure AI Search kaynağı.
- Şu şekilde bir Azure OpenAI Hizmeti örneği:
- Semantik benzerlik araması için belgeleri ve kullanıcı sorularını vektör gösterimlerine dönüştürür.
- Azure AI Search sorgularını iyileştirmek için önemli anahtar sözcükleri ayıklar.
- Alınan verileri ve kullanıcı sorgusunu kullanarak son yanıtları sentezler.
Sohbet uygulamasının tipik akışı aşağıdaki gibidir:
- Kullanıcı bir soru gönderir: Kullanıcı, web uygulaması arabirimi aracılığıyla doğal dil sorusu girer.
-
Azure OpenAI şu soruyu işler: Arka uç, Azure OpenAI'yi kullanarak:
- text-embedding-ada-002 modelini kullanarak sorunun bir eklemesini oluşturun.
- İsteğe bağlı olarak arama ilgi düzeyini daraltmak için anahtar sözcükleri ayıklama
- Azure AI Search ilgili verileri alır: Ekleme veya anahtar sözcükler, Azure AI Search'te dizine alınan içerik (PDF'ler gibi) üzerinde anlamsal arama yapmak için kullanılır.
- Sonuçları şu soruyla birleştirin: En ilgili belge alıntıları (öbekler) kullanıcının özgün sorusuyla birleştirilir.
- Azure OpenAI bir yanıt oluşturur: Birleştirilmiş giriş, bağlama duyarlı bir yanıt oluşturan bir GPT modeline (gpt-35-turbo veya gpt-4 gibi) geçirilir.
- Yanıt kullanıcıya döndürülür: Oluşturulan yanıt sohbet arabiriminde görüntülenir.
Önkoşullar
geliştirme kapsayıcısı ortamı, bu makaleyi tamamlamak için gereken tüm bağımlılıklarla birlikte kullanılabilir. Geliştirme kapsayıcısını GitHub Codespaces'ta (tarayıcıda) veya Visual Studio Code kullanarak yerel olarak çalıştırabilirsiniz.
Bu makaleyi kullanmak için aşağıdaki önkoşullara ihtiyacınız vardır:
Bir Azure aboneliği. Başlamadan önce ücretsiz bir hesap oluşturun.
Azure hesabı izinleri. Azure Hesabınızın Microsoft.Authorization/roleAssignments/write izinlerine sahip olması gerekir. Kullanıcı Erişim Yöneticisi veya Sahip gibi roller bu gereksinimi karşılar.
Azure aboneliğinizde Azure OpenAI'ye erişim izni verilir. Çoğu durumda, Azure OpenAI modellerine genel erişimle özel içerik filtreleri oluşturabilir ve önem derecelerini yönetebilirsiniz. Genel erişim için onay tabanlı erişim kaydı gerekli değildir. Daha fazla bilgi için bkz. Azure AI hizmetleri için Sınırlı Erişim özellikleri.
İçerik filtresi veya uygunsuz kullanım değişiklikleri (isteğe bağlı). Özel içerik filtreleri oluşturmak, önem derecelerini değiştirmek veya uygunsuz kullanımı izlemeyi desteklemek için resmi erişim onayına ihtiyacınız vardır. Gerekli kayıt formlarını tamamlayarak erişim için başvurabilirsiniz. Daha fazla bilgi için bkz. Değiştirilmiş içerik filtreleri ve/veya kötüye kullanım izlemesi için kayıt.
Erişimle ilgili destek ve sorun giderme. Sorun gidermeye erişim için GitHub deposunda bir destek sorunu açın.
GitHub hesabı. Depoyu çatallamak ve GitHub Codespaces'ı kullanmak veya yerel olarak klonlamak gereklidir.
Örnek kaynaklar için kullanım maliyeti
Bu mimaride kullanılan kaynakların çoğu temel veya tüketim tabanlı fiyatlandırma katmanları altındadır. Bu, yalnızca kullandığınız kadar ödeme yaptığınız ve geliştirme veya test sırasında ücretlerin en düşük olduğu anlamına gelir.
Bu örneği tamamlamak için Azure OpenAI, AI Search ve depolama gibi hizmetlerin kullanılması küçük bir maliyet doğurabilir. Uygulamayı değerlendirmeyi veya dağıtmayı tamamladıktan sonra, devam eden ücretlerden kaçınmak için sağlanan tüm kaynakları silebilirsiniz.
Beklenen maliyetlerin ayrıntılı dökümü için, örneğin GitHub deposundaki Maliyet tahmini bölümüne bakın.
Açık geliştirme ortamı
Bu makaleyi tamamlamak için tüm bağımlılıkların yüklü olduğu bir geliştirme ortamı ayarlayarak başlayın.
- Bir Azure aboneliği. Ücretsiz bir tane oluşturun.
- Azure hesabı izinleri. Azure Hesabınızın Microsoft.Authorization/roleAssignments/write izinlerine sahip olması gerekir. Kullanıcı Erişim Yöneticisi veya Sahip gibi roller bu gereksinimi karşılar.
- GitHub hesabı. Depoyu çatallamak ve GitHub Codespaces'ı kullanmak veya yerel olarak klonlamak gereklidir.
Geliştirme ortamı açma
Bu makaleyi tamamlamak için gerekli tüm bağımlılıkları içeren önceden yapılandırılmış bir geliştirme ortamı dağıtmak için aşağıdaki yönergeleri kullanın.
En basit ve en kolay kurulum için GitHub Codespaces'ı kullanın. GitHub Codespaces, GitHub tarafından yönetilen bir geliştirme kapsayıcısı çalıştırır ve Kullanıcı arabirimi (UI) olarak Web için Visual Studio Code sağlar. Bu ortam tüm gerekli araçları, SDK'ları, uzantıları ve bağımlılıkları önceden yüklenmiş olarak içerir; böylece el ile yapılandırma olmadan hemen geliştirmeye başlayabilirsiniz.
Codespaces'ın kullanılması aşağıdakilerden emin olunmasını sağlar:
- Doğru geliştirici araçları ve sürümleri zaten yüklü.
- Docker, VS Code veya uzantıları yerel olarak yüklemeniz gerekmez.
- Hızlı uyum süreci ve yeniden üretilebilir ortam kurulumu.
Önemli
Tüm GitHub hesapları, 2 çekirdek örneğiyle her ay 60 saate kadar ücretsiz GitHub Codespaces kullanabilir. Ücretsiz kotayı aşarsanız veya daha büyük işlem seçeneklerini kullanırsanız standart GitHub Codespaces faturalama ücretleri uygulanır. Daha fazla bilgi için bkz. GitHub Codespaces - Aylık dahil edilen depolama ve çekirdek saatler.
Örnek projeyle çalışmaya başlamak için GitHub deposunun
maindalındaAzure-Samples/azure-search-openai-demoyeni bir GitHub kod alanı oluşturun.Depo sayfasının üst kısmındaki GitHub Codespaces - Aç seçeneğine sağ tıklayın ve Bağlantıyı yeni pencerede aç'ı seçin. Bu, geliştirme kapsayıcısının tam ekran, ayrılmış bir tarayıcı sekmesinde başlatılmasını sağlayarak hem kaynak koduna hem de yerleşik belgelere erişmenizi sağlar.
Yeni kod alanı oluştur sayfasında codespace yapılandırma ayarlarını gözden geçirin ve ardından Kod alanı oluştur'u seçin:
GitHub kod alanının başlamasını bekleyin. Başlangıç işlemi birkaç dakika sürebilir.
GitHub kod alanı açıldıktan sonra, kod alanının Terminal bölmesine aşağıdaki komutu girerek Azure Geliştirici CLI'siyle Azure'da oturum açın:
azd auth loginGitHub, Terminal bölmesinde bir güvenlik kodu görüntüler.
Terminal bölmesindeki güvenlik kodunu kopyalayın ve Enter tuşuna basın. Bir tarayıcı penceresi açılır.
İstemde, güvenlik kodunu tarayıcı alanına yapıştırın.
Azure hesabınızla kimlik doğrulaması yapmak için yönergeleri izleyin.
Bu makaledeki kalan GitHub Codespaces görevlerini bu geliştirme kapsayıcısı bağlamında tamamlaacaksınız.
Sohbet uygulamasını Azure'a dağıtma
Örnek depo, Azure'a kendi veri uygulamanızla sohbet dağıtmak için ihtiyacınız olan her şeyi içerir, örneğin:
- Uygulama kaynak kodu (Python)
- Kod olarak altyapı dosyaları (Bicep)
- GitHub entegrasyonu ve CI/CD yapılandırması (isteğe bağlı)
Uygulamayı Azure Developer CLI (azd) ile dağıtmak için aşağıdaki adımları kullanın.
Önemli
Bu bölümde oluşturulan Azure kaynakları (özellikle Azure AI Search), dağıtım tamamlanmadan önce kesintiye uğrasa bile sağlamadan hemen sonra ücretleri tahakkuk ettirebilir. Beklenmeyen ücretlerden kaçınmak için Azure kullanımınızı izleyin ve testten sonra kullanılmayan kaynakları hemen silin.
Visual Studio Code Terminal bölmesinde Azure kaynaklarını oluşturun ve aşağıdaki
azdkomutu çalıştırarak kaynak kodu dağıtın:azd upİşlem, yapılandırmanıza göre aşağıdaki ayarlardan birini veya daha fazlasını ister:
Ortam adı: Bu değer, kaynak grubu adının bir parçası olarak kullanılır.
-gibi küçük harfler ve tireler () içeren kısa bir ad girin. Büyük harfler, sayılar ve özel karakterler desteklenmez.Abonelik: Kaynakları oluşturmak için bir abonelik seçin. İstediğiniz aboneliği görmüyorsanız, kullanılabilir aboneliklerin tam listesini kaydırmak için ok tuşlarını kullanın.
Konum: Bu bölge konumu barındırma dahil olmak üzere çoğu kaynak için kullanılır. Coğrafi olarak size yakın bir bölge konumu seçin.
OpenAI modeli veya Belge Yönetim Bilgileri kaynağının konumu: Coğrafi olarak size en yakın konumu seçin. Konumunuz için seçtiğiniz bölge bu ayar için kullanılabiliyorsa aynı bölgeyi seçin.
Uygulamanın dağıtılması biraz zaman alabilir. Devam etmeden önce dağıtımın tamamlanmasını bekleyin.
Uygulama başarıyla dağıtıldıktan sonra Terminal bölmesinde bir uç nokta URL'si görüntülenir:
Sohbet uygulamasını tarayıcıda açmak için uç nokta URL'sini seçin:
PDF dosyalarından yanıt almak için sohbet uygulamasını kullanma
Sohbet uygulaması, PDF dosyalarından çalışan avantajları bilgileriyle önceden yüklenmiş olarak gelir. Avantajları hakkında sorular sormak için sohbet uygulamasını kullanabilirsiniz. Aşağıdaki adımlar, sohbet uygulamasını kullanma işleminde size yol gösterir. Temel alınan modeller güncelleştirildikçe yanıtlarınız farklılık gösterebilir.
Sohbet uygulamasında Performans gözden geçirmesinde ne olur? seçeneğini belirleyin veya sohbet metin kutusuna aynı metni girin. Uygulama ilk yanıtı döndürür:
Yanıt kutusunda bir alıntı seçin:
GitHub Codespaces, üç sekmeli bölge içeren doğru Alıntı bölmesini açar ve odak Alıntı sekmesindedir:
GitHub Codespaces, sohbet uygulamasının yanıtı nasıl ürettiğini anlamanıza yardımcı olmak için üç bilgi sekmesi sağlar:
Sekme Açıklama Düşünce Süreci Sohbetteki soru/yanıt etkileşimlerinin betiğini görüntüler. Sohbet uygulaması systemtarafından sağlanan içeriği, tarafından girilenusersoruları ve sistemassistanttarafından yapılan açıklamalarını görüntüleyebilirsiniz.Destekleyici İçerik Sorunuzu yanıtlamak için kullanılan bilgileri ve kaynak malzemeyi listeler. Kaynak malzeme alıntılarının sayısı Geliştirici ayarları tarafından belirtilir. Varsayılan alıntı sayısı 3'tür. Alıntı Seçili alıntı için özgün kaynağın içerdiğini gösterir. İşiniz bittiğinde, sağ bölmede seçili durumdaki sekmeyi seçin. Sağ bölme kapanır.
Yanıt davranışını değiştirmek için ayarları kullanma
Belirli OpenAI modeli, sohbetin zekasını ve modelle etkileşimde bulunurken kullanılan ayarları belirler. Geliştirici ayarları seçeneği, sohbet uygulamasının ayarlarını değiştirebileceğiniz Yanıt oluşturmayı yapılandır bölmesini açar:
| Ayar | Açıklama |
|---|---|
| Şablon istemini geçersiz kılma | Soruyu ve arama sonuçlarını temel alarak yanıtı oluşturmak için kullanılan istemi geçersiz kılar. |
| Sıcaklık | İsteğin sıcaklığını yanıtı oluşturan büyük dil modeline (LLM) ayarlar. Daha yüksek sıcaklıklar daha yaratıcı yanıtlara neden olur, ancak daha az gerçeklerle iç içe olabilir. |
| Tohum | Modelin yanıtlarının yeniden üretilebilirliğini geliştirmek için bir tohum ayarlar. Tohum herhangi bir tamsayı olabilir. |
| En düşük arama puanı | Azure AI Search'ten döndürülen arama sonuçları için en düşük puanı ayarlar. Puan aralığı, Alma modu ayarını Karma (varsayılan), Yalnızca Vektörler veya Yalnızca Metin olarak kullanıp kullanmadığınıza bağlıdır. |
| En düşük reranker puanı | Anlamsal yeniden sıralayıcıdan döndürülen arama sonuçları için en düşük puanı ayarlar. Puan her zaman 0-4 arasında değişir. Puan ne kadar yüksek olursa, sonuç soruya o kadar alakalı olur. |
| Bu kadar çok arama sonucunu alın | Azure AI Search'ten alınacak arama sonuçlarının sayısını ayarlar. Daha fazla sonuç doğru yanıtı bulma olasılığını artırabilir, ancak modelin 'ortada kaybolmasına' neden olabilir. Döndürülen kaynakları Alıntı bölmesinin Düşünce İşlemi ve Destekleyici İçerik sekmelerinde görebilirsiniz. |
| Kategori dahil et | Arama sonuçları oluşturulurken eklenecek kategorileri belirtir. Seçiminizi yapmak için açılan listeyi kullanın. Varsayılan eylem Tüm kategoriler'i eklemektir. |
| Kategoriyi dışla | Arama sonuçlarından dışlanması gereken kategorileri belirtir. Varsayılan veri kümesinde kullanılan kategori yoktur. |
| Bilgi getirme için semantik dereceleyici kullan | Azure AI Search semantik sıralayıcı, kullanıcının sorgusuna anlamsal benzerlik temelinde arama sonuçlarını yeniden sıralayan bir modeli etkinleştirir. |
| Anlamsal açıklamalı alt yazıları kullanma | Tam arama sonucu yerine LLM'ye anlamsal açıklamalı alt yazılar gönderir. Anlamsal sıralama süreci sırasında bir arama sonucundan anlamsal bir başlık ayıklanır. |
| İzleme soruları önerin | LLM'den kullanıcının sorgusuna göre izleme soruları önermesini ister. |
| Bilgi Alma Modu | Azure AI Search sorgusu için alma modunu ayarlar. Varsayılan eylem, vektör araması ve tam metin araması birleşimini kullanan Vectors + Text (Karma) eylemidir. Vektörler seçeneği yalnızca vektör aramasını kullanır. Metin seçeneği yalnızca tam metin araması kullanır. Hibrit yaklaşımı en uygun yöntemdir. |
| Sohbet tamamlama yanıtlarını akışla aktarın | İçerik oluşturulurken yanıt sürekli olarak sohbet kullanıcı arabirimine akışla aktarılır. |
Aşağıdaki adımlar, ayarları değiştirme işleminde size yol gösterir.
Tarayıcıda Geliştirici ayarları seçeneğini belirleyin.
Seçeneği etkinleştirmek için İzleme soruları öner onay kutusunu seçin ve ayar değişikliğini uygulamak için Kapat'ı seçin.
Sohbet uygulamasında, bu kez soru kutusuna metni girerek soruyu yeniden oluşturun:
What happens in a performance review?Sohbet uygulamasının yanıtı artık önerilen izleme sorularını içerir:
Geliştirici ayarları seçeneğini yeniden seçin ve Alma için anlam derecesini kullan seçeneğinin seçimini kaldırın. Ayarları kapatın.
Aynı soruyu yeniden sorun ve sohbet uygulamasındaki yanıttaki farka dikkat edin.
Semantik derecele: "Contoso Electronics'te bir performans incelemesi sırasında, gözetmeniniz geçen yılki performansınızı tartışacak ve iyileştirme alanları hakkında geri bildirim sağlayacaktır. Ayrıca gelecek yıl için hedeflerinizi ve hedeflerinizi tartışma fırsatına da sahip olacaksınız. Gözden geçirme, yöneticiler ve çalışanlar arasında iki yönlü bir diyalogdur ve çalışanların süreç boyunca dürüst ve açık olması teşvik edilir (1). Gözden geçirme sırasında sağlanan geri bildirimler, çalışanların rollerini geliştirmelerine ve büyümelerine yardımcı olmaya yönelik olumlu ve yapıcı olmalıdır. Çalışanlar, performans gözden geçirmelerinin yazılı bir özetini alacaktır. Bu özet, gelecek yıla ilişkin performans, geri bildirim ve hedefleri ile hedeflerinin derecelendirmesini içerir (1)."
Anlam dereceleyicisi olmadan: "Contoso Electronics'te bir performans gözden geçirmesi sırasında, gözetmeniniz geçen yılki performansınızı tartışacak ve iyileştirme alanları hakkında geri bildirim sağlayacaktır. Dürüst ve açık olmaya teşvik edildiğiniz iki yönlü bir diyalogdur (1). Gözden geçirme sırasında sağlanan geri bildirimler, rolünüzde gelişmenize ve büyümenize yardımcı olmaya yönelik olumlu ve yapıcı olmalıdır. Yaklaşan yıla ilişkin performans, geri bildirim ve hedeflerinizin derecelendirmesi de dahil olmak üzere incelemenin yazılı bir özetini alırsınız (1)."
Kaynakları temizleme
Alıştırmayı tamamladıktan sonra, artık gerekli olmayan kaynakları kaldırmak en iyi yöntemdir.
Azure kaynaklarını temizleme
Bu makalede oluşturulan Azure kaynakları Azure aboneliğinize faturalandırılır. Gelecekte bu kaynaklara ihtiyaç duymayı beklemiyorsanız, daha fazla ücret ödememek için bunları silin.
Aşağıdaki azd komutu çalıştırarak Azure kaynaklarını silin ve kaynak kodu kaldırın:
azd down --purge --force
Komut anahtarları şunlardır:
-
purge: Silinen kaynaklar hemen temizlenir. Bu seçenek, dakika başına Azure OpenAI belirteçlerini (TPM) yeniden kullanmanıza olanak tanır. -
force: Silme işlemi, kullanıcı onayı gerektirmeden sessizce gerçekleşir.
GitHub Codespaces'i temizleme
- GitHub Kod Alanları
- Visual Studio Code
GitHub Codespaces ortamını silmek, hesabınız için elde ettiğiniz ücretsiz çekirdek başına saat yetkilendirmesi miktarını en üst düzeye çıkarmanızı sağlar.
Önemli
GitHub hesabınızın yetkilendirmeleri hakkında daha fazla bilgi için bkz. GitHub Codespaces - Aylık dahil edilen depolama ve çekirdek saatler.
GitHub Codespaces kontrol panelinegiriş yapın.
Panoda, GitHub deposundan
Azure-Samples/azure-search-openai-demoalınan şu anda çalışan kod alanlarınızı bulun:Codespace bağlam menüsünü açın ve Sil'i seçin:
Yardım alın
Bu örnek depo, sorun giderme bilgileri sunar.
Eğer sorununuz giderilmediyse, sorununuzu deponun Sorunları web sayfasına ekleyin.
İlgili içerik
- Bu makalede kullanılan örneğin kaynak kodunu edinin
- Azure OpenAI ile en iyi uygulama çözüm mimarisi kullanarak sohbet uygulaması oluşturma
- Azure AI Search ile Oluşturucu Yapay Zeka Uygulamaları'nda erişim denetimi
- Azure API Management ile Kurumsal kullanıma hazır bir OpenAI çözümü oluşturun
- Karma geri alma ve sıralama yetenekleriyle vektör aramasından daha üstün performans.