Kør en lokal OpenAI-kompatibel proxy til alle større cloudbaserede AI-tjenester. Gem API-nøglerne én gang, og lad enhver klientapp — desktop, mobil eller web — kommunikere med http://localhost i stedet for at registrere nøgler i hvert enkelt værktøj.
Kom godt i gang
1. Start appen
Åbn AIProxyServer. Ved første start starter proxytjenesten automatisk og lytter på port 8421 på din lokale maskine. Hovedvinduet viser tre sektioner:
- Proxyserver — aktuel status, basis-URL og en knap til at starte eller stoppe lytteren
- Bearer-token — valgfri godkendelseskontakt og visning af token
- Udbydere — hver understøttet cloud-AI-udbyder med en Angiv API-nøgle -knap på hver række
2. Tilføj din første API-nøgle
- Vælg en vilkårlig udbyder på listen Udbydere (f.eks. OpenAI (ChatGPT))
- Klik på Hent API-nøgle for at åbne udbyderens konsol i din browser, og opret eller kopiér derefter en nøgle
- Klik på Angiv API-nøgle på samme række, og indsæt værdien i dialogboksen
- Klik på Gem. Statusetiketten skifter til Konfigureret med grønt
3. Tilslut en klientapp
Peg en vilkårlig OpenAI-kompatibel klient mod proxytjenesten. Basis-URL'en er http://localhost:8421/<provider>/v1. Udbydersegmentet vælger, hvilken cloud der modtager anmodningen.
# Eksempel: OpenAI Python SDK rettet mod proxytjenesten
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8421/openai/v1",
api_key="not-used-but-required-by-sdk",
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
Klienten ser aldrig den rigtige nøgle. AIProxyServer tilføjer upstream-legitimationsoplysningerne, når den videresender anmodningen.
Overblik over brugerfladen
Panel for proxyserver
| Felt | Beskrivelse |
|---|---|
| Status | Kører når lytteren er aktiv, Stoppet ellers. |
| Basis-URL | Den adresse klientapps skal bruge, inklusive værtsnavn og port. Klik på Kopiér for at kopiere den til udklipsholderen. |
| Start / Stop-knap | Slå HTTP-lytteren til eller fra uden at afslutte appen. |
Panel for Bearer-token
- Kræv Bearer-token-godkendelse — afkrydsningsfelt, der slår godkendelse til eller fra. Som standard slået fra for problemfri lokal brug.
- Tokenfelt — skrivebeskyttet visning af det aktuelle token. Vises som prikker; brug Kopiér for at hente det.
- Generér igen — opret et nyt tilfældigt token. Eksisterende klienter skal opdateres med den nye værdi.
Panel for udbydere
Én række pr. understøttet cloududbyder. Hver række viser:
- Visningsnavnet (f.eks. Claude (Anthropic))
- Konfigurationsstatus — grøn Konfigureret når en API-nøgle er gemt, grå Ikke konfigureret ellers
- URL-stien, som dine klienter bruger, f.eks.
/anthropic/v1/chat/completions - Angiv API-nøgle — åbner en dialogboks til indtastning af legitimationsoplysninger
- Hent API-nøgle — åbner udbyderens konsol i din browser
Understøttede udbydere
Elleve cloudbaserede AI-tjenester er inkluderet. De fleste bruger OpenAI Chat Completions-formatet direkte og proxes uændret. Tre (Anthropic, Gemini, ERNIE) anvender deres egne protokoller; AIProxyServer oversætter anmodninger og svar løbende, så din klient kun ser OpenAI-formater.
| Udbyder | Rutepræfiks | Det skal du bruge |
|---|---|---|
| OpenAI (ChatGPT) | /openai/v1 | API-nøgle fra platform.openai.com |
| Claude (Anthropic) | /anthropic/v1 | API-nøgle fra Anthropic Console |
| Gemini (Google) | /gemini/v1 | API-nøgle fra Google AI Studio |
| Grok (xAI) | /grok/v1 | API-nøgle fra xAI Console |
| Azure OpenAI (Copilot) | /copilot/v1 | API-nøgle samt URL til dit deployment-endpoint |
| Perplexity | /perplexity/v1 | API-nøgle fra Perplexity-indstillinger |
| Groq | /groq/v1 | API-nøgle fra Groq Cloud |
| DeepSeek | /deepseek/v1 | API-nøgle fra DeepSeek Platform |
| Kimi (Moonshot) | /kimi/v1 | API-nøgle fra Moonshot Console |
| Qwen (DashScope) | /qwen/v1 | API-nøgle fra Alibaba DashScope |
| ERNIE (Baidu) | /ernie/v1 | Både API Key og Secret Key fra Baidu Qianfan |
Udbyderspecifikke bemærkninger
- Azure OpenAI — indsæt det fulde deployment-endpoint i feltet Endpoint Base URL , f.eks.
https://my-resource.openai.azure.com/openai/deployments/gpt-4o. Proxytjenesten tilføjer/chat/completions?api-version=2024-02-01automatisk. - ERNIE — Baidu Qianfan bruger OAuth, så både API Key og Secret Key kræves. AIProxyServer anmoder om og cacher access tokens i baggrunden.
- Gemini — godkendelse sker via URL-forespørgselsparameter; proxytjenesten tilføjer den for dig. Gratisabonnementets kvoter pr. minut gælder fortsat.
API-reference
Endpoints
| Metode | Sti | Beskrivelse |
|---|---|---|
| GET | /health | Tilgængelighedskontrol. Returnerer tjenestestatus og udbyderliste. Ingen godkendelse kræves. |
| GET | /v1/providers | Konfigurerede udbydere og metadata. |
| GET | /<provider>/v1/models | Modelliste for den angivne udbyder i OpenAI-format. |
| POST | /<provider>/v1/chat/completions | OpenAI Chat Completions-anmodning. Angiv stream:true for SSE. |
Streaming
Når klienten sender "stream": true, svarer proxytjenesten med Server-Sent Events i OpenAI-format:
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant"},...}]}
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"},...}]}
data: [DONE]
Anthropic- og Gemini-native streams oversættes til dette format, så alle klienter kan bruge én parser.
Godkendelsesheader
Når Kræv Bearer-token-godkendelse er slået til, skal du sende tokenet fra hovedvinduet med hver anmodning:
Authorization: Bearer <token-shown-in-app>
Indstillinger
Åbn vinduet Indstillinger fra tandhjulsikonet på den nederste værktøjslinje.
| Indstilling | Standard | Beskrivelse |
|---|---|---|
| Proxyport | 8421 | TCP-porten, som lytteren bindes til. Ændringer kræver genstart af proxytjenesten. |
| Start server automatisk | Til | Start proxytjenesten, når appen åbnes. |
| Tillad LAN-adgang | Fra | Når den er slået fra, binder proxytjenesten kun til 127.0.0.1. Når den er slået til, kan andre enheder på dit Wi-Fi nå proxytjenesten. |
| Kræv Bearer-token | Fra | Når den er slået til, skal hver anmodning indeholde tokenet, der vises i hovedvinduet. Anbefales kraftigt, når Tillad LAN-adgang er slået til. |
Klienteksempler
cURL
# OpenAI (gennemløb)
curl http://localhost:8421/openai/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello"}]
}'
# Claude via samme OpenAI-format
curl http://localhost:8421/anthropic/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 1024
}'
OpenAI Python SDK
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8421/gemini/v1",
api_key="placeholder", # ignoreres, når Bearer-token er slået fra
)
stream = client.chat.completions.create(
model="gemini-2.0-flash",
messages=[{"role": "user", "content": "Tell me a joke"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
Flutter / Dart
// Brug af en vilkårlig OpenAI-kompatibel Dart-klient
final client = OpenAIClient(
baseUrl: 'http://localhost:8421/anthropic/v1',
apiKey: '', // bruges ikke, når Bearer-token er slået fra
);
localhost med din Macs LAN-IP (vises i feltet Basis-URL, når Tillad LAN-adgang er slået til).Tips
- Lad Bearer-token være slået fra, mens du udvikler lokalt; slå det til, så snart du aktiverer LAN-adgang.
- Brug forskellige basis-URL'er pr. udbyder i din klientkode, så du kan skifte udbyder ved at ændre én konstant.
- Proxytjenesten starter automatisk, men du kan midlertidigt stoppe den fra hovedvinduet, hvis der opstår en portkonflikt.
- Hvis en udbyders gratisabonnement hastighedsbegrænser dig, videresendes upstream-fejlmeddelelsen ordret. Ingen genforsøgslogik skjules for klienten.
- Endpointet
/v1/providerser nyttigt til at finde ud af, hvilke udbydere der er konfigureret under kørsel.
Fejlfinding
Proxytjenesten starter ikke
- En anden proces bruger muligvis allerede port 8421. Skift porten i Indstillinger, og genstart proxytjenesten.
- Kontrollér systemloggen for den fejlmeddelelse, der vises ved opstart.
En anmodning returnerer 401 Unauthorized
- Kravet om Bearer-token er slået til, men klienten sendte ikke en matchende
Authorization: Bearer ...-header. - Udbyderens egen API-nøgle kan være ugyldig — upstream-fejlen videresendes, så kontrollér meddelelsens brødtekst.
En anmodning returnerer "API key is not configured"
- Åbn listen Udbydere, og klik på Angiv API-nøgle for den pågældende udbyder.
- For ERNIE skal både API Key og Secret Key være udfyldt. For Azure OpenAI kræves også Endpoint Base URL.
Mobilenheden kan ikke nå proxytjenesten
- Slå Tillad LAN-adgang til i Indstillinger.
- Brug LAN-IP'en, der vises i feltet Basis-URL, ikke
localhost. - Kontrollér, at begge enheder er på samme Wi-Fi-netværk, og at din firewall tillader indgående forbindelser på proxyporten.
Streaming-svar ankommer på én gang
- Sørg for, at din klient sender
"stream": truei JSON-brødteksten. - Nogle HTTP-biblioteker buffer som standard SSE — deaktiver responsbuffering på klientsiden.
Privatliv
- API-nøgler gemmes krypteret med Fernet i
~/Library/Application Support/AIProxyServer/credentials.enc. Krypteringsnøglen imaster.keyhar tilladelserne 0600. - Bearer-tokenet gemmes, når det er aktiveret, også kun i den krypterede boks og skrives aldrig til den almindelige indstillingsfil.
- Proxytjenesten videresender kun anmodninger til udbydere, du udtrykkeligt har konfigureret. Den foretager ingen andre udgående kald.
- Ingen telemetri, ingen analyse, ingen fejlrapportering.
- Standardnetværksbinding er
127.0.0.1kun. LAN-eksponering er valgfri. - Samtaleindhold gemmes ikke. AIProxyServer videresender bytes og glemmer dem straks.