AIProxyServer - Vejledning

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

  1. Vælg en vilkårlig udbyder på listen Udbydere (f.eks. OpenAI (ChatGPT))
  2. Klik på Hent API-nøgle for at åbne udbyderens konsol i din browser, og opret eller kopiér derefter en nøgle
  3. Klik på Angiv API-nøgle på samme række, og indsæt værdien i dialogboksen
  4. 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

FeltBeskrivelse
StatusKører når lytteren er aktiv, Stoppet ellers.
Basis-URLDen adresse klientapps skal bruge, inklusive værtsnavn og port. Klik på Kopiér for at kopiere den til udklipsholderen.
Start / Stop-knapSlå 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.
Bemærk: Hvis du aktiverer Tillad LAN-adgang i Indstillinger uden at slå tokenet til, kan alle på det samme Wi-Fi-netværk bruge din proxy og dine API-nøgler. Hjælpeteksten under tokenpanelet advarer dig, når du er i denne tilstand.

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.

UdbyderRutepræfiksDet skal du bruge
OpenAI (ChatGPT)/openai/v1API-nøgle fra platform.openai.com
Claude (Anthropic)/anthropic/v1API-nøgle fra Anthropic Console
Gemini (Google)/gemini/v1API-nøgle fra Google AI Studio
Grok (xAI)/grok/v1API-nøgle fra xAI Console
Azure OpenAI (Copilot)/copilot/v1API-nøgle samt URL til dit deployment-endpoint
Perplexity/perplexity/v1API-nøgle fra Perplexity-indstillinger
Groq/groq/v1API-nøgle fra Groq Cloud
DeepSeek/deepseek/v1API-nøgle fra DeepSeek Platform
Kimi (Moonshot)/kimi/v1API-nøgle fra Moonshot Console
Qwen (DashScope)/qwen/v1API-nøgle fra Alibaba DashScope
ERNIE (Baidu)/ernie/v1Bå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-01 automatisk.
  • 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

MetodeStiBeskrivelse
GET/healthTilgængelighedskontrol. Returnerer tjenestestatus og udbyderliste. Ingen godkendelse kræves.
GET/v1/providersKonfigurerede udbydere og metadata.
GET/<provider>/v1/modelsModelliste for den angivne udbyder i OpenAI-format.
POST/<provider>/v1/chat/completionsOpenAI 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.

IndstillingStandardBeskrivelse
Proxyport8421TCP-porten, som lytteren bindes til. Ændringer kræver genstart af proxytjenesten.
Start server automatiskTilStart proxytjenesten, når appen åbnes.
Tillad LAN-adgangFraNå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-tokenFraNå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
);
Mobilenheder på Wi-Fi: erstat 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/providers er 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": true i 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 i master.key har 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.1 kun. LAN-eksponering er valgfri.
  • Samtaleindhold gemmes ikke. AIProxyServer videresender bytes og glemmer dem straks.