Hantera LLM-gatewayer
Registrera de språkmodellslutpunkter som plattformstjänster som Sentinel använder, välj vilka modeller de får använda, och bestäm vilken gateway och modell varje Sentinel-steg får.
Kräver: kernel/llmGateways/read, kernel/llmGateways/write, kernel/llmGateways/delete
En LLM-gateway är en språkmodellslutpunkt som registreras en gång för hela plattformen. Plattformstjänster som använder en språkmodell — i dag Sentinel — ber plattformen om en gateway varje gång de körs, i stället för att bära med sig en egen URL och API-nyckel.
Gatewayer hanteras under Inställningar → Plattformsinställningar, på fliken LLM-gatewayer. Vilken gateway och modell varje Sentinel-steg använder ställs in på fliken Sentinel-inställningar. Båda flikarna visas bara för principaler som kan läsa gatewayer — se Behörigheter.
Vad som kan vara en gateway
Varje server med ett OpenAI-kompatibelt API: LiteLLM, vLLM, llama.cpp, Ollama, eller en hostad
leverantör som erbjuder ett. Plattformen kontrollerar en gateway med GET /v1/models, och
Sentinel skickar sina anrop till /v1/chat/completions, båda under gatewayens bas-URL.
Skapa en gateway
Öppna fliken LLM-gatewayer och välj Lägg till gateway.
Fyll i Lägg till LLM-gateway:
Fält Vad du anger Namn Ett visningsnamn, till exempel LiteLLM (prod). Högst 100 teckenSlug Namnet som tjänster ber om gatewayen med, föreslaget utifrån namnet. 1–40 gemener, siffror och bindestreck, med en gemen eller siffra först, och inte använt av någon annan gateway. Det kan inte ändras senare Bas-URL Serverns rot, till exempel https://litellm.example.com. Ett avslutande/v1eller/v1/chat/completionstas bort. Se Regler för bas-URLAPI-nyckel Valfri. Lämna den tom för en gateway utan autentisering Ange som standardgateway Tjänster som inte namnger en gateway får standardgatewayen. Den första gateway du lägger till blir standard oavsett vad du väljer här Välj Testa anslutning för att prova URL:en och nyckeln innan du sparar — se Testa en anslutning.
Välj Lägg till gateway.
Plattformen kontrollerar gatewayen när du sparar och behåller den oavsett vad kontrollen visar: en gateway som ligger nere just nu registreras ändå, och meddelandet efter sparandet säger vad kontrollen kom fram till.
Viktigt
API-nyckeln kan bara skrivas. Den lagras krypterad och skickas till gatewayen som en Bearer-token, och varken portalen eller admin-API:et visar den någonsin igen. Gatewayens detaljer och redigeringspanelen säger bara Nyckel angiven eller Ingen nyckel. Nyckeln lämnas ut i klartext via plattformens interna kanal till varje principal som har
kernel/llmGateways/resolvepå roten — Sentinels tjänstekonto, och även Platform Owners och Platform Contributors, vars*/*omfattar den. Varje utlämning registreras, se Vad som registreras.
Regler för bas-URL
Bas-URL:en måste vara en absolut http://- eller https://-URL på högst 2048 tecken, och får inte
innehålla:
- inloggningsuppgifter, som i
https://user:password@host— ange API-nyckeln i stället; - en frågesträng eller ett fragment;
- en länklokal adress som
169.254.169.254; - en loopback- eller ospecificerad adress som
localhost,127.0.0.1eller0.0.0.0, som från en plattformstjänst är tjänstens egen pod. Ett plattforms-API som körs i miljönDevelopmentgodtar dem.
Privata adresser godtas, så en gateway som körs i klustret kan registreras. Ett värdnamn slås inte upp när du sparar.
Testa en anslutning
Testa anslutning anropar GET /v1/models under bas-URL:en, med nyckeln, och rapporterar ett av:
| Resultat | Betydelse |
|---|---|
| Frisk | Servern svarade med sin modellista, som visas |
| Frisk utan modeller | Servern svarade 404 på modellistan, eller listade inga modeller. Den kan ändå betjäna anrop — äldre versioner av llama.cpp listar inte sina modeller — men dess modeller måste läggas till för hand efter att du har sparat, se Modeller |
| Obehörig | Servern avvisade nyckeln med 401 eller 403 |
| Nås inte | Inget svar inom 15 sekunder, ett anslutningsfel, någon annan felstatus, eller ett lyckat svar som inte är en OpenAI-kompatibel modellista — oftast en inloggningssida eller en proxys standardsida framför gatewayen |
Listan över gatewayer
Varje rad visar namnet, med märket Standard på standardgatewayen; slug; bas-URL:en; hälsan, med när den senast kontrollerades och det senaste felet om kontrollen misslyckades; och hur många av gatewayens modeller som är aktiverade. Hälsan är något av resultaten ovan, eller Inte kontrollerad för en gateway som inte har kontrollerats.
Plattformen kontrollerar varje gateway igen var 15:e minut som standard, och uppdaterar dess hälsa och modellista. Det senaste felet citerar början av serverns svar, med nyckeln borttagen. Hälsan är till för dig att läsa: tjänster får en gateway oavsett dess hälsa, och deras eget anrop är det verkliga testet.
Välj vilka modeller tjänster får använda
Välj en gateway i listan för att öppna dess detaljer. Modeller listar varje modell som gatewayen har; bara de som är Aktiverad erbjuds tjänster.
- Första gången en gateway listar sina modeller aktiveras alla. Modeller som dyker upp i senare kontroller kommer in inaktiverade, så att du bestämmer om tjänster får använda dem.
- En modell som servern slutar lista markeras Saknas. Den tas inte bort och behåller sin inställning: en aktiverad modell som markerats Saknas erbjuds fortfarande tjänster tills du inaktiverar den.
- Lägg till modell via id lägger till en modell som servern inte listar. Den aktiveras direkt och markeras Manuell. Manuella modeller kan tas bort; en modell som servern har listat kan inte det, inte ens när den markerats Saknas, och en manuell modell som servern börjar lista slutar vara manuell. Ett modell-id är högst 200 tecken, utan mellanslag.
- Varje ändring sparar gatewayens hela modellista, och en sparad lista får innehålla högst 500 modeller. Kontrollerna lägger till varje modell som servern listar utan den gränsen, så på en gateway som listar fler än 500 modeller avvisas varje ändring här.
Varje ändring sparas direkt. En modell som ett Sentinel-steg är tilldelat kan inte inaktiveras
eller tas bort; felet namnger stegets syfte, till exempel sentinel.brain. Tilldela först steget en
annan modell — se Välj gateway och modell för varje Sentinel-steg.
Redigera en gateway
Välj Redigera i gatewayens detaljer. Du kan ändra Namn, Bas-URL, API-nyckel och Ange som standardgateway; slug går inte att ändra. En ändrad bas-URL eller nyckel gör att gatewayen kontrolleras igen när du sparar, och den kontrollen uppdaterar modellistan på samma sätt som den periodiska kontrollen: modeller som servern nu listar kommer in inaktiverade, och modeller som den inte längre listar markeras Saknas men förblir aktiverade. Gå igenom gatewayens Modeller när du har pekat den mot en annan server.
Nyckelfältet visar Nyckel angiven eller Ingen nyckel och behåller den lagrade nyckeln om du inte väljer:
- Byt nyckel, eller Lägg till nyckel när ingen är angiven, för att ange en ny nyckel;
- Ta bort nyckel, för att ta bort den lagrade nyckeln när du sparar;
- Behåll nuvarande nyckel, för att gå tillbaka till att behålla den.
Testa anslutning i redigeringspanelen använder den lagrade nyckeln om du inte har bytt eller tagit bort den.
Flytta en gateway till en annan värd
En lagrad nyckel skickas bara till den adress den sparades för: samma schema, värd och port. När
den nya bas-URL:en pekar någon annanstans ber redigeringspanelen om nyckeln igen. Ange den för den
nya värden, eller välj Ta bort nyckel om den värden inte behöver någon; tills du gör det är
Testa anslutning avstängd och ändringen kan inte sparas. Att bara ändra sökvägen, till exempel
lägga till /litellm, behåller den lagrade nyckeln.
Kontrollera en gateway igen
Välj Kontrollera igen i gatewayens detaljer. Gatewayen kontrolleras direkt, och dess hälsa och modellista uppdateras som vid den periodiska kontrollen.
Byt standardgateway
Välj Ange som standard i detaljerna för den gateway som ska bli standard, eller kryssa i Ange som standardgateway när du lägger till eller redigerar den. Den tidigare standardgatewayen upphör att vara det. Standardgatewayen har ingen knapp Ange som standard och dess kryssruta kan inte avmarkeras: för att byta standard gör du en annan gateway till standard.
Ta bort en gateway
Välj Ta bort i gatewayens detaljer och bekräfta med Ta bort gateway. Tjänster som ber om den här gatewayen får den inte längre från och med nästa körning. Det går inte att ångra.
Plattformen vägrar ta bort gatewayen, och dialogrutan säger varför, när:
- gatewayen är standard och det finns andra gatewayer — gör en annan till standard först. Den enda gatewayen kan tas bort trots att den är standard;
- ett Sentinel-steg är tilldelat den — felet namnger stegen. Tilldela dem en annan gateway, eller rensa deras tilldelning, först.
Välj gateway och modell för varje Sentinel-steg
Öppna fliken Sentinel-inställningar. Modelltilldelningar har en rad per Sentinel-steg:
| Steg | Vad det gör |
|---|---|
| Triage | Snabb första genomgång av alla underlag |
| Brain | Djupanalys som skriver fynd |
| Code | Föreslår kodändringar |
För varje steg du vill ställa in:
- Välj en Gateway. Inte tilldelad (använd standardgateway) rensar tilldelningen.
- Välj en Modell. Bara gatewayens aktiverade modeller erbjuds; en modell som servern inte längre listar visas men kan inte väljas.
- Välj Spara på den raden. Varje rad sparas för sig och visar när den senast ändrades.
Ändringar gäller från Sentinels nästa körning, och Sentinel körs var 30:e minut som standard. En rad kan ha en varning:
| Varning | Betydelse |
|---|---|
| Gatewayen är inte frisk | Gatewayens senaste kontroll var inte Frisk, eller så har den inte kontrollerats. Sentinel använder den ändå |
| Modellen är inte aktiverad | Den tilldelade modellen är inaktiverad på gatewayen, eller finns inte längre där |
| Modellen listas inte längre | Modellen är aktiverad, men gatewayens server listar den inte längre |
Hur en tjänst väljer gateway och modell
I början av varje körning ber Sentinel plattformen om en gateway en gång per steg, och namnger
stegets syfte — sentinel.triage, sentinel.brain eller sentinel.code. Plattformen lämnar ut
gatewayens bas-URL, API-nyckel och aktiverade modeller:
- Ett steg med en tilldelning får den tilldelade gatewayen och modellen.
- Ett steg utan tilldelning får standardgatewayen och använder dess första aktiverade modell, som kan vara en modell som markerats Saknas.
Ingenting sparas mellan körningar, så en ny nyckel, en ny standardgateway, en nyss aktiverad modell eller en ändrad tilldelning får effekt vid nästa körning utan någon omstart.
När ett steg inte kan få det det behöver — ingen gateway är registrerad, standardgatewayen har inga aktiverade modeller, Sentinel saknar behörigheten, eller plattformens API kan inte nås — hoppar Sentinel över körningen och registrerar varför, och nästa körning försöker igen. En gateway som inte är Frisk lämnas ändå ut.
Sentinels äldre inställningar för egna slutpunkter, gateway och modeller — Agent__TriageBaseUrl,
Agent__BrainBaseUrl, Agent__CodeBaseUrl, Agent__Gateway, Agent__ModelName och de stegvisa
Agent__TriageModel, Agent__BrainModel och Agent__CodeModel — sätts inte av installern, och
när Sentinel rullas ut tas de bort ur dess konfiguration. Det som väljs på de här flikarna är det
som Sentinel använder.
Behörigheter
Varje åtgärd kontrolleras på plattformens rot, så bara roller som tilldelats där ger den; en roll som tilldelats på en boundary, inte ens Owner, gör det aldrig.
| Åtgärd | Tillåter |
|---|---|
kernel/llmGateways/read |
Att se båda flikarna: gatewayerna, deras hälsa och modeller, och modelltilldelningarna — aldrig nyckeln |
kernel/llmGateways/write |
Att lägga till och redigera gatewayer, testa dem, Kontrollera igen, aktivera och lägga till modeller, byta standard och ändra modelltilldelningarna |
kernel/llmGateways/delete |
Att ta bort en gateway. En roll som ger write ger även den här |
kernel/llmGateways/resolve |
Att få en gateway utlämnad, nyckeln inräknad, via plattformens interna kanal — det som tjänster som Sentinel gör |
Platform Owner och Platform Contributor har alla fyra, resolve inräknad. Platform Reader har read och ser båda
flikarna utan deras kontroller. Sidomenyn visar Plattformsinställningar bara för dem som kan
ändra e-postinställningarna, så en Platform Reader öppnar sidan på
https://portal.example.com/admin/platform-settings.
Rollen LLM Gateway Consumer har resolve men ingen av de tre andra, och kan bara tilldelas på
plattformens rot. Plattformens RBAC-tjänst tilldelar den där till Sentinels tjänstekonto —
Keycloak-klienten stackship-module-sentinel — och tilldelar den igen om den tas bort; se
Installationsinställningar.
Vad som registreras
Varje ändring registreras i plattformens granskningslogg under resurstypen llmgateways, med
gatewayens slug som resursnamn:
| Händelse | När |
|---|---|
llmGateway.created |
En gateway lades till |
llmGateway.updated |
En gateways namn, bas-URL, nyckel, modeller eller standardflagga ändrades |
llmGateway.keyReplaced, llmGateway.keyCleared |
Dess nyckel byttes eller togs bort |
llmGateway.deleted |
En gateway togs bort |
llmGateway.assigned, llmGateway.unassigned |
Ett Sentinel-stegs tilldelning sattes eller rensades |
llmGateway.resolved |
En tjänst fick en gateway utlämnad; posten namnger anroparen och syftet |
Själva nyckeln registreras aldrig. En utlämning som inte kan registreras avvisas, så ingen nyckel lämnas ut oregistrerad; en ändring som inte kan registreras sparas ändå. Kontroller — Testa anslutning, Kontrollera igen och den periodiska kontrollen — registreras inte, och inte heller de uppdateringar av hälsa och modellista som de gör.
Installationsinställningar
| Inställning | Sätts på | Standard | Betydelse |
|---|---|---|---|
LlmGateways:HealthCheckInterval |
Plattformens API | 00:15:00 |
Hur ofta varje gateway kontrolleras, som ett tidsintervall |
ModuleGrantReconciler:LlmGatewayConsumerClientIds |
RBAC-modulen | stackship-module-sentinel |
De Keycloak-klienter vars tjänstekonton tilldelas LLM Gateway Consumer på roten. En lista som du anger ersätter standardvärdet i stället för att läggas till det |
Ange dem som miljövariabler, till exempel LlmGateways__HealthCheckInterval=00:05:00 eller
ModuleGrantReconciler__LlmGatewayConsumerClientIds__0=stackship-module-sentinel. RBAC-modulen
kontrollerar de här tilldelningarna när den startar och sedan var 10:e minut
(ModuleGrantReconciler:SweepInterval), och tilldelar igen de som saknas. En klient som inte finns
hoppas över.
Med API:et
Portalen använder de här rutterna under https://api.example.com. Var och en kontrolleras på plattformens rot.
| Metod och sökväg | Gör | Kräver |
|---|---|---|
GET /admin/llm-gateways |
Listar gatewayerna, standardgatewayen först | kernel/llmGateways/read |
GET /admin/llm-gateways/{id} |
Läser en gateway | kernel/llmGateways/read |
POST /admin/llm-gateways/verify |
Testar en URL och nyckel utan att spara | kernel/llmGateways/write |
POST /admin/llm-gateways |
Lägger till en gateway | kernel/llmGateways/write |
PUT /admin/llm-gateways/{id} |
Ändrar en gateway | kernel/llmGateways/write |
POST /admin/llm-gateways/{id}/verify |
Kontrollerar en gateway direkt | kernel/llmGateways/write |
DELETE /admin/llm-gateways/{id} |
Tar bort en gateway | kernel/llmGateways/delete |
GET /admin/llm-gateways/assignments |
Listar Sentinel-stegens tilldelningar | kernel/llmGateways/read |
PUT /admin/llm-gateways/assignments/{purpose} |
Sätter eller rensar ett stegs tilldelning | kernel/llmGateways/write |
POST https://api.example.com/admin/llm-gateways
Content-Type: application/json
{ "name": "LiteLLM", "slug": "litellm", "baseUrl": "https://litellm.example.com", "apiKey": "sk-…" }I en PUT till en gateway är varje fält valfritt. apiKey utelämnad eller null behåller den
lagrade nyckeln, "" tar bort den, och varje annat värde ersätter den. models är, när det anges,
den fullständiga listan med { "id": …, "enabled": … }-poster: manuella modeller som saknas i den
tas bort, och modeller som servern listar behålls. "isDefault": false på standardgatewayen lämnar
plattformen utan standardgateway, så att tjänster som inte namnger någon gateway inte får någon —
gör i stället en annan gateway till standard.
En tilldelning skickas som { "gatewayId": "…", "model": "…" }; { "gatewayId": null } rensar
tilldelningen. Ogiltiga indata besvaras med 400 och ett meddelande per fält, och en konflikt — en
slug som redan används, att ta bort standardgatewayen eller en tilldelad gateway, att inaktivera en
tilldelad modell — med 409.