Bloga dön

BaşlarkenKılavuz

HTTPie ile CheapTokens'e ilk istek: anahtar ortamda, = ve :=

Anahtar bir ortam değişkenindeyken bir sohbet tamamlama gönderen ve ardından cevabın ve token kullanımının nerede olduğunu gösteren okunabilir tek bir http komutu.

Yazan: CheapTokens TeamYayınlanma tarihi: 4 dk okuma

Bearer anahtar değişkeni ve JSON alanları içeren bir http komutunu gösteren terminal
Bu sayfada
  1. = ve := aslında ne yapar
  2. Cevap nerede
  3. Modeli değiştir: bir alanı değiştir
  4. Bir test isteğinin maliyeti
  5. Çalışmazsa

Anahtarın çalıştığını ve model kimliğinin doğru olduğunu bilmek istiyorsunuz ve bunu tek satırda öğrenmek istiyorsunuz. HTTPie'nin http komutu bunu curl'e göre çok daha az tırnak işaretiyle yapar: alanları siz yazarsınız, o JSON'u oluşturur. İşte tüm istek ve makalenin geri kalanı her parçayı açıklıyor.

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, OpenAI uyumludur, bu nedenle temel URL https://api.cheaptokens.dev/v1'dir ve sohbet istekleri bunun altındaki /chat/completions adresine gider. Model kimliği tam olandır, deepseek-ai/DeepSeek-V4-Flash-0731 (fiyat tablolarındaki kısa ad kabul edilmez). Daha önce bir anahtar saklamadıysanız, önce bir API anahtarını güvenli bir şekilde saklayın: export satırını yazmak anahtarı kabuk geçmişinize koyar, bu nedenle bir profil dosyası veya bir sır yöneticisi onun için daha iyi bir yerdir.

Terminalde istek: değişkenden bearer anahtarı, model bir dize olarak, max_tokens bir sayı olarak, messages ham bir dizi olarak
Terminalde göründüğü şekliyle aynı istek

= ve := aslında ne yapar#

HTTPie'de öğrenmeniz gereken tek kısım budur. HTTPie'nin JSON belgeleri (sürüm 3.2.4, 1 Kasım 2024 tarihli, 9 Kasım 2026'da okundu) ='in bir dize alanı ayarladığını ve :='nin ham bir JSON değeri ayarladığını söyler: bir sayı, bir boolean, bir dizi veya bir nesne. Bu şekilde verilen alanlar varsayılan olarak bir JSON gövdesi olarak gönderilir, bu nedenle kendiniz bir Content-Type başlığı eklemezsiniz.

İsteğimizde bu üç farklı şekil verir:

  • model=deepseek-ai/DeepSeek-V4-Flash-0731 bir dizedir, yani =.
  • max_tokens:=200 bir sayıdır, yani :=. = ile "200" dizesini gönderirdiniz.
  • messages:=[…] bir nesne dizisidir, yani yine := ve değer tek tırnak içine alınır, böylece kabuk içteki çift tırnaklara dokunmaz.

Belgeler ayrıca stdin'den gelen bir gövdenin komut satırı alanlarıyla birleştirilemeyeceğini söyler, bu nedenle bir stil seçin. İlk test için alanlar daha kısa ve düzenlemesi daha kolaydır.

Hızlı kontrol

max_tokens=200 (düz bir = ile) ne gönderir?

Cevabı göster

Cevap: "200" dizesi

= her zaman bir dize oluşturur. Bir sayı için := gerekir, bu nedenle max_tokens:=200 yazın.

Cevap nerede#

Yanıt, OpenAI sohbet tamamlama formatını izler. Üç şey arıyorsunuz ve bunlar farklı yerlerde duruyor:

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

Cevap metni choices[0].message.content'dir. finish_reason aynı seçimde onun yanındadır ve usage üst düzeydedir. usage kaç token gönderdiğinizi (prompt_tokens) ve modelin kaç tane yazdığını (completion_tokens) gösterir, bu da bir isteğin maliyetini tahmin etmek için kullanışlıdır.

Yanıtta nereye bakılır: choices, message.content, finish_reason ve usage
Her yanıtta okunacak üç alan

Yalnızca metni istiyorsanız, gövdeyi jq'a aktarın:

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'
Kendin deneDeneyin: sınırı çok küçük yapın ve finish_reason'ı okuyunCevabı göster

max_tokens:=200'ü max_tokens:=5 olarak değiştirin ve tekrar çalıştırın. Cevap kesilir ve finish_reason, stop yerine length okur: sınır modeli durdurdu, düşüncenin sonunu değil. Bir cevabın neden kesildiği düzeltmeyi ele alır.

Modeli değiştir: bir alanı değiştir#

Model tek bir dizedir, bu nedenle başka birini denemek tek kelimelik bir düzenlemedir. Aşağıdaki her iki kimlik de CheapTokens'te tek bir bakiye ile kullanılabilir; DeepSeek-V4-Flash size 380K bağlam ve yanıt başına 32.768'e kadar çıktı token'ı verir, GLM-5.3-Flash ise 390K bağlam ve 8.192'ye kadar.

Tek istek, iki 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."}]'

Hangi kimliği kullanacağınızdan emin değil misiniz? GET /v1/models ile modelleri listeleyin ve tam dizeyi kopyalayın.

Bir test isteğinin maliyeti#

Bunun gibi kısa bir soru ucuzdur. Sorunun yaklaşık 100 token ve cevabın yaklaşık 150 token olduğunu varsayalım: bu istek $0.000017 tutar. Bin tanesi, giriş ve çıkış birlikte sayıldığında şöyle görünür:

Model İstek başına 1.000 istek OpenRouter, 1.000 istek
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

İstek başına 100 giriş ve 150 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.

Toplamda, giriş ve çıkış birlikte sayıldığında, DeepSeek-V4-Flash OpenRouter'dan daha ucuz çıkar ve fiyat yoğun saatler olmadan tek bir sabit orandır. Her model için güncel oranlar fiyatlandırma sayfasında.

Çalışmazsa#

  • messages=[…]'i düz bir = ile yazdınız. Dizi, mesaj listesi olarak değil, bir dize olarak gönderilir. := kullanın ve tüm değeri tek tırnak içine alın.
  • := içindeki JSON geçersiz. Her anahtar ve dize çift tırnak gerektirir ve dış tırnaklar tek olmalıdır. Mesaj metnini düzenlerseniz, tırnakları dengede tutun.
  • Anahtar boş. echo ${#CHEAPTOKENS_API_KEY} anahtarı göstermeden uzunluğu yazdırır; 0, değişkenin bu terminalde ayarlanmadığı anlamına gelir.
  • Model kimliği kısa ad. Tam deepseek-ai/DeepSeek-V4-Flash-0731 kullanın. 401 ve 404 yanıtları için yanlış anahtar, temel URL veya model kimliği bölümüne bakın.
  • --session'a başvurdunuz. HTTPie'nin kimlik doğrulama belgeleri oturum dosyalarının kimlik bilgilerini düz metin olarak sakladığını söyler, bu nedenle anahtarı ortamda tutun ve --session'yi bu komuttan çıkarın.

Bir bayrak yukarıdakilerden farklı davranıyorsa sürümünüzü http --version ile kontrol edin. Python'u mu tercih ediyorsunuz? SDK olmadan aynı istek Python'da requests ile ilk istek bölümünde. Tam API referansı için CheapTokens belgelerine bakın.