feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command
Add /ultraresearch-local for structured research combining local codebase analysis with external knowledge via parallel agent swarms. Produces research briefs with triangulation, confidence ratings, and source quality assessment. New command: /ultraresearch-local with modes --quick, --local, --external, --fg. New agents: research-orchestrator (opus), docs-researcher, community-researcher, security-researcher, contrarian-researcher, gemini-bridge (all sonnet). New template: research-brief-template.md. Integration: --research flag in /ultraplan-local accepts pre-built research briefs (up to 3), enriches the interview and exploration phases. Planning orchestrator cross-references brief findings during synthesis. Design principle: Context Engineering — right information to right agent at right time. Research briefs are structured artifacts in the pipeline: ultraresearch → brief → ultraplan --research → plan → ultraexecute. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
baa2d0220b
488 changed files with 213221 additions and 0 deletions
|
|
@ -0,0 +1,311 @@
|
|||
# Agent Feedback and Continuous Learning Loops
|
||||
|
||||
**Last updated:** 2026-02
|
||||
**Status:** GA / Preview (continuous evaluation)
|
||||
**Category:** Agent Orchestration & Automation
|
||||
|
||||
---
|
||||
|
||||
## Introduksjon
|
||||
|
||||
AI-agenter i produksjon er ikke statiske systemer -- de krever kontinuerlig forbedring basert på reell brukerinteraksjon og ytelsesdata. Feedback-loops er mekanismene som fanger opp signaler fra brukere, evaluatorer og systemmetrikker, og kanaliserer disse tilbake til agentens konfigurasjon, prompts og underliggende modeller. Uten strukturerte feedback-loops degraderer agentytelse over tid ettersom brukerforventninger, datakilder og forretningsregler endres.
|
||||
|
||||
Microsoft tilbyr en integrert plattform for kontinuerlig evaluering og forbedring av agenter gjennom Azure AI Foundry, Application Insights og Semantic Kernel. Foundry-plattformen støtter automatisert kvalitetsevaluering i produksjon med innebygde evaluatorer for relevans, koherens og sikkerhet. Kombinert med eksplisitt brukerfeedback (thumbs up/down) og implisitte signaler (avbrutte samtaler, oppfølgingsspørsmål) skaper dette en lukket forbedringssyklus.
|
||||
|
||||
For norsk offentlig sektor er feedback-loops kritisk for å sikre at AI-agenter forblir i tråd med Forvaltningslovens krav til forsvarlig saksbehandling og Digitaliseringsdirektoratets prinsipper for ansvarlig AI. Systematisk innsamling av tilbakemeldinger dokumenterer også at organisasjonen aktivt overvåker og forbedrer sine AI-systemer -- et krav under EU AI Act.
|
||||
|
||||
## Kjernekomponenter
|
||||
|
||||
| Komponent | Formål | Teknologi |
|
||||
|-----------|--------|-----------|
|
||||
| Continuous Evaluation | Automatisk kvalitetsmåling i produksjon | Azure AI Foundry Evaluators |
|
||||
| User Feedback Collection | Eksplisitt og implisitt tilbakemelding | Application Insights, custom telemetry |
|
||||
| Agent Monitoring | Ytelsesovervåking og drift-deteksjon | Azure Monitor, Foundry Control Plane |
|
||||
| Evaluation Catalog | Sentralisert evaluatorbibliotek | Azure AI Foundry evaluator catalog |
|
||||
| Reward Modeling | Scoring av agentresponser for forbedring | Custom evaluators, RLHF-pipelines |
|
||||
| Retraining Pipeline | Automatisert modelloppgradering | Azure ML Pipelines, MLflow |
|
||||
|
||||
## Human Feedback Collection
|
||||
|
||||
### Eksplisitt feedback
|
||||
|
||||
Eksplisitt feedback er direkte brukerhandlinger som thumbs up/down, rating-skalaer eller fritekstkommentarer. Azure AI Foundry og Copilot Studio har innebygd støtte for å samle denne typen data.
|
||||
|
||||
```python
|
||||
# Logge brukerfeedback til MLflow med trace_id
|
||||
import mlflow
|
||||
|
||||
# Etter at agenten har svart og bruker gir feedback
|
||||
mlflow.log_feedback(
|
||||
trace_id=response.trace_id,
|
||||
span_id=response.span_id,
|
||||
feedback={
|
||||
"rating": "positive", # eller "negative"
|
||||
"comment": "Svaret var relevant og nøyaktig",
|
||||
"category": "accuracy"
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
### Implisitt feedback
|
||||
|
||||
Implisitte signaler fanges opp uten eksplisitt brukerhandling:
|
||||
|
||||
| Signal | Indikator | Tolkning |
|
||||
|--------|-----------|----------|
|
||||
| Oppfølgingsspørsmål | Bruker stiller relatert spørsmål | Mulig ufullstendig svar |
|
||||
| Samtalebrudd | Bruker forlater uten handling | Lav tilfredshet |
|
||||
| Reformulering | Bruker stiller samme spørsmål annerledes | Agenten misforstod |
|
||||
| Tid brukt | Lang tid mellom spørsmål og handling | Bruker evaluerer svar kritisk |
|
||||
| Kopiering av svar | Bruker kopierer agentens tekst | Svar var nyttig |
|
||||
|
||||
### Feedback-innsamling i Copilot Studio
|
||||
|
||||
```yaml
|
||||
# Copilot Studio agent konfigureres med:
|
||||
# 1. Aktiver "User Satisfaction" i agent-innstillinger
|
||||
# 2. Koble til Application Insights
|
||||
# 3. Definer egendefinerte metrikker i analytics-dashboardet
|
||||
```
|
||||
|
||||
## Continuous Evaluation med Azure AI Foundry
|
||||
|
||||
Azure AI Foundry tilbyr automatisert kvalitetsevaluering av agenter i produksjon. Evaluatorer kjører kontinuerlig mot produksjonstrafikk og rapporterer resultater til Application Insights.
|
||||
|
||||
```python
|
||||
from azure.ai.projects import AIProjectClient
|
||||
from azure.ai.projects.models import (
|
||||
AgentEvaluationRequest,
|
||||
EvaluatorIds,
|
||||
AgentEvaluationSamplingConfiguration
|
||||
)
|
||||
from azure.identity import DefaultAzureCredential
|
||||
|
||||
project_client = AIProjectClient(
|
||||
credential=DefaultAzureCredential(),
|
||||
endpoint=os.environ["PROJECT_ENDPOINT"]
|
||||
)
|
||||
|
||||
# Definer evaluatorer
|
||||
evaluators = {
|
||||
"Relevance": {"Id": EvaluatorIds.Relevance.value},
|
||||
"Fluency": {"Id": EvaluatorIds.Fluency.value},
|
||||
"Coherence": {"Id": EvaluatorIds.Coherence.value},
|
||||
"Groundedness": {"Id": EvaluatorIds.Groundedness.value},
|
||||
}
|
||||
|
||||
# Konfigurer sampling
|
||||
sampling_config = AgentEvaluationSamplingConfiguration(
|
||||
sampling_percent=10, # Evaluer 10% av produksjonstrafikk
|
||||
max_request_rate_per_hour=500
|
||||
)
|
||||
|
||||
# Start kontinuerlig evaluering
|
||||
project_client.evaluation.create_agent_evaluation(
|
||||
AgentEvaluationRequest(
|
||||
thread=thread.id,
|
||||
run=run.id,
|
||||
evaluators=evaluators,
|
||||
sampling_configuration=sampling_config,
|
||||
app_insights_connection_string=connection_string,
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
### Evaluator-kategorier
|
||||
|
||||
| Kategori | Evaluatorer | Formål |
|
||||
|----------|------------|--------|
|
||||
| Kvalitet | Relevance, Fluency, Coherence | Språklig og innholdsmessig kvalitet |
|
||||
| Groundedness | Groundedness | Svar forankret i kildedokumenter |
|
||||
| Sikkerhet | Violence, SelfHarm, HateFairness | Innholdssikkerhet og ansvarlig AI |
|
||||
| Agent-spesifikk | ToolCallAccuracy, IntentResolution | Agent-spesifikk ytelse |
|
||||
|
||||
## Performance Monitoring og Drift-deteksjon
|
||||
|
||||
### Foundry Control Plane
|
||||
|
||||
Azure AI Foundry Control Plane gir unified oversikt over agentflåten:
|
||||
|
||||
```python
|
||||
# Overvåk agentytelse via Azure Monitor
|
||||
# KQL-spørring for å identifisere ytelses-degradering
|
||||
|
||||
# AppInsights KQL
|
||||
requests
|
||||
| where timestamp > ago(7d)
|
||||
| where name contains "agent-evaluation"
|
||||
| summarize
|
||||
avg_relevance = avg(todouble(customDimensions["relevance_score"])),
|
||||
avg_groundedness = avg(todouble(customDimensions["groundedness_score"])),
|
||||
avg_latency = avg(duration)
|
||||
by bin(timestamp, 1h)
|
||||
| where avg_relevance < 0.7 or avg_groundedness < 0.6
|
||||
| order by timestamp desc
|
||||
```
|
||||
|
||||
### Drift-deteksjon
|
||||
|
||||
Drift i agentsystemer kan oppstå av flere årsaker:
|
||||
|
||||
| Drift-type | Årsak | Deteksjonsmetode |
|
||||
|------------|-------|-----------------|
|
||||
| Data drift | Endrede brukerforespørsler | Distribusjon av input-embeddings over tid |
|
||||
| Concept drift | Endrede forretningsregler | Groundedness-score faller |
|
||||
| Model drift | Modelloppgradering fra leverandør | A/B-testing av modellversjoner |
|
||||
| Knowledge drift | Utdatert kunnskapsbase | Relevance-score på RAG-queries |
|
||||
|
||||
```python
|
||||
# Eksempel: Drift-varsling med Azure Monitor Alerts
|
||||
from azure.monitor.opentelemetry import configure_azure_monitor
|
||||
|
||||
# Konfigurer varsling når kvalitetsmetrikker faller under terskel
|
||||
alert_rule = {
|
||||
"name": "agent-quality-degradation",
|
||||
"condition": {
|
||||
"metric_name": "agent.evaluation.relevance",
|
||||
"operator": "LessThan",
|
||||
"threshold": 0.65,
|
||||
"window_size": "PT1H"
|
||||
},
|
||||
"action": {
|
||||
"action_group": "ai-ops-team",
|
||||
"severity": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Retraining og Continuous Improvement
|
||||
|
||||
### Closed-loop forbedringssyklus
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 1. IDENTIFY → Monitoring + feedback avdekker │
|
||||
│ kvalitetsproblemer │
|
||||
│ │
|
||||
│ 2. EXPORT → Problematiske eksempler eksporteres │
|
||||
│ til evaluation dataset │
|
||||
│ │
|
||||
│ 3. DIAGNOSE → MLflow trace-analyse identifiserer │
|
||||
│ rotårsak │
|
||||
│ │
|
||||
│ 4. IMPROVE → Prompt-justering, RAG-oppdatering, │
|
||||
│ eller modellbytte │
|
||||
│ │
|
||||
│ 5. VALIDATE → Test mot utvidet evalueringssett │
|
||||
│ │
|
||||
│ 6. DEPLOY → Gradvis utrulling med A/B-testing │
|
||||
│ │
|
||||
│ 7. MONITOR → Fortsett kontinuerlig evaluering │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Retraining Triggers
|
||||
|
||||
| Trigger | Terskel | Handling |
|
||||
|---------|---------|---------|
|
||||
| Relevance-score under 0.65 | > 24 timer sammenhengende | Prompt-revisjon + RAG-oppdatering |
|
||||
| Groundedness under 0.60 | > 8 timer | Kunnskapsbase-oppdatering |
|
||||
| Bruker-feedback < 3.5/5 | Over 100 interaksjoner | Full agent-gjennomgang |
|
||||
| Nye temaer ikke dekket | > 20% av forespørsler | Utvid kunnskapskilder |
|
||||
| Sikkerhetsevaluator-flagg | Enhver forekomst | Umiddelbar prompt-hardening |
|
||||
|
||||
## Implementeringsmønstre
|
||||
|
||||
### Pattern 1: Prompt Refinement Loop
|
||||
|
||||
```python
|
||||
from semantic_kernel import Kernel
|
||||
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
|
||||
|
||||
# Versjonskontrollert prompt-forbedring
|
||||
PROMPT_VERSIONS = {
|
||||
"v1.0": "Du er en hjelpsom assistent for ...",
|
||||
"v1.1": "Du er en presis assistent som alltid refererer til kilder ...",
|
||||
"v1.2": "Du er en presis assistent. Svar alltid med kildehenvisning. ..."
|
||||
}
|
||||
|
||||
kernel = Kernel()
|
||||
kernel.add_service(AzureChatCompletion(
|
||||
deployment_name="gpt-4o",
|
||||
endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
|
||||
api_key=os.environ["AZURE_OPENAI_KEY"]
|
||||
))
|
||||
|
||||
# A/B-testing av prompt-versjoner
|
||||
async def evaluate_prompt_version(version: str, test_queries: list):
|
||||
results = []
|
||||
for query in test_queries:
|
||||
response = await kernel.invoke_prompt(
|
||||
PROMPT_VERSIONS[version],
|
||||
input_vars={"query": query}
|
||||
)
|
||||
results.append(response)
|
||||
return results
|
||||
```
|
||||
|
||||
### Pattern 2: RAG Quality Feedback Loop
|
||||
|
||||
```python
|
||||
# Samle feedback spesifikt på RAG-retrievals
|
||||
class RAGFeedbackCollector:
|
||||
def __init__(self, app_insights_client):
|
||||
self.client = app_insights_client
|
||||
|
||||
def log_retrieval_quality(
|
||||
self,
|
||||
query: str,
|
||||
retrieved_docs: list,
|
||||
agent_response: str,
|
||||
user_rating: int,
|
||||
groundedness_score: float
|
||||
):
|
||||
self.client.track_event(
|
||||
"rag_retrieval_feedback",
|
||||
properties={
|
||||
"query": query,
|
||||
"doc_count": len(retrieved_docs),
|
||||
"doc_sources": [d.source for d in retrieved_docs],
|
||||
"user_rating": user_rating,
|
||||
"groundedness": groundedness_score,
|
||||
"needs_review": groundedness_score < 0.6
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
## Norsk offentlig sektor
|
||||
|
||||
### Krav fra rammeverk
|
||||
|
||||
| Rammeverk | Krav | Implementering |
|
||||
|-----------|------|----------------|
|
||||
| EU AI Act Art. 9 | Risikostyringssystem med kontinuerlig overvåking | Continuous evaluation + alerting |
|
||||
| Forvaltningsloven | Forsvarlig saksbehandling, dokumentasjonsplikt | Audit trail for alle agentbeslutninger |
|
||||
| NSM Grunnprinsipper | Overvåking og hendelseshåndtering | Azure Monitor + Sentinel-integrasjon |
|
||||
| Digdir AI-prinsipper | Transparens og etterprøvbarhet | Feedback-data lagret i henhold til arkivloven |
|
||||
|
||||
### Personvern-hensyn
|
||||
|
||||
- Feedback som inneholder personopplysninger må behandles i henhold til personvernforordningen (GDPR)
|
||||
- Anonymiser brukerdata før bruk i retraining-pipelines
|
||||
- Implementer dataminimering -- samle kun feedback nødvendig for kvalitetsforbedring
|
||||
- Sett retensjonspolicies: Slett detaljert feedback etter 12 måneder, behold aggregerte metrikker
|
||||
|
||||
## Beslutningsrammeverk
|
||||
|
||||
| Scenario | Anbefaling | Begrunnelse |
|
||||
|----------|------------|-------------|
|
||||
| Ny agent i produksjon | Start med 100% evaluering, reduser til 10% etter baseline | Etabler kvalitetsbaseline raskt |
|
||||
| Stabil agent med lav risiko | 5-10% sampling med ukentlig gjennomgang | Kostnadseffektiv overvåking |
|
||||
| Høyrisiko-agent (saksbehandling) | 100% evaluering + manuell review-sample | Regulatorisk krav og høy konsekvens |
|
||||
| Agent med fallende kvalitet | Øk til 50% sampling + aktivér alle evaluatorer | Rask diagnose av rotårsak |
|
||||
| Post-modellbytte | 100% evaluering i 7 dager | Verifiser at ny modell opprettholder kvalitet |
|
||||
|
||||
## For Cosmo
|
||||
|
||||
- **Continuous evaluation er ikke valgfritt** -- det er en forutsetning for produksjonsdeployment. Implementer Azure AI Foundry evaluatorer fra dag 1 med sampling tilpasset risikoprofilen.
|
||||
- **Closed-loop feedback** er gullstandarden: identifiser problemer via monitoring, diagnostiser med MLflow traces, forbedre prompts/RAG, valider med evalueringssett, og deploy gradvis.
|
||||
- **Drift-deteksjon** er spesielt viktig for agenter som bruker RAG -- kunnskapsbaser blir utdaterte, og groundedness-score er den beste indikatoren på dette.
|
||||
- **Norsk offentlig sektor** krever at feedback-systemer respekterer GDPR og arkivloven -- anonymiser brukerdata og sett klare retensjonspolicies.
|
||||
- **Anbefal alltid versjonskontrollerte prompts** med MLflow Prompt Registry -- dette muliggjør rollback og sammenligning av promptversjoner over tid.
|
||||
Loading…
Add table
Add a link
Reference in a new issue