Gå til hovedindhold

AI-integrationer

fremforge har tre AI-funktioner på serversiden — AI-gennemgang af pull requests, forklaringer på Renovates afhængighedsopdateringer og en AI-gateway, som kunden selv kan kalde, på POST /_app/api/v1/orgs/<slug>/ai/complete. Alle tre kører efter BYOK-modellen (bring your own key): kunden vælger en AI-leverandør, indsætter en API-nøgle fra leverandøren i administrationsbrugerfladen, og fremforge videresender kaldene med revisionsspor og registrering af forbrug. Leverandøren er kundens egen databehandler under kundens egen aftale, ikke en underdatabehandler for fremverk (se trust-siden og databehandleraftalens bilag B §B.8).

Hvor kaldene går hen. Hvert kald til din udbyder forlader kun fremforge gennem en begrænset udgående proxy, og kun til udbyderens vært, som den blev kontrolleret og fastlåst, da du gemte udbyderen: en https-adresse med et DNS-navn, aldrig en IP-adresse eller en privat, intern eller link-local adresse. Viderestillinger følges ikke. Et kald til en anden vært afvises, slår funktionen fra og registreres i revisionsloggen (ai.feature.auto_disabled). Proxyen ser kun værten og porten for den krypterede forbindelse, aldrig prompten eller svaret.

Denne side er referencen for den konfiguration til dem, der administrerer organisationen. For AI-værktøjerne på udviklersiden (Claude Code, Cursor, Continue og JetBrains AI, der taler direkte med fremforge med et PAT) se AI i din IDE — et andet publikum, en anden flade og en anden historie om suverænitet.

Hvad du konfigurerer

Alt nedenfor ligger på /<org>/_admin/ai-integrations.

Udbydere

En “udbyder” er én konto hos en AI-leverandør. Kunden tilføjer så mange, som den vil (typisk: én til produktion og én til staging med en billigere model). Hver række indeholder:

  • Label — et læsbart navn (f.eks. anthropic-prod). Den stabile identitet, der bruges i administrationsbrugerfladen og i tilfredshedsscorer.
  • Vendor + Adapter — leverandørens identitet (anthropic / openai / azure-openai / mistral / vertex-gemini / custom) bestemmer, hvilken adapter der håndterer kaldet (openai-compatible / anthropic / vertex-gemini).
  • Base URL + Default model — leverandørens endpoint og modelidentifikator.
  • API key — krypteret i hvile med AES-256-GCM med T Cloud Public DEW KMS som rod og en AAD-binding pr. række. Klarteksten hentes kun frem i det øjeblik, der kaldes til leverandøren.
  • Indbygget test — når du gemmer, kalder fremforge leverandørens endpoint til listen over modeller (eller tilsvarende) med nøglen. Et rødt mærke på rækken betyder, at nøglen ikke kunne valideres. Mærket bliver også rødt, når leverandøren afviser nøglen (HTTP 401 eller 403) ved et rigtigt kald, for eksempel efter at nøglen er tilbagekaldt hos leverandøren, så rækken aldrig bliver ved med at vise en gammel vellykket test. Gemmer du udbyderen igen, testes nøglen igen, og mærket ryddes.

Hvem der driver hver leverandør

Hver leverandørflise og hver udbyder, du har tilføjet, viser, hvem der driver den. API’et rapporterer det samme som operator_jurisdiction på hvert udbyderobjekt.

LeverandørDrives
MistralI EU
Scaleway Generative APIsI EU
Azure OpenAIAf et amerikansk selskab, også når ressourcen ligger i en EU-region
AnthropicAf et amerikansk selskab
OpenAIAf et amerikansk selskab
Google Vertex GeminiAf et amerikansk selskab
CustomAfhænger af endpointet: den URL, du angiver, afgør det

En leverandør, der drives fra USA, drives af et amerikansk selskab, så amerikansk lovgivning kan kræve adgang til de data, den behandler, også når dataene er lagret i EU. Se databehandleraftalen §11.3 og bilag B §B.8.

Standarder for funktioner

Fem funktioner, én række hver i tabellen ai_feature_defaults:

FunktionHvad den gør
pr-reviewSkriver en struktureret AI-gennemgang som kommentar på hver ny pull request. Commit-status pending → success / warning.
renovate-explanationTilføjer forklaringer om CVE’er og breaking changes til pull requests med afhængighedsopdateringer, som Renovate har oprettet.
workflow-callableDirigerer det endpoint, kunden selv kan kalde, POST /_app/api/v1/orgs/<slug>/ai/complete.
autofixForeslår en pull request med en rettelse til et udvalgt SAST-fund, når en person klikker på AI-rettelse (AI-rettelse). Kræver også, at AI-rettelser er slået til under SAST-indstillingerne, hvor de som standard er slået fra.
active-work-semanticSemantisk matchning til Active work: spørger din udbyder, om to stykker igangværende arbejde i samme repository er det samme arbejde. Sender titler, begyndelsen af beskrivelser, branch-navne og mapper på øverste niveau, aldrig kode; et felt, der indeholder loginoplysninger, udelades. Kræver, at Active work er slået til, og en udbyder med en fastlåst vært; slås kun til i konsollen og er slået fra, indtil en organisationsejer slår den til.

Alle funktioner er slået fra, indtil du slår dem til. At tilføje en udbyder slår intet til: en funktion kører kun, hvor dens række siger enabled=true (sæt flueben i Slået til og gem, eller PUT /_app/api/v1/orgs/<slug>/ai/feature-defaults/<feature>). Konsollen viser hver funktion som Til eller Fra. En række kan også vælge udbyderen og en anden model; er der ikke valgt en udbyder, bruger en funktion, der er slået til, din nyeste aktive udbyder.

Indtil 2026-10-19 brugte en funktion uden gemt standard din nyeste udbyder, så når du tilføjede en udbyder, blev alle funktioner slået til, også AI-gennemgang af pull requests. Sådan er det ikke længere.

Tilsidesættelser pr. repository

Kunden kan tilsidesætte funktionens standard på et enkelt repository — f.eks. slå AI-gennemgang fra på et følsomt repository, slå den til for kun ét repository eller fastlåse et reguleret repository til en anden model.

Om en funktion kører for et repository: rækken i ai_repo_overrides for (tenant, repo_full_name, feature), hvis der er en, ellers rækken i ai_feature_defaults for (tenant, feature), ellers fra. Intet af det nedenstående bliver spurgt for en funktion, der er slået fra, heller ikke en udbydertilsidesættelse i det enkelte kald.

Hvilken udbyder den bruger, i AiGateway.resolveProvider():

  1. provider_override / model_override i det enkelte kald (workflowets request body)
  2. Udbyderen i tilsidesættelsen for repositoriet
  3. Udbyderen i funktionens standard
  4. Reserve: tenantens nyeste aktive udbyder

Workflows, der bruger AI

Hver dag gennemgår cronjobbet /jobs/sha-pin-scan alle workflow-YAML-filer under .forgejo/workflows/, .gitea/workflows/ og .github/workflows/ og finder:

  • En bloknotation # fremforge-ai:, der angiver provider: + model:
  • Ethvert direkte kald til /_app/api/v1/orgs/<slug>/ai/complete

Begge signaler fodrer administrationsafsnittet “Workflows using AI”. Brug det til at forudsige forbrug, revidere suverænitet og planlægge rotation af nøgler.

Notationens format:

# 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":"…"}]}'

Opsummering af forbrug

Månedlig sammentælling af ai_usage_events — anmodninger, tokens ind og tokens ud pr. tenant. Anslåede euro er i øjeblikket null; opslag af priser pr. leverandør er planlagt. Leverandørens faktura er den autoritative kilde til omkostningen — fremforges opsummering er til forudsigelser og til at forme omkostningen pr. (udbyder, model).

Feedback på gennemgange

Tilfredshedsscore pr. (udbyder, model) ud fra 👍 / 👎-reaktioner på kommentarer fra AI-gennemgang af pull requests. Hentes dagligt fra Forgejo i 14 dage, efter at hver kommentar er skrevet. Under 70 % vises med rødt — overvej at skifte model eller omskrive prompten.

Bløde fejl i brugerfladen

AI-funktioner blokerer aldrig en pull request. Hver fejltype ender i en blød fejl:

ÅrsagStatusBrugerflade
no_provider503(ingenting — funktionen er slået fra for denne tenant)
invalid_key502Advarsel i commit-status: “AI provider key invalid — re-add under AI integrations”
rate_limited429Advarsel i commit-status: “AI review queued — retrying on next push”
over_cap402Advarsel i commit-status: “AI quota exhausted this month”
vendor_error502Advarsel i commit-status: “AI review unavailable; retry on next push”
timeout504Advarsel i commit-status: “AI review timed out”

En kundes CI- og merge-forløb påvirkes ikke af nogen AI-fejl — det eneste, der mangler, er den AI-genererede kommentar.

PAT-omfang

Det endpoint, kunden selv kan kalde, POST /_app/api/v1/orgs/<slug>/ai/complete, kræver et PAT med omfanget ai:invoke. Opret det på /-/settings/tokens; vælg en maksimal levetid på 90 dage; send det som Authorization: Bearer ffp_…. Forbruget af tokens lægges på den konfigurerede udbyders regning fra leverandøren, ikke på fremforges gebyrer.

Fase 2 — nøglefærdig AIFS

Et nøglefærdigt planniveau, hvor fremverk har en AIFS-Germany-konto og fakturerer tokens pr. bruger, er på køreplanen (6–18 måneder — afhænger af, at AIFS-kataloget får en kodetunet model, der er god nok til gennemgang af pull requests). Når det sker, forbliver BYOK-vejen tilgængelig; gatewayens resolveProvider() spørger først et flag for den nøglefærdige plan.

Slå AI fra overalt

Har du af en eller anden grund brug for at slå AI fra for hele tenanten: sæt hver række i ai_feature_defaults til enabled=false (en funktion uden række er allerede slået fra), og fjern alle tilsidesættelser pr. repository, der slår en funktion til. Kontakt support for at slå AI fra på hele platformen for din tenant.

Relateret