ADR-008: Bytt Google AI Studio API til Vertex AI⚓︎
[!WARNING] Erstattet av ADR-018. Vertex AI-byttet ble aldri gjennomført; Kai bruker Azure AI Foundry. ADR-018 dokumenterer faktisk databehandling.
Kontekst⚓︎
Kai bruker i dag Google_GenerativeAI.Microsoft-pakken for å snakke med Gemini-modeller via Google AI Studio API, autentisert med API-nøkkel (googleGenAiApiKey). Google AI Studio gir ingen garantier for at databehandling skjer innenfor EU.
Kai prosesserer saksdokumenter fra Enova — et statlig foretak — som kan inneholde personopplysninger. Flere EU-regelverk setter absolutte krav til at slik databehandling skjer innenfor EØS/EU:
- GDPR (forordning (EU) 2016/679): Alle som behandler personopplysninger er pålagt å håndtere disse sikkert. Overføring til tredjeland (utenfor EØS) krever særskilt rettsgrunnlag. Google AI Studio gir ingen geografisk garanti.
- Data Governance Act (forordning (EU) 2022/868): Etablerer rammeverk for trygg deling av beskyttede data fra offentlige institusjoner. Krever at data ikke behandles utenfor avtalte grenser.
- AI-forordningen / Artificial Intelligence Act (AIA): Risikobasert regulering av AI-systemer. Systemer som brukes i offentlig forvaltning og saksbehandling kan falle inn under høyrisiko-kategorier med krav til sporbarhet og geografisk kontroll over databehandlingen.
- Data Act (forordning (EU) 2023/2854): Stiller krav om at databehandlingsarrangementer er rettferdige og klare, og at data ikke låses hos én leverandør uten geografisk garanti.
Nøkkeldrivere⚓︎
- GDPR-compliance: Personopplysninger i saksdokumenter må behandles innenfor EØS
- Offentlig sektor-krav: Enova er underlagt DGA og øvrig EU-regelverk for offentlig databehandling
- AI-forordningen: Saksbehandlingsstøtte kan klassifiseres som høyrisiko-AI — geografisk kontroll over databehandlingen er nødvendig for sporbarhet
- Risikominimering: API-nøkkel-basert autentisering mot ekstern tjeneste uten geografisk garanti er ikke akseptabelt
Beslutning⚓︎
Vi bytter fra Google AI Studio (Google_GenerativeAI.Microsoft) til Vertex AI via Google Cloud Vertex AI Extensions for .NET. Autentisering skjer via GCP Service Account / Workload Identity Federation — ikke API-nøkkel. EU-region konfigureres ved infrastrukturoppsett (f.eks. europe-west4 eller europe-west1).
Modellvalg (Gemini 2.5 Pro / Flash) beholdes uendret.
Alternativ vurdert⚓︎
Beholde Google AI Studio: Forkastet fordi tjenesten ikke gir garanti for EU-databehandling og dermed ikke oppfyller GDPR-kravene.
Konsekvenser⚓︎
Positive⚓︎
- Databehandling skjer innenfor EU — GDPR-krav oppfylt
- Workload Identity Federation er sikrere enn langtlevende API-nøkler
- Vertex AI gir samme Gemini-modeller med samme API-overflate via
IChatClient
Avveininger⚓︎
- GCP-prosjekt og Service Account / Workload Identity Federation må etableres (ny infrastruktur)
- Lokalt utviklingsmiljø må konfigureres med GCP Application Default Credentials (
gcloud auth application-default login)
Implementasjonsplan⚓︎
Berørte filer⚓︎
| Fil | Endring |
|---|---|
src/Enova.Agent.Kai/Enova.Agent.Kai.csproj |
Erstatt Google_GenerativeAI.Microsoft med Vertex AI-pakken |
src/Enova.Agent.Websak.Console/Enova.Agent.Websak.Console.csproj |
Samme pakkeutbytte |
src/Enova.Agent.Websak.Gemini.Console/Enova.Agent.Websak.Gemini.Console.csproj |
Samme pakkeutbytte |
tests/Enova.Agent.Websak.Tests/Enova.Agent.Websak.Tests.csproj |
Erstatt Microsoft.SemanticKernel.Connectors.Google |
src/Enova.Agent.Kai.Abstractions/Settings/GoogleGenAISettings.cs |
Erstatt med Vertex AI-innstillinger (prosjekt-ID, region) |
src/Enova.Agent.Kai/ServiceConfiguration.cs |
Erstatt GenerativeAIChatClient-registrering med Vertex AI-klient |
src/Enova.Agent.Websak.Console/Program.cs |
Erstatt GenerativeAIChatClient med Vertex AI-klient |
src/Enova.Agent.Websak.Gemini.Console/Program.cs |
Erstatt GenerativeAIChatClient med Vertex AI-klient |
tests/Enova.Agent.Websak.Tests/GoogleGeminiTests.cs |
Fjern Key Vault-oppslag for googleGenAiApiKey, bruk Application Default Credentials |
Mønster å følge⚓︎
IChatClient-grensesnittet beholdes — kun implementasjonen under byttes- Autentisering via
GoogleCredential/ Application Default Credentials, ikke hardkodede nøkler - Innstillinger via options-mønsteret (erstatt
GoogleGenAISettingsmed ny klasse, f.eks.VertexAISettingsmedProjectIdogRegion) appsettings.jsonog Key Vault-hemmeligheter: fjerngoogleGenAiApiKey, legg tilVertexAISettings:ProjectIdogVertexAISettings:Region
Verifisering⚓︎
- [ ] Ingen referanser til
googleGenAiApiKeyi konfigurasjons- eller kodefilene - [ ] Ingen referanser til
Google_GenerativeAI.Microsoft-pakken i.csproj-filer - [ ] Alle
IChatClient-registreringer bruker Vertex AI-klienten - [ ] Applikasjonen starter uten feil med Application Default Credentials lokalt
- [ ] Tester i
GoogleGeminiTests.cskjører uten API-nøkkel - [ ] Vertex AI-kallet treffer en EU-region (verifiserbart i GCP-logging)
Lenker⚓︎
- Google Cloud Vertex AI Extensions for .NET
- ADR-005: Dual autentisering — eksisterende autentiseringsmønster med DefaultAzureCredential som referanse
- Digdir: Oversikt over EU-regelverk om deling og bruk av data
- GDPR — forordning (EU) 2016/679
- Data Governance Act — forordning (EU) 2022/868
- Data Act — forordning (EU) 2023/2854
- Artificial Intelligence Act (AIA)