AIProxyServer - Veiledning

Kjør en lokal OpenAI-kompatibel proxy for alle store skybaserte KI-tjenester. Lagre API-nøkler én gang, og la enhver klientapp — for skrivebord, mobil eller nett — kommunisere med http://localhost i stedet for å registrere nøkler i hvert verktøy.


Kom i gang

1. Start appen

Åpne AIProxyServer. Ved første oppstart starter proxyen automatisk og lytter på port 8421 på den lokale maskinen din. Hovedvinduet viser tre seksjoner:

  • Proxy-server — gjeldende status, basis-URL og en knapp for å starte eller stoppe lytteren
  • Bearer-token — valgfri bryter for autentisering og visning av token
  • Leverandører — hver støttede skybaserte KI-leverandør, med en Angi API-nøkkel -knapp per rad

2. Legg til din første API-nøkkel

  1. Velg en hvilken som helst leverandør fra leverandørlisten (for eksempel OpenAI (ChatGPT))
  2. Klikk på Hent API-nøkkel for å åpne leverandørens konsoll i nettleseren, og opprett eller kopier deretter en nøkkel
  3. Klikk på Angi API-nøkkel på samme rad og lim inn verdien i dialogboksen
  4. Klikk på Lagre. Statusetiketten endres til Konfigurert i grønt

3. Koble til en klientapp

Pek enhver OpenAI-kompatibel klient mot proxyen. Basis-URL-en er http://localhost:8421/<provider>/v1. Leverandørsegmentet velger hvilken sky som mottar forespørselen.

# Eksempel: OpenAI Python SDK rettet mot 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 aldri den ekte nøkkelen. AIProxyServer legger ved oppstrømslegitimasjonen når den videresender forespørselen.


Oversikt over grensesnittet

Proxy-serverpanel

FeltBeskrivelse
StatusKjører når lytteren er aktiv, Stoppet ellers.
Basis-URLAdressen klientappene skal bruke, inkludert vertsnavn og port. Klikk på Kopier for å kopiere den til utklippstavlen.
Start / Stopp-knappSlå HTTP-lytteren av eller på uten å avslutte appen.

Bearer-tokenpanel

  • Krev Bearer-token-autentisering — avkrysningsboks som slår autentisering av eller på. Av som standard for problemfri lokal bruk.
  • Token-felt — skrivebeskyttet visning av gjeldende token. Vises som prikker; bruk Kopier for å hente det.
  • Generer på nytt — utsted et nytt tilfeldig token. Eksisterende klienter må oppdateres med den nye verdien.
Vær oppmerksom: Hvis du aktiverer Tillat LAN-tilgang i Innstillinger uten å slå på tokenet, kan alle på samme Wi-Fi-nettverk bruke proxyen og API-nøklene dine. Hjelpeteksten under tokenpanelet varsler deg når du er i denne tilstanden.

Leverandørpanel

Én rad per støttede skybaserte leverandør. Hver rad viser:

  • Visningsnavnet (for eksempel Claude (Anthropic))
  • Konfigurasjonsstatus — grønn Konfigurert når en API-nøkkel er lagret, grå Ikke konfigurert ellers
  • URL-banen klientene dine bruker, f.eks. /anthropic/v1/chat/completions
  • Angi API-nøkkel — åpner en dialogboks for å skrive inn legitimasjon
  • Hent API-nøkkel — åpner leverandørens konsoll i nettleseren

Støttede leverandører

Elleve skybaserte KI-tjenester følger med. De fleste bruker OpenAI Chat Completions-formatet direkte og proxys uendret. Tre (Anthropic, Gemini, ERNIE) bruker sine egne protokoller; AIProxyServer oversetter forespørsler og svar fortløpende, slik at klienten din bare ser OpenAI-formater.

LeverandørRute-prefiksDette trenger du
OpenAI (ChatGPT)/openai/v1API-nøkkel fra platform.openai.com
Claude (Anthropic)/anthropic/v1API-nøkkel fra Anthropic Console
Gemini (Google)/gemini/v1API-nøkkel fra Google AI Studio
Grok (xAI)/grok/v1API-nøkkel fra xAI Console
Azure OpenAI (Copilot)/copilot/v1API-nøkkel samt URL-en til distribusjonsendepunktet ditt
Perplexity/perplexity/v1API-nøkkel fra Perplexity-innstillinger
Groq/groq/v1API-nøkkel fra Groq Cloud
DeepSeek/deepseek/v1API-nøkkel fra DeepSeek Platform
Kimi (Moonshot)/kimi/v1API-nøkkel fra Moonshot Console
Qwen (DashScope)/qwen/v1API-nøkkel fra Alibaba DashScope
ERNIE (Baidu)/ernie/v1Både API Key og Secret Key fra Baidu Qianfan

Leverandørspesifikke merknader

  • Azure OpenAI — lim inn hele distribusjonsendepunktet i Endpoint Base URL -feltet, for eksempel https://my-resource.openai.azure.com/openai/deployments/gpt-4o. Proxyen legger til /chat/completions?api-version=2024-02-01 automatisk.
  • ERNIE — Baidu Qianfan bruker OAuth, så både API Key og Secret Key er påkrevd. AIProxyServer henter og mellomlagrer tilgangstokener i bakgrunnen.
  • Gemini — autentisering skjer med URL-spørringsparameter; proxyen legger den til for deg. Gratisnivåets kvoter per minutt gjelder fortsatt.

API-referanse

Endepunkter

MetodeBaneBeskrivelse
GET/healthAktivitetssjekk. Returnerer tjenestestatus og leverandørliste. Ingen autentisering kreves.
GET/v1/providersKonfigurerte leverandører og metadata.
GET/<provider>/v1/modelsModelliste for den angitte leverandøren, i OpenAI-format.
POST/<provider>/v1/chat/completionsOpenAI Chat Completions-forespørsel. Send stream:true for SSE.

Strømming

Når klienten sender "stream": true, svarer proxyen 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 strømmer oversettes til dette formatet, slik at alle klienter kan bruke én parser.

Autentiseringsoverskrift

Når Krev Bearer-token-autentisering er på, send tokenet fra hovedvinduet med hver forespørsel:

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

Innstillinger

Åpne Innstillinger-vinduet fra tannhjulikonet på den nederste verktøylinjen.

InnstillingStandardBeskrivelse
Proxy-port8421TCP-porten lytteren binder seg til. Endring krever omstart av proxyen.
Start server automatiskStart proxyen når appen åpnes.
Tillat LAN-tilgangAvNår den er av, binder proxyen seg bare til 127.0.0.1. Når den er på, kan andre enheter på Wi-Fi-nettverket ditt nå proxyen.
Krev Bearer-tokenAvNår den er på, må hver forespørsel inkludere tokenet som vises i hovedvinduet. Anbefales sterkt når Tillat LAN-tilgang er på.

Klienteksempler

cURL

# OpenAI (gjennomslipp)
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",  # ignorert når Bearer Token er av
)
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

// Bruk en hvilken som helst OpenAI-kompatibel Dart-klient
final client = OpenAIClient(
  baseUrl: 'http://localhost:8421/anthropic/v1',
  apiKey: '', // brukes ikke når Bearer Token er av
);
Mobile enheter på Wi-Fi: erstatt localhost med Mac-ens LAN-IP (vist i Basis-URL-feltet når Tillat LAN-tilgang er på).

Tips

  • La Bearer-tokenet være av mens du utvikler lokalt; slå det på straks du aktiverer LAN-tilgang.
  • Bruk ulike basis-URL-er per leverandør i klientkoden, slik at du kan bytte leverandør ved å endre én konstant.
  • Proxyen starter automatisk, men du kan stoppe den midlertidig fra hovedvinduet hvis det oppstår en portkonflikt.
  • Hvis en leverandørs gratisnivå begrenser deg, videresendes oppstrømsfeilmeldingen ordrett. Ingen logikk for nye forsøk er skjult for klienten.
  • Endepunktet /v1/providers er nyttig for å finne ut hvilke leverandører som er konfigurert under kjøring.

Feilsøking

Proxyen starter ikke

  • En annen prosess bruker kanskje allerede port 8421. Endre porten i Innstillinger og start proxyen på nytt.
  • Kontroller systemloggen for feilmeldingen som vises ved oppstart.

En forespørsel returnerer 401 Unauthorized

  • Kravet om Bearer-token er på, men klienten sendte ikke en samsvarende Authorization: Bearer ... -overskrift.
  • Leverandørens egen API-nøkkel kan være ugyldig — oppstrømsfeilen videresendes, så kontroller meldingsteksten.

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

  • Åpne leverandørlisten og klikk på Angi API-nøkkel for den aktuelle leverandøren.
  • For ERNIE må både API Key og Secret Key være fylt ut. For Azure OpenAI kreves også Endpoint Base URL.

Mobil enhet kan ikke nå proxyen

  • Slå på Tillat LAN-tilgang i Innstillinger.
  • Bruk LAN-IP-en som vises i Basis-URL-feltet, ikke localhost.
  • Sørg for at begge enhetene er på samme Wi-Fi-nettverk, og at brannmuren tillater innkommende tilkoblinger på proxy-porten.

Strømmesvar kommer på én gang

  • Kontroller at klienten sender "stream": true i JSON-brødteksten.
  • Noen HTTP-biblioteker mellomlagrer SSE som standard — deaktiver svarbuffering på klientsiden.

Personvern

  • API-nøkler lagres kryptert med Fernet i ~/Library/Application Support/AIProxyServer/credentials.enc. Krypteringsnøkkelen i master.key har 0600-tillatelser.
  • Bearer-tokenet lagres, når det er aktivert, også bare i det krypterte hvelvet og skrives aldri til den vanlige innstillingsfilen.
  • Proxyen videresender bare forespørsler til leverandører du uttrykkelig har konfigurert. Den foretar ingen andre utgående kall.
  • Ingen telemetri, ingen analyse, ingen krasjrapportering.
  • Standard nettverksbinding er 127.0.0.1 bare. LAN-eksponering er valgfri.
  • Samtaleinnhold lagres ikke. AIProxyServer videresender byte og glemmer dem umiddelbart.