Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak ocenić odpowiedzi aplikacji czatu na zestaw poprawnych lub idealnych odpowiedzi (nazywanych prawem podstawy). Za każdym razem, gdy zmienisz aplikację czatu w sposób, który ma wpływ na odpowiedzi, uruchom ocenę, aby porównać zmiany. Ta aplikacja demonstracyjna oferuje narzędzia, których można używać, aby ułatwić przeprowadzanie ocen.
Postępując zgodnie z instrukcjami w tym artykule, wykonasz następujące czynności:
- Użyj podanych przykładowych monitów dostosowanych do domeny podmiotu. Te monity znajdują się już w repozytorium.
- Wygeneruj przykładowe pytania użytkownika i podstawowe odpowiedzi prawdy na podstawie własnych dokumentów.
- Uruchom oceny przy użyciu przykładowego monitu z wygenerowanymi pytaniami użytkownika.
- Przejrzyj analizę odpowiedzi.
Uwaga
W tym artykule użyto co najmniej jednego szablonu aplikacji sztucznej inteligencji jako podstawy przykładów i wskazówek w artykule. Szablony aplikacji sztucznej inteligencji zapewniają dobrze utrzymywane implementacje referencyjne, które można łatwo wdrożyć. Pomagają one zapewnić wysokiej jakości punkt wyjścia dla aplikacji sztucznej inteligencji.
Omówienie architektury
Kluczowe składniki architektury obejmują:
- Aplikacja do czatu hostowana na platformie Azure: aplikacja do czatu działa w usłudze aplikacja systemu Azure Service.
- Protokół czatu sztucznej inteligencji firmy Microsoft: protokół udostępnia standardowe kontrakty interfejsu API w rozwiązaniach i językach sztucznej inteligencji. Aplikacja do czatu jest zgodna z protokołem Microsoft AI Chat Protocol, który umożliwia uruchamianie aplikacji ewaluacyjnej względem dowolnej aplikacji czatu zgodnej z protokołem.
- Azure AI Search: aplikacja do czatu używa usługi Azure AI Search do przechowywania danych z własnych dokumentów.
- Generator przykładowych pytań: narzędzie może generować wiele pytań dla każdego dokumentu wraz z prawdziwą odpowiedzią. Tym więcej pytań jest, tym dłużej oceny.
- Ewaluator: narzędzie uruchamia przykładowe pytania i monity w odniesieniu do aplikacji czatu, i zwraca rezultaty.
- Narzędzie do przeglądu: narzędzie przegląda wyniki oceny.
- Narzędzie porównujące różnice: Narzędzie porównuje odpowiedzi między ocenami.
Podczas wdrażania tej oceny na platformie Azure punkt końcowy usługi Azure OpenAI Service jest tworzony dla GPT-4
modelu z własną pojemnością. Podczas oceniania aplikacji do czatów ważne jest, aby ewaluator miał własny zasób usługi Azure OpenAI, korzystając z własnej pojemności.
Wymagania wstępne
Subskrypcja platformy Azure. Utwórz je bezpłatnie.
Wykonaj poprzednią procedurę aplikacji do czatu , aby wdrożyć aplikację czatu na platformie Azure. Ten zasób jest wymagany, aby aplikacja oceny działała. Nie kończ sekcji „Czyszczenie zasobów” w poprzedniej procedurze.
Do wdrożenia aplikacji potrzebne są następujące informacje o zasobach platformy Azure, nazywane w tym artykule aplikacją do czatu :
- Identyfikator URI interfejsu API czatu. Punkt końcowy zaplecza usługi wyświetlany na końcu
azd up
procesu. - Azure AI Search. Wymagane są następujące wartości:
-
Nazwa zasobu: Nazwa zasobu usługi Azure AI Search zanotowana jako
Search service
podczas procesuazd up
. - Nazwa indeksu: nazwa indeksu usługi Azure AI Search, w którym są przechowywane dokumenty. Można ją znaleźć w witrynie Azure Portal dla usługi Search.
-
Nazwa zasobu: Nazwa zasobu usługi Azure AI Search zanotowana jako
Adres URL interfejsu API czatu umożliwia ewaluacjom wysyłanie żądań za pośrednictwem aplikacji zaplecza. Informacje usługi Azure AI Search umożliwiają skryptom oceny używanie tego samego wdrożenia co zaplecze załadowane z dokumentami.
Po zebraniu tych informacji nie należy ponownie używać środowiska deweloperskiego aplikacji czatu. Ten artykuł odwołuje się do niego później, kilka razy, aby wskazać, jak aplikacja oceny korzysta z aplikacji czatu. Nie usuwaj zasobów aplikacji do czatu, dopóki nie zakończysz całej procedury opisanej w tym artykule.
- Identyfikator URI interfejsu API czatu. Punkt końcowy zaplecza usługi wyświetlany na końcu
Środowisko kontenera deweloperskiego jest dostępne ze wszystkimi zależnościami wymaganymi do ukończenia tego artykułu. Kontener deweloperski można uruchomić w usłudze GitHub Codespaces (w przeglądarce) lub lokalnie przy użyciu programu Visual Studio Code.
- Konto usługi GitHub
Otwieranie środowiska projektowego
Postępuj zgodnie z tymi instrukcjami, aby skonfigurować wstępnie skonfigurowane środowisko programistyczne ze wszystkimi wymaganymi zależnościami, aby ukończyć ten artykuł. Rozmieść obszar roboczy monitora, aby jednocześnie wyświetlić tę dokumentację i środowisko programistyczne.
Ten artykuł został przetestowany z regionem switzerlandnorth
wdrożenia oceny.
Usługa GitHub Codespaces uruchamia kontener deweloperski zarządzany przez usługę GitHub za pomocą programu Visual Studio Code dla sieci Web jako interfejsu użytkownika. Użyj usługi GitHub Codespaces, aby uzyskać najłatwiejsze środowisko programistyczne. Jest dostępny z odpowiednimi narzędziami deweloperskimi i wstępnie zainstalowanymi zależnościami, niezbędnymi do pracy nad tym artykułem.
Ważne
Wszystkie konta GitHub mogą korzystać z GitHub Codespaces do 60 godzin miesięcznie bezpłatnie, z dwoma podstawowymi instancjami. Aby uzyskać więcej informacji, zobacz GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni usługi GitHub Codespaces).
Rozpocznij proces tworzenia nowej przestrzeni kodowej GitHub na gałęzi
main
repozytorium GitHub Azure-Samples/ai-rag-chat-evaluator.Aby wyświetlić środowisko programistyczne i dokumentację dostępną w tym samym czasie, kliknij prawym przyciskiem myszy poniższy przycisk i wybierz polecenie Otwórz link w nowym oknie.
Na stronie Tworzenie przestrzeni kodu przejrzyj ustawienia konfiguracji przestrzeni kodu, a następnie wybierz pozycję Utwórz nową przestrzeń kodu.
Poczekaj na uruchomienie przestrzeni kodu. Ten proces uruchamiania może potrwać kilka minut.
W terminalu w dolnej części ekranu zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure:
azd auth login --use-device-code
Skopiuj kod z terminalu, a następnie wklej go w przeglądarce. Postępuj zgodnie z instrukcjami, aby uwierzytelnić się przy użyciu konta platformy Azure.
Aprowizacja wymaganego zasobu platformy Azure, usługi Azure OpenAI, dla aplikacji ewaluacyjnej:
azd up
To
AZD
polecenie nie wdraża aplikacji ewaluacyjnej, ale tworzy zasób usługi Azure OpenAI z wymaganymGPT-4
wdrożeniem w celu uruchomienia ocen w lokalnym środowisku projektowym.
Pozostałe zadania w tym artykule mają miejsce w kontekście tego kontenera deweloperskiego.
Nazwa repozytorium GitHub jest wyświetlana na pasku wyszukiwania. Ten wskaźnik wizualizacji pomaga odróżnić aplikację oceny od aplikacji do czatu. To ai-rag-chat-evaluator
repozytorium jest określane jako aplikacja ewaluacji w tym artykule.
Przygotowywanie wartości środowiska i informacji o konfiguracji
Zaktualizuj wartości środowiska i informacje o konfiguracji przy użyciu informacji zebranych podczas wymagań wstępnych dla aplikacji ewaluacyjnej.
Utwórz plik
.env
na podstawie.env.sample
.cp .env.sample .env
Uruchom to polecenie, aby uzyskać wymagane wartości dla
AZURE_OPENAI_EVAL_DEPLOYMENT
iAZURE_OPENAI_SERVICE
z wdrożonej grupy zasobów. Wklej te wartości do.env
pliku.azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT azd env get-value AZURE_OPENAI_SERVICE
Dodaj następujące wartości z aplikacji czatu dla wystąpienia usługi Azure AI Search do pliku
.env
, które zebrałeś w sekcji Wymagania wstępne.AZURE_SEARCH_SERVICE="<service-name>" AZURE_SEARCH_INDEX="<index-name>"
Informacje o konfiguracji przy użyciu protokołu Microsoft AI Chat Protocol
Aplikacja do czatów i aplikacja ewaluacyjna implementują specyfikację protokołu czatu sztucznej inteligencji firmy Microsoft, będącego kontraktem interfejsu API dla punktów końcowych AI, open-source, neutralnego względem chmury i języka, który jest wykorzystywany do konsumpcji i oceny. Gdy klient i punkty końcowe warstwy środkowej są zgodne ze specyfikacją interfejsu API, można konsekwentnie korzystać i uruchamiać oceny w zapleczach sztucznej inteligencji.
Utwórz nowy plik o nazwie
my_config.json
i skopiuj do niego następującą zawartość:{ "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 } } }
Skrypt oceny tworzy
my_results
folder.Obiekt
overrides
zawiera wszystkie ustawienia konfiguracji, które są wymagane dla aplikacji. Każda aplikacja definiuje własny zestaw właściwości ustawień.Skorzystaj z poniższej tabeli, aby zrozumieć znaczenie właściwości ustawień wysyłanych do aplikacji do czatu.
Właściwość ustawień opis semantic_ranker
Czy używać semantycznego rangatora, modelu, który ponownie korekuje wyniki wyszukiwania na podstawie semantycznej podobieństwa do zapytania użytkownika. Wyłączyliśmy go na potrzeby tego samouczka, aby zmniejszyć koszty. retrieval_mode
Tryb pobierania do użycia. Wartość domyślna to hybrid
.temperature
Ustawienie temperatury dla modelu. Wartość domyślna to 0.3
.top
Liczba wyników wyszukiwania do zwrócenia. Wartość domyślna to 3
.prompt_template
Zastąpienie monitu użytego do wygenerowania odpowiedzi na podstawie pytania i wyników wyszukiwania. seed
Wartość inicjatora dla wszystkich wywołań modeli GPT. Ustawienie inicjatora powoduje bardziej spójne wyniki w ocenach. Zmień wartość
target_url
na wartość identyfikatora URI swojej aplikacji do czatu, którą zebrałeś w sekcji Wymagania wstępne. Aplikacja do czatu musi być zgodna z protokołem czatu. Identyfikator URI ma następujący format:https://CHAT-APP-URL/chat
. Upewnij się, że protokół ichat
trasa są częścią identyfikatora URI.
Generowanie danych przykładowych
Aby ocenić nowe odpowiedzi, należy je porównać do podstawowej odpowiedzi na prawdę , która jest idealną odpowiedzią na konkretne pytanie. Wygeneruj pytania i odpowiedzi na podstawie dokumentów przechowywanych w usłudze Azure AI Search dla aplikacji do czatu.
example_input
Skopiuj folder do nowego folderu o nazwiemy_input
.W terminalu uruchom następujące polecenie, aby wygenerować przykładowe dane:
python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
Pary pytań i odpowiedzi są generowane i przechowywane w my_input/qa.jsonl
(w formacie JSONL) jako dane wejściowe dla ewaluatora używanego w następnym kroku. W przypadku oceny produkcyjnej można wygenerować więcej par pytań i odpowiedzi. Dla tego zestawu danych generuje się ponad 200.
Uwaga
Tylko kilka pytań i odpowiedzi jest generowanych dla każdego źródła, aby można było szybko wykonać tę procedurę. Nie jest to ocena produkcyjna, która powinna obejmować więcej pytań i odpowiedzi dla każdego źródła.
Uruchom pierwszą ocenę z ulepszonym zapytaniem
my_config.json
Edytuj właściwości pliku konfiguracji.Właściwości Nowa wartość results_dir
my_results/experiment_refined
prompt_template
<READFILE>my_input/prompt_refined.txt
Uściśliny monit jest specyficzny dla domeny podmiotu.
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 a 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].
W terminalu uruchom następujące polecenie, aby uruchomić ocenę:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Ten skrypt utworzył nowy folder eksperymentu w programie
my_results/
z oceną. Folder zawiera wyniki oceny.Nazwa pliku opis config.json
Kopia pliku konfiguracji używanego do oceny. evaluate_parameters.json
Parametry używane do oceny. Podobnie jak config.json
, ale z dodatkiem innych metadanych, takich jak sygnatura czasowa.eval_results.jsonl
Każde pytanie i odpowiedź wraz z metrykami GPT dla każdej pary pytań i odpowiedzi. summary.json
Ogólne wyniki, takie jak średnie metryki GPT.
Uruchom drugą ocenę ze słabą podpowiedzią
my_config.json
Edytuj właściwości pliku konfiguracji.Właściwości Nowa wartość results_dir
my_results/experiment_weak
prompt_template
<READFILE>my_input/prompt_weak.txt
Ta słaba podpowiedź nie ma kontekstu dotyczącego obszaru tematycznego.
You are a helpful assistant.
W terminalu uruchom następujące polecenie, aby uruchomić ocenę:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Uruchom trzecią ewaluację z określoną temperaturą
Użyj monitu, który pozwala na większą kreatywność.
my_config.json
Edytuj właściwości pliku konfiguracji.Istniejący Właściwości Nowa wartość Istniejący results_dir
my_results/experiment_ignoresources_temp09
Istniejący prompt_template
<READFILE>my_input/prompt_ignoresources.txt
Nowe temperature
0.9
Wartość domyślna
temperature
to 0,7. Im wyższa temperatura, tym bardziej kreatywne odpowiedzi.Komunikat
ignore
jest krótki.Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
Obiekt konfiguracji powinien wyglądać podobnie jak poniższy przykład, ale należy zastąpić
results_dir
własną ścieżką:{ "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" } } }
W terminalu uruchom następujące polecenie, aby uruchomić ocenę:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Przejrzenie wyników oceny
Wykonano trzy oceny na podstawie różnych monitów i ustawień aplikacji. Wyniki są przechowywane w folderze my_results
. Sprawdź, jak wyniki różnią się w zależności od ustawień.
Użyj narzędzia do przeglądu, aby wyświetlić wyniki oceny.
python -m evaltools summary my_results
Wyniki wyglądają mniej więcej tak:
Każda wartość jest zwracana jako liczba i wartość procentowa.
Skorzystaj z poniższej tabeli, aby zrozumieć znaczenie wartości.
Wartość opis Uziemienie Sprawdza, jak dobrze odpowiedzi modelu są oparte na rzeczywistych, weryfikowalnych informacjach. Odpowiedź jest uważana za uziemioną, jeśli jest ona faktycznie dokładna i odzwierciedla rzeczywistość. Stopień zgodności Mierzy, jak blisko odpowiedzi modelu są zgodne z kontekstem lub monitem. Odpowiednia odpowiedź bezpośrednio odpowiada na zapytanie lub instrukcję użytkownika. Spójności Sprawdza, jak logicznie spójne są odpowiedzi modelu. Spójna odpowiedź utrzymuje przepływ logiczny i nie zaprzecza samemu sobie. Odsyłacz bibliograficzny Wskazuje, czy odpowiedź została zwrócona w formacie żądanym w wierszu polecenia. Długość Mierzy długość odpowiedzi. Wyniki powinny wskazywać, że wszystkie trzy oceny miały duże znaczenie, podczas gdy
experiment_ignoresources_temp09
miały najniższe znaczenie.Wybierz folder, aby wyświetlić konfigurację oceny.
Naciśnij Ctrl + C , aby zamknąć aplikację i wrócić do terminalu.
Porównanie odpowiedzi
Porównaj zwrócone odpowiedzi z ocen.
Wybierz dwie oceny do porównania, a następnie użyj tego samego narzędzia do przeglądu, aby porównać odpowiedzi.
python -m evaltools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
Przejrzyj wyniki. Wyniki mogą się różnić.
Naciśnij Ctrl + C , aby zamknąć aplikację i wrócić do terminalu.
Sugestie dotyczące dalszych ocen
- Zmodyfikuj monity,
my_input
aby dostosować odpowiedzi, takie jak domena podmiotu, długość i inne czynniki. - Zmodyfikuj plik,
my_config.json
aby zmienić parametry, takie jaktemperature
, isemantic_ranker
ponownie uruchomić eksperymenty. - Porównaj różne odpowiedzi, aby zrozumieć, jak monit i pytanie wpływają na jakość odpowiedzi.
- Wygeneruj oddzielny zestaw pytań i odpowiedzi na podstawowe informacje dla każdego dokumentu w indeksie usługi Azure AI Search. Następnie ponownie uruchom oceny, aby zobaczyć, jak różnią się odpowiedzi.
- Zmień monity, aby wskazać krótsze lub dłuższe odpowiedzi, dodając wymaganie na końcu monitu. Przykład:
Please answer in about 3 sentences.
Czyszczenie zasobów i zależności
Poniższe kroki przeprowadzą Cię przez proces czyszczenia użytych zasobów.
Czyszczenie zasobów platformy Azure
Zasoby platformy Azure utworzone w tym artykule są rozliczane z subskrypcją platformy Azure. Jeśli nie spodziewasz się, że te zasoby będą potrzebne w przyszłości, usuń je, aby uniknąć naliczania dodatkowych opłat.
Aby usunąć zasoby platformy Azure i usunąć kod źródłowy, uruchom następujące polecenie interfejsu wiersza polecenia dla deweloperów platformy Azure:
azd down --purge
Czyszczenie usług GitHub Codespaces i Visual Studio Code
Usunięcie środowiska GitHub Codespaces pozwala na maksymalne wykorzystanie przydzielonych darmowych godzin procesora dla twojego konta.
Ważne
Aby uzyskać więcej informacji na temat uprawnień konta usługi GitHub, zobacz Artykuł GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni w usłudze GitHub).
Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces.
Znajdź aktualnie uruchomione przestrzenie kodu pochodzące z repozytorium GitHub Azure-Samples/ai-rag-chat-evaluator .
Otwórz menu kontekstowe dla przestrzeni kodu, a następnie wybierz pozycję Usuń.
Wróć do artykułu o aplikacji czatu, aby wyczyścić te zasoby.
Treści powiązane
- Zobacz repozytorium ocen.
- Zobacz repozytorium GitHub aplikacji do czatów dla przedsiębiorstw.
- Zbuduj aplikację do czatu z wykorzystaniem najlepszych praktyk architektonicznych usługi Azure OpenAI.
- Dowiedz się więcej o kontroli dostępu w aplikacjach sztucznej inteligencji generacyjnej dzięki usłudze Azure AI Search.
- Zbuduj rozwiązanie Azure OpenAI gotowe do użycia w przedsiębiorstwie za pomocą usługi Azure API Management.
- Zobacz Azure AI Search: Prześcigający wyszukiwanie wektora dzięki możliwościom hybrydowego wyszukiwania i porządkowania.