AIProxyServer - Vejledning

Kør en lokal OpenAI-kompatibel proxy for alle større cloud-AI-tjenester. Gem API-nøgler én gang, og lad enhver klientapp — desktop, mobil eller web — tale med http://localhost i stedet for at registrere nøgler i hvert eneste værktøj.


Kom godt i gang

1. Start appen

Åbn AIProxyServer. Ved første start starter proxyen automatisk og lytter på port 8421 på din lokale maskine. Hovedvinduet viser tre sektioner:

  • Proxy Server — aktuel status, base-URL og en knap til at starte eller stoppe lytteren
  • Bearer Token — valgfri godkendelseskontakt og tokenvisning
  • Providers — alle understøttede cloud-AI-udbydere med en Set API Key-knap pr. række

2. Tilføj din første API-nøgle

  1. Vælg en udbyder fra listen Providers (for eksempel OpenAI (ChatGPT))
  2. Klik på Get API key for at åbne udbyderens konsol i din browser, og opret eller kopier derefter en nøgle
  3. Klik på Set API Key i samme række, og indsæt værdien i dialogen
  4. Klik på Save. Statusetiketten skifter til grønt Configured

3. Forbind en klientapp

Peg enhver OpenAI-kompatibel klient mod proxyen. Base-URL'en er http://localhost:8421/<provider>/v1. Udbyder-segmentet bestemmer, hvilken cloud der modtager forespørgslen.

# Eksempel: OpenAI Python SDK peget mod proxyen
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 vedhæfter upstream-legitimationsoplysningerne, når den videresender forespørgslen.


Oversigt over grænsefladen

Proxy Server-panel

FeltBeskrivelse
StatusRunning når lytteren er aktiv, ellers Stopped.
Base URLDen adresse, klientapps skal bruge, inklusive værtsnavn og port. Klik på Copy for at kopiere den til udklipsholderen.
Start / Stop-knapSlå HTTP-lytteren til og fra uden at afslutte appen.

Bearer Token-panel

  • Require Bearer Token authentication — afkrydsningsfelt der slår godkendelse til eller fra. Slået fra som standard for problemfri lokal brug.
  • Token field — skrivebeskyttet visning af det aktuelle token. Vises som prikker; brug Copy for at hente det.
  • Regenerate — udsted et nyt tilfældigt token. Eksisterende klienter skal opdateres med den nye værdi.
Bemærk: Hvis du aktiverer Allow LAN Access i Settings uden at slå tokenet til, kan enhver på samme Wi-Fi-netværk bruge din proxy og dine API-nøgler. Hintteksten under tokenpanelet advarer dig, når du er i denne tilstand.

Providers-panel

Én række pr. understøttet cloud-udbyder. Hver række viser:

  • Visningsnavnet (for eksempel Claude (Anthropic))
  • Konfigurationsstatus — grøn Configured når en API-nøgle er gemt, ellers grå Not configured
  • URL-stien dine klienter bruger, f.eks. /anthropic/v1/chat/completions
  • Set API Key — åbner en dialog til indtastning af legitimationsoplysninger
  • Get API key — åbner udbyderens konsol i din browser

Understøttede udbydere

Elleve cloud-AI-tjenester er inkluderet. De fleste bruger OpenAI Chat Completions-formatet nativt og videresendes som de er. Tre (Anthropic, Gemini, ERNIE) taler deres egne protokoller; AIProxyServer oversætter forespørgsler og svar i farten, så din klient kun nogensinde ser OpenAI-formater.

UdbyderRutepræfiksHvad du har brug for
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 plus din deployment-endpoint-URL
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 noter

  • Azure OpenAI — indsæt det fulde deployment-endpoint i feltet Endpoint Base URL, for eksempel https://my-resource.openai.azure.com/openai/deployments/gpt-4o. Proxyen tilføjer automatisk /chat/completions?api-version=2024-02-01.
  • ERNIE — Baidu Qianfan bruger OAuth, så både API Key og Secret Key er påkrævet. AIProxyServer anmoder om og cacher adgangstokens i baggrunden.
  • Gemini — godkendelse foregår via en URL-forespørgselsparameter; proxyen tilføjer den for dig. Kvoter pr. minut for gratisniveauet gælder stadig.

API-reference

Endpoints

MetodeStiBeskrivelse
GET/healthLiveness-tjek. Returnerer tjenestestatus og udbyderliste. Ingen godkendelse påkrævet.
GET/v1/providersKonfigurerede udbydere og metadata.
GET/<provider>/v1/modelsModelliste for den givne udbyder i OpenAI-format.
POST/<provider>/v1/chat/completionsOpenAI Chat Completions-forespørgsel. Angiv stream:true for SSE.

Streaming

Når klienten sender "stream": true, svarer proxyen med Server-Sent Events i OpenAI's 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]

Native streams fra Anthropic og Gemini oversættes til dette format, så alle klienter kan bruge en enkelt parser.

Godkendelsesheader

Når Require Bearer Token authentication er slået til, skal du sende tokenet fra hovedvinduet med hver forespørgsel:

Authorization: Bearer <token-shown-in-app>

Indstillinger

Åbn vinduet Settings fra tandhjulsikonet i den nederste værktøjslinje.

IndstillingStandardBeskrivelse
Proxy Port8421TCP-porten som lytteren binder til. Ændring kræver genstart af proxyen.
Auto Start ServerOnStart proxyen når appen starter.
Allow LAN AccessOffNår slået fra, binder proxyen kun til 127.0.0.1. Når slået til, kan andre enheder på dit Wi-Fi nå proxyen.
Require Bearer TokenOffNår slået til, skal hver forespørgsel inkludere det token, der vises i hovedvinduet. Stærkt anbefalet når Allow LAN Access er slået til.

Klienteksempler

cURL

# OpenAI (passthrough)
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 hvilken som helst OpenAI-kompatibel Dart-klient
final client = OpenAIClient(
  baseUrl: 'http://localhost:8421/anthropic/v1',
  apiKey: '', // ubrugt når Bearer Token er slået fra
);
Mobile enheder på Wi-Fi: erstat localhost med din Macs LAN-IP (vises i Base URL-feltet når Allow LAN Access er slået til).

Tips

  • Lad Bearer Token være slået fra mens du udvikler lokalt; slå det til i det øjeblik du aktiverer LAN-adgang.
  • Brug forskellige Base-URL'er pr. udbyder i din klientkode, så du kan skifte udbyder ved at ændre én konstant.
  • Proxyen starter automatisk, men du kan stoppe den midlertidigt fra hovedvinduet, hvis der opstår en portkonflikt.
  • Hvis en udbyders gratisniveau ratebegrænser dig, videresendes upstream-fejlmeddelelsen ordret. Ingen retry-logik er skjult for klienten.
  • Endpointet /v1/providers er nyttigt til at opdage hvilke udbydere der er konfigureret ved kørselstid.

Fejlfinding

Proxyen vil ikke starte

  • En anden proces bruger muligvis allerede port 8421. Skift porten i Settings og genstart proxyen.
  • Tjek systemloggen for fejlmeddelelsen vist ved starttidspunktet.

En forespørgsel 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 er muligvis ugyldig — upstream-fejlen videresendes, så tjek meddelelsesteksten.

En forespørgsel returnerer "API key is not configured"

  • Åbn listen Providers og klik på Set API Key for den pågældende udbyder.
  • For ERNIE skal både API Key og Secret Key udfyldes. For Azure OpenAI er Endpoint Base URL også påkrævet.

Mobil enhed kan ikke nå proxyen

  • Slå Allow LAN Access til i Settings.
  • Brug LAN-IP'en vist i Base URL-feltet, ikke localhost.
  • Sørg for at begge enheder er på samme Wi-Fi-netværk, og at din firewall tillader indgående forbindelser på proxy-porten.

Streaming-svar ankommer på én gang

  • Sørg for at din klient sender "stream": true i JSON-body'en.
  • Nogle HTTP-biblioteker buffrer SSE som standard — deaktivér svarbuffering på klientsiden.

Privatliv

  • API-nøgler gemmes krypteret med Fernet i ~/Library/Application Support/AIProxyServer/credentials.enc. Krypteringsnøglen i master.key har 0600-rettigheder.
  • Bearer Token, når aktiveret, gemmes også kun i det krypterede hvelv og skrives aldrig til den almindelige indstillingsfil.
  • Proxyen videresender kun forespørgsler til udbydere, du eksplicit har konfigureret. Den foretager ingen andre udgående opkald.
  • Ingen telemetri, ingen analyser, ingen nedbrudsrapportering.
  • Standard-netværksbinding er kun 127.0.0.1. LAN-eksponering er opt-in.
  • Samtaleindhold gemmes ikke. AIProxyServer videresender bytes og glemmer dem straks.