AI-integrationer
fremforge levererar tre AI-funktioner på serversidan: AI-granskning av PR:er, förklaringar till beroendeuppdateringar från Renovate och en AI-gateway som kunden kan anropa på POST /_app/api/v1/orgs/<slug>/ai/complete. Alla tre bygger på BYOK-modellen (bring-your-own-key): kunden väljer en AI-leverantör, klistrar in en API-nyckel från leverantören i administrationsgränssnittet, och fremforge vidarebefordrar anropen med granskning och kostnadsuppföljning. Leverantören är kundens eget personuppgiftsbiträde under kundens eget avtal, inte ett underbiträde till fremverk (se förtroendesidan och DPA bilaga B §B.8).
Vart anropen går. Varje anrop till din leverantör lämnar fremforge bara via en begränsad utgående proxy, och bara till leverantörens värd så som den kontrollerades och låstes när du sparade leverantören: en https-adress med ett DNS-namn, aldrig en IP-adress eller en privat, intern eller länklokal adress. Omdirigeringar följs inte. Ett anrop till någon annan värd avvisas, stänger av funktionen och registreras i granskningsloggen (ai.feature.auto_disabled). Proxyn ser bara värden och porten för den krypterade anslutningen, aldrig prompten eller svaret.
Den här sidan är referensen för den konfigurationen, riktad till dig som administrerar organisationen. För AI-verktyg på utvecklarsidan (Claude Code, Cursor, Continue och JetBrains AI som pratar direkt med fremforge med en PAT), se AI i din IDE: en annan målgrupp, en annan yta och en annan berättelse om suveränitet.
Vad du konfigurerar
Allt nedan finns på /<org>/_admin/ai-integrations.
Leverantörer
En “leverantör” är ett konto hos en AI-leverantör. Kunden lägger till så många som behövs (vanligt: en för produktion och en för staging med en billigare modell). Varje rad har:
- Etikett: ett läsbart namn (till exempel
anthropic-prod). Stabil identitet som används i administrationsgränssnittet och i nöjdhetspoängen. - Leverantör + Adapter: leverantörens identitet (
anthropic/openai/azure-openai/mistral/vertex-gemini/custom) avgör vilken adapter som hanterar anropet (openai-compatible/anthropic/vertex-gemini). - Bas-URL + Standardmodell: leverantörens endpoint och modellens identifierare.
- API-nyckel: krypteras i vila med AES-256-GCM under en rotnyckel i T Cloud Public DEW KMS, med en AAD-bindning per rad. Klartexten tas fram bara i det ögonblick ett anrop görs till leverantören.
- Direkttest: när du sparar anropar fremforge leverantörens endpoint för modellistan (eller motsvarande) med nyckeln. Ett rött märke på raden betyder att nyckeln inte godkändes. Märket blir också rött när leverantören avvisar nyckeln (HTTP 401 eller 403) i ett riktigt anrop, till exempel efter att nyckeln återkallats hos leverantören, så raden visar aldrig kvar ett gammalt lyckat test. Sparar du leverantören igen testas nyckeln på nytt och märket försvinner.
Vem som driver varje leverantör
Varje leverantörsruta, och varje leverantör som du har lagt till, visar vem som driver den. API:t anger samma sak som operator_jurisdiction på varje leverantörsobjekt.
| Leverantör | Drivs |
|---|---|
| Mistral | Drivs i EU |
| Scaleway Generative APIs | Drivs i EU |
| Azure OpenAI | Drivs i USA, även när resursen ligger i en EU-region |
| Anthropic | Drivs i USA |
| OpenAI | Drivs i USA |
| Google Vertex Gemini | Drivs i USA |
| Custom | Beror på endpointen: URL:en du anger avgör |
En leverantör som drivs i USA drivs av ett amerikanskt företag, så amerikansk lag kan kräva åtkomst till de uppgifter den behandlar även när uppgifterna lagras i EU. Se personuppgiftsbiträdesavtalet (DPA) §11.3 och bilaga B §B.8.
Standardinställningar för funktioner
Fem funktioner, en rad var i tabellen ai_feature_defaults:
| Funktion | Vad den gör |
|---|---|
| pr-review | Lägger en strukturerad AI-granskningskommentar på varje ny PR. Commit-status pending → success / warning. |
| renovate-explanation | Lägger till förklaringar om CVE:er och bakåtinkompatibla ändringar i PR:er med beroendeuppdateringar som Renovate har skapat. |
| workflow-callable | Routar endpointen POST /_app/api/v1/orgs/<slug>/ai/complete som kunden kan anropa. |
| autofix | Föreslår en pull request med en rättning för ett kurerat SAST-fynd när en person klickar på AI-fix (AI-fix). Kräver också att AI-fixar är påslagna i SAST-inställningarna, där de är avslagna som standard. |
| active-work-semantic | Semantisk matchning för Pågående arbete: frågar din leverantör om två pågående arbeten i samma repo är samma arbete. Skickar titlar, början av beskrivningar, branchnamn och mappar på översta nivån, aldrig kod; ett fält som innehåller en autentiseringsuppgift utelämnas. Kräver att Pågående arbete är påslaget och en leverantör med låst värd; slås bara på i konsolen och är avstängd tills en ägare av organisationen slår på den. |
Varje funktion är avslagen tills du slår på den. Att lägga till en leverantör slår inte på något: en funktion körs bara där dess rad säger enabled=true (kryssa i Påslaget och spara, eller PUT /_app/api/v1/orgs/<slug>/ai/feature-defaults/<feature>). Konsolen visar varje funktion som På eller Av. En rad kan också välja leverantör och en överstyrd modell; utan vald leverantör använder en påslagen funktion din senast tillagda aktiva leverantör.
Fram till 2026-10-19 använde en funktion utan sparad standardinställning din senast tillagda leverantör, så att lägga till en leverantör slog på alla funktioner, även AI-granskning av PR:er. Så är det inte längre.
Överstyrningar per repo
Kunden kan överstyra funktionens standardinställning för ett enskilt repo, till exempel stänga av AI-granskning i ett känsligt repo, slå på den för bara ett repo eller låsa ett reglerat repo till en annan modell.
Om en funktion körs för ett repo: raden i ai_repo_overrides för (tenant, repo_full_name, feature) om en sådan finns, annars raden i ai_feature_defaults för (tenant, feature), annars av. Inget av det som står nedan används för en funktion som är avslagen, inte heller en överstyrd leverantör per anrop.
Vilken leverantör den använder, i AiGateway.resolveProvider():
provider_override/model_overrideper anrop (i arbetsflödets begäran)- Leverantören i repots överstyrning
- Leverantören i funktionens standardinställning
- Reserv: organisationens senast tillagda aktiva leverantör
Arbetsflöden som använder AI
Varje dag går cron-jobbet /jobs/sha-pin-scan igenom varje arbetsflödes-YAML under .forgejo/workflows/, .gitea/workflows/ och .github/workflows/ och letar efter:
- En blockannotering
# fremforge-ai:som angerprovider:ochmodel: - Varje direkt anrop till
/_app/api/v1/orgs/<slug>/ai/complete
Båda signalerna matar avsnittet “Arbetsflöden som använder AI” i administrationen. Använd det för att prognostisera kostnader, granska suveränitet och planera nyckelrotationer.
Annoteringsformat:
# fremforge-ai:
# provider: anthropic-prod
# model: claude-opus-4-7
name: ai-summary
on:
pull_request:
types: [opened]
jobs:
summarize:
runs-on: fremforge
steps:
- name: Call AI
run: |
curl -sf https://frem.sh/_app/api/v1/orgs/<org>/ai/complete \
-H "authorization: Bearer $FREMFORGE_TOKEN" \
-H "content-type: application/json" \
-d '{"messages":[{"role":"user","content":"…"}]}'Sammanställd användning
Månatlig sammanställning av ai_usage_events: begäranden, inkommande tokens och utgående tokens per organisation. Uppskattat belopp i euro är för närvarande null; uppslag av priser per leverantör är planerat. Leverantörens faktura är den auktoritativa källan för kostnaden; fremforges sammanställning är till för prognoser och för att styra kostnaden per (leverantör, modell).
Återkoppling på granskningar
Nöjdhetspoäng per (leverantör, modell) utifrån 👍 / 👎-reaktioner på AI-granskningskommentarer på PR:er. Hämtas dagligen från Forgejo under 14 dagar efter att varje kommentar har publicerats. Under 70 % visas i rött: överväg att byta modell eller skriva om prompten.
Mjuka fel
AI-funktioner blockerar aldrig en PR. Varje typ av fel leder till en mjuk felväg:
| Orsak | Status | Beteende |
|---|---|---|
no_provider | 503 | (tyst: funktionen är avslagen för organisationen) |
invalid_key | 502 | Varning i commit-status: “AI provider key invalid — re-add under AI integrations” |
rate_limited | 429 | Varning i commit-status: “AI review queued — retrying on next push” |
over_cap | 402 | Varning i commit-status: “AI quota exhausted this month” |
vendor_error | 502 | Varning i commit-status: “AI review unavailable; retry on next push” |
timeout | 504 | Varning i commit-status: “AI review timed out” |
Kundens CI och merge-flöde påverkas inte av något AI-fel; det enda som saknas är den AI-genererade kommentaren.
PAT-scope
Endpointen POST /_app/api/v1/orgs/<slug>/ai/complete som kunden kan anropa kräver en PAT med scopet ai:invoke. Skapa den på /-/settings/tokens, välj en livslängd på högst 90 dagar och skicka den som Authorization: Bearer ffp_…. Kostnaden för tokens hamnar på den konfigurerade leverantörens faktura, inte på fremforges avgifter.
Fas 2: nyckelfärdig AIFS
En nyckelfärdig plannivå där fremverk har ett AIFS-Germany-konto och fakturerar tokens per användare finns på färdplanen (6–18 månader; den förutsätter att AIFS-katalogen får en kodanpassad modell som är tillräckligt bra för PR-granskning). När det sker finns BYOK-vägen kvar; gatewayens resolveProvider() kontrollerar då först en flagga för den nyckelfärdiga planen.
Stänga av AI helt
Om du av någon anledning behöver stänga av AI för hela organisationen: sätt varje rad i ai_feature_defaults till enabled=false (en funktion utan rad är redan avslagen) och ta bort alla överstyrningar per repo som slår på en funktion. Kontakta supporten om du vill stänga av AI för din organisation på plattformsnivå.
Relaterat
- Förtroendesidan: dataflödet för AI-integrationer: artikeln om suveränitet för kunder
- DPA bilaga B §B.8: den avtalsmässiga grunden för att en BYOK-leverantör inte är ett underbiträde
- Snabbstarter för varje IDE-verktyg: AI-verktyg på utvecklarsidan
- OpenAPI-specifikation:
POST /orgs/{org}/ai/completeär dokumenterad undertags: [AI]