Hoppa till huvudinnehållet

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örDrivs
MistralDrivs i EU
Scaleway Generative APIsDrivs i EU
Azure OpenAIDrivs i USA, även när resursen ligger i en EU-region
AnthropicDrivs i USA
OpenAIDrivs i USA
Google Vertex GeminiDrivs i USA
CustomBeror 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:

FunktionVad den gör
pr-reviewLägger en strukturerad AI-granskningskommentar på varje ny PR. Commit-status pending → success / warning.
renovate-explanationLägger till förklaringar om CVE:er och bakåtinkompatibla ändringar i PR:er med beroendeuppdateringar som Renovate har skapat.
workflow-callableRoutar endpointen POST /_app/api/v1/orgs/<slug>/ai/complete som kunden kan anropa.
autofixFö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-semanticSemantisk 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():

  1. provider_override / model_override per anrop (i arbetsflödets begäran)
  2. Leverantören i repots överstyrning
  3. Leverantören i funktionens standardinställning
  4. 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 anger provider: och model:
  • 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:

OrsakStatusBeteende
no_provider503(tyst: funktionen är avslagen för organisationen)
invalid_key502Varning i commit-status: “AI provider key invalid — re-add under AI integrations”
rate_limited429Varning i commit-status: “AI review queued — retrying on next push”
over_cap402Varning i commit-status: “AI quota exhausted this month”
vendor_error502Varning i commit-status: “AI review unavailable; retry on next push”
timeout504Varning 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