ms-ai-architect/skills/ms-ai-engineering/references/api-management/apim-ai-gateway-overview.md
Kjell Tore Guttormsen 3a73eeafdc refactor(ms-ai-architect): R13 del 1 — nøytraliser Cosmo-personaen i ref-korpusets headinger, etter å ha rettet en gate som var målt usann to ganger
Ordre 20260912T193441Z-7358817909. Steg 1 var ikke transformen, men å rette
roadmapens R13-gate og få den ratifisert. Gaten `grep -rl "Cosmo"
skills/*/references -> 0` var usann på to uavhengige måter:

1. Ordren fanget den første: 451 av forekomstene er Azure Cosmos DB, ekte
   produktinnhold. Diskriminatoren er ikke bokstaven «s» — `Cosmos <norsk
   substantiv>` er genitiv av personaen (`### Cosmos tonalitet`), mens
   `Cosmos DB`/`CosmosClient`/`cosmos_ru` er produkt.
2. Denne økten fant den andre: 132 persona-forekomster ligger i prosa,
   tabeller, dialog-replikker og proveniens-linjer. Heading-nøytralisering
   kan ikke nå dem, så «0 persona» er uoppnåelig også under den ratifiserte
   formen. Operatøren ratifiserte alternativ A: gaten speiler formen, og de
   132 bokføres til R13b/R14.

Tre korreksjoner av premisser som sto i ordren og STATE:
  «ca 320 produkt»   -> 451 (case-sensitivt nett manglet 327 lowercase
                        TOC-ankre + 99 identifikatorer; sann nevner 1 638)
  «169 headinger»    -> 401. 169 var `^## For Cosmo`-prefikset (168) og var
                        internt inkonsistent med sin egen topp-variant (204)
  «417 matcher ingen
   populasjon»       -> 417 er cosmo-headinger utenfor kodefences; briefens
                        nevner var reell hele tiden

Fence-bevissthet er målt skadelig, ikke nødvendig: begge toggle-regler er
gale på dette korpuset (naiv toggle skjuler en ekte heading i
chain-of-thought-prompting.md, CommonMark-regelen ubalanserer
service-level-documentation-dr.md). Fence-agnostisk deteksjon finner 401
heading-linjer i nøyaktig de samme 40 variantene som fence-bevisst finner
400 i — ingen kodeblokk-linje er byte-identisk til en persona-heading. Derfor
nøkles transformen på 40 enumererte heading-tekster og ignorerer fences. En
ukjent variant kaster; en slug-kollisjon kaster. Ingenting auto-fikses.

TOC-en regenereres ikke, den rettes kirurgisk: alle 327 persona-lenker hadde
lenketekst lik én av de 40 heading-tekstene og anker lik slugify av den
(327/327, 0 avvik), så heading og TOC-entry skrives i samme operasjon og
ingen mellomtilstand etterlater en død lenke.

Ratifisert målform: `For Cosmo`, `For Cosmo Skyberg` og `For arkitekten
(Cosmo)` konvergerer på `For arkitekten`. To filer kolliderte og er adjudisert
ved å lese dem, ikke ved regel.

Verifisering (alle 7 kriterier fra ordren):
  G1 persona på heading-linjer   401 -> 0
  G2 døde fragmentlenker         1 -> 1 (pre-eksisterende, unntatt)
  G3 produkt-forekomster         451 -> 451; `Cosmos DB|Azure Cosmos` 308 = 308
  de 3 kun-produkt-filene        byte-identiske
  nettet validert begge veier    injisert persona feller G1; genitiv feller G1;
                                 produkt-heading og de 3 filene passerer
  hele diffen                    802 heading-linjer + 654 TOC-linjer, ANNET = 0
  linjeantall                    728 lagt til = 728 slettet
  suite                          1120/1120 (1097 + 23 nye)
  validate-plugin                250 PASS / 0 FAIL
  stikkprøve                     10 filer, alle 5 skills, inkl. de 3 mest
                                 produkt-tunge (26/20/19) — kun heading+TOC

Utenfor scope, urørt: de 4 SKILL.md, de 23 commands, CLAUDE.md, README.md,
NOTICE.md, docs/ (alt R14).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 22:12:28 +02:00

16 KiB

APIM as AI Gateway: Architecture & Concepts

Last updated: 2026-02 Status: GA Category: API Management & AI Gateway Type: reference Source: https://learn.microsoft.com/azure/api-management/genai-gateway-capabilities


Innhold

Introduksjon

Azure API Management (APIM) har utviklet seg fra en tradisjonell API-gateway til en fullverdig AI-gateway som gir organisasjoner sentral kontroll over alle generative AI-tjenester. For norsk offentlig sektor, der mange etater deler Azure OpenAI-instanser på tvers av avdelinger og prosjekter, er APIM den anbefalte tilnærmingen for å sikre styring, kostnadsfordeling og sikkerhet.

APIM som AI-gateway kombinerer tradisjonelle API Management-funksjoner (autentisering, rate limiting, logging) med spesialiserte AI-kapabiliteter som token-basert kvoteregulering, semantisk caching, multi-modell backend routing og innholdssikkerhet. Microsoft anbefaler APIM som den foretrukne PaaS-løsningen for å bygge og drifte en AI-gateway, fremfor egenutviklede løsninger.

I en typisk enterprise-arkitektur sitter APIM mellom klientapplikasjoner (chatbots, agentrammeverk, RAG-pipelines) og backend AI-tjenester (Azure OpenAI, Microsoft Foundry, tredjepartsmodeller). Dette gir ett enkelt endepunkt for alle konsumenter, uavhengig av hvor mange backend-instanser som finnes bak gatewayen.


Kjernekonsepter i Azure API Management

APIM-arkitektur

Azure API Management består av tre hovedkomponenter:

Komponent Rolle Beskrivelse
API Gateway Data plane / runtime Mottar API-kall, håndhever policies, videresender til backends
Management Plane Kontrollplan Konfigurering av APIs, policies, backends, produkter
Developer Portal Selvbetjening API-dokumentasjon, testing, onboarding av utviklere

APIM Service Tiers for AI

Tier AI Gateway-støtte Circuit Breaker Semantic Caching Token Policies Anbefaling
Consumption Begrenset Nei Ja Nei (ingen token limit by key) Ikke anbefalt for AI
Developer Full Ja Ja Ja Dev/test
Basic v2 Full Ja Ja Ja Små workloads
Standard v2 Full Ja Ja Ja Produksjon
Premium Full + multi-region Ja Ja Ja Enterprise / offentlig sektor

Anbefaling for norsk offentlig sektor: Standard v2 eller Premium, avhengig av krav til multi-region og VNet-integrasjon.


AI Gateway-kapabiliteter

APIM tilbyr fem hovedkategorier av AI-spesifikke funksjoner:

1. Token Rate Limiting og Kvoter

Kontroller token-forbruk per konsument med dedikerte policies:

<!-- Begrens tokens per minutt per subscription -->
<llm-token-limit
    counter-key="@(context.Subscription.Id)"
    tokens-per-minute="10000"
    estimate-prompt-tokens="true"
    remaining-tokens-variable-name="remainingTokens">
</llm-token-limit>

Policies for Azure OpenAI-spesifikke og generelle LLM-scenarier:

Policy Scope Beskrivelse
azure-openai-token-limit Azure OpenAI Token-begrensning spesifikt for Azure OpenAI-endepunkter
llm-token-limit Alle LLM-er Generell token-begrensning for alle LLM APIs
azure-openai-emit-token-metric Azure OpenAI Emit token-metrikk til Application Insights
llm-emit-token-metric Alle LLM-er Generell token-metrikk for alle LLM APIs

2. Load Balancing

Backend pools med round-robin, weighted og priority-basert lastbalansering:

<!-- Rut trafikk til backend pool -->
<set-backend-service backend-id="openai-pool" />

Load balancing-alternativer:

Modus Beskrivelse Typisk bruk
Round-robin Jevn fordeling mellom backends Standard, like instanser
Weighted Vektet fordeling basert på kapasitet Blue-green deployments
Priority-based Prioritetsgrupper, fallback ved feil PTU + Pay-as-you-go spillover
Session-aware Sesjonsaffinitet via cookie Chat-assistenter, Assistants API

3. Circuit Breaker

Beskytter backend-tjenester mot overbelastning med automatisk feilhåndtering:

Egenskap Beskrivelse
Failure threshold Antall feil som utløser circuit breaker
Trip duration Varighet circuit breaker er åpen
Retry-After header Dynamisk trip duration basert på backend-respons
Status code range Hvilke HTTP-koder som teller som feil (f.eks. 429, 5xx)

4. Semantic Caching

Gjenbruk av LLM-svar basert på semantisk likhet:

<!-- Inbound: Sjekk cache -->
<azure-openai-semantic-cache-lookup
    score-threshold="0.15"
    embeddings-backend-id="embeddings-backend"
    embeddings-backend-auth="system-assigned"
    ignore-system-messages="true"
    max-message-count="10">
    <vary-by>@(context.Subscription.Id)</vary-by>
</azure-openai-semantic-cache-lookup>

<!-- Outbound: Lagre i cache -->
<azure-openai-semantic-cache-store duration="3600" />

Krav: Azure Managed Redis med RediSearch-modul.

5. Sikkerhet og Content Safety

Funksjon Policy/Mekanisme Beskrivelse
Autentisering Managed Identity Eliminerer API-nøkler, bruker system- eller user-assigned identity
Content Safety llm-content-safety Automatisk moderering via Azure AI Content Safety
OAuth Credential Manager OAuth-autorisasjon for AI-apper og agenter
MCP-sikkerhet Secure MCP servers Sikrer tilgang til MCP-servere via APIM

Arkitekturmønstre for AI Gateway

Mønster 1: Sentralisert AI Gateway (anbefalt)

                        ┌─────────────────────┐
                        │   Azure API Mgmt    │
                        │   (AI Gateway)      │
  Chatbot ─────────────►│                     │──► Azure OpenAI (Norway East)
  RAG Pipeline ────────►│  - Token limiting   │──► Azure OpenAI (Sweden Central)
  Copilot Studio ─────►│  - Load balancing   │──► Microsoft Foundry
  Power Automate ─────►│  - Circuit breaker  │──► Third-party LLMs
                        │  - Caching          │
                        │  - Content safety   │
                        └─────────────────────┘
                                 │
                          ┌──────┴──────┐
                          │  Monitoring  │
                          │  App Insights│
                          │  Log Analyt. │
                          └─────────────┘

Fordeler:

  • Ett endepunkt for alle konsumenter
  • Sentralisert styring og kostnadskontroll
  • Konsistent sikkerhetspolitikk
  • Full observabilitet av token-forbruk

Mønster 2: Multi-Region AI Gateway

  Client ──► DNS/Traffic Manager
                    │
           ┌────────┴────────┐
           ▼                 ▼
  APIM Gateway          APIM Gateway
  (Norway East)         (Sweden Central)
       │                     │
       ▼                     ▼
  Azure OpenAI          Azure OpenAI
  (Norway East)         (Sweden Central)

For norsk offentlig sektor med krav til datasuverenitet:

  • Deploy APIM Premium med multi-region
  • Regionalt avgrensede backends via policy-logikk
  • Innebygd FQDN-routing basert på laveste latens

Mønster 3: Hub-and-Spoke for offentlig sektor

              Central IT (Hub)
        ┌──────────────────────────┐
        │  APIM (Premium)          │
        │  - Sentral policy        │
        │  - Kostnadsallokering    │
        │  - Compliance monitoring │
        └──────┬───────┬───────────┘
               │       │
    ┌──────────┘       └──────────┐
    ▼                             ▼
  Etat A (Spoke)            Etat B (Spoke)
  - Subscription A          - Subscription B
  - TPM: 50 000             - TPM: 30 000
  - Egne produkter          - Egne produkter

Governance og organisatorisk styring

Kostnadsfordeling med APIM

APIM muliggjør presis kostnadsfordeling gjennom:

Mekanisme Hvordan Eksempel
Subscription keys Hvert team/prosjekt får egen subscription Team A: 50k TPM, Team B: 30k TPM
Products Grupperer APIer med ulike kvoter "Standard AI" (10k TPM), "Premium AI" (100k TPM)
Custom headers Spor forbruk per bruker/applikasjon x-cost-center: 12345
Token metrics Emit til Application Insights per dimensjon Dashboard per team, API, bruker

Eksempel: Token-metrikk med dimensjoner

<llm-emit-token-metric namespace="ai-gateway-metrics">
    <dimension name="Etat" value="@(context.Request.Headers.GetValueOrDefault("x-etat", "ukjent"))" />
    <dimension name="Prosjekt" value="@(context.Request.Headers.GetValueOrDefault("x-prosjekt", "ukjent"))" />
    <dimension name="API" value="@(context.Api.Id)" />
    <dimension name="Modell" value="@(context.Request.Headers.GetValueOrDefault("x-model-id", "default"))" />
</llm-emit-token-metric>

Observabilitet

APIM integreres med Azure Monitor for full oversikt:

Datakilde Hva den gir Verktøy
Token metrics TPM/RPM per konsument, API, modell Application Insights, Azure Monitor
Request logs Prompts, completions, latens App Insights, Log Analytics
Built-in dashboard Visuell oversikt over AI API-forbruk APIM portal
Custom alerts Varsling ved kvote-overskridelse Azure Monitor Alerts

Bicep-deployment: AI Gateway

Grunnleggende APIM-instans for AI Gateway

@description('Azure API Management instance for AI Gateway')
resource apim 'Microsoft.ApiManagement/service@2023-09-01-preview' = {
  name: 'apim-ai-gateway-${environment}'
  location: location
  sku: {
    name: 'StandardV2'
    capacity: 1
  }
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    publisherEmail: 'admin@example.no'
    publisherName: 'Statens AI Gateway'
  }
}

Backend for Azure OpenAI

resource openaiBackend 'Microsoft.ApiManagement/service/backends@2023-09-01-preview' = {
  parent: apim
  name: 'openai-norwayeast'
  properties: {
    url: 'https://my-aoai-norwayeast.openai.azure.com/openai'
    protocol: 'http'
    credentials: {
      header: {}
      query: {}
    }
    tls: {
      validateCertificateChain: true
      validateCertificateName: true
    }
  }
}

Rolletildeling for Managed Identity

@description('Grant APIM Managed Identity access to Azure OpenAI')
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  scope: openaiResource
  name: guid(apim.id, openaiResource.id, cognitiveServicesUserRole)
  properties: {
    roleDefinitionId: cognitiveServicesUserRole
    principalId: apim.identity.principalId
    principalType: 'ServicePrincipal'
  }
}

Policy-pipeline for AI Gateway

En komplett AI gateway-policy kombinerer flere policies i riktig rekkefølge:

<policies>
    <inbound>
        <base />

        <!-- 1. Autentisering mot backend via Managed Identity -->
        <authentication-managed-identity resource="https://cognitiveservices.azure.com/" />

        <!-- 2. Token rate limiting per subscription -->
        <llm-token-limit
            counter-key="@(context.Subscription.Id)"
            tokens-per-minute="10000"
            estimate-prompt-tokens="true"
            remaining-tokens-variable-name="remainingTokens" />

        <!-- 3. Semantic cache lookup -->
        <azure-openai-semantic-cache-lookup
            score-threshold="0.15"
            embeddings-backend-id="embeddings-backend"
            embeddings-backend-auth="system-assigned"
            ignore-system-messages="true"
            max-message-count="10">
            <vary-by>@(context.Subscription.Id)</vary-by>
        </azure-openai-semantic-cache-lookup>

        <!-- 4. Content safety sjekk -->
        <llm-content-safety backend-id="content-safety-backend">
            <categories output-type="EightSeverityLevels">
                <category name="Hate" threshold="4" />
                <category name="Violence" threshold="4" />
            </categories>
        </llm-content-safety>

        <!-- 5. Ruting til backend pool -->
        <set-backend-service backend-id="openai-backend-pool" />
    </inbound>

    <outbound>
        <base />

        <!-- 6. Lagre i semantic cache -->
        <azure-openai-semantic-cache-store duration="3600" />

        <!-- 7. Emit token metrikk -->
        <llm-emit-token-metric namespace="ai-gateway">
            <dimension name="SubscriptionId"
                       value="@(context.Subscription.Id)" />
            <dimension name="ApiId"
                       value="@(context.Api.Id)" />
        </llm-emit-token-metric>
    </outbound>

    <on-error>
        <base />
    </on-error>
</policies>

Relevante referansearkitekturer

Ressurs Beskrivelse URL
GenAI Gateway Capabilities Oversikt over AI gateway i APIM learn.microsoft.com/azure/api-management/genai-gateway-capabilities
GenAI Gateway Reference Architecture Referansearkitektur med APIM learn.microsoft.com/ai/playbook/technology-guidance/generative-ai/dev-starters/genai-gateway/reference-architectures/apim-based
Multi-backend Gateway Gateway foran flere Azure OpenAI-instanser learn.microsoft.com/azure/architecture/ai-ml/guide/azure-openai-gateway-multi-backend
GenAI Gateway Toolkit Sample policies og lasttesting github.com/Azure-Samples/apim-genai-gateway-toolkit
AI Hub Gateway Accelerator Landing zone accelerator github.com/Azure-Samples/ai-hub-gateway-solution-accelerator
Well-Architected Guide for APIM WAF service guide learn.microsoft.com/azure/well-architected/service-guides/api-management/reliability

Hensyn for norsk offentlig sektor

Krav APIM-løsning
Datasuverenitet Deploy i Norway East / Sweden Central, private endpoints
Schrems II Managed Identity eliminerer API-nøkler, data forblir i EU
Kostnadsfordeling Token metrics per etat/prosjekt via subscriptions og custom headers
Tilgangsstyring Entra ID-integrasjon, RBAC på APIM-nivå
Logging/revisjon Diagnostic settings til Log Analytics, retention per regelverk
NSM-krav VNet-integrasjon, private endpoints, WAF foran APIM

For arkitekten

  • APIM som AI Gateway er den anbefalte PaaS-tilnærmingen for organisasjoner som trenger sentralisert styring over Azure OpenAI og andre LLM-backends -- spesielt relevant for offentlig sektor med krav til kostnadsfordeling og compliance.
  • De fem hovdkapabilitetene (token limiting, load balancing, circuit breaker, semantic caching, content safety) dekker de fleste enterprise-behov uten egenutviklet kode.
  • For norsk offentlig sektor: anbefal Standard v2 eller Premium tier, Managed Identity for autentisering, private endpoints, og token-metrikk med dimensjoner per etat/prosjekt for kostnadsallokering.
  • Policy-pipeline-rekkefølgen er kritisk: autentisering -> token limit -> cache lookup -> content safety -> backend routing (inbound), cache store -> emit metrics (outbound).
  • Multi-region deployment med APIM Premium gir active-active gateway med innebygd FQDN-routing, men vær oppmerksom på datasuverenitet ved cross-region trafikk.