Share via


Python'da sohbet uygulamasında yanıtları değerlendirmeye başlama

Bu makalede, bir sohbet uygulamasının yanıtlarını bir dizi doğru veya ideal yanıtla (temel gerçek olarak bilinir) nasıl değerlendirebilirsiniz? Sohbet uygulamanızı yanıtları etkileyecek şekilde değiştirdiğinizde, değişiklikleri karşılaştırmak için bir değerlendirme çalıştırın. Bu tanıtım uygulaması, değerlendirmeleri çalıştırmayı kolaylaştırmak için bugün kullanabileceğiniz araçlar sunar.

Bu makaledeki yönergeleri izleyerek şunları yapacaksınız:

  • Konu etki alanına göre uyarlanmış sağlanan örnek istemleri kullanın. Bunlar zaten depoda.
  • Kendi belgelerinizden örnek kullanıcı soruları ve temel gerçek yanıtları oluşturun.
  • Oluşturulan kullanıcı sorularıyla örnek bir istem kullanarak değerlendirmeleri çalıştırın.
  • Yanıtların analizini gözden geçirin.

Not

Bu makalede, makaledeki örnekler ve kılavuzlar için temel olarak bir veya daha fazla yapay zeka uygulaması şablonu kullanılır. Yapay zeka uygulama şablonları, yapay zeka uygulamalarınız için yüksek kaliteli bir başlangıç noktası sağlamaya yardımcı olan, bakımlı, kolay dağıtılan başvuru uygulamaları sağlar.

Mimariye genel bakış

Mimarinin temel bileşenleri şunlardır:

  • Azure tarafından barındırılan sohbet uygulaması: Sohbet uygulaması Azure Uygulaması Hizmeti'nde çalışır. Sohbet uygulaması, değerlendirme uygulamasının protokole uyan herhangi bir sohbet uygulamasına karşı çalışmasını sağlayan sohbet protokolüne uygundur.
  • Azure AI Search: Sohbet uygulaması, kendi belgelerinizdeki verileri depolamak için Azure AI Search kullanır.
  • Örnek sorular oluşturucu: Her belge için temel gerçeğin yanıtıyla birlikte bir dizi soru oluşturabilir. Ne kadar çok soru olursa değerlendirme o kadar uzun olur.
  • Değerlendirici , sohbet uygulamasında örnek sorular ve istemler çalıştırır ve sonuçları döndürür.
  • Gözden Geçirme aracı , değerlendirmelerin sonuçlarını gözden geçirmenizi sağlar.
  • Fark aracı , değerlendirmeler arasındaki yanıtları karşılaştırmanıza olanak tanır.

Bu değerlendirmeyi Azure'a dağıttığınızda, GPT-4 modeli için kendi kapasitesine sahip Azure OpenAI uç noktası oluşturulur. Sohbet uygulamalarını değerlendirirken değerlendiricinin kendi kapasitesine sahip GPT-4 kullanan kendi OpenAI kaynağına sahip olması önemlidir.

Önkoşullar

  • Azure aboneliği. Ücretsiz bir tane oluşturun

  • İstenen Azure aboneliğinde Azure OpenAI'ya erişim verilir.

    Şu anda bu hizmete erişim yalnızca uygulama tarafından sağlanmaktadır. adresinden formu https://aka.ms/oai/accesstamamlayarak Azure OpenAI'ye erişim için başvurabilirsiniz.

  • Sohbet uygulamasını Azure'a dağıtmak için önceki sohbet Uygulaması yordamını tamamlayın. Değerlendirme uygulamasının çalışması için bu kaynak gereklidir. Önceki yordamın Kaynakları temizleme bölümünü tamamlamayın.

    Bu makalede sohbet uygulaması olarak adlandırılan bu dağıtımdaki aşağıdaki Azure kaynak bilgilerine ihtiyacınız olacaktır:

    • Sohbet API'sinin URI'si: İşlemin sonunda azd up gösterilen hizmet arka uç uç noktası.
    • Azure AI Arama. Aşağıdaki değerler gereklidir:
      • Kaynak adı: İşlem sırasında azd up olarak Search service bildirilen Azure AI Search kaynak adının adı.
      • Dizin adı: Belgelerinizin depolandığı Azure AI Search dizininin adı. Bu, Arama hizmeti için Azure Portalı'nda bulunabilir.

    Sohbet API'si URL'si, değerlendirmelerin arka uç uygulamanız üzerinden istekte bulunabilmesini sağlar. Azure AI Arama bilgileri, değerlendirme betiklerinin belgelerle birlikte yüklenen arka ucunuzla aynı dağıtımı kullanmasına olanak tanır.

    Bu bilgileri topladıktan sonra sohbet uygulaması geliştirme ortamını yeniden kullanmanız gerekmez. Bu makalenin devamında, sohbet uygulamasının Değerlendirmeler uygulaması tarafından nasıl kullanıldığını göstermek için birkaç kez başvuruda bulunulacaktır. Bu makaledeki yordamın tamamını tamamlayana kadar sohbet uygulaması kaynaklarını silmeyin.

  • Bu makaleyi tamamlamak için gereken tüm bağımlılıklarla birlikte bir geliştirme kapsayıcısı ortamı sağlanır. Geliştirme kapsayıcısını GitHub Codespaces'ta (tarayıcıda) veya Visual Studio Code'u kullanarak yerel olarak çalıştırabilirsiniz.

    • GitHub hesabı

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ıyla hemen başlayın. Hem bu belgeleri hem de geliştirme ortamını aynı anda görebilmek için izleme çalışma alanınızı düzenlemeniz gerekir.

Bu makale, değerlendirme dağıtımı için bölgeyle switzerlandnorth test edilmiştir.

GitHub Codespaces, Kullanıcı arabirimi olarak Web için Visual Studio Code ile GitHub tarafından yönetilen bir geliştirme kapsayıcısı çalıştırır. En basit geliştirme ortamı için GitHub Codespaces'ı kullanarak bu makaleyi tamamlamak için doğru geliştirici araçlarını ve bağımlılıklarını önceden yüklemiş olursunuz.

Önemli

Tüm GitHub hesapları Codespaces'ı her ay 2 çekirdek örneğiyle 60 saate kadar ücretsiz olarak kullanabilir. Daha fazla bilgi için bkz . GitHub Codespaces aylık dahil depolama ve çekirdek saatler.

  1. GitHub deposunun dalında Azure-Samples/ai-rag-chat-evaluator yeni bir GitHub Codespace main oluşturmak için işlemi başlatın.

  2. Hem geliştirme ortamının hem de belgelerin aynı anda kullanılabilir olması için aşağıdaki düğmeye sağ tıklayın ve Bağlantıyı yeni pencerede aç'ı seçin.

    GitHub Codespaces'ta aç

  3. Codespace oluştur sayfasında codespace yapılandırma ayarlarını gözden geçirin ve ardından Yeni kod alanı oluştur'u seçin

    Yeni bir kod alanı oluşturmadan önce onay ekranının ekran görüntüsü.

  4. Kod alanının başlamasını bekleyin. Bu başlatma işlemi birkaç dakika sürebilir.

  5. Ekranın alt kısmındaki terminalde Azure Geliştirici CLI'sı ile Azure'da oturum açın.

    azd auth login --use-device-code
    
  6. Kodu terminalden kopyalayın ve bir tarayıcıya yapıştırın. Azure hesabınızla kimlik doğrulaması yapmak için yönergeleri izleyin.

  7. Değerlendirme uygulaması için gerekli Azure kaynağını (Azure OpenAI) sağlayın.

    azd up
    

    Bu işlem değerlendirme uygulamasını dağıtmaz, ancak geliştirme ortamında değerlendirmeleri yerel olarak çalıştırmak için gereken bir GPT-4 dağıtımıyla Azure OpenAI kaynağını oluşturur.

  8. Bu makaledeki kalan görevler bu geliştirme kapsayıcısı bağlamında gerçekleşir.

  9. GitHub deposunun adı arama çubuğunda gösterilir. Bu görsel gösterge, bu değerlendirme uygulamasını sohbet uygulamasından ayırmanıza yardımcı olur. Bu ai-rag-chat-evaluator depo, bu makaledeki Değerlendirmeler uygulaması olarak adlandırılır.

Ortam değerlerini ve yapılandırma bilgilerini hazırlama

Ortam değerlerini ve yapılandırma bilgilerini değerlendirme uygulaması önkoşulları sırasında topladığınız bilgilerle güncelleştirin.

  1. Değerlendirmeler uygulaması kaynak bilgilerini bir .env dosyaya almak için aşağıdaki komutu kullanın:

    azd env get-values > .env
    
  2. Azure AI Search örneği için sohbet uygulamasından aşağıdaki değerleri önkoşullar bölümünde topladığınız öğesine ekleyin:.env

    AZURE_SEARCH_SERVICE="<service-name>"
    AZURE_SEARCH_INDEX="<index-name>"
    

    AZURE_SEARCH_KEY Değer, Azure AI Search örneğinin sorgu anahtarıdır.

  3. adlı my_config.json yeni bir dosya oluşturun ve içine aşağıdaki içeriği kopyalayın:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment<TIMESTAMP>",
        "target_url": "http://localhost:50505/chat",
        "target_parameters": {
            "overrides": {
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_refined.txt"
            }
        }
    }
    

    Değerlendirme betiği klasörü oluşturur my_results .

  4. target_url değerini, önkoşullar bölümünde topladığınız sohbet uygulamanızın URI değeriyle değiştirin. Sohbet uygulamasının sohbet protokolüne uygun olması gerekir. URI aşağıdaki biçimdedir https://CHAT-APP-URL/chat. Protokolün ve chat yolun URI'nin parçası olduğundan emin olun.

Örnek veri oluşturma

Yeni yanıtları değerlendirmek için, belirli bir soru için ideal yanıt olan "temel gerçek" yanıtıyla karşılaştırılmalıdır. Sohbet uygulaması için Azure AI Search'te depolanan belgelerden sorular ve yanıtlar oluşturun.

  1. example_input klasörü adlımy_input yeni bir klasöre kopyalayın.

  2. Bir terminalde aşağıdaki komutu çalıştırarak örnek verileri oluşturun:

    python3 -m scripts generate --output=my_input/qa.jsonl --numquestions=14 --persource=2
    

Soru/yanıt çiftleri oluşturulur ve sonraki adımda kullanılan değerlendiriciye giriş olarak (JSONL biçiminde) depolanır my_input/qa.jsonl . Üretim değerlendirmesi için bu veri kümesi için 200'den fazla QA çifti oluşturabilirsiniz.

Not

Kaynak başına birkaç soru ve yanıt, bu yordamı hızlı bir şekilde tamamlamanızı sağlamak içindir. Kaynak başına daha fazla soru ve yanıta sahip olması gereken bir üretim değerlendirmesi olması amaçlanmamıştır.

geliştirilmiş bir istemle ilk değerlendirmeyi çalıştırma

  1. my_config.json Yapılandırma dosyası özelliklerini düzenleyin:

    Özellik Yeni değer
    results_dir my_results/experiment_refined
    prompt_template <READFILE>my_input/prompt_refined.txt

    İyileştirilmiş istem, konu etki alanı hakkında özeldir.

    If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question.
    
    Use clear and concise language and write in a confident yet friendly tone. In your answers ensure the employee understands how your response connects to the information in the sources and include all citations necessary to help the employee validate the answer provided.
    
    For tabular information return it as an html table. Do not return markdown format. If the question is not in English, answer in the language used in the question.
    
    Each source has a name followed by colon and the actual information, always include the source name for each fact you use in the response. Use square brackets to reference the source, e.g. [info1.txt]. Don't combine sources, list each source separately, e.g. [info1.txt][info2.pdf].
    
  2. Değerlendirmeyi çalıştırmak için terminalde aşağıdaki komutu çalıştırın:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

    Bu betik, değerlendirme ile içinde my_results/ yeni bir deneme klasörü oluşturmuştur. klasörü, aşağıdakiler dahil olmak üzere değerlendirmenin sonuçlarını içerir:

    Dosya Adı Açıklama
    eval_results.jsonl Her soru ve yanıtın yanı sıra her soru-cevap çiftinin GPT ölçümleri.
    summary.json Ortalama GPT ölçümleri gibi genel sonuçlar.

Zayıf bir istemle ikinci değerlendirmeyi çalıştırma

  1. my_config.json Yapılandırma dosyası özelliklerini düzenleyin:

    Özellik Yeni değer
    results_dir my_results/experiment_weak
    prompt_template <READFILE>my_input/prompt_weak.txt

    Bu zayıf istem, konu etki alanı hakkında hiçbir bağlama sahip değildir:

    You are a helpful assistant.
    
  2. Değerlendirmeyi çalıştırmak için terminalde aşağıdaki komutu çalıştırın:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

Belirli bir sıcaklıkla üçüncü değerlendirmeyi çalıştırma

Daha fazla yaratıcılık sağlayan bir istem kullanın.

  1. my_config.json Yapılandırma dosyası özelliklerini düzenleyin:

    Mevcut Özellik Yeni değer
    Mevcut results_dir my_results/experiment_ignoresources_temp09
    Mevcut prompt_template <READFILE>my_input/prompt_ignoresources.txt
    Yeni sıcaklık 0.9

    Varsayılan sıcaklık 0,7'dir. Sıcaklık ne kadar yüksek olursa, yanıtlar o kadar yaratıcı olur.

    Yoksay istemi kısadır:

    Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
    
  2. Yapılandırma nesnesi aşağıdakine benzer olmalıdır, ancak kendi results_dirnesnenizi kullanın:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/prompt_ignoresources_temp09",
        "target_url": "https://YOUR-CHAT-APP/chat",
        "target_parameters": {
            "overrides": {
                "temperature": 0.9,
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_ignoresources.txt"
            }
        }
    }
    
  3. Değerlendirmeyi çalıştırmak için terminalde aşağıdaki komutu çalıştırın:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

Değerlendirme sonuçlarını gözden geçirme

Farklı istemlere ve uygulama ayarlarına göre üç değerlendirme gerçekleştirdiniz. Sonuçlar klasöründe depolanır my_results . Ayarlara göre sonuçların nasıl farklılık gösterdiğini gözden geçirin.

  1. Değerlendirmelerin sonuçlarını görmek için inceleme aracını kullanın:

    python3 -m review_tools summary my_results
    
  2. Sonuçlar şuna benzer:

    Üç değerlendirmeyi gösteren değerlendirme gözden geçirme aracının ekran görüntüsü.

    Her değer bir sayı ve yüzde olarak döndürülür.

  3. Değerlerin anlamını anlamak için aşağıdaki tabloyu kullanın.

    Value Açıklama
    Topraklanmışlık Bu, modelin yanıtlarının olgusal ve doğrulanabilir bilgilere ne kadar iyi dayandığı anlamına gelir. Bir yanıt, olgusal olarak doğruysa ve gerçeği yansıtıyorsa temelli olarak kabul edilir.
    İlgi Bu, modelin yanıtlarının bağlamla veya istemle ne kadar yakından uyumlu olduğunu ölçer. İlgili yanıt, kullanıcının sorgusunu veya deyimini doğrudan ele alır.
    Tutarlı -lık Bu, modelin yanıtlarının mantıksal olarak ne kadar tutarlı olduğunu ifade eder. Tutarlı yanıt, mantıksal bir akış tutar ve kendisiyle çelişmiyor.
    Alıntı Bu, yanıtın istemde istenen biçimde döndürülp döndürülmediğini gösterir.
    Length Bu, yanıtın uzunluğunu ölçer.
  4. Sonuçlar, en düşük ilgi düzeyine sahip olan 3 değerlendirmenin tümünün experiment_ignoresources_temp09 yüksek ilgi düzeyine sahip olduğunu göstermelidir.

  5. Değerlendirmenin yapılandırmasını görmek için klasörü seçin.

  6. Ctrl + C yazın, uygulamadan çıkın ve terminale dönün.

Yanıtları karşılaştırın

Değerlendirmelerden döndürülen yanıtları karşılaştırın.

  1. Karşılaştırmak için değerlendirmelerden ikisini seçin, ardından yanıtları karşılaştırmak için aynı gözden geçirme aracını kullanın:

    python3 -m review_tools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
    
  2. Sonuçları inceleyin. Sonuçlarınız farklılık gösterebilir.

    Değerlendirmeler arasındaki değerlendirme yanıtlarının karşılaştırmasının ekran görüntüsü.

  3. Ctrl + C yazın, uygulamadan çıkın ve terminale dönün.

Daha fazla değerlendirme için öneriler

  • Konu etki alanı, uzunluk ve diğer faktörler gibi yanıtları uyarlamak için içindeki istemleri my_input düzenleyin.
  • my_config.json dosyasını düzenleyerek gibi temperatureparametreleri değiştirin ve semantic_ranker denemeleri yeniden çalıştırın.
  • İstem ve sorunun yanıt kalitesini nasıl etkilediğini anlamak için farklı yanıtları karşılaştırın.
  • Azure AI Search dizinindeki her belge için ayrı bir soru kümesi ve temel gerçek yanıtları oluşturun. Ardından yanıtların nasıl farklılık gösterdiğini görmek için değerlendirmeleri yeniden çalıştırın.
  • Gereksinimi istemin sonuna ekleyerek istemleri daha kısa veya daha uzun yanıtlar gösterecek şekilde değiştirin. Örneğin Please answer in about 3 sentences.

Kaynakları temizleme

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.

Azure kaynaklarını silmek ve kaynak kodu kaldırmak için aşağıdaki Azure Geliştirici CLI komutunu çalıştırın:

azd down --purge

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 depolama ve çekirdek saatler.

  1. GitHub Codespaces panosunda (https://github.com/codespaces ) oturum açın.

  2. GitHub deposundan Azure-Samples/ai-rag-chat-evaluator alınan şu anda çalışan Codespaces'ınızı bulun.

    Durumları ve şablonları da dahil olmak üzere çalışan tüm Codespace'lerin 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ü.

Bu kaynakları temizlemek için sohbet uygulaması makalesine dönün.

Sonraki adımlar