Aracılığıyla paylaş


JavaScript'te 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. Bu istemler zaten depodadır.
  • 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.
  • Microsoft AI Sohbet Protokolü , yapay zeka çözümleri ve dilleri genelinde standartlaştırılmış API sözleşmeleri sağlar. Sohbet uygulaması, değerlendirme uygulamasının protokole uyan tüm sohbet uygulamalarına karşı çalışmasını sağlayan Microsoft AI 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çok 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, model için GPT-4 kendi kapasitesine sahip Azure OpenAI uç noktası oluşturulur. Sohbet uygulamalarını değerlendirirken değerlendiricinin kendi kapasitesiyle kullanan GPT-4 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ı dağıtma

  • Bu sohbet uygulamaları verileri Azure AI Search kaynağına yükler. 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. Geliştirme ortamını ve sağlanan belgeleri aynı anda görüntülemek 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 AZD command işlem değerlendirme uygulamasını dağıtmaz, ancak değerlendirmeleri yerel geliştirme ortamında çalıştırmak için gerekli GPT-4 bir dağıtımla 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, 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. tabanlı .env.samplebir .env dosya oluşturun:

    cp .env.sample .env
    
  2. Dağıtılan kaynak grubunuz için gerekli değerleri almak ve AZURE_OPENAI_SERVICE bu değerleri dosyaya .env yapıştırmak için AZURE_OPENAI_EVAL_DEPLOYMENT şu komutları çalıştırın:

    azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT
    azd env get-value AZURE_OPENAI_SERVICE
    
  3. 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>"
    

Yapılandırma bilgileri için Microsoft AI Sohbet Protokolü'ni kullanma

Sohbet uygulaması ve değerlendirme uygulaması, tüketim ve değerlendirme için kullanılan açık kaynak, Bulut ve dil belirsiz yapay zeka uç noktası API'sinin sözleşmesini uygularMicrosoft AI Chat Protocol specification. İstemci ve orta katman uç noktalarınız bu API belirtimine uyduğunda yapay zeka arka uçlarınızda sürekli olarak değerlendirmeleri kullanabilir ve çalıştırabilirsiniz.

  1. 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": {
                "top": 3,
                "temperature": 0.3,
                "retrieval_mode": "hybrid",
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_refined.txt",
                "seed": 1
            }
        }
    }
    

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

    overrides nesnesi, uygulama için gereken tüm yapılandırma ayarlarını içerir. Her uygulama kendi ayar özellikleri kümesini tanımlar.

  2. Sohbet uygulamasına gönderilen ayarlar özelliklerinin anlamını anlamak için aşağıdaki tabloyu kullanın:

    Ayarlar Özelliği Açıklama
    semantic_ranker Kullanıcının sorgusuyla anlamsal benzerlik temelinde arama sonuçlarını yeniden oluşturan bir model olan anlam derecesini kullanıp kullanmama. Maliyetleri azaltmak için bu öğreticide devre dışı bırakıyoruz.
    retrieval_mode Kullanılacak alma modu. Varsayılan değer: hybrid.
    sıcaklık Modelin sıcaklık ayarı. Varsayılan değer: 0.3.
    üst Döndürülecek arama sonuçlarının sayısı. Varsayılan değer: 3.
    prompt_template Soruya ve arama sonuçlarına göre yanıt oluşturmak için kullanılan istem geçersiz kılınan.
    tohum GPT modellerine yapılan çağrıların tohum değeri. Bir tohum ayarlamak, değerlendirmeler arasında daha tutarlı sonuçlara neden olur.
  3. 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:

    python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
    

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:

    python -m evaltools 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
    config.json Değerlendirme için kullanılan yapılandırma dosyasının bir kopyası.
    evaluate_parameters.json Değerlendirme için kullanılan parametreler. Buna çok benzer config.json ancak zaman damgası gibi ek meta veriler içerir.
    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:

    python -m evaltools 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 değer temperature 0,7'dir. Sıcaklık ne kadar yüksek olursa, yanıtlar o kadar yaratıcı olur.

    İstem ignore 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ğıdaki gibi görünmelidir, ancak değerini yolunuzla değiştirin results_dir :

    {
        "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:

    python -m evaltools 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ştirdiyseniz. 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:

    python -m evaltools 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
    Temellilik 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.
    Yapışma 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, üç değerlendirmenin de yüksek ilgi düzeyine sahip olduğunu, en düşük ilgi düzeyine experiment_ignoresources_temp09 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:

    python -m evaltools 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ı ve bağımlılıkları 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