Agent-Evaluation¶
Diese Seite beschreibt, wie die AI Agents vor einem Release getestet werden, was abgedeckt ist und was nicht. Sie richtet sich an das Plattform-Team und an alle, die Agent-Anweisungen, Skills oder Tools ändern. Die Evaluation ist eine Entwicklungsaktivität der Code-Basis. Sie läuft nicht in einer Kundenumgebung.
Ansatz¶
Die Suiten verwenden Promptfoo mit einem simulierten Benutzer. Ein Sprachmodell spielt einen Entwickler, der den Agent um eine Änderung bittet. Der getestete Agent ist der Produktions-Agent: Er wird aus derselben Agent-Konfiguration (Anweisungen, Modell, Temperatur, Tools) gebaut wie in Produktion und führt dieselbe In-Process-Agent-Schleife aus. Eine Änderung an einer Anweisungsdatei wird daher ohne separate Kopie getestet.
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 | Details |
|---|---|
| Simulierter Benutzer | Ein Multi-Turn-Provider mit maximal 15 Turns. Der simulierte Benutzer ist ein Chat-Modell, das in Azure OpenAI deployt ist. |
| Getesteter Agent | Wird mit der Produktions-Agent-Factory aus agent_config/agents/<name> aufgelöst. Optionale Overrides erlauben einen Vergleichslauf mit einer anderen Anweisungsdatei, einem anderen Modell oder einer anderen Temperatur. |
| Tools | Der Agent ruft die MCP-Tools des Portals in einem lokal laufenden Backend auf |
| Konversationsstatus | Ein In-Memory-Nachrichtenverlauf für eine Episode. In Foundry wird nichts erstellt oder gelöscht. |
| Primäre Bestehensbedingung | Die Antwort enthält eine gültige Pull-Request-URL |
Suiten¶
| Suite | Fälle | Zweck |
|---|---|---|
| Spoke create | 22 | Der Agent erstellt einen Pull Request für eine spoke-Konfiguration. Gruppen: einen bestehenden spoke kopieren (8 Fälle), kopieren mit Schema-Beschreibungen (8 Fälle), einen neuen spoke erstellen (1 Fall), blockierte Anfragen, die nicht zu einem Pull Request führen dürfen (5 Fälle). |
| Spoke QA | 4 | Frage-und-Antwort-Fälle, bewertet mit einer Sprachmodell-Rubrik |
Die QA-Fälle prüfen das Wissen über die spoke-Dokumentation (Ressourcen, die ein spoke-Deployment erzeugt, der Workflow für neue spokes) und zwei Agent-Regeln (Regeln für Private Link und Network Security Groups sowie das Validierungs-Gate für Pull Requests). Eine weitere create-Suite legt kundenspezifische Regeln für Dateinamen und ein zusätzliches Schema über die Standardkonfiguration, um die optionalen Einstellungen fileNameRules und additionalSchema zu testen. Sie ist kundenspezifisch und hier nicht beschrieben.
Der Integration-Agent hat in der Quelle keine Evaluationssuite.
Assertions¶
Neben der Prüfung des Pull Requests verwenden die Suiten eigene Assertions:
| Assertion | Prüft |
|---|---|
| Tool sequence | Der Agent hat die erwarteten Tools in der erwarteten Reihenfolge aufgerufen |
| Tool not executed | Ein verbotenes Tool, zum Beispiel ein Pull-Request-Tool in einem blockierten Fall, wurde nicht aufgerufen |
| Argument match | Ein Tool wurde mit den erwarteten Argumenten aufgerufen |
| Input diff | Die vom Agent eingereichte Konfiguration unterscheidet sich wie erwartet vom Quell-spoke |
| Spoke JSON validation status | Das eingereichte JSON ist gegen das Schema gültig |
Nach jedem Test der create-Suite läuft ein Cleanup-Hook. Er findet die Pull-Request-URL in der Ausgabe und bricht den Pull Request ab, sodass wiederholte Läufe das Test-Repository nicht füllen.
Die Suiten ausführen¶
Die Suiten laufen auf einem Entwicklerrechner gegen ein lokal laufendes Portal (gestartet mit dem lokalen Application Host). Der Befehl öffnet einen Browser, damit du dich anmeldest und der Lauf ein Token erhält. Das Token wird nicht auf die Platte geschrieben.
# 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 werden aus Umgebungsvariablen gelesen. Committe keine Tokens, Endpoints oder subscription-IDs.
Was nicht abgedeckt ist¶
| Lücke | Details |
|---|---|
| Kein pipeline-Gate | Kein Workflow führt die Evaluation aus. Eine Regression in einer Anweisungsdatei wird nur gefunden, wenn jemand die Suiten ausführt. |
| Keine Live-Evaluation | Produktionskonversationen werden pro Benutzer gespeichert und Telemetrie geht an Azure Monitor, aber im Code gibt es keine pipeline für Sampling, Scoring oder Feedback |
| Ein Agent | Nur der Spoke-Agent hat Suiten |
Status der Entscheidungsprotokolle¶
Drei Entscheidungsprotokolle beschreiben die vorgesehene Evaluationsstrategie: getrenntes Evaluations-Tooling, Promptfoo für die Entwicklungszeit und Foundry Evaluation für Live-Traffic. Alle drei sind noch proposed und wurden für den Foundry Agent Service geschrieben. Die akzeptierte Entscheidung, die Agent-Schleife im Portal zu betreiben (Entscheidungen), hat diese Laufzeit ersetzt. Die Promptfoo-Suiten entsprechen dem Vorschlag für die Evaluation zur Entwicklungszeit. Der Teil zur Live-Evaluation ist nicht umgesetzt.
Muss verifiziert werden
Kläre mit den Maintainern, ob der Vorschlag zur Live-Evaluation noch geplant ist und ob ein Evaluations-Gate in der pipeline vorgesehen ist.