Tiga nilai yang Anda butuhkan
Setiap klien yang kompatibel dengan OpenAI meminta tiga hal yang sama. Berikut nilai-nilainya untuk layanan ini.
| Pengaturan | Nilai |
|---|---|
| URL dasar | https://api.getcodexapi.com/v1 |
| Kunci API | Kunci Anda dari halaman kunci API |
| Model | uncensored |
Kunci dikirim sebagai Authorization: Bearer YOUR_KEY. Dua endpoint yang dapat Anda panggil adalah POST /v1/chat/completions dan GET /v1/models. Ini adalah layanan independen yang menjalankan satu model bobot terbuka, bukan Codex milik OpenAI, jadi jangan tempelkan endpoint atau kunci OpenAI asli ke dalam pengaturan yang sama.
Periksa koneksi dengan curl
Sebelum Anda mengedit konfigurasi aplikasi apa pun, konfirmasi bahwa kunci dan URL berfungsi dari terminal. Daftar model adalah pemeriksaan termurah, karena tidak memerlukan prompt:
curl https://api.getcodexapi.com/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"
Anda harus mendapatkan daftar JSON yang mencakup model uncensored. Kemudian kirimkan satu penyelesaian sungguhan:
curl https://api.getcodexapi.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Say hello in five words."}]
}'
Jika kedua panggilan berhasil, masalah dalam kegagalan selanjutnya ada di konfigurasi klien Anda, bukan layanan. Header respons mencakup X-Request-Id, yang berguna untuk disimpan jika Anda perlu melacak panggilan tertentu, dan X-Balance-USD, yang menunjukkan sisa kredit Anda.
Python dengan SDK OpenAI
Paket openai resmi mengambil URL dasar dalam konstruktor klien. Tidak ada perubahan lain pada kode Anda.
from openai import OpenAI
client = OpenAI(
base_url="https://api.getcodexapi.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain what a base URL is in two sentences."},
],
)
print(resp.choices[0].message.content)
Jika Anda lebih suka menjaga konfigurasi di luar kode, SDK juga membaca OPENAI_BASE_URL dan OPENAI_API_KEY dari lingkungan:
export OPENAI_BASE_URL="https://api.getcodexapi.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"
Dengan pengaturan tersebut, OpenAI() tanpa argumen akan mengambilnya. Ini berguna karena banyak alat pihak ketiga yang dibangun di atas SDK mewarisi variabel yang sama tanpa perubahan kode.
Node.js
SDK JavaScript menggunakan nama opsi yang sama, dieja baseURL.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.getcodexapi.com/v1",
apiKey: process.env.API_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Write a haiku about version control." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Streaming dikembalikan sebagai peristiwa yang dikirim server dengan stream: true, dan penggunaan disertakan di akhir. Perlu diingat bahwa permintaan streaming memegang salah satu slot konkurensi Anda hingga stream selesai, sehingga stream yang Anda tinggalkan tanpa menutupnya akan terus dihitung terhadap batas.
Aplikasi yang memiliki layar pengaturan
Alat desktop dan editor biasanya memberi label bidang dengan salah satu dari tiga cara: "URL Dasar", "API Base" atau "endpoint kompatibel OpenAI". Semua menginginkan string yang sama. Beberapa catatan yang menghemat waktu:
- Pilih tipe penyedia OpenAI atau "kompatibel OpenAI kustom", bukan tipe spesifik vendor.
- Ketikkan nama model secara manual jika aplikasi memiliki kotak teks bebas.
uncensoredadalah ID persis. - Jika aplikasi memiliki tombol "tes koneksi", biasanya itu memanggil daftar model, yang didukung API ini.
- Beberapa aplikasi meng-cache daftar model dari penyedia sebelumnya. Hapus entri lama dan tambahkan yang baru jika dropdown terlihat salah.
Untuk contoh kerja di editor tertentu, lihat panduan menghubungkan Cursor, atau halaman API coding untuk gambaran keseluruhan. Referensi parameter lengkap ada di dokumen API.
Setelah koneksi berhasil, simpan nilai persis di tempat yang dapat Anda temukan lagi: URL, nama model, dan tanggal Anda membuat kunci. Tim sering kehilangan satu jam kemudian karena salinan konfigurasi yang masih memegang nilai lama. Satu file contoh bersama di repositori, dengan placeholder sebagai pengganti kunci asli, mencegah hal itu.
Kesalahan umum dan perbaikannya
URL berakhir sebagai /v1/v1
Beberapa klien menambahkan /v1 secara otomatis. Jika permintaan Anda gagal dan log klien menampilkan jalur dengan /v1/v1/chat/completions, hapus /v1 dari URL dasar yang Anda masukkan. Sebaliknya juga terjadi: klien yang tidak menambahkannya memerlukannya dalam pengaturan Anda. Log jalur permintaan menyelesaikan pertanyaan ini dengan cepat.
Anda memasukkan endpoint lengkap ke dalam URL dasar
URL dasar berhenti di /v1. Jangan masukkan /chat/completions di sana. SDK menambahkan jalur untuk setiap panggilan.
Garis miring akhir atau salah ketik di host
Sebagian besar SDK mentolerir garis miring di akhir, tetapi beberapa alat lama membangun jalur dengan penggabungan sederhana dan berakhir dengan garis miring ganda. Hapus jika Anda melihat respons 404 yang aneh.
Kunci salah, atau kunci layanan lain
Kunci OpenAI tidak akan berfungsi di sini, dan kunci kami tidak akan berfungsi di sana. Kesalahan autentikasi hampir selalu berarti masalah salin-tempel, seperti karakter yang hilang atau spasi di akhir.
Berhasil di curl tetapi tidak di aplikasi Anda
Jika curl berhasil dan aplikasi gagal dengan URL dan kunci yang sama, perbedaannya ada di lingkungan. Periksa apakah aplikasi berjalan di balik proxy atau di dalam kontainer tanpa akses keluar, apakah aplikasi membaca variabel lingkungan lama seperti OPENAI_BASE_URL yang tersisa dari proyek lain, dan apakah file konfigurasi menimpa nilai yang Anda atur dalam kode. Mencetak URL akhir yang akan dipanggil klien, tepat sebelum permintaan, menyelesaikan sebagian besar kasus ini dalam satu menit.
HTTP 429
Ini berarti batas telah terpenuhi. Kode kesalahan rate_limited adalah permintaan per menit, dan concurrency adalah terlalu banyak permintaan sekaligus. Kunci penuh memungkinkan 8 permintaan konkuren dan 300 per menit; kunci uji coba memungkinkan 2 dan 60. Saat kelebihan beban sementara, Anda juga mendapatkan 429 dengan header Retry-After: 5, jadi tunggu lima detik dan coba lagi.
LangChain dan menjaga URL di satu tempat
Framework yang dibangun di atas klien OpenAI mengambil nilai yang sama. Dalam integrasi OpenAI LangChain, argumennya dinamai seperti ini:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="uncensored",
base_url="https://api.getcodexapi.com/v1",
api_key="YOUR_API_KEY",
)
print(llm.invoke("Name three uses of a base URL.").content)
Terlepas dari frameworknya, jangan sebar URL di seluruh kode Anda. Letakkan di satu variabel lingkungan atau satu file pengaturan, dan baca dari sana. Dengan cara itu, berpindah antara kunci uji coba dan kunci produksi, atau antara mesin, berarti mengubah satu baris. Ini juga menjaga kunci di luar repositori Anda: simpan kunci di variabel lingkungan atau manajer rahasia, jangan di file yang yang sudah di-commit.
Jika Anda mencari endpoint milik OpenAI untuk produk Codex mereka, ini bukan itu. URL dasar dan autentikasi mereka didokumentasikan oleh OpenAI, jadi ikuti dokumentasi terbaru mereka untuk itu. Alamat di halaman ini milik layanan independen dan hanya menerima kunci yang diterbitkan di sini.
Apa yang dapat Anda kirimkan setelah terhubung
Endpoint mendukung streaming, pemanggilan fungsi (tools, tool_choice, dengan hasil dikembalikan sebagai pesan role: "tool"), dan mode JSON melalui response_format: {"type": "json_object"}. Parameter temperature, top_p, stop, seed dan penalti diteruskan. Jendela konteks adalah 100.000 token untuk prompt plus completion, dan badan permintaan maksimum adalah 8 MB.
Ini hanya teks. Tidak ada generasi gambar atau audio, tidak ada embedding dan tidak ada penyetelan halus, sehingga fitur klien yang bergantung pada hal-hal tersebut tidak akan berfungsi dengan URL dasar ini. Penggunaan ditagihkan per token sebesar $0,15 per 1M input dan $0,50 per 1M output; halaman harga memiliki contoh yang berfungsi.
