Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt
Objekt som har markerats som förhandsversioner i den här artikeln är för närvarande i förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och Microsoft rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller har begränsade funktioner. Mer information finns i Supplemental Terms of Use for Microsoft Azure Previews.
Den här GitHub-åtgärden möjliggör offlineutvärdering av Microsoft Foundry Agents i dina CI/CD-pipelines. Det effektiviserar offlineutvärderingsprocessen, så att du kan identifiera potentiella problem och göra förbättringar innan du släpper en uppdatering till produktion.
Om du vill använda den här åtgärden anger du en datauppsättning med testfrågor och en lista över utvärderare. Den här åtgärden anropar dina agenter med frågorna, kör utvärderingarna och genererar en sammanfattningsrapport.
Funktioner
- Agent Evaluation: Automatisera förhandsproduktionsbedömning av Microsoft Foundry-agenter i ditt CI/CD-arbetsflöde.
- Utvärderare: Använd utvärderare från Foundry-utvärderingskatalogen.
- Statistisk analys: Utvärderingsresultat inkluderar konfidensintervall och test för statistisk signifikans för att avgöra om ändringar är meningsfulla och inte på grund av slumpmässig variation.
Utvärderarkategorier
- Agentutvärderingar: Utvärderare på process- och systemnivå för agentarbetsflöden.
- RAG-utvärderare: Utvärdera processer från slutpunkt till slutpunkt och hämtning i RAG-system.
- Risk- och säkerhetsutvärderare: Bedömer risker och säkerhetsproblem i svar.
- Utvärderare för generell användning: Kvalitetsutvärdering, till exempel konsekvens och flyt.
- OpenAI-baserade granskare: Använd OpenAI-granskare inklusive strängkontroll, textlikhet och poäng/etikettmodell.
- Anpassade utvärderare: Definiera dina egna anpassade utvärderare med hjälp av Python kod eller LLM-as-a-judge-mönster.
Förutsättningar
- Ett projekt. Mer information finns i Skapa ett projekt.
- En Foundry-agent.
Tips
Det rekommenderade sättet att autentisera är att använda Microsoft Entra ID, som du kan använda för att säkert ansluta till dina Azure resurser. Du kan automatisera autentiseringsprocessen med hjälp av åtgärden Azure Login GitHub. Mer information finns i Azure inloggningsaktion med OpenID Connect.
Så här konfigurerar du AI-agentutvärderingar
Indata för AI-agentutvärderingar
Parametrar
| Namn | Krävs? | Beskrivning |
|---|---|---|
| azure-ai-project-endpoint | Ja | Slutpunkten för Microsoft Foundry-Project. Om du vill hitta det här värdet öppnar du projektet i Foundry-portalen och kopierar slutpunkten från sidan Översikt . |
| deployeringsnamn | Ja | Namnet på en Azure AI-modelldistribution som ska användas för utvärdering. Hitta befintliga distributioner under Modeller + slutpunkter i Foundry-portalen. |
| datasökväg | Ja | Sökväg till datafilen som innehåller utvärderarna och indatafrågor för utvärderingar. |
| agent-id:er | Ja | ID för en eller flera agenter som ska utvärderas i format agent-name:version (till exempel my-agent:1 eller my-agent:1,my-agent:2). Flera agenter är kommaavgränsade och jämförs med statistiska testresultat. |
| baslinje-agent-id | Nej | ID för baslinjeagenten som ska jämföras med vid utvärdering av flera agenter. Om det inte anges används den första agenten. |
Observera
Om du vill hitta ditt agent-ID och din version öppnar du projektet i Foundry-portalen, går till Agenter, väljer din agent och kopierar agent-ID:t från informationsfönstret. Versionen är distributionsversionsnumret (till exempel my-agent:1).
Datafil
Indatafilen ska vara en JSON-fil med följande struktur:
| Fältet | Typ | Krävs? | Beskrivning |
|---|---|---|---|
| Namn | Sträng | Ja | Namnet på utvärderingsdatauppsättningen. |
| Utvärderarna | string[] | Ja | Lista över namn på utvärderare som ska användas. Kolla in listan över tillgängliga utvärderare i projektets utvärderingskatalog i Foundry-portalen: Skapa > utvärderingsutvärderingskatalog>. |
| Data | object[] | Ja | Matris med indataobjekt med query och valfria utvärderarfält som ground_truth, context. Automatiskt mappad till utvärderare; använd data_mapping för att åsidosätta. |
| openai_graders | Objekt | Nej | Konfiguration för OpenAI-baserade utvärderare (label_model, score_model, string_check osv.). |
| utvärderingsparametrar | Objekt | Nej | Utvärderarspecifika initieringsparametrar (till exempel tröskelvärden, anpassade inställningar). |
| data_mapping | Objekt | Nej | Anpassade datafältmappningar (genereras automatiskt från data om de inte tillhandahålls). |
Grundläggande exempeldatafil
{
"name": "test-data",
"evaluators": [
"builtin.fluency",
"builtin.task_adherence",
"builtin.violence"
],
"data": [
{
"query": "Tell me about Tokyo disneyland"
},
{
"query": "How do I install Python?"
}
]
}
Ytterligare exempeldatafiler
| Filnamn | Beskrivning |
|---|---|
| dataset-tiny.json | Datauppsättning med ett litet antal testfrågor och utvärderare. |
| dataset.json | Datauppsättning med alla utvärderartyper som stöds och tillräckligt med frågor för beräkning av konfidensintervall och statistiskt test. |
| dataset-builtin-evaluators.json | Exempel på inbyggda Foundry-utvärderare (till exempel koherens, flyt, relevans, grundvärde, mått). |
| dataset-openai-graders.json | OpenAI-baserade bedömningsmodeller (etikettmodeller, poängmodeller, textlikhet, strängkontroller). |
| dataset-custom-evaluators.json | Exempel på anpassade utvärderare med utvärderarparametrar. |
| dataset-data-mapping.json | Exempel på datamappning som visar hur du åsidosätter automatiska fältmappningar med anpassade datakolumnnamn. |
Arbetsflöde för AI-agentutvärderingar
Om du vill använda åtgärden GitHub lägger du till åtgärden GitHub i dina CI/CD-arbetsflöden. Ange kriterierna för utlösning, till exempel vid commit, och de filvägar som utlöser dina automatiserade arbetsflöden.
Tips
Kör ingen utvärdering vid varje incheckning för att minimera kostnaderna.
Det här exemplet visar hur du kan köra AI Agent Evaluation när du jämför olika agenter med hjälp av agent-ID:n.
name: "AI Agent Evaluation"
on:
workflow_dispatch:
push:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
run-action:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Azure login using Federated Credentials
uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Run Evaluation
uses: microsoft/ai-agent-evals@v3-beta
with:
# Replace placeholders with values for your Foundry Project
azure-ai-project-endpoint: "<your-ai-project-endpoint>"
deployment-name: "<your-deployment-name>"
agent-ids: "<your-ai-agent-ids>"
data-path: ${{ github.workspace }}/path/to/your/data-file
Utdata för AI-agentutvärderingar
Utvärderingsresultat skickas till sammanfattningsavsnittet för varje AI-utvärdering GitHub såtgärd som körs under Actions i GitHub. Rapporten visar utvärderingspoäng för varje mått, konfidensintervall och – när du utvärderar flera agenter – en parvis statistisk jämförelse som anger om skillnaderna är meningsfulla eller inom slumpmässig variation.
Följande skärmbild visar en exempelrapport som jämför två agenter.
Använda azd-utvärderingstillägget som en kvalitetsgrind
Du kan använda utvärderingstillägget Azure Developer CLI (azd) för att köra en registrerad utvärdering och blockera en pull-begäran när dess passeringshastighet ligger under ett tröskelvärde. Det här arbetsflödet använder GitHub OpenID Connect (OIDC), så det lagrar ingen klienthemlighet.
Förbereda lagringsplatsen
Innan du konfigurerar arbetsflödet, kontrollera att du har följande:
- En Azure-prenumeration och ett Foundry-projekt som innehåller utvärderingsmålet.
- Administratörsåtkomst för att konfigurera GitHub Actions variabler, hemligheter, miljöer och skyddsregler.
- En incheckad utvärderingsdefinition och deterministisk utvärderingsdatauppsättning.
- Azure Developer CLI (
azd), version 1.33.0 eller senare, som krävs av utvärderingstillägget. Installationsinstruktioner finns i Installera Azure Developer CLI. - Tillägget
azure.ai.evaluations, som innehåller utvärderingskommandona. Foundry-paketetazd(microsoft.foundry) innehåller det inte.
azure.ai.evaluations Installera tillägget och kontrollera att utvärderingskommandona är tillgängliga. Kör samma kommandon i arbetsflödet i ett steg när du har installerat azd. Mer information om Foundry-tilläggen finns i Installera Foundry-tilläggen för Azure Developer CLI.
azd ext install azure.ai.evaluations
azd ai eval --help
Konfigurera GitHub OIDC och minsta behörighet
Skapa en Microsoft Entra-applikation eller användartilldelad hanterad identitet och lägg till en federerad identitetsuppgift för token som utfärdats till arbetsflödet. Använd dessa fasta värden:
| Fält för federerade autentiseringsuppgifter | Value |
|---|---|
| Issuer | https://token.actions.githubusercontent.com |
| Målgrupp | api://AzureADTokenExchange |
| Subject | Det exakta sub anspråket i GitHub OIDC-token |
En repository i en organisation eller ett företag som använder ett oföränderligt anpassat subject kan ha ett subject med den här formen:
repository_owner_id:<owner-id>:repository_id:<repo-id>:pull_request
Referens: OpenID Connect-referens
Kopiera inte ägar- eller repo-ID:t från ett annat repo. Begär en token i arbetsflödet, avkoda nyttolasten utan att skriva ut token och granska endast claimsen iss, aud och sub. Konfigurera den federerade autentiseringsuppgiften så att den matchar de faktiska anspråken exakt. GitHubs standardsubjekt för ett jobb som använder en miljö kan ha en annan form, och en organisation eller ett enterprise kan anpassa subjektanspråket.
Information om konfiguration av arbetsbelastningsidentitet för Microsoft Entra finns i Autentisera mot Azure från GitHub Actions med OpenID Connect.
Tilldela identiteten endast dessa roller:
- Foundry-användare på Foundry-projektnivå.
-
Deltagare på omfångsnivån för den dedikerade resursgruppen, om du stämmer av med
azd up.
Viktigt
Foundrys RBAC-roller har nyligen namnändrats. Foundry User, Foundry Owner, Foundry Account Owner och Foundry Project Manager hette tidigare Azure AI-användare, Azure AI-ägare, Azure AI-kontoägare och Azure AI Project Manager. Du kanske fortfarande ser de tidigare namnen på vissa platser medan namnbytet distribueras. Roll-ID:na och kärnbehörigheterna ändras inte av namnbytet.
Resursgruppsrollen krävs när du avstäms med azd up, eftersom azd up registrerar en Azure Resource Manager distribution när den etableras. Tilldela inte Contributor på prenumerationsnivå.
Skydda och konfigurera produktionsmiljön
Skapa en skyddad GitHub-miljö med namnet live-evaluation. Lägg till obligatoriska granskare och begränsa driftsättningsgrenar vid behov för din lagringsplats.
Mer information finns i Hantera miljöer för driftsättning.
Lagra arbetsflödesvärdena på följande sätt. Lägg inte till AZURE_CLIENT_SECRET; OIDC ersätter det.
| Namn | GitHub-lagring | Purpose |
|---|---|---|
AZURE_CLIENT_ID |
live-evaluation miljövariabelhemlighet |
Microsoft Entra applikation eller hanterat identitetsklient-ID. |
AZURE_TENANT_ID |
live-evaluation miljövariabelhemlighet |
Microsoft Entra-klientorganisations-ID. |
AZURE_SUBSCRIPTION_ID |
live-evaluation hemlighet för miljö |
Prenumeration som innehåller den dedikerade resursgruppen. |
AZURE_AI_PROJECT_ENDPOINT |
live-evaluation hemlighet för miljö |
Slutpunkt för Foundry-projektet som utvärderingstillägget använder. |
AZURE_LOCATION |
live-evaluation miljövariabel |
Azure-region för azd-miljön. |
AZURE_RESOURCE_GROUP |
live-evaluation miljövariabel |
Dedikerad resursgrupp som används för avstämningsmetadata. |
AZD_EVAL_LIVE_PR_GATE |
Repositoryvariabel | Ange det exakta värdet true för att aktivera livejobbet. |
Behåll AZD_CONFIG_DIR under RUNNER_TEMP, och autentisera icke-interaktivt:
azd auth login `
--client-id $env:AZURE_CLIENT_ID `
--tenant-id $env:AZURE_TENANT_ID `
--federated-credential-provider github `
--no-prompt
Referens: Azure CLI-referens för utvecklare
Jobbet måste ha behörighet för contents: read och id-token: write. Gate den så att endast pull-begäranden från samma repo eller en manuell utlösning från standardgrenen kan komma in i den skyddade miljön. Pull-begäranden från fork måste hoppa över jobbet och arbetsflödet får inte använda pull_request_target.
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
id-token: write
jobs:
live-evaluation:
if: >-
vars.AZD_EVAL_LIVE_PR_GATE == 'true' &&
((github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository) ||
(github.event_name == 'workflow_dispatch' &&
github.ref_name == github.event.repository.default_branch))
environment:
name: live-evaluation
referens: referens för kontexter i GitHub Actions
Fäst varje GitHub Action på en granskad fullständig commit-SHA.
Tillhandahåll en inert-infrastrukturmall när azd up kräver en
Om du avstämmer ett utvärderingsprojekt med azd up i stället för azd ai eval create, tilldelar projektet inga arbetsbelastningsresurser. Om azd up --no-prompt rapporterar att den inte kan hitta eller kompilera infra/main.bicep, lägger du till filen med den här inerta kapslade distributionen:
targetScope = 'resourceGroup'
resource reconciliationMarker 'Microsoft.Resources/deployments@2022-09-01' = {
name: 'azd-eval-hero-reconciliation'
properties: {
mode: 'Incremental'
template: {
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
contentVersion: '1.0.0.0'
resources: []
}
}
}
Den inre mallen innehåller inga workloadresurser. Markören skapar bara en distributionspost för Azure Resource Manager.
Mer information finns i Microsoft.Resources-distributioner.
Kör den exakta utvärderingen
Behåll livscykeln i den här ordningen:
- Stäm av den incheckade utvärderingsdefinitionen. Kör
azd up --no-promptnär projektet provisionerar infrastruktur. För ett projekt endast för utvärdering, körazd ai eval create ci-f1-quality --no-prompti stället. Det här kommandot registrerar de deklarerade datauppsättningarna, utvärderarna och utvärderingen utan att etablera infrastrukturen. - Kör
azd ai eval run start --eval ci-f1-quality --no-prompt --no-wait -o json. - Läs
.run_idfrån den insamlade JSON-filen utan att skriva värdet till loggen. - Kör
azd ai eval run show <run-id> --eval ci-f1-quality --wait --fail-on pass-rate=0.8 --no-prompt -o json. - Exportera den exakta körningen med
azd ai eval run output export <run-id> --eval ci-f1-quality --format json --output-file <runner-temp-file> --no-prompt. - Verifiera att statusen är slutförd, aggregeringsantal, exporterade rader och tillåtlistade bevis före uppladdning.
Samla in råa standardutdata och standardfel i RUNNER_TEMP. Lagra körnings-ID:t i minnet eller en tillfällig fil och använd det endast som positionsargument för kommandona show och output export.
Använd ett separat GitHub Actions steg för varje livscykelfas. När det lyckas skriver du bara ut en sanerad kommandorad och sammanfattning, till exempel slutförd avstämning, kör accepterad med sitt ID redigerat, slutlig status och antal, gate-utfall, exporterat radantal och förhandsvisning av tillåten evidens.
För --fail-on pass-rate=0.8 är godkännandegrad godkända testfall dividerat med totalt antal testfall. Misslyckade, felaktiga, överhoppade och andra icke godkända rader räknas mot körningen. En giltig slutförd testkörning under tröskelvärdet är en kvalitetsavvikelse.
azd CLI slår ihop ett tilläggs avslutskod, så kommandot avslutas med kod 1 för en kvalitetsöverträdelse och för ett driftfel. En kvalitetsöverträdelse skriver ut orsaken för gate och meddelandet evaluation quality gate not met. Autentisering, nätverk, felaktiga eller ofullständiga resultat och exportinkonsekvenser är driftsfel.
Ladda endast upp godkända underlag
Skapa ett nytt underlagsdokument från det verifierade resultatet i stället för att ladda upp råa CLI- eller tjänstutdata. Behåll endast aggregerad status, antal och tröskelvärde, plus dessa fält för varje granskat exempel: query, response, ground_truth, scoreoch passed.
{
"status": "completed",
"counts": {
"passed": 2,
"failed": 0,
"errored": 0
},
"threshold": 0.8,
"samples": [
{
"query": "<allowlisted query>",
"response": "<allowlisted response>",
"ground_truth": "<allowlisted ground truth>",
"score": 1.0,
"passed": true
}
]
}
Kontrollera att artefaktkatalogen endast innehåller den förväntade bevisfilen före uppladdningen. Skriv aldrig ut eller ladda upp JWT:er, endpoints, run-ID:n, autentiseringsuppgifter, userinfo, URL-frågesträngar eller råautentisering, CLI eller service payloads.
Behåll rådatafiler i tillfällig lagring, maskera insamlad feldiagnostik och ta bort filerna i en always()- eller finally-rensningssökväg.
Kontrollera gatewayen
Kör arbetsflödet manuellt från standardgrenen innan du aktiverar pull request-spärr. Bekräfta att:
- OIDC-autentisering lyckas utan en klienthemlighet.
- Avstämningssteget registrerar den incheckade bedömningen.
- Asynkron start godkänns utan att körnings-ID:t visas.
- Kommandot
showrapporterarcompletedoch tillämpar tröskelvärdet för godkännandegrad för0.8. - Exporten innehåller endast rader från den exakta körningen.
- Den uppladdade artefakten innehåller endast schemat för tillåtlistade bevis.
- Råa runner-temporära filer tas bort vid lyckat och misslyckat resultat.
Felsök grinden
| Symtom | Åtgärd |
|---|---|
| Microsoft Entra ID avvisar den federerade tokenen. | Jämför tokens faktiska iss, aud, och sub claims med de federerade autentiseringsuppgifterna. Anta inte ett miljösubjekt eller kopiera ett annat repos ID. |
azd up rapporterar en prenumeration, plats eller resursgrupp som saknas. |
Konfigurera AZURE_SUBSCRIPTION_ID, AZURE_LOCATIONoch AZURE_RESOURCE_GROUP i den skyddade miljön och skicka dem till jobbet. |
azd up kan inte hitta eller kompilera infra/main.bicep. |
Lägg till den inert-infrastrukturmall som beskrivs i den här artikeln eller stäm av ett utvärderingsprojekt med azd ai eval create i stället. |
azd ai eval är inte ett igenkänt kommando. |
Kör azd ext install azure.ai.evaluationsoch kör azd ext list sedan för att bekräfta att tillägget är installerat. Paketet microsoft.foundry innehåller inte detta. |
| Avstämning returnerar ett behörighetsfel. | Tilldela Foundry User endast för Foundry-projektet och, om du använder azd up, Contributor endast i den dedikerade resursgruppen. Vänta en stund så att nya rolltilldelningar hinner spridas. |
Kommandot avslutas med kod 1 och skriver ut evaluation quality gate not met. |
Behandla resultatet som en kvalitetsregression. Granska de rensade antalen och exempelbevis på tillåtlistan. |
Kommandot avslutas med kod 1 utan det meddelandet. |
Behandla resultatet som ett driftfel. Inspektera endast maskerad diagnostik för autentisering, nätverk, felaktigt resultat, ofullständig körning eller exportfel. |
| En pull request från en fork försöker begära en OIDC-token. | Kräv en head-kontroll i samma repo, behåll AZD_EVAL_LIVE_PR_GATE avstängt som standard och använd inte pull_request_target. |
Efter verifieringen tar du bort tillfälliga testresurser och rolltilldelningar som du inte längre behöver. Ta bort tillfälliga federerade autentiseringsuppgifter och behåll endast den dedikerade resursgruppen om kvalitetsgrinden fortsätter att använda den.