docs(architect): weekly KB update — 106 files refreshed (2026-04)
Updates across all 5 skills: ms-ai-advisor, ms-ai-engineering, ms-ai-governance, ms-ai-security, ms-ai-infrastructure. Key changes: - Language Services (Custom Text Classification, Text Analytics, QnA): retirement warning 2029-03-31, migration guides to Foundry/GPT-4o - Agentic Retrieval: 50M free reasoning tokens/month (Public Preview) - Computer Use: Claude Sonnet 4.5 (preview) + OpenAI CUA models - Agent Registry: Risks column (M365 E7), user-shared/org-published types - Declarative agents: schema v1.5 → v1.6, Store validation requirements - MLflow 3: 13 built-in LLM judges, production monitoring, Genie Code - AG-UI HITL: ApprovalRequiredAIFunction (C#) + @tool(approval_mode) (Python) - Entra ID Ignite 2025: Agent ID Admin/Developer RBAC roles, Conditional Access - Security Copilot: 400 SCU/month per 1000 M365 E5 licenses, auto-provisioned - Fast Transcription API: phrase lists, 14-language multi-lingual transcription - Azure Monitor Workbooks: Bicep support, RBAC specifics - Power Platform Copilot: data residency (Norway/Europe → EU DB, Bing → USA) - RAG security-rbac: 4-approach table (GA + 3 preview access control methods) - IaC MLOps: Well-Architected OE:05 principles, Bicep/Terraform patterns - Translator: image file batch translation Preview (JPEG/PNG/BMP/WebP) All 106 files: Last updated 2026-04 | Verified: MCP 2026-04 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0eb30fa853
commit
6645e93205
104 changed files with 1986 additions and 520 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Asynchronous Processing Patterns
|
||||
|
||||
**Last updated:** 2026-02
|
||||
**Last updated:** 2026-04 | Verified: MCP 2026-04
|
||||
**Status:** GA
|
||||
**Category:** Performance & Scalability
|
||||
|
||||
|
|
@ -428,6 +428,84 @@ public class AIRequestController : ControllerBase
|
|||
}
|
||||
```
|
||||
|
||||
|
||||
## Event-Driven Architecture Styles (oppdatert 2026-04)
|
||||
|
||||
Microsoft dokumenterer to primære topologier for event-drevet AI-prosessering:
|
||||
|
||||
### Broker-topologi vs. Mediator-topologi
|
||||
|
||||
| Aspekt | Broker-topologi | Mediator-topologi |
|
||||
|--------|----------------|-------------------|
|
||||
| Koordinering | Events publiseres direkte til broker | Central mediator koordinerer workflow |
|
||||
| Eksempel | Azure Event Hubs + Service Bus | Azure Durable Functions |
|
||||
| Kobling | Løs kobling mellom produsenter/konsumenter | Sterkere kobling via mediator |
|
||||
| Bruksscenario | Høyvolum streaming, uavhengige konsumenter | Komplekse AI-arbeidsflyter med avhengigheter |
|
||||
|
||||
### Azure Event Hubs vs. Azure Event Grid
|
||||
|
||||
| Service | Type | Bruksscenario |
|
||||
|---------|------|---------------|
|
||||
| **Azure Event Hubs** | Durable event stream (log) | AI-inferensresultater som skal prosesseres av mange konsumenter |
|
||||
| **Azure Event Grid** | Publish-subscribe, reaktiv | Trigger AI-jobb ved filnedlasting, blob-endring |
|
||||
| **Azure Service Bus** | Message queue, garantert levering | Jobb-kø for AI-prosessering med retry og dead-letter |
|
||||
|
||||
### Utfordringer i event-drevne AI-arkitekturer
|
||||
|
||||
```python
|
||||
# Utfordring 1: Garantert levering
|
||||
# Bruk Service Bus med peek-lock for å garantere at AI-jobb fullføres
|
||||
|
||||
from azure.servicebus import ServiceBusClient, ServiceBusMessage
|
||||
import json
|
||||
|
||||
def process_ai_job_safely(
|
||||
servicebus_conn: str,
|
||||
queue_name: str,
|
||||
ai_processor
|
||||
) -> None:
|
||||
"""Garantert levering via peek-lock mønster."""
|
||||
with ServiceBusClient.from_connection_string(servicebus_conn) as sb:
|
||||
with sb.get_queue_receiver(queue_name, max_wait_time=5) as receiver:
|
||||
for message in receiver:
|
||||
# Peek-lock: meldingen er reservert, ikke slettet
|
||||
try:
|
||||
payload = json.loads(str(message))
|
||||
result = ai_processor(payload)
|
||||
# Fullfør melding (slett fra kø) kun ved suksess
|
||||
receiver.complete_message(message)
|
||||
publish_result(result)
|
||||
except Exception as e:
|
||||
# Abandon: meldingen returneres til kø for ny levering
|
||||
receiver.abandon_message(message)
|
||||
|
||||
# Utfordring 2: Eventual consistency
|
||||
# AI-resultater publiseres asynkront — bruk correlation ID for sporing
|
||||
|
||||
def create_ai_job(correlation_id: str, payload: dict) -> dict:
|
||||
"""Returner job receipt umiddelbart, resultat kommer asynkront."""
|
||||
return {
|
||||
"correlation_id": correlation_id,
|
||||
"status": "accepted",
|
||||
"result_url": f"/api/results/{correlation_id}",
|
||||
"estimated_completion_seconds": 30
|
||||
}
|
||||
|
||||
# Utfordring 3: Ordregaranti
|
||||
# Event Hubs garanterer ordre innen én partisjon
|
||||
# Bruk samme partisjonsnøkkel for relaterte AI-forespørsler
|
||||
|
||||
def publish_ordered_event(
|
||||
producer,
|
||||
partition_key: str, # f.eks. dokument-ID
|
||||
event_data: dict
|
||||
) -> None:
|
||||
from azure.eventhub import EventData
|
||||
event = EventData(json.dumps(event_data))
|
||||
event.properties = {"partition_key": partition_key}
|
||||
producer.send_batch([event], partition_key=partition_key)
|
||||
```
|
||||
|
||||
## Norsk offentlig sektor
|
||||
|
||||
- **Saksbehandlingssystemer**: Asynkron prosessering er ideelt for AI-assistert saksbehandling der analyse kan ta tid. Saksbehandler sender inn dokument, fortsetter med annet arbeid, og mottar notifikasjon når analysen er ferdig.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue