Kembali ke blog

MemulaiPanduan

Permintaan pertama ke CheapTokens dengan HTTPie: kunci di env, = dan :=

Satu perintah http yang mudah dibaca yang mengirim chat completion dengan kunci di variabel environment, lalu menunjukkan di mana jawaban dan penggunaan token berada.

Oleh CheapTokens TeamDiterbitkan 4 menit baca

Terminal yang menampilkan perintah http dengan variabel kunci bearer dan field JSON
Di halaman ini
  1. Apa yang sebenarnya dilakukan = dan :=
  2. Di mana jawabannya
  3. Tukar model: ubah satu field
  4. Berapa biaya satu permintaan uji
  5. Jika tidak berhasil

Anda ingin tahu bahwa kunci berfungsi dan id model sudah benar, dan Anda ingin mengetahuinya dalam satu baris. Perintah http HTTPie melakukan itu dengan jauh lebih sedikit tanda kutip daripada curl: Anda mengetik field, ia membangun JSON. Berikut adalah keseluruhan permintaan, dan sisa artikel menjelaskan setiap bagian.

bash
export CHEAPTOKENS_API_KEY="paste-your-key-here"

http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=deepseek-ai/DeepSeek-V4-Flash-0731 \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]'

API ini kompatibel dengan OpenAI, jadi base URL-nya adalah https://api.cheaptokens.dev/v1 dan permintaan chat dikirim ke /chat/completions di bawahnya. Id model adalah yang lengkap, deepseek-ai/DeepSeek-V4-Flash-0731 (nama pendek dari tabel harga tidak diterima). Jika Anda belum pernah menyimpan kunci sebelumnya, simpan kunci API dengan aman terlebih dahulu: mengetik baris export menaruh kunci di riwayat shell Anda, jadi file profil atau secrets manager adalah tempat yang lebih baik untuknya.

Permintaan di terminal: kunci bearer dari variabel, model sebagai string, max_tokens sebagai angka, messages sebagai array mentah
Permintaan yang sama seperti tampilannya di terminal

Apa yang sebenarnya dilakukan = dan :=#

Ini satu-satunya bagian HTTPie yang harus Anda pelajari. Dokumentasi JSON HTTPie (versi 3.2.4, tertanggal 1 November 2024, dibaca pada 9 November 2026) menyatakan = menetapkan field string dan := menetapkan nilai JSON mentah: angka, boolean, array, atau objek. Field yang diberikan dengan cara ini dikirim sebagai body JSON secara default, jadi Anda tidak menambahkan header Content-Type sendiri.

Dalam permintaan kita, itu menghasilkan tiga bentuk berbeda:

  • model=deepseek-ai/DeepSeek-V4-Flash-0731 adalah string, jadi =.
  • max_tokens:=200 adalah angka, jadi :=. Dengan = Anda akan mengirim string "200".
  • messages:=[…] adalah array objek, jadi := lagi, dan nilainya ditaruh dalam tanda kutip tunggal agar shell membiarkan tanda kutip ganda di dalamnya.

Dokumentasi juga menyatakan body dari stdin tidak dapat digabungkan dengan field baris perintah, jadi pilih satu gaya. Untuk pengujian pertama, field lebih pendek dan lebih mudah diedit.

Cek cepat

Apa yang dikirim max_tokens=200 (dengan = biasa)?

Tampilkan jawaban

Jawaban: String "200"

= selalu menghasilkan string. Untuk angka Anda perlu :=, jadi tulis max_tokens:=200.

Di mana jawabannya#

Balasan mengikuti format chat-completions OpenAI. Anda mencari tiga hal, dan ketiganya berada di tempat berbeda:

json
{
  "choices": [
    {
      "message": { "role": "assistant", "content": "…the answer text…" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}

Teks jawaban adalah choices[0].message.content. finish_reason ada di sebelahnya dalam choice yang sama, dan usage berada di level teratas. usage menunjukkan berapa token yang Anda kirim (prompt_tokens) dan berapa yang ditulis model (completion_tokens), yang berguna untuk memperkirakan biaya sebuah permintaan.

Di mana harus melihat dalam respons: choices, message.content, finish_reason dan usage
Tiga field yang harus dibaca di setiap respons

Jika Anda hanya ingin teksnya, salurkan body ke jq:

bash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=deepseek-ai/DeepSeek-V4-Flash-0731 \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]' \
  | jq -r '.choices[0].message.content'
Coba sendiriCobalah: buat batasnya terlalu kecil dan baca finish_reasonTampilkan jawaban

Ubah max_tokens:=200 menjadi max_tokens:=5 dan jalankan lagi. Jawaban terpotong, dan finish_reason terbaca length alih-alih stop: batasnya yang menghentikan model, bukan akhir pemikiran. Mengapa jawaban terpotong membahas solusinya.

Tukar model: ubah satu field#

Model adalah satu string, jadi mencoba yang lain adalah edit satu kata. Kedua id di bawah tersedia di CheapTokens dengan satu saldo; DeepSeek-V4-Flash memberi Anda konteks 380K dan hingga 32.768 token output per jawaban, GLM-5.3-Flash konteks 390K dan hingga 8.192.

Satu permintaan, dua model

DeepSeek-V4-Flash

bash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=deepseek-ai/DeepSeek-V4-Flash-0731 \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'

GLM-5.3-Flash

bash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=zai-org/GLM-5.3-Flash \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'

Tidak yakin id mana yang harus dipakai? Daftar model dengan GET /v1/models dan salin string persisnya.

Berapa biaya satu permintaan uji#

Pertanyaan singkat seperti ini murah. Katakanlah pertanyaannya sekitar 100 token dan jawabannya sekitar 150: permintaan itu berbiaya $0.000017. Seribu permintaan seperti ini tampak seperti berikut, dengan input dan output dihitung bersama:

Model Per permintaan 1.000 permintaan OpenRouter, 1.000 permintaan
GLM-5.3-Flash $0.000008 $0.008 $0.0158
DeepSeek-V4-Flash $0.000017 $0.0165 $0.028
MiniMax-M2.7 $0.000028 $0.0275 $0.33

100 token input dan 150 token output per permintaan. Harga per 1 juta token adalah harga saat ini dan berubah seiring tarif kami; kolom OpenRouter menunjukkan harga referensi untuk beban kerja yang sama.

Secara total, dengan input dan output dihitung bersama, DeepSeek-V4-Flash lebih murah daripada OpenRouter, dan harganya adalah satu tarif tetap tanpa jam sibuk. Tarif terkini untuk setiap model ada di halaman harga.

Jika tidak berhasil#

  • Anda mengetik messages=[…] dengan = biasa. Array terkirim sebagai string, bukan daftar pesan. Gunakan := dan tanda kutip tunggal di sekitar seluruh nilai.
  • JSON di dalam := tidak valid. Setiap kunci dan string memerlukan tanda kutip ganda, dan tanda kutip luarnya harus tunggal. Jika Anda mengedit teks pesan, jaga tanda kutipnya tetap seimbang.
  • Kuncinya kosong. echo ${#CHEAPTOKENS_API_KEY} mencetak panjangnya tanpa menampilkan kunci; 0 berarti variabel tidak diatur di terminal ini.
  • Id modelnya adalah nama pendek. Gunakan deepseek-ai/DeepSeek-V4-Flash-0731 lengkap. Untuk jawaban 401 dan 404, lihat kunci, base URL, atau id model yang salah.
  • Anda menggunakan --session. Dokumentasi autentikasi HTTPie menyatakan file sesi menyimpan kredensial dalam teks biasa, jadi simpan kunci di environment dan biarkan --session di luar perintah ini.

Periksa versi Anda dengan http --version jika sebuah flag berperilaku berbeda dari yang di atas. Lebih suka Python? Permintaan yang sama tanpa SDK ada di permintaan pertama di Python dengan requests. Untuk referensi API lengkap, lihat dokumentasi CheapTokens.