Från direkta API-anrop till en styrd endpoint
De flesta team börjar med att anropa OpenAI eller Anthropic direkt från sina applikationer, med en leverantörsnyckel i varje tjänsts miljö. Det är rätt sätt att börja. Den här guiden är till för när det slutar räcka: ni flyttar en applikation i taget bakom Wäg, utan att skriva om den, och varje steg går att ångra genom att ändra tillbaka en rad.
Vad som förändras
- Bas-URL:en varje applikation skickar requests till
- Nyckeln den skickar: en gateway-nyckel per applikation i stället för leverantörsnyckeln
- Var leverantörsnycklarna bor: i Wäg, inte i varje tjänst
Vad som inte gör det
- Ert SDK — openai, langchain, llamaindex och resten
- Era prompter, request-former och svarshantering
- Streaming, verktygsanrop, vision och strukturerad utdata
- Modellnamnen er kod redan använder
- Era leverantörskonton och avtal
Osäker på om ni behöver en gateway än? Den här sidan förklarar vad en gateway gör, och när det fortfarande är bättre att anropa leverantören direkt: Vad är en AI-gateway?
Fem steg, en applikation i taget
1 · Kör Wäg och lägg till era leverantörer
Ge varje leverantör ert befintliga konto och döp aliasen efter de modellnamn er kod redan skickar. Då behöver ingen modellreferens i någon applikation ändras.
# waeg.yaml — aliases named after the models your code already asks for
providers:
openai:
provider: openai
api_key_env: OPENAI_API_KEY
anthropic:
provider: anthropic
api_key_env: ANTHROPIC_API_KEY
models:
- name: gpt-4o
deployments:
- provider: openai
model_id: gpt-4o
- name: claude-haiku-4-5
deployments:
- provider: anthropic
model_id: claude-haiku-4-5Nycklar hämtas från miljön eller ert valv och skrivs aldrig in i filen.
2 · Utfärda en gateway-nyckel per applikation
Varje applikation får en egen virtuell nyckel i stället för leverantörsnyckeln. Det är vad som gör kostnad per applikation, gränser per team och återkallning av en enskild tjänst möjliga — inget av det klarar en delad leverantörsnyckel.
3 · Byt bas-URL och nyckel
Wäg exponerar den OpenAI-kompatibla ytan — chat completions, Responses API (tillståndslös), embeddings, bilder, ljud, video, OCR, moderering, rerank, filer, batchar, realtid och modeller — med äkta SSE-streaming, plus /v1/mcp och /v1/a2a för agenter. I applikationen ändras två rader:
client = OpenAI(
- api_key=os.environ["OPENAI_API_KEY"],
+ base_url=os.environ["WAEG_BASE_URL"], # e.g. https://waeg.internal/v1
+ api_key=os.environ["WAEG_KEY"], # this application's gateway key
)Applikationer byggda på Anthropics eller Geminis egna SDK:er stöds också: /v1/messages och Geminis /v1beta är förstklassiga request-former, inte bara översättningar av OpenAI-formen.
4 · Kontrollera, flytta sedan nästa applikation
Skicka en vanlig request, en streaming-request och en med verktygsanrop, och läs svarshuvudena: x-waeg-routed-model anger vilken modell som svarade, x-waeg-route-reason varför (med intelligent routing), och x-waeg-cache om en cache besvarade den. Requesten finns redan i konsolen med sina tokens och sin kostnad.
En rimlig ordning: interna verktyg först, sedan batch- och offlinearbetslaster, sedan en produktionstjänst, sedan resten.
5 · Ta bort leverantörsnycklarna ur applikationerna
När varje applikation går via Wäg roterar ni leverantörsnycklarna och tar bort dem ur applikationsmiljöer, CI-hemligheter och konfigurationsfiler. Därefter är det bara Wäg som håller dem — vilket är det mesta av säkerhetsvinsten, och steget som team oftast glömmer.
Ändra tillbaka bas-URL:en och nyckeln. Wäg håller inget tillstånd som era applikationer är beroende av, så fram till steg 5 är det hela proceduren. Gör steg 5 sist, när ni är säkra — efter det innebär en tillbakarullning att ni åter måste dela ut leverantörsnycklar till applikationerna.
Vad ni vann
- Kostnad per applikation, team och användare medan den uppstår — inte rekonstruerad från en faktura.
- Budgetar som stoppar utgifterna innan leverantören anropas, inte dashboards som blir röda efteråt.
- Failover till en annan leverantör eller modell när en ligger nere.
- Dataregler — maskera, redigera, blockera — som gäller varje prompt, även i applikationer som ingen rörde.
- En post över varje request: vem, vilken modell, varför, vad den kostade, vilka regler som gällde.
- Modeller som läggs till eller byts i konfigurationen, utan att varje applikation driftsätts på nytt.
Vad det kostar er
- Ännu en tjänst att drifta. Inbäddat läge behöver ingenting externt men körs på en nod och i minnet, för tester; produktion körs på Postgres och OpenFGA, plus Redis när det finns flera repliker.
- Ännu ett nätverkshopp. Några millisekunder mot modellanrop på hundratals millisekunder till sekunder — och cacheträffar kommer tillbaka snabbare än från någon leverantör.
- Någon måste äga den. Oftast plattformsteamet, samma personer som äger er övriga delade infrastruktur.
Frågor som brukar dyka upp
Måste jag ändra applikationskoden?
Två rader per applikation: bas-URL:en och nyckeln. Om dina applikationer läser båda från miljön behövs inte ens det — du ändrar miljön.
Kan vi flytta bara en applikation?
Ja. Applikationer som fortfarande anropar leverantören direkt fortsätter fungera. Att flytta en i taget är den rekommenderade vägen.
Fungerar streaming och verktygsanrop fortfarande?
Ja. Streaming är äkta server-sent events, och verktygsanrop, vision och strukturerad utdata bevaras över request-formerna från OpenAI, Anthropic och Gemini.
Går vår data till bitkaio?
Nej. Wäg körs i er infrastruktur och pratar bara med de leverantörer ni konfigurerar. Det finns ingen telemetri och ingen phone-home, och licensen är en signerad offlinetoken utan licensserver.
Vad behöver vi för att köra den?
För en första applikation, en container i inbäddat läge. För produktion, Postgres och OpenFGA, plus Redis för att hålla budgetar och frekvensgränser konsekventa mellan repliker. En egen Kubernetes-operator eller ett Helm-chart installerar det; databaserna förblir era.
En endpoint. Alla modeller. Full kontroll.
Kör den i er egen infrastruktur
Allt ni behöver för att köra en control plane i produktion är Apache-2.0 och förblir det — routing, HA, cache, failover, budgetar, policy, MCP, jobb och observability. Self-hosted, inget konto, ingen phone-home.
$ docker run -p 4000:4000 <registry>/waeg-gateway:<version>Ingen fungerande pull: avbilderna är inte publika än. Designpartner får registeruppgifterna privat.
Driftsätt på 5 minuterForma den som design partner
Wäg är ännu inte publikt släppt. Vi arbetar med en liten grupp team som kör AI från flera leverantörer i produktion och tar styrning och suveränitet på allvar, för att härda control plane:n mot verkliga arbetslaster.
- Alla Enterprise-funktioner ingår, utan licenskostnad
- Praktisk migrering — vi gör den tillsammans med er, även från LiteLLM
- En direktlinje till ingenjörerna som bygger den, och verkligt inflytande över vad som kommer härnäst