Spusťte místní proxy kompatibilní s OpenAI pro všechny hlavní cloudové služby AI. Uložte klíče API jednou a nechte libovolnou klientskou aplikaci — stolní, mobilní nebo webovou — komunikovat s http://localhost místo registrace klíčů v každém nástroji.
Začínáme
1. Spusťte aplikaci
Otevřete AIProxyServer. Při prvním spuštění se proxy automaticky spustí a naslouchá na portu 8421 vašeho místního počítače. Hlavní okno zobrazuje tři části:
- Proxy server — aktuální stav, základní URL a tlačítko pro spuštění nebo zastavení naslouchání
- Bearer Token — volitelné přepnutí ověřování a zobrazení tokenu
- Poskytovatelé — každý podporovaný cloudový poskytovatel s tlačítkem Nastavit klíč API v každém řádku
2. Přidejte první klíč API
- Vyberte libovolného poskytovatele ze seznamu Providers (například OpenAI (ChatGPT))
- Klikněte na Získat klíč API otevřete konzoli poskytovatele v prohlížeči a pak vytvořte nebo zkopírujte klíč
- Klikněte na Nastavit klíč API ve stejném řádku a vložte hodnotu do dialogového okna
- Klikněte na Uložit. Štítek stavu se změní na Nakonfigurováno zeleně
3. Připojte klientskou aplikaci
Nasměrujte libovolného klienta kompatibilního s OpenAI na proxy. Base URL je http://localhost:8421/<provider>/v1. Segment poskytovatele určuje, který cloud požadavek přijme.
# Příklad: OpenAI Python SDK nasměrované na proxy
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)
Klient nikdy neuvidí skutečný klíč. AIProxyServer při přeposílání požadavku připojí přihlašovací údaje pro upstream.
Přehled rozhraní
Panel Proxy Server
| Pole | Popis |
|---|---|
| Stav | Spuštěno když je naslouchání aktivní, Zastaveno jinak. |
| Base URL | Adresa, kterou mají klientské aplikace používat, včetně názvu hostitele a portu. Klikněte na Kopírovat pro zkopírování do schránky. |
| Tlačítko Start / Stop | Přepíná HTTP listener bez ukončení aplikace. |
Panel Bearer Token
- Vyžadovat ověřování pomocí Bearer Tokenu — zaškrtávací políčko, které zapíná nebo vypíná ověřování. Ve výchozím nastavení vypnuto pro snadné místní použití.
- Pole tokenu — zobrazení aktuálního tokenu jen pro čtení. Zobrazuje se jako tečky; použijte Kopírovat pro jeho získání.
- Znovu vygenerovat — vydá nový náhodný token. Stávající klienty je nutné aktualizovat novou hodnotou.
Panel Providers
Jeden řádek pro každého podporovaného cloudového poskytovatele. Každý řádek zobrazuje:
- Zobrazovaný název (například Claude (Anthropic))
- Stav konfigurace — zelený Nakonfigurováno když je klíč API uložen, šedý Nenakonfigurováno jinak
- Cesta URL, kterou vaši klienti používají, např.
/anthropic/v1/chat/completions - Nastavit klíč API — otevře dialog pro zadání přihlašovacích údajů
- Získat klíč API — otevře konzoli poskytovatele v prohlížeči
Podporovaní poskytovatelé
Je součástí jedenáct cloudových služeb AI. Většina nativně používá formát OpenAI Chat Completions a je proxyována beze změny. Tři (Anthropic, Gemini, ERNIE) používají vlastní protokoly; AIProxyServer převádí požadavky a odpovědi za běhu, takže klient vždy vidí jen formát OpenAI.
| Poskytovatel | Předpona trasy | Co potřebujete |
|---|---|---|
| OpenAI (ChatGPT) | /openai/v1 | Klíč API od platform.openai.com |
| Claude (Anthropic) | /anthropic/v1 | Klíč API z Anthropic Console |
| Gemini (Google) | /gemini/v1 | Klíč API z Google AI Studio |
| Grok (xAI) | /grok/v1 | Klíč API z xAI Console |
| Azure OpenAI (Copilot) | /copilot/v1 | Klíč API a URL vašeho koncového bodu nasazení |
| Perplexity | /perplexity/v1 | Klíč API z nastavení Perplexity |
| Groq | /groq/v1 | Klíč API z Groq Cloud |
| DeepSeek | /deepseek/v1 | Klíč API z DeepSeek Platform |
| Kimi (Moonshot) | /kimi/v1 | Klíč API z Moonshot Console |
| Qwen (DashScope) | /qwen/v1 | Klíč API z Alibaba DashScope |
| ERNIE (Baidu) | /ernie/v1 | Klíč API i Secret Key z Baidu Qianfan |
Poznámky pro jednotlivé poskytovatele
- Azure OpenAI — vložte celý koncový bod nasazení do pole Endpoint Base URL , například
https://my-resource.openai.azure.com/openai/deployments/gpt-4o. Proxy automaticky připojí/chat/completions?api-version=2024-02-01. - ERNIE — Baidu Qianfan používá OAuth, proto jsou vyžadovány oba klíče API Key a Secret Key . AIProxyServer na pozadí vyžádá tokeny přístupu a uloží je do mezipaměti.
- Gemini — ověřování probíhá pomocí parametru dotazu URL; proxy jej přidá za vás. Nadále platí minutové kvóty bezplatné úrovně.
Referenční dokumentace API
Koncové body
| Metoda | Cesta | Popis |
|---|---|---|
| GET | /health | Kontrola dostupnosti. Vrací stav služby a seznam poskytovatelů. Ověřování není vyžadováno. |
| GET | /v1/providers | Nakonfigurovaní poskytovatelé a metadata. |
| GET | /<provider>/v1/models | Seznam modelů pro daného poskytovatele ve formátu OpenAI. |
| POST | /<provider>/v1/chat/completions | Požadavek OpenAI Chat Completions. Předejte stream:true pro SSE. |
Streamování
Když klient odešle "stream": true, proxy odpoví událostmi Server-Sent Events ve formátu OpenAI:
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant"},...}]}
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"},...}]}
data: [DONE]
Nativní streamy Anthropic a Gemini jsou převedeny do tohoto tvaru, takže všichni klienti mohou používat jediný parser.
Hlavička ověřování
Když je Vyžadovat ověřování pomocí Bearer Tokenu zapnuto, odešlete s každým požadavkem token z hlavního okna:
Authorization: Bearer <token-shown-in-app>
Nastavení
Otevřete okno Settings pomocí ikony ozubeného kola na spodní liště nástrojů.
| Nastavení | Výchozí hodnota | Popis |
|---|---|---|
| Port proxy | 8421 | Port TCP, na který se listener váže. Změna vyžaduje restartování proxy. |
| Automaticky spouštět server | Zapnuto | Spustí proxy při spuštění aplikace. |
| Povolit přístup k LAN | Vypnuto | Když je vypnuto, proxy se váže pouze na 127.0.0.1. Když je zapnuto, mohou proxy dosáhnout ostatní zařízení ve vaší síti Wi-Fi. |
| Vyžadovat Bearer Token | Vypnuto | Když je zapnuto, každý požadavek musí obsahovat token zobrazený v hlavním okně. Důrazně doporučeno vždy, když je zapnuto Allow LAN Access. |
Příklady klientů
cURL
# OpenAI (přímé předání)
curl http://localhost:8421/openai/v1/chat/completions \\
-H "Content-Type: application/json" \\
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello"}]
}'
# Claude ve stejném formátu OpenAI
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", # ignoruje se, když je Bearer Token vypnutý
)
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
// Použití libovolného klienta Dart kompatibilního s OpenAI
final client = OpenAIClient(
baseUrl: 'http://localhost:8421/anthropic/v1',
apiKey: '', // nepoužívá se, když je Bearer Token vypnutý
);
localhost IP adresou LAN vašeho Macu (zobrazenou v poli Base URL, když je Povolit přístup k LAN zapnuto).Tipy
- Při místním vývoji nechte Bearer Token vypnutý; zapněte jej hned, jak povolíte přístup přes LAN.
- V kódu klienta používejte pro každého poskytovatele odlišné Base URL, abyste mohli poskytovatele změnit úpravou jedné konstanty.
- Proxy se spouští automaticky, ale pokud dojde ke konfliktu portů, můžete ji dočasně zastavit z hlavního okna.
- Pokud vás bezplatná úroveň poskytovatele omezuje rychlostí, upstreamová chybová zpráva se přepošle doslovně. Před klientem není skryta žádná logika opakování.
- Koncový bod
/v1/providersje užitečný k zjištění, kteří poskytovatelé jsou za běhu nakonfigurováni.
Řešení potíží
Proxy se nespustí
- Port 8421 možná již používá jiný proces. Změňte port v Settings a restartujte proxy.
- Zkontrolujte systémový protokol, kde najdete chybovou zprávu zobrazenou při spuštění.
Požadavek vrátí 401 Unauthorized
- Požadavek na Bearer Token je zapnutý, ale klient neodeslal odpovídající
Authorization: Bearer ...hlavičku. - Vlastní klíč API poskytovatele může být neplatný — upstreamová chyba je přeposlána, proto zkontrolujte tělo zprávy.
Požadavek vrátí „API key is not configured“
- Otevřete seznam Providers a klikněte na Nastavit klíč API pro příslušného poskytovatele.
- Pro ERNIE musí být vyplněny API Key i Secret Key. Pro Azure OpenAI je také vyžadováno Endpoint Base URL.
Mobilní zařízení nemůže dosáhnout proxy
- Zapněte Povolit přístup k LAN v Settings.
- Použijte IP adresu LAN zobrazenou v poli Base URL, nikoli
localhost. - Ujistěte se, že jsou obě zařízení ve stejné síti Wi-Fi a firewall povoluje příchozí připojení na port proxy.
Odpovědi streamování přicházejí všechny najednou
- Ujistěte se, že klient odesílá
"stream": truev těle JSON. - Některé knihovny HTTP ve výchozím nastavení ukládají SSE do vyrovnávací paměti — vypněte ukládání odpovědí do vyrovnávací paměti na straně klienta.
Soukromí
- Klíče API jsou uloženy zašifrovaně pomocí Fernet v
~/Library/Application Support/AIProxyServer/credentials.enc. Šifrovací klíč vmaster.keymá oprávnění 0600. - Bearer Token je po zapnutí také uložen pouze v zašifrovaném trezoru a nikdy není zapsán do běžného souboru nastavení.
- Proxy přeposílá požadavky pouze poskytovatelům, které jste výslovně nakonfigurovali. Neprovádí žádná jiná odchozí volání.
- Žádná telemetrie, žádná analytika, žádné hlášení pádů.
- Výchozí síťové vazby jsou
127.0.0.1pouze. Vystavení do LAN je volitelné. - Obsah konverzace se neukládá. AIProxyServer přepošle bajty a okamžitě na ně zapomene.