Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku ocenisz aplikację czatu utworzoną w części 2 serii samouczków. Oceniasz jakość aplikacji w wielu metrykach, a następnie iterujesz ulepszenia. W tej części ty:
- Tworzenie zestawu danych oceny
- Ocena aplikacji czatu za pomocą ewaluatorów sztucznej inteligencji platformy Azure
- Iterowanie i ulepszanie aplikacji
Ten samouczek jest oparty na części 2: Tworzenie niestandardowej aplikacji do czatów przy użyciu zestawu Microsoft Foundry SDK.
Wymagania wstępne
Uwaga / Notatka
W tym samouczku jest używany projekt oparty na centrum. Kroki i kod pokazany tutaj nie działają w przypadku projektu Foundry. Aby uzyskać więcej informacji, zobacz Typy projektów.
- Ukończ część 2 serii samouczków, aby utworzyć aplikację do czatu.
- Użyj tego samego projektu Microsoft Foundry utworzonego w części 1.
- Uprawnienia do sztucznej inteligencji platformy Azure: rola właściciela lub współautora w celu modyfikowania limitów szybkości punktu końcowego modelu i uruchamiania zadań oceny.
- Upewnij się, że wykonasz kroki niezbędne do dodania rejestrowania telemetrii z części 2.
Tworzenie zestawu danych oceny
Użyj następującego zestawu danych oceny, który zawiera przykładowe pytania i oczekiwane odpowiedzi. Użyj tego zestawu danych z ewaluatorem i get_chat_response() funkcją docelową, aby ocenić wydajność aplikacji czatu na podstawie istotności, uziemienia i spójności.
Utwórz plik o nazwie chat_eval_data.jsonl w folderze assets .
Wklej ten zestaw danych do pliku:
{"query": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} {"query": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} {"query": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} {"query": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} {"query": "What brand is TrailMaster tent? ", "truth": "OutdoorLiving"} {"query": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} {"query": "What is the floor area for Floor Area? ", "truth": "80 square feet"} {"query": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} {"query": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} {"query": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} {"query": "How long are the TrailBlaze pants under warranty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} {"query": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} {"query": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}Dokumentacja: format JSONL dla zestawów danych oceny.
Ocena za pomocą ewaluatorów sztucznej inteligencji platformy Azure
Utwórz skrypt oceny, który generuje otoczkę funkcji, ładuje zestaw danych, uruchamia ocenę i rejestruje wyniki w projekcie Foundry.
Utwórz plik o nazwie evaluate.py w folderze głównym.
Dodaj następujący kod, aby zaimportować wymagane biblioteki, utworzyć klienta projektu i skonfigurować niektóre ustawienia:
import os import pandas as pd from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType from azure.ai.evaluation import evaluate, GroundednessEvaluator from azure.identity import DefaultAzureCredential from chat_with_products import chat_with_products # load environment variables from the .env file at the root of this repo from dotenv import load_dotenv load_dotenv() # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) connection = project.connections.get_default(connection_type=ConnectionType.AZURE_OPEN_AI, include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, "azure_deployment": os.environ["EVALUATION_MODEL"], "api_version": "2024-06-01", "api_key": connection.key, } groundedness = GroundednessEvaluator(evaluator_model)Odwołania: AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Dodaj kod, aby utworzyć funkcję otoki, która implementuje interfejs oceny na potrzeby oceny zapytań i odpowiedzi:
def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) return {"response": response["message"].content, "context": response["context"]["grounding_data"]}Odwołania: azure-ai-evaluation, docelowe funkcje oceny.
Na koniec dodaj kod, aby uruchomić ocenę, wyświetlić wyniki lokalnie i uzyskać link do wyników oceny w portalu Foundry:
# Evaluate must be called inside of __main__, not on import if __name__ == "__main__": from config import ASSET_PATH # workaround for multiprocessing issue on linux from pprint import pprint from pathlib import Path import multiprocessing import contextlib with contextlib.suppress(RuntimeError): multiprocessing.set_start_method("spawn", force=True) # run evaluation with a dataset and target function, log to the project result = evaluate( data=Path(ASSET_PATH) / "chat_eval_data.jsonl", target=evaluate_chat_with_products, evaluation_name="evaluate_chat_with_products", evaluators={ "groundedness": groundedness, }, evaluator_config={ "default": { "query": {"${data.query}"}, "response": {"${target.response}"}, "context": {"${target.context}"}, } }, azure_ai_project=project.scope, output_path="./myevalresults.json", ) tabular_result = pd.DataFrame(result.get("rows")) pprint("-----Summarized Metrics-----") pprint(result["metrics"]) pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}")Dokumentacja: azure-ai-evaluation, AIProjectClient.
Konfigurowanie modelu oceny
Skrypt oceny wywołuje model wiele razy. Rozważ zwiększenie liczby tokenów na minutę dla modelu oceny.
W części 1 tej serii samouczków utworzono plik env, który określa nazwę modelu oceny. gpt-4o-mini Spróbuj zwiększyć limit tokenów na minutę dla tego modelu, jeśli masz dostępny limit przydziału. Jeśli nie masz wystarczającego limitu przydziału, aby zwiększyć wartość, nie martw się. Skrypt został zaprojektowany tak, aby obsługiwał błędy limitu.
- W projekcie w portalu Foundry wybierz pozycję Modele i punkty końcowe.
- Wybierz pozycję gpt-4o-mini.
- Wybierz Edytuj.
- Jeśli masz limit przydziału, zwiększ limit liczby tokenów na minutę do 30 lub więcej.
- Wybierz pozycję Zapisz i zamknij.
Uruchamianie skryptu oceny
W konsoli zaloguj się do konta platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure:
az loginZainstaluj wymagany pakiet:
pip install azure-ai-evaluation[remote]Dokumentacja: azure-ai-evaluation SDK, dokumentacja zestawu SDK oceny.
Weryfikowanie konfiguracji oceny
Przed uruchomieniem pełnej oceny (która trwa od 5 do 10 minut), sprawdź, czy zestaw SDK i połączenie projektu działają, uruchamiając ten szybki test:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Verify connection to project
client = AIProjectClient.from_config(credential=DefaultAzureCredential())
print("Evaluation SDK is ready! You can now run evaluate.py")
Jeśli zostanie wyświetlony komunikat "Evaluation SDK is ready!", konfiguracja zostanie ukończona i możesz kontynuować.
Odwołania: AIProjectClient, DefaultAzureCredential.
Rozpocznij ocenę
Uruchom skrypt oceny:
python evaluate.py
Ukończenie oceny trwa od 5 do 10 minut. Mogą pojawić się ostrzeżenia dotyczące limitu czasu i błędy limitu szybkości. Skrypt automatycznie obsługuje te błędy i kontynuuje przetwarzanie.
Interpretowanie danych wyjściowych oceny
W danych wyjściowych konsoli zobaczysz odpowiedź dla każdego pytania, a następnie tabelę zawierającą podsumowane metryki przedstawiające istotność, uziemienie i wyniki spójności. Wyniki wahają się od 0 (najgorsze) do 4 (najlepsze) dla metryk wspomaganych przez GPT. Poszukaj niskich wyników ugruntowania, aby zidentyfikować odpowiedzi, które nie są dobrze poparte przez dokumenty referencyjne, oraz niskich wyników istotności, aby zidentyfikować odpowiedzi nie związane z tematem.
Może zostać wyświetlonych wiele WARNING:opentelemetry.attributes: komunikatów i błędów przekroczenia limitu czasu. Te błędy można bezpiecznie zignorować. Nie wpływają one na wyniki oceny. Skrypt oceny jest przeznaczony do obsługi błędów limitu szybkości i kontynuowania przetwarzania.
Dane wyjściowe wyników oceny zawierają również link umożliwiający wyświetlenie szczegółowych wyników w portalu Foundry, w którym można porównać przebiegi oceny obok siebie i śledzić ulepszenia w czasie.
====================================================
'-----Summarized Metrics-----'
{'groundedness.gpt_groundedness': 1.6666666666666667,
'groundedness.groundedness': 1.6666666666666667}
'-----Tabular Result-----'
outputs.response ... line_number
0 Could you specify which tent you are referring... ... 0
1 Could you please specify which camping table y... ... 1
2 Sorry, I only can answer queries related to ou... ... 2
3 Could you please clarify which aspects of care... ... 3
4 Sorry, I only can answer queries related to ou... ... 4
5 The TrailMaster X4 Tent comes with an included... ... 5
6 (Failed) ... 6
7 The TrailBlaze Hiking Pants are crafted from h... ... 7
8 Sorry, I only can answer queries related to ou... ... 8
9 Sorry, I only can answer queries related to ou... ... 9
10 Sorry, I only can answer queries related to ou... ... 10
11 The PowerBurner Camping Stove is designed with... ... 11
12 Sorry, I only can answer queries related to ou... ... 12
[13 rows x 8 columns]
('View evaluation results in Foundry portal: '
'https://xxxxxxxxxxxxxxxxxxxxxxx')
Iterowanie i ulepszanie
Wyniki oceny pokazują, że odpowiedzi często nie są dobrze zakorzenione w dokumentach referencyjnych. Aby poprawić odniesienie do źródeł, zmodyfikuj monit systemowy w pliku assets/grounded_chat.prompty, aby zachęcić model do korzystania z dokumentów referencyjnych bardziej bezpośrednio.
Bieżący monit (problematyczny):
If the question is not related to outdoor/camping gear and clothing, just say 'Sorry, I only can answer queries related to outdoor/camping gear and clothing. So, how can I help?'
If the question is related to outdoor/camping gear and clothing but vague, ask clarifying questions.
Ulepszony monit:
If the question is related to outdoor/camping gear and clothing, answer based on the reference documents provided.
If you cannot find information in the reference documents, say: 'I don't have information about that specific topic. Let me help with related products or try a different question.'
For vague questions, ask clarifying questions to better assist.
Po zaktualizowaniu monitu:
Zapisz plik.
Uruchom ponownie skrypt oceny:
python evaluate.pyPorównaj nowe wyniki oceny z poprzednim przebiegiem procesu. Powinny być widoczne poprawione oceny wiarygodności.
Wypróbuj dodatkowe modyfikacje, takie jak:
- Zmiana monitu systemowego w celu skoncentrowania się na dokładności nad kompletnością
- Testowanie przy użyciu innego modelu (na przykład,
gpt-4-turbojeśli jest dostępny) - Dopasowanie mechanizmu pobierania kontekstu w celu zwrócenia bardziej odpowiednich dokumentów
Każda iteracja pomaga zrozumieć, które zmiany poprawiają określone metryki.
Uprzątnij zasoby
Aby uniknąć niepotrzebnych kosztów platformy Azure, usuń zasoby utworzone w tym samouczku, jeśli nie są już potrzebne. Aby zarządzać zasobami, możesz użyć witryny Azure Portal.