AIProxyServer - Panduan

Jalankan proksi serasi OpenAI secara tempatan untuk setiap perkhidmatan AI awan utama. Simpan kunci API sekali sahaja dan benarkan mana-mana aplikasi klien — desktop, mudah alih atau web — berkomunikasi dengan http://localhost bukannya mendaftarkan kunci dalam setiap alat.


Bermula

1. Lancarkan Aplikasi

Buka AIProxyServer. Pada pelancaran pertama, proksi bermula secara automatik dan mendengar pada port 8421 pada mesin tempatan anda. Tetingkap utama memaparkan tiga bahagian:

  • Pelayan Proksi — status semasa, URL asas dan butang untuk memulakan atau menghentikan pendengar
  • Token Bearer — togol pengesahan pilihan dan paparan token
  • Penyedia — setiap penyedia AI awan yang disokong, dengan butang Tetapkan Kunci API bagi setiap baris

2. Tambahkan Kunci API Pertama Anda

  1. Pilih mana-mana penyedia daripada senarai Penyedia (contohnya OpenAI (ChatGPT))
  2. Klik Dapatkan kunci API untuk membuka konsol penyedia dalam pelayar anda, kemudian cipta atau salin kunci
  3. Klik Tetapkan Kunci API pada baris yang sama dan tampalkan nilainya ke dalam dialog
  4. Klik Simpan. Label status bertukar kepada Dikonfigurasikan dalam warna hijau

3. Sambungkan Aplikasi Klien

Halakan mana-mana klien serasi OpenAI kepada proksi. URL Asas ialah http://localhost:8421/<provider>/v1. Segmen penyedia menentukan awan yang menerima permintaan.

# Contoh: OpenAI Python SDK dihalakan kepada proksi
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)

Klien tidak pernah melihat kunci sebenar. AIProxyServer melampirkan kelayakan huluan apabila ia memajukan permintaan.


Gambaran Keseluruhan Antara Muka

Panel Pelayan Proksi

MedanPerihalan
StatusBerjalan apabila pendengar aktif, Dihentikan sebaliknya.
URL AsasAlamat yang patut digunakan oleh aplikasi klien, termasuk nama hos dan port. Klik Salin untuk menyalinnya ke papan keratan.
Butang Mula / HentiTogol pendengar HTTP tanpa menutup aplikasi.

Panel Token Bearer

  • Wajibkan pengesahan Token Bearer — kotak semak yang menghidupkan atau mematikan pengesahan. Dimatikan secara lalai untuk penggunaan tempatan yang mudah.
  • Medan token — paparan baca sahaja bagi token semasa. Ditunjukkan sebagai titik; gunakan Salin untuk mengambilnya.
  • Jana Semula — keluarkan token rawak baharu. Klien sedia ada mesti dikemas kini dengan nilai baharu.
Perhatian: Jika anda mengaktifkan Benarkan Akses LAN dalam Tetapan tanpa menghidupkan token, sesiapa pada rangkaian Wi-Fi yang sama boleh menggunakan proksi dan kunci API anda. Teks petunjuk di bawah panel token memberi amaran apabila anda berada dalam keadaan itu.

Panel Penyedia

Satu baris bagi setiap penyedia awan yang disokong. Setiap baris memaparkan:

  • Nama paparan (contohnya Claude (Anthropic))
  • Status konfigurasi — hijau Dikonfigurasikan apabila kunci API disimpan, kelabu Belum dikonfigurasikan sebaliknya
  • Laluan URL yang digunakan oleh klien anda, cth. /anthropic/v1/chat/completions
  • Tetapkan Kunci API — membuka dialog untuk memasukkan kelayakan
  • Dapatkan kunci API — membuka konsol penyedia dalam pelayar anda

Penyedia yang Disokong

Sebelas perkhidmatan AI awan disertakan. Kebanyakannya menggunakan format OpenAI Chat Completions secara asli dan diproksikan seperti sedia ada. Tiga perkhidmatan (Anthropic, Gemini, ERNIE) menggunakan protokol sendiri; AIProxyServer menterjemah permintaan dan respons secara langsung supaya klien anda hanya melihat bentuk OpenAI.

PenyediaAwalan laluanPerkara yang anda perlukan
OpenAI (ChatGPT)/openai/v1Kunci API daripada platform.openai.com
Claude (Anthropic)/anthropic/v1Kunci API daripada Anthropic Console
Gemini (Google)/gemini/v1Kunci API daripada Google AI Studio
Grok (xAI)/grok/v1Kunci API daripada xAI Console
Azure OpenAI (Copilot)/copilot/v1Kunci API serta URL titik akhir penggunaan anda
Perplexity/perplexity/v1Kunci API daripada tetapan Perplexity
Groq/groq/v1Kunci API daripada Groq Cloud
DeepSeek/deepseek/v1Kunci API daripada DeepSeek Platform
Kimi (Moonshot)/kimi/v1Kunci API daripada Moonshot Console
Qwen (DashScope)/qwen/v1Kunci API daripada Alibaba DashScope
ERNIE (Baidu)/ernie/v1Kedua-dua API Key dan Secret Key daripada Baidu Qianfan

Nota khusus penyedia

  • Azure OpenAI — tampalkan titik akhir penggunaan penuh ke dalam Medan URL Asas Titik Akhir , contohnya https://my-resource.openai.azure.com/openai/deployments/gpt-4o. Proksi menambahkan /chat/completions?api-version=2024-02-01 secara automatik.
  • ERNIE — Baidu Qianfan menggunakan OAuth, jadi kedua-dua API Key dan Secret Key diperlukan. AIProxyServer meminta dan menyimpan cache token akses di latar belakang.
  • Gemini — pengesahan menggunakan parameter pertanyaan URL; proksi menambahkannya untuk anda. Kuota seminit peringkat percuma masih terpakai.

Rujukan API

Titik akhir

KaedahLaluanPerihalan
GET/healthSemakan kesiagaan. Mengembalikan status perkhidmatan dan senarai penyedia. Tiada pengesahan diperlukan.
GET/v1/providersPenyedia yang dikonfigurasikan dan metadata.
GET/<provider>/v1/modelsSenarai model bagi penyedia tertentu, dalam format OpenAI.
POST/<provider>/v1/chat/completionsPermintaan OpenAI Chat Completions. Hantar stream:true untuk SSE.

Penstriman

Apabila klien menghantar "stream": true, proksi membalas dengan Server-Sent Events dalam format 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]

Strim asli Anthropic dan Gemini diterjemahkan kepada bentuk ini supaya semua klien boleh menggunakan satu penghurai.

Pengepala pengesahan

Apabila Wajibkan pengesahan Token Bearer dihidupkan, hantarkan token daripada tetingkap utama bersama setiap permintaan:

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

Tetapan

Buka tetingkap Tetapan daripada ikon gear dalam bar alat bawah.

TetapanLalaiPerihalan
Port Proksi8421Port TCP yang diikat oleh pendengar. Perubahan memerlukan proksi dimulakan semula.
Mula Pelayan Secara AutomatikHidupMulakan proksi apabila aplikasi dilancarkan.
Benarkan Akses LANMatiApabila dimatikan, proksi hanya mengikat kepada 127.0.0.1. Apabila dihidupkan, peranti lain pada Wi-Fi anda boleh mencapai proksi.
Wajibkan Token BearerMatiApabila dihidupkan, setiap permintaan mesti menyertakan token yang dipaparkan dalam tetingkap utama. Sangat disyorkan setiap kali Benarkan Akses LAN dihidupkan.

Contoh Klien

cURL

# OpenAI (laluan terus)
curl http://localhost:8421/openai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

# Claude melalui bentuk OpenAI yang sama
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",  # diabaikan apabila Token Bearer dimatikan
)
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

// Menggunakan mana-mana klien Dart yang serasi OpenAI
final client = OpenAIClient(
  baseUrl: 'http://localhost:8421/anthropic/v1',
  apiKey: '', // tidak digunakan apabila Token Bearer dimatikan
);
Peranti mudah alih pada Wi-Fi: gantikan localhost dengan IP LAN Mac anda (ditunjukkan dalam medan URL Asas apabila Benarkan Akses LAN dihidupkan).

Petua

  • Biarkan Token Bearer dimatikan semasa anda membangunkan secara tempatan; hidupkannya sebaik sahaja anda mengaktifkan akses LAN.
  • Gunakan URL Asas yang berbeza bagi setiap penyedia dalam kod klien supaya anda boleh menukar penyedia dengan menukar satu pemalar.
  • Proksi bermula secara automatik, tetapi anda boleh menghentikannya sementara dari tetingkap utama jika berlaku konflik port.
  • Jika peringkat percuma penyedia mengehadkan kadar anda, mesej ralat huluan dimajukan tanpa perubahan. Tiada logik cuba semula disembunyikan daripada klien.
  • Titik akhir /v1/providers berguna untuk mengetahui penyedia yang dikonfigurasikan semasa waktu jalanan.

Penyelesaian Masalah

Proksi tidak dapat dimulakan

  • Proses lain mungkin sudah menggunakan port 8421. Tukar port dalam Tetapan dan mulakan semula proksi.
  • Semak log sistem untuk mesej ralat yang dipaparkan pada masa mula.

Permintaan mengembalikan 401 Unauthorized

  • Keperluan Token Bearer dihidupkan tetapi klien tidak menghantar Authorization: Bearer ... pengepala.
  • Kunci API penyedia sendiri mungkin tidak sah — ralat huluan dimajukan, jadi semak isi mesej.

Permintaan mengembalikan "API key is not configured"

  • Buka senarai Penyedia dan klik Tetapkan Kunci API untuk penyedia berkenaan.
  • Untuk ERNIE, kedua-dua API Key dan Secret Key mesti diisi. Untuk Azure OpenAI, URL Asas Titik Akhir juga diperlukan.

Peranti mudah alih tidak dapat mencapai proksi

  • Hidupkan Benarkan Akses LAN dalam Tetapan.
  • Gunakan IP LAN yang ditunjukkan dalam medan URL Asas, bukan localhost.
  • Pastikan kedua-dua peranti berada pada rangkaian Wi-Fi yang sama dan tembok api anda membenarkan sambungan masuk pada port proksi.

Respons penstriman tiba serentak

  • Pastikan klien anda menghantar "stream": true dalam badan JSON.
  • Sesetengah pustaka HTTP menyangga SSE secara lalai — nyahdayakan penimbalan respons pada bahagian klien.

Privasi

  • Kunci API disimpan secara disulitkan dengan Fernet dalam ~/Library/Application Support/AIProxyServer/credentials.enc. Kunci penyulitan dalam master.key mempunyai kebenaran 0600.
  • Token Bearer, apabila dihidupkan, juga hanya disimpan dalam peti simpanan disulitkan dan tidak pernah ditulis ke fail tetapan biasa.
  • Proksi hanya memajukan permintaan kepada penyedia yang telah anda konfigurasikan secara jelas. Ia tidak membuat panggilan keluar lain.
  • Tiada telemetri, tiada analitis, tiada pelaporan ranap.
  • Pengikatan rangkaian lalai ialah 127.0.0.1 sahaja. Pendedahan LAN adalah pilihan.
  • Kandungan perbualan tidak disimpan. AIProxyServer memajukan bait dan terus melupakannya.