Průběžné monitorování aplikací generující umělé inteligence
Důležité
Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Průběžný pokrok ve generativní umělé inteligenci vedl organizace k vytváření stále složitějších aplikací pro řešení různých problémů (chatboty, systémy RAG, agentské systémy atd.). Tyto aplikace se používají k řízení inovací, zlepšování zákaznických prostředí a k vylepšení rozhodování. Přestože jsou modely (například GPT-4) výkonu těchto aplikací generativní umělé inteligence extrémně schopné, nepřetržité monitorování nikdy nebylo důležitější, aby se zajistilo vysoce kvalitní, bezpečné a spolehlivé výsledky. Průběžné monitorování je efektivní, když se při pozorování aplikace považuje více perspektiv. Mezi tyto perspektivy patří využití a náklady na tokeny, provozní metriky – latence, počet požadavků atd. – a důležité je průběžné vyhodnocování. Další informace o vyhodnocení najdete v tématu Vyhodnocení generování aplikací umělé inteligence.
Azure AI a Azure Monitor poskytují nástroje pro průběžné monitorování výkonu aplikací Generative AI z různých perspektiv. S online vyhodnocením Azure AI můžete průběžně vyhodnocovat nezávislou aplikaci na tom, kde je nasazená nebo jakou architekturu orchestrace používá (například LangChain). Můžete použít různé předdefinované vyhodnocovače , které udržují paritu se sadou Azure AI Evaluation SDK , nebo definovat vlastní vyhodnocovače. Nepřetržitým spouštěním správných vyhodnocovačů nad shromážděnými daty trasování může váš tým efektivněji identifikovat a zmírnit obavy z zabezpečení, kvality a bezpečnosti při jejich vzniku v předprodukčním nebo po produkčním prostředí. Azure AI Online Evaluation poskytuje úplnou integraci s komplexní sadou nástrojů pozorovatelnosti dostupných ve službě Azure Monitor Application Insights, která umožňuje vytvářet vlastní řídicí panely, vizualizovat výsledky vyhodnocení v průběhu času a konfigurovat upozorňování pro pokročilé monitorování aplikací.
Monitorování aplikací generující umělé inteligence v souhrnu nikdy nebylo důležitější, a to kvůli složitosti a rychlému vývoji odvětví AI. Online vyhodnocení Azure AI integrované se službou Azure Monitor Application Insights umožňuje průběžně vyhodnocovat nasazené aplikace, aby se zajistilo, že jsou výkonné, bezpečné a vytvářejí vysoce kvalitní výsledky v produkčním prostředí.
Jak funguje online vyhodnocení
V této části se dozvíte, jak funguje online vyhodnocení Azure AI, jak se integruje se službou Azure Monitor Application Insights a jak ho můžete použít ke spouštění průběžných vyhodnocování dat trasování z generovaných aplikací umělé inteligence.
Trasování aplikace generující umělé inteligence
Prvním krokem při nepřetržitém monitorování aplikace je zajistit, aby se její telemetrická data zaznamenávala a ukládaly k analýze. Abyste toho dosáhli, budete muset instrumentovat kód generující aplikace AI tak, aby pomocí balíčku Trasování AI Azure protokolovaly data trasování do libovolného prostředku Application Insights služby Azure Monitor. Tento balíček plně odpovídá standardu OpenTelemetry pro pozorovatelnost. Po instrumentaci kódu aplikace se data trasování zaprotokolují do vašeho prostředku Application Insights.
Po zahrnutí trasování do kódu aplikace můžete zobrazit data trasování v Azure AI Foundry nebo v prostředku Azure Monitor Application Insights. Další informace o tom, jak to udělat, najdete v tématu Monitorování aplikace generující umělé inteligence.
Online vyhodnocení
Po instrumentaci aplikace pro odesílání dat trasování do Application Insights je čas nastavit plán online vyhodnocení, který bude tato data průběžně vyhodnocovat. Azure AI Online Evaluation je služba, která používá výpočetní prostředky Azure AI k nepřetržitému spouštění sady vyhodnocovačů. Po nastavení plánu online vyhodnocení pomocí sady Azure AI Project SDK se spustí podle přizpůsobitelného plánu. Při každém spuštění služby provede následující kroky:
- Dotazování dat trasování aplikace z připojeného prostředku Application Insights pomocí zadaného dotazu Kusto
- Spusťte každý vyhodnocovač nad daty trasování a vypočítejte každou metriku (například uzemnění: 3).
- Napište hodnocení zpět do každého trasování pomocí standardizovaných sémantických konvencí.
Poznámka:
Online vyhodnocení Azure AI podporuje stejné metriky jako azure AI Evaluation. Další informace o tom, jak funguje vyhodnocení a které metriky vyhodnocení se podporují, najdete v tématu Vyhodnocení aplikace Generative AI pomocí sady Azure AI Evaluation SDK.
Řekněme například, že máte nasazenou chatovací aplikaci, která denně dostává mnoho dotazů zákazníků. Chcete průběžně vyhodnocovat kvalitu odpovědí z vaší aplikace. Nastavíte plán online vyhodnocení s denním opakováním. Konfigurujete vyhodnocovače: Uzemnění, soudržnost a plynulost. Služba každý den vypočítá hodnocení těchto metrik a zapíše data zpět do Application Insights pro každé trasování, které se shromáždilo během časového intervalu opakování (v tomto příkladu za posledních 24 hodin). Data se pak dají dotazovat z každého trasování a zpřístupnit je v Azure AI Foundry a Azure Monitor Application Insights.
Výsledky vyhodnocení napsané zpět na každé trasování v Application Insights se řídí následujícími konvencemi. Do každého trasování pro každou metriku vyhodnocení se přidá jedinečné rozpětí.
Vlastnost | Tabulka Application Insights | Pole pro danou operation_ID | Příklad hodnoty |
---|---|---|---|
Metrika vyhodnocení | traces, AppTraces | customDimensions[“event.name”] |
gen_ai.evaluation.relevance |
Hodnocení skóre metriky | traces, AppTraces | customDimensions[“gen_ai.evaluation.score”] |
3 |
Komentář k metrikě vyhodnocení (pokud je k dispozici) | traces, AppTraces | message |
{“comment”: “I like the response”} |
Teď, když rozumíte tomu, jak funguje online vyhodnocení Azure AI a jak se připojuje ke službě Azure Monitor Application Insights, je čas zjistit, jak službu nastavit.
Nastavení online vyhodnocení
V této části se dozvíte, jak nakonfigurovat plán online vyhodnocení pro průběžné monitorování nasazené aplikace generující AI. Sada Azure AI Project SDK nabízí tyto funkce prostřednictvím rozhraní Python API a podporuje všechny funkce dostupné v místních hodnoceních. Pomocí následujících kroků odešlete plán online vyhodnocení dat pomocí předdefinovaných nebo vlastních vyhodnocovačů.
Poznámka:
Hodnocení jsou podporována pouze ve stejných oblastech jako metriky rizika a bezpečnosti s asistencí umělé inteligence.
Požadavky
Provedením následujících kroků požadavků nastavte prostředí a ověřování na nezbytné prostředky:
- Předplatné Azure.
- Skupina prostředků v oblasti podporované vyhodnocením
- Nová spravovaná identita přiřazená uživatelem ve stejné skupině prostředků a oblasti Poznamenejte si ho
clientId
. Budete ho potřebovat později. - Centrum Azure AI ve stejné skupině prostředků a oblasti.
- Projekt Azure AI v tomto centru najdete v tématu Vytvoření projektu na portálu Azure AI Foundry.
- Prostředek Azure Monitor Application Insights
- Přejděte na stránku centra na webu Azure Portal a přidejte prostředek Application Insights, viz Aktualizace Aplikace Azure lication Insights a Azure Container Registry.
- Nasazení Azure OpenAI s podporou
chat completion
modelu GPT , napříkladgpt-4
. Connection String
pro projekt Azure AI pro snadné vytvořeníAIProjectClient
objektu. Project připojovací řetězec můžete získat na stránce Přehled projektu v části Podrobnosti projektu.- Na webu Azure Portal přejděte k prostředku Application Insights a pomocí karty Řízení přístupu (IAM) přidejte
Log Analytics Contributor
roli do spravované identity přiřazené uživatelem, kterou jste vytvořili dříve. - Připojte spravovanou identitu přiřazenou uživatelem k projektu.
- Na webu Azure Portal přejděte ke službám Azure AI a pomocí karty Řízení přístupu (IAM) přidejte
Cognitive Services OpenAI Contributor
roli do spravované identity přiřazené uživatelem, kterou jste vytvořili dříve. - Spuštěním příkazu
az login
se ujistěte, že jste poprvé přihlášeni ke svému předplatnému Azure.
Pokyny k instalaci
- Vytvořte si virtuální prostředí podle svého výběru. Pokud ho chcete vytvořit pomocí conda, spusťte následující příkaz:
conda create -n online-evaluation
conda activate online-evaluation
- Nainstalujte požadované balíčky spuštěním následujícího příkazu:
pip install azure-identity azure-ai-projects azure-ai-ml
Tip
Volitelně můžete pip install azure-ai-evaluation
, pokud chcete, aby prostředí prvního kódu načítá ID vyhodnocovače pro předdefinované vyhodnocovače v kódu. Informace o tom, jak to provést, najdete v tématu Určení vyhodnocovačů z knihovny vyhodnocovačů.
Nastavení trasování pro generující aplikaci AI
Prvním krokem při monitorování aplikace je nastavení trasování. Informace o tom, jak to udělat, aby se data protokolovala do Application Insights, najdete v tématu Nastavení trasování pro vaši aplikaci generující AI.
Použití názvu služby v datech trasování
K identifikaci služby prostřednictvím jedinečného ID v Application Insights můžete ve svých trasovacích datech použít vlastnost OpenTelemetry s názvem služby. To je zvlášť užitečné, pokud protokolujete data z více aplikací do stejného prostředku Application Insights a chcete mezi nimi rozlišovat. Řekněme například, že máte dvě aplikace: App-1 a App-2 s trasováním nakonfigurovaným pro protokolování dat do stejného prostředku Application Insights. Možná byste chtěli nastavit , aby se aplikace App-1 vyhodnocovala nepřetržitě podle relevance a app-2 , aby se vyhodnocovala nepřetržitě podle zemnění. Název služby můžete použít k rozlišení aplikací v konfiguracích online vyhodnocení.
Pokud chcete nastavit vlastnost názvu služby, můžete to provést přímo v kódu aplikace pomocí kroků, viz Použití více zprostředkovatelů trasování s jiným prostředkem. Případně můžete proměnnou OTEL_SERVICE_NAME
prostředí nastavit před nasazením aplikace. Další informace o práci s názvem služby najdete v tématu Proměnné prostředí OTEL a sémantické konvence prostředků služby.
Pokud chcete dotazovat data trasování pro daný název služby, zadejte dotaz na cloud_roleName
vlastnost. Do dotazu KQL, který použijete v rámci nastavení online vyhodnocení, přidejte následující řádek:
| where cloud_RoleName == "service_name"
Dotazování uložených dat trasování v Application Insights
Pomocí dotazovací jazyk Kusto (KQL) můžete dotazovat data trasování generující aplikace AI z Application Insights, aby se používala pro průběžné online hodnocení. Pokud k trasování generující aplikace AI použijete balíček Azure AI Tracing, můžete k zobrazení dat v Application Insights použít následující dotaz Kusto:
Důležité
Dotaz KQL používaný službou online vyhodnocení musí vypíše následující sloupce: operation_Id
, operation_ParentId
a gen_ai_response_id
. Každý vyhodnocovací objekt má navíc vlastní požadavky na vstupní data. Dotaz KQL musí vypíše tyto sloupce, které se použijí jako vstupy do samotných vyhodnocovačů. Seznampožadavkůch
let gen_ai_spans = (
dependencies
| where isnotnull(customDimensions["gen_ai.system"])
| extend response_id = tostring(customDimensions["gen_ai.response.id"])
| project id, operation_Id, operation_ParentId, timestamp, response_id
);
let gen_ai_events = (
traces
| where message in ("gen_ai.choice", "gen_ai.user.message", "gen_ai.system.message")
or tostring(customDimensions["event.name"]) in ("gen_ai.choice", "gen_ai.user.message", "gen_ai.system.message")
| project
id = operation_ParentId,
operation_Id,
operation_ParentId,
user_input = iff(
message == "gen_ai.user.message" or tostring(customDimensions["event.name"]) == "gen_ai.user.message",
parse_json(iff(message == "gen_ai.user.message", tostring(customDimensions["gen_ai.event.content"]), message)).content,
""
),
system = iff(
message == "gen_ai.system.message" or tostring(customDimensions["event.name"]) == "gen_ai.system.message",
parse_json(iff(message == "gen_ai.system.message", tostring(customDimensions["gen_ai.event.content"]), message)).content,
""
),
llm_response = iff(
message == "gen_ai.choice",
parse_json(tostring(parse_json(tostring(customDimensions["gen_ai.event.content"])).message)).content,
iff(tostring(customDimensions["event.name"]) == "gen_ai.choice", parse_json(parse_json(message).message).content, "")
)
| summarize
operation_ParentId = any(operation_ParentId),
Input = maxif(user_input, user_input != ""),
System = maxif(system, system != ""),
Output = maxif(llm_response, llm_response != "")
by operation_Id, id
);
gen_ai_spans
| join kind=inner (gen_ai_events) on id, operation_Id
| project Input, System, Output, operation_Id, operation_ParentId, gen_ai_response_id = response_id
Volitelně můžete použít ukázkový operátor nebo operátor vzít v dotazu Kusto tak, aby vracel pouze podmnožinu trasování. Vzhledem k tomu, že hodnocení s asistencí AI můžou být nákladná ve velkém, může vám tento přístup pomoct řídit náklady pouze vyhodnocením náhodného vzorku (nebo n
trasování) dat.
Nastavení online vyhodnocení pomocí sady Azure AI Project SDK
Naplánovanou úlohu online vyhodnocení můžete odeslat pomocí sady Azure AI Project SDK prostřednictvím rozhraní Python API. V následujícím skriptu se dozvíte, jak nastavit online hodnocení s hodnocením výkonu a kvality (asistované umělé inteligence). Pokud chcete zobrazit úplný seznam podporovaných vyhodnocovačů, přečtěte si téma Vyhodnocení pomocí sady Azure AI Evaluation SDK. Pokud chcete zjistit, jak používat vlastní vyhodnocovače, podívejte se na vlastní vyhodnocovače.
Začněte importem požadovaných balíčků a konfigurací požadovaných proměnných:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import (
ApplicationInsightsConfiguration,
EvaluatorConfiguration,
EvaluationSchedule,
RecurrenceTrigger,
)
from azure.ai.evaluation import CoherenceEvaluator
# This sample includes the setup for an online evaluation schedule using the Azure AI Project SDK and Azure AI Evaluation SDK
# The schedule is configured to run daily over the collected trace data while running two evaluators: CoherenceEvaluator and RelevanceEvaluator
# This sample can be modified to fit your application's requirements
# Name of your online evaluation schedule
SAMPLE_NAME = "online_eval_name"
# Name of your generative AI application (will be available in trace data in Application Insights)
SERVICE_NAME = "service_name"
# Connection string to your Azure AI Foundry project
# Currently, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
PROJECT_CONNECTION_STRING = "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Your Application Insights resource ID
APPLICATION_INSIGHTS_RESOURCE_ID = "appinsights_resource_id"
# Kusto Query Language (KQL) query to query data from Application Insights resource
# This query is compatible with data logged by the Azure AI Inferencing Tracing SDK (linked in documentation)
# You can modify it depending on your data schema
# The KQL query must output these required columns: operation_ID, operation_ParentID, and gen_ai_response_id
# You can choose which other columns to output as required by the evaluators you are using
KUSTO_QUERY = "let gen_ai_spans=(dependencies | where isnotnull(customDimensions[\"gen_ai.system\"]) | extend response_id = tostring(customDimensions[\"gen_ai.response.id\"]) | project id, operation_Id, operation_ParentId, timestamp, response_id); let gen_ai_events=(traces | where message in (\"gen_ai.choice\", \"gen_ai.user.message\", \"gen_ai.system.message\") or tostring(customDimensions[\"event.name\"]) in (\"gen_ai.choice\", \"gen_ai.user.message\", \"gen_ai.system.message\") | project id= operation_ParentId, operation_Id, operation_ParentId, user_input = iff(message == \"gen_ai.user.message\" or tostring(customDimensions[\"event.name\"]) == \"gen_ai.user.message\", parse_json(iff(message == \"gen_ai.user.message\", tostring(customDimensions[\"gen_ai.event.content\"]), message)).content, \"\"), system = iff(message == \"gen_ai.system.message\" or tostring(customDimensions[\"event.name\"]) == \"gen_ai.system.message\", parse_json(iff(message == \"gen_ai.system.message\", tostring(customDimensions[\"gen_ai.event.content\"]), message)).content, \"\"), llm_response = iff(message == \"gen_ai.choice\", parse_json(tostring(parse_json(tostring(customDimensions[\"gen_ai.event.content\"])).message)).content, iff(tostring(customDimensions[\"event.name\"]) == \"gen_ai.choice\", parse_json(parse_json(message).message).content, \"\")) | summarize operation_ParentId = any(operation_ParentId), Input = maxif(user_input, user_input != \"\"), System = maxif(system, system != \"\"), Output = maxif(llm_response, llm_response != \"\") by operation_Id, id); gen_ai_spans | join kind=inner (gen_ai_events) on id, operation_Id | project Input, System, Output, operation_Id, operation_ParentId, gen_ai_response_id = response_id"
Dále definujte klienta a nasazení Azure OpenAI GPT (například GPT-4
), které se použije ke spuštění plánu online vyhodnocení. Připojte se také k prostředku Application Insights:
# Connect to your Azure AI Foundry Project
project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=PROJECT_CONNECTION_STRING
)
# Connect to your Application Insights resource
app_insights_config = ApplicationInsightsConfiguration(
resource_id=APPLICATION_INSIGHTS_RESOURCE_ID,
query=KUSTO_QUERY,
service_name=SERVICE_NAME
)
# Connect to your AOAI resource, you must use an AOAI GPT model
deployment_name = "gpt-4"
api_version = "2024-08-01-preview"
# This is your AOAI connection name, which can be found in your AI Foundry project under the 'Models + Endpoints' tab
default_connection = project_client.connections._get_connection(
"aoai_connection_name"
)
model_config = {
"azure_deployment": deployment_name,
"api_version": api_version,
"type": "azure_openai",
"azure_endpoint": default_connection.properties["target"]
}
Dále nakonfigurujte vyhodnocovače, které chcete použít:
# RelevanceEvaluator
# id for each evaluator can be found in your AI Foundry registry - please see documentation for more information
# init_params is the configuration for the model to use to perform the evaluation
# data_mapping is used to map the output columns of your query to the names required by the evaluator
relevance_evaluator_config = EvaluatorConfiguration(
id="azureml://registries/azureml-staging/models/Relevance-Evaluator/versions/4",
init_params={"model_config": model_config},
data_mapping={"query": "${data.Input}", "response": "${data.Output}"}
)
# CoherenceEvaluator
coherence_evaluator_config = EvaluatorConfiguration(
id=CoherenceEvaluator.id,
init_params={"model_config": model_config},
data_mapping={"query": "${data.Input}", "response": "${data.Output}"}
)
Nakonec definujte opakování a vytvořte plán:
Poznámka: V krocích požadavků jste vytvořili spravovanou identitu přiřazenou uživatelem, abyste ověřili plán online vyhodnocení pro prostředek Application Insights. properties
EvaluationSchedule
Parametr AzureMSIClientId
třídy je clientId
tato identita.
# Frequency to run the schedule
recurrence_trigger = RecurrenceTrigger(frequency="day", interval=1)
# Dictionary of evaluators
evaluators = {
"relevance": relevance_evaluator_config,
"coherence" : coherence_evaluator_config
}
name = SAMPLE_NAME
description = f"{SAMPLE_NAME} description"
# AzureMSIClientId is the clientID of the User-assigned managed identity created during set-up - see documentation for how to find it
properties = {"AzureMSIClientId": "your_client_id"}
# Configure the online evaluation schedule
evaluation_schedule = EvaluationSchedule(
data=app_insights_config,
evaluators=evaluators,
trigger=recurrence_trigger,
description=description,
properties=properties)
# Create the online evaluation schedule
created_evaluation_schedule = project_client.evaluations.create_or_replace_schedule(name, evaluation_schedule)
print(f"Successfully submitted the online evaluation schedule creation request - {created_evaluation_schedule.name}, currently in {created_evaluation_schedule.provisioning_state} state.")
Provádění operací podle plánu online vyhodnocení
Plány online vyhodnocení můžete získat, vypsat a zakázat přidáním následujícího kódu do konfiguračního skriptu pro online vyhodnocení:
Upozornění: Počkejte prosím malou dobu (přibližně 30 sekund) mezi vytvořením plánu online vyhodnocení a spuštěním get_schedule()
rozhraní API.
Získejte plán online vyhodnocení:
name = "<my-online-evaluation-name>"
get_evaluation_schedule = project_client.evaluations.get_schedule(name)
Zobrazit seznam všech plánů online vyhodnocení:
count = 0
for evaluation_schedule in project_client.evaluations.list_schedule():
count += 1
print(f"{count}. {evaluation_schedule.name} "
f"[IsEnabled: {evaluation_schedule.is_enabled}]")
print(f"Total evaluation schedules: {count}")
Zakázat (obnovitelné odstranění) plán online vyhodnocení:
name = "<my-online-evaluation-name>"
project_client.evaluations.disable_schedule(name)
Monitorování aplikace generující umělé inteligence
V této části se dozvíte, jak se Azure AI integruje se službou Azure Monitor Application Insights, abyste získali předem připravené zobrazení řídicího panelu, které je přizpůsobené přehledům týkajícím se vaší aplikace generující umělé inteligence, abyste měli přehled o nejnovějším stavu vaší aplikace.
Přehledy pro generující aplikaci AI
Pokud jste to nenastavili, tady je několik rychlých kroků:
- Přejděte ke svému projektu v Azure AI Foundry.
- Na levé straně vyberte stránku Trasování.
- Připojte prostředek Application Insights k projektu.
Pokud jste už na portálu Azure AI Foundry nastavili trasování, stačí vybrat odkaz na řídicí panel aplikace Insights for Generative AI.
Jakmile budete mít streamovaná data do prostředku Application Insights, automaticky se zobrazí na tomto přizpůsobeném řídicím panelu.
Toto zobrazení je skvělým místem, kde můžete začít s vašimi potřebami monitorování.
- Můžete zobrazit spotřebu tokenů v průběhu času, abyste pochopili, jestli potřebujete zvýšit limity využití nebo provést další analýzu nákladů.
- Metriky vyhodnocení můžete zobrazit jako trendové čáry, abyste porozuměli kvalitě aplikace každý den.
- Můžete ladit, když dojde k výjimkám, a přejít k podrobnostem trasování pomocí zobrazení podrobností o komplexní transakci služby Azure Monitor a zjistit, co se nepovedlo.
Jedná se o sešit Azure, který dotazuje data uložená v prostředku Application Insights. Tento sešit si můžete přizpůsobit a přizpůsobit ho tak, aby vyhovoval potřebám vaší firmy. Další informace najdete v tématu Úpravy azure Workbooks.
To vám umožní přidat další vlastní vyhodnocovače, které jste mohli protokolovat nebo jiný text markdownu ke sdílení souhrnů a použití pro účely vytváření sestav.
Tento sešit můžete také sdílet se svým týmem, aby měli přehled o nejnovějších informacích.