Aracılığıyla paylaş


Başlarken: Kendi verilerinizi kullanarak sohbet edin (Python örneği)

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:

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.

veri kaynaklarıyla istemciden arka uç sohbet uygulamasına kadar olan örneğin mimarisini gösteren diyagram.

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.

  1. Örnek projeyle çalışmaya başlamak için GitHub deposunun main dalında Azure-Samples/azure-search-openai-demo yeni 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.

    'GitHub Codespaces'ta Aç' seçeneğinin görüntüsü.

  2. 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:

    Örnek için yeni bir GitHub kod alanı oluşturmak için onay ekranının ekran görüntüsü.

    GitHub kod alanının başlamasını bekleyin. Başlangıç işlemi birkaç dakika sürebilir.

  3. 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 login
    

    GitHub, Terminal bölmesinde bir güvenlik kodu görüntüler.

    1. Terminal bölmesindeki güvenlik kodunu kopyalayın ve Enter tuşuna basın. Bir tarayıcı penceresi açılır.

    2. İstemde, güvenlik kodunu tarayıcı alanına yapıştırın.

    3. 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.

  1. Visual Studio Code Terminal bölmesinde Azure kaynaklarını oluşturun ve aşağıdaki azd komutu çalıştırarak kaynak kodu dağıtın:

    azd up
    
  2. İş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.

  3. Uygulama başarıyla dağıtıldıktan sonra Terminal bölmesinde bir uç nokta URL'si görüntülenir:

    'azd up' işlemi tamamlandıktan sonra bildirilen dağıtılan uygulamanın uç nokta URL'sini gösteren ekran görüntüsü.

  4. Sohbet uygulamasını tarayıcıda açmak için uç nokta URL'sini seçin:

    Sohbet girişi için birkaç öneriyi ve soru girmek için sohbet metin kutusunu gösteren sohbet uygulamasının ekran görüntüsü.

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.

  1. 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:

    Bir performans gözden geçirmesinde ne olur? sorusuna yönelik sohbet uygulamasındaki ilk yanıtın ekran görüntüsü

  2. Yanıt kutusunda bir alıntı seçin:

    Sohbet uygulamasının yanıt kutusunda vurgulanmış alıntıyı gösteren ekran görüntüsü.

  3. GitHub Codespaces, üç sekmeli bölge içeren doğru Alıntı bölmesini açar ve odak Alıntı sekmesindedir:

    GitHub Codespaces'ta açılan sağ bölmenin ekran görüntüsü ve Alıntı sekmesi için görünen bilgiler.

    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 girilen usersoruları ve sistem assistanttarafı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.
  4. İş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:

Sohbet uygulamasının sağ bölmesinde bulunan geliştirici ayarlarının ekran görüntüsü.

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.

  1. Tarayıcıda Geliştirici ayarları seçeneğini belirleyin.

  2. 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.

  3. 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:

    Sohbet uygulamasının yanıt sonrasında önerilen izleme sorularını nasıl sağladığını gösteren ekran görüntüsü.

  4. 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.

  5. 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 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.

  1. GitHub Codespaces kontrol panelinegiriş yapın.

  2. Panoda, GitHub deposundan Azure-Samples/azure-search-openai-demo alınan şu anda çalışan kod alanlarınızı bulun:

    Durumu ve şablonları dahil olmak üzere çalışan tüm GitHub Codespaces'ın ekran görüntüsü.

  3. Codespace bağlam menüsünü açın ve Sil'i seçin:

    Silme seçeneğinin vurgulandığı tek bir kod alanının bağlam menüsünün ekran görüntüsü.

Yardım alın

Bu örnek depo, sorun giderme bilgileri sunar.

Eğer sorununuz giderilmediyse, sorununuzu deponun Sorunları web sayfasına ekleyin.