Agent-evaluatie¶
Deze pagina beschrijft hoe de AI-agents vóór een release worden getest, wat wordt gedekt en wat niet. Ze is voor het platformteam en voor iedereen die agentinstructies, skills of tools wijzigt. De evaluatie is een activiteit tijdens de ontwikkeling van de codebase. Ze draait niet in een klantomgeving.
Aanpak¶
De suites gebruiken Promptfoo met een gesimuleerde gebruiker. Een taalmodel speelt een developer die de agent om een wijziging vraagt. De geteste agent is de productieagent: hij wordt gebouwd uit dezelfde agentconfiguratie (instructies, model, temperatuur, tools) als in productie en draait dezelfde in-process agent loop. Een wijziging in een instructiebestand wordt dus getest zonder aparte kopie.
flowchart LR
su[Simulated user<br/>model, max 15 turns] <--> ag[Agent under test<br/>production config and loop]
ag -->|tool calls| mcp[Portal MCP tools<br/>local backend]
mcp --> repo[Test repository<br/>pull requests]
ag --> as[Assertions]
as --> res[Pass or fail<br/>and Promptfoo viewer]
repo -.->|cleanup hook<br/>abandons created PRs| repo
| Element | Detail |
|---|---|
| Gesimuleerde gebruiker | Een multi-turn provider met maximaal 15 beurten. De gesimuleerde gebruiker is een chatmodel dat in Azure OpenAI is gedeployd. |
| Geteste agent | Opgelost met de productie-agentfactory uit agent_config/agents/<name>. Optionele overrides maken een vergelijkingsrun met een ander instructiebestand, model of temperatuur mogelijk. |
| Tools | De agent roept de MCP-tools van de portal aan op een lokaal draaiende backend |
| Gespreksstatus | Een in-memory berichtgeschiedenis voor één episode. Er wordt niets aangemaakt of verwijderd in Foundry. |
| Primaire slaagvoorwaarde | Het antwoord bevat een geldige pull request-URL |
Suites¶
| Suite | Cases | Doel |
|---|---|---|
| Spoke create | 22 | De agent maakt een pull request voor een spoke-configuratie. Groepen: een bestaande spoke kopiëren (8 cases), kopiëren met schemabeschrijvingen (8 cases), een nieuwe spoke maken (1 case), geblokkeerde verzoeken die niet tot een pull request mogen leiden (5 cases). |
| Spoke QA | 4 | Vraag-en-antwoordcases, beoordeeld met een rubric van een taalmodel |
De QA-cases toetsen kennis van de spoke-documentatie (resources die een spoke deployment oplevert, de workflow voor een nieuwe spoke) en twee agentregels (regels voor private link en network security groups, en de validatiepoort van de pull request). Een verdere create-suite legt klantspecifieke regels voor bestandsnamen en een extra schema over de standaardconfiguratie heen, om de optionele instellingen fileNameRules en additionalSchema te testen. Die is klantspecifiek en wordt hier niet beschreven.
De integration agent heeft in de bron geen evaluatiesuite.
Assertions¶
Naast de pull request-controle gebruiken de suites eigen assertions:
| Assertion | Controleert |
|---|---|
| Tool sequence | De agent riep de verwachte tools aan in de verwachte volgorde |
| Tool not executed | Een verboden tool, bijvoorbeeld een pull request-tool in een geblokkeerde case, is niet aangeroepen |
| Argument match | Een tool is aangeroepen met de verwachte argumenten |
| Input diff | De configuratie die de agent indiende, verschilt zoals verwacht van de bron-spoke |
| Spoke JSON validation status | De ingediende JSON is geldig volgens het schema |
Na elke test van de create-suite draait een cleanup hook. Die vindt de pull request-URL in de output en breekt de pull request af, zodat herhaalde runs de testrepository niet vullen.
De suites draaien¶
De suites draaien op de machine van een developer tegen een lokaal draaiende portal (gestart met de lokale applicatiehost). Het commando opent een browser zodat je je aanmeldt en de run een token verkrijgt; het token wordt niet naar schijf geschreven.
# from plugins/ai-agent-backend
yarn eval all --filter-metadata priority=smoke # smoke cases of both suites
yarn eval spoke-create --filter-pattern 'C01' # selected cases of the create suite
yarn eval spoke-qa # QA suite
yarn eval:view # open the Promptfoo viewer
Endpoints worden uit omgevingsvariabelen gelezen. Commit geen tokens, endpoints of subscription-ID's.
Wat niet wordt gedekt¶
| Gat | Detail |
|---|---|
| Geen pipelinepoort | Geen workflow draait de evaluatie. Een regressie in een instructiebestand wordt alleen gevonden als iemand de suites draait. |
| Geen live-evaluatie | Productiegesprekken worden per gebruiker opgeslagen en telemetrie gaat naar Azure Monitor, maar in de code bestaat geen pipeline voor sampling, scoring of feedback |
| Eén agent | Alleen de spoke agent heeft suites |
Status van de besluitrecords¶
Drie besluitrecords beschrijven de beoogde evaluatiestrategie: gesplitste evaluatietooling, Promptfoo voor de ontwikkeltijd en Foundry-evaluatie voor live verkeer. Alle drie zijn nog proposed en zijn geschreven voor de Foundry agent service. Het geaccepteerde besluit om de agent loop in de portal te draaien (Decisions) verving die runtime. De Promptfoo-suites komen overeen met het voorstel voor evaluatie tijdens de ontwikkeling. Het onderdeel live-evaluatie is niet geïmplementeerd.
Moet nog worden geverifieerd
Bevestig bij de maintainers of het voorstel voor live-evaluatie nog gepland is en of een evaluatiepoort in de pipeline de bedoeling is.