ID ▾
Dapatkan kunci API

SDK API DeepSeek: Gunakan SDK OpenAI dan Ganti Endpoint

Tidak ada klien khusus yang harus Anda instal untuk setup SDK DeepSeek: API gaya DeepSeek mengikuti format OpenAI, sehingga SDK OpenAI berfungsi dengan base URL berbeda. Fakta yang sama memungkinkan Anda mengganti ke endpoint lain dengan mengubah tiga nilai.

Diperbarui

Satu blok konektor yang menyuplai beberapa menara server, menggambarkan pengalihan endpoint dengan satu SDK

Poin utama

  • SDK Python dan Node OpenAI berfungsi dengan endpoint kompatibel OpenAI apa pun; Anda mengubah base URL, kunci, dan nama model.
  • Simpan tiga nilai tersebut dalam variabel lingkungan agar penggantian endpoint tidak memerlukan edit kode.
  • Penggantian aman untuk chat biasa, streaming, dan panggilan alat, tetapi uji fitur spesifik model sebelum bergantung padanya.
  • Untuk endpoint ini gunakan https://api.deepseekapi.top/v1 dan id model uncensored.

Mengapa SDK OpenAI adalah SDK API DeepSeek

Ketika orang mencari SDK API DeepSeek, mereka mengharapkan paket dengan nama vendor di atasnya. Pada praktiknya, dokumentasi resmi DeepSeek menggambarkan memanggil API-nya melalui SDK OpenAI dengan base URL berbeda, karena API mengikuti format permintaan dan respons OpenAI. Periksa dokumentasi terbaru mereka untuk base URL dan nama model yang tepat; mereka adalah otoritas atas layanan mereka.

Konsekuensinya berguna. Kode apa pun yang ditulis terhadap pustaka klien OpenAI dapat berbicara dengan server apa pun yang mengimplementasikan endpoint yang sama, yaitu POST /v1/chat/completions, POST /v1/responses, dan GET /v1/models. Berpindah antar penyedia menjadi perubahan konfigurasi daripada penulisan ulang. Sisa artikel ini menunjukkan pola dalam Python, Node, dan curl, lalu struktur yang membuat penggantian menjadi mudah.

Setup Python

Instal paket resmi dan arahkan ke endpoint:

pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://api.deepseekapi.top/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise technical assistant."},
        {"role": "user", "content": "Explain idempotency in two sentences."},
    ],
)
print(resp.choices[0].message.content)
print(resp.usage)

Dapatkan kunci di halaman kunci API. Pengguna baru dapat mengklaim $0,50 kredit uji coba dengan satu klik, tanpa kartu. Artikel Python API DeepSeek membahas lebih dalam tentang bahasa ini, termasuk penanganan kesalahan.

Setup Node.js

npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.deepseekapi.top/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  stream: true,
  messages: [{ role: "user", content: "List four uses of a message queue." }],
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Polanya identik: base URL, kunci, model. Streaming mengembalikan Server-Sent Events, dan pustaka mengubahnya menjadi iterator asinkron. Pemanggilan fungsi mengikuti skema yang sama dengan API lain yang kompatibel dengan OpenAI: teruskan tools, baca tool_calls yang di-stream, dan kembalikan hasil sebagai pesan role: "tool".

Buat endpoint dapat diganti

Jangan mengkodekan tiga nilai secara langsung. Bacalah dari lingkungan dan bungkus pembuatan klien dalam satu fungsi. Kemudian berpindah dari satu endpoint ke endpoint lain berarti mengedit file .env, bukan kode sumber.

import os
from openai import OpenAI

def make_client():
    return OpenAI(
        base_url=os.environ.get("LLM_BASE_URL", "https://api.deepseekapi.top/v1"),
        api_key=os.environ["LLM_API_KEY"],
    )

MODEL = os.environ.get("LLM_MODEL", "uncensored")

def ask(prompt: str) -> str:
    r = make_client().chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": prompt}],
        temperature=0.7,
    )
    return r.choices[0].message.content

Sekarang penyedia lain hanya perlu tiga variabel lingkungan. SDK resmi juga membaca OPENAI_API_BASE dan OPENAI_API_KEY di beberapa versi, tetapi variabel eksplisit lebih jelas dan menghindari kejutan saat Anda menjalankan beberapa penyedia sekaligus.

Jika Anda menggunakan TypeScript atau bahasa lain, idenya sama: satu fungsi pabrik, tiga variabel, tidak ada nama vendor yang tersebar di basis kode. Kesalahan umum adalah membiarkan nama vendor bocor ke dalam nama fungsi, pesan log, dan nama variabel, yang membuat pengalihan di kemudian hari lebih sulit daripada yang diperlukan. Namai berdasarkan tugasnya (ask, summarise) bukan berdasarkan penyedia.

Simpan pengujian kecil yang mengirimkan satu prompt tetap melalui ask() dan memeriksa jawaban yang tidak kosong. Jalankan setelah setiap perubahan endpoint; ini menangkap URL dan kunci yang salah dalam hitungan detik.

Apa yang tetap sama dan apa yang berubah saat Anda mengganti

ItemTetap samaMungkin berubah
Bentuk permintaanpesan, peran, suhu, top_p, stopParameter opsional yang tidak didukung oleh penyedia
StreamingSSE dengan potongan dataDi mana penggunaan muncul dalam aliran
Pemanggilan alatalat, tool_choice, tool_callsSeberapa baik model mengikuti skema
Nama modelBidang yang diperlukanNilai itu sendiri: di sini adalah uncensored
Jendela konteksPrompt plus penyelesaianUkuran: 100.000 token di sini
PerilakuFormat chatGaya, kekuatan, perilaku penolakan

Baris terakhir adalah yang sering menjebak orang. Endpoint kompatibel di tingkat protokol, bukan di tingkat perilaku. Dua penyedia dapat menerima permintaan identik dan memberikan jawaban yang sangat berbeda. Model di sini adalah model bobot terbuka tunggal dari penyedia independen, yang disetel untuk menjawab tanpa penolakan konten untuk penggunaan dewasa yang sah, dan ini bukan API resmi DeepSeek atau lab lain. Uji ulang prompt yang telah Anda setel untuk model lain.

Fitur yang dimiliki endpoint ini, dan yang tidak

  • Didukung: penyelesaian chat, format Respons, daftar model, streaming, panggilan alat, mode JSON (response_format dengan json_object), dan terusan suhu, top_p, stop, seed, dan penalti.
  • Tidak ditawarkan: pembuatan gambar, audio, atau video, embeddings, fine-tuning.
  • Batas: jendela 100.000 token, badan maksimal 8 MB, 8 permintaan paralel dan 300 per menit pada kunci penuh (2 dan 60 pada kunci uji coba).
  • Kesalahan: HTTP 429 dengan kode rate_limited atau concurrency, dan header Retry-After: 5 saat kelebihan beban sementara.

Jika kode Anda memanggil endpoint embeddings, Anda memerlukan penyedia lain untuk bagian itu dan dapat tetap menggunakan chat di sini. Memisahkan berdasarkan tugas adalah alasan umum untuk pola variabel lingkungan di atas.

Daftar periksa migrasi

Saat Anda mengganti satu endpoint dengan endpoint lain dalam proyek yang ada, kerjakan daftar singkat daripada mengubah semuanya sekaligus.

  1. Buktikan endpoint. Kirim satu permintaan dengan curl dan konfirmasi Anda mendapatkan teks kembali. Panggil GET /v1/models dan periksa bahwa id uncensored terdaftar.
  2. Ubah tiga nilai tersebut. Base URL, kunci, nama model, tidak ada yang lain. Jangan sentuh prompt terlebih dahulu.
  3. Jalankan pengujian Anda yang ada. Jika Anda memiliki pengujian regresi prompt, jalankan dan catat yang gagal. Kegagalan biasanya bersifat perilaku, seperti format output yang berbeda, bukan kesalahan protokol.
  4. Periksa parameter. Hapus opsi yang tidak diperlukan endpoint. Pertahankan temperature, top_p, stop, dan seed jika Anda menggunakannya.
  5. Uji streaming dan alat secara terpisah. Bug streaming sering tersembunyi di kode klien yang mengasumsikan tata letak chunk tertentu. Pemanggilan fungsi memerlukan skema yang diikuti model dengan baik, jadi uji dengan fungsi asli Anda.
  6. Ukur biaya dan latensi pada lalu lintas nyata. Bandingkan satu hari permintaan, bukan satu prompt.

Lakukan ini di cabang atau dengan bendera fitur yang mengarahkan sebagian kecil lalu lintas ke endpoint baru. Karena kode klien bersifat bersama, membatalkan perubahan dilakukan dengan mengubah variabel lingkungan.

Tangani pengulangan dan pantau penggunaan

SDK melakukan percobaan ulang untuk beberapa kegagalan secara bawaan, tetapi Anda tetap harus menangani 429 sendiri, karena batas konkurensi itu nyata di lingkungan produksi. Tangkap pengecualian batas laju, tunggu jumlah detik dalam Retry-After (5 saat kelebihan beban), dan lakukan percobaan ulang beberapa kali. Permintaan yang gagal tidak dibebankan biaya, sehingga percobaan ulang aman untuk saldo Anda.

Log usage.prompt_tokens dan usage.completion_tokens pada setiap panggilan. Harga adalah $0,15 per 1 juta token input dan $0,50 per 1 juta token output, sehingga panggilan dengan 2.000 input dan 600 output token biayanya 2.000 × $0,15 / 1 juta + 600 × $0,50 / 1 juta = $0,0003 + $0,0003 = $0,0006. Header respons juga menyertakan X-Balance-USD untuk saldo tersisa. Lihat halaman harga untuk isi saldo dan bonus, serta dokumentasi untuk daftar parameter lengkap.

Editor dan alat lainnya

Tiga nilai tersebut diteruskan ke alat apa pun dengan pengaturan penyedia yang kompatibel dengan OpenAI. Artikel tentang menggunakan API bergaya DeepSeek di Cursor menjelaskan editor seperti itu. Di setiap alat, bidang diberi label sedikit berbeda, tetapi Anda selalu memasukkan base URL yang berakhir dengan /v1, kunci, dan nama model.

Pertanyaan dan jawaban

Apakah ada SDK resmi DeepSeek yang harus saya instal?

Anda tidak memerlukan paket khusus vendor. DeepSeek mendokumentasikan penggunaan SDK OpenAI dengan base URL yang berbeda; periksa dokumentasi mereka untuk detail terbaru.

Tiga nilai apa yang harus saya ubah untuk menggunakan endpoint ini?

URL dasar (https://api.deepseekapi.top/v1), kunci API Anda, dan ID model uncensored.

Apakah kode OpenAI saya yang ada akan bekerja tanpa perubahan?

Chat, streaming, mode JSON, dan pemanggilan alat mengikuti format yang sama, jadi sebagian besar ya. Embedding, gambar, dan audio tidak ditawarkan, dan jawaban berbeda karena modelnya berbeda.

Apakah SDK mengirim kunci dengan benar?

Ya, SDK mengirim Authorization: Bearer dengan kunci Anda secara otomatis.

Kunci Anda hanya selangkah lagi dari satu formulir

Buat akun, salin kunci, ubah URL dasar. Itu saja seluruh proses pengaturannya.

Dapatkan kunci API