ブログに戻る

はじめにガイド

HTTPie で CheapTokens への最初のリクエスト: 環境変数のキー、= と :=

環境変数のキーでチャット補完を送信し、回答とトークン使用量がどこにあるかを示す、読みやすい 1 つの http コマンド。

投稿者: CheapTokens Team公開日 読了時間 5 分

ベアラーキー変数と JSON フィールドを含む http コマンドを表示するターミナル
このページの内容
  1. = と := が実際に何をするか
  2. 答えはどこにあるか
  3. モデルを入れ替える: 1 つのフィールドを変更する
  4. テストリクエスト 1 回のコスト
  5. うまくいかない場合

キーが機能し、モデル ID が正しいことを、1 行で確認したいはずです。HTTPie の http コマンドなら、curl よりはるかに少ないクォートでそれができます。フィールドを入力すれば、JSON を組み立ててくれます。以下がリクエスト全体で、残りの記事では各部分を説明します。

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 互換なので、ベース URL は https://api.cheaptokens.dev/v1 で、チャットリクエストはその下の /chat/completions に送ります。モデル ID は完全なもの、deepseek-ai/DeepSeek-V4-Flash-0731 です(価格表にある短い名前は受け付けられません)。まだキーを保存していない場合は、まず API キーを安全に保存 してください。export の行を入力するとキーがシェル履歴に残るので、プロファイルファイルやシークレットマネージャーのほうが適しています。

ターミナルでのリクエスト: 変数からのベアラーキー、文字列としてのモデル、数値としての max_tokens、生の配列としての messages
ターミナルでの同じリクエストの見え方

= と := が実際に何をするか#

HTTPie で覚える必要があるのはこれだけです。HTTPie の JSON ドキュメント(バージョン 3.2.4、2024 年 11 月 1 日付、2026 年 11 月 9 日閲覧)によると、= は文字列フィールドを設定し、:= は生の JSON 値(数値、真偽値、配列、オブジェクト)を設定します。この方法で指定したフィールドはデフォルトで JSON ボディとして送信されるので、Content-Type ヘッダーを自分で追加する必要はありません。

今回のリクエストでは、これが 3 つの異なる形になります:

  • model=deepseek-ai/DeepSeek-V4-Flash-0731 は文字列なので、=。
  • max_tokens:=200 は数値なので、:=。= を使うと文字列 "200" を送ることになります。
  • messages:=[…] はオブジェクトの配列なので、ここでも := を使い、値はシェルが内側の二重引用符をそのまま残すようシングルクォートで囲みます。

ドキュメントには、stdin からのボディはコマンドラインフィールドと組み合わせられないとも書かれているので、どちらか一方のスタイルを選んでください。最初のテストなら、フィールドのほうが短くて編集しやすいです。

クイックチェック

max_tokens=200(プレーンな = 付き)は何を送りますか?

答えを表示

答え: 文字列 "200"

= は常に文字列を作ります。数値にするには := が必要なので、max_tokens:=200 と書きます。

答えはどこにあるか#

返信は OpenAI の chat-completions 形式に従います。探すべきものは 3 つあり、それぞれ別の場所にあります:

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

回答テキストは choices[0].message.content です。finish_reason は同じ choice の中に隣接しており、usage はトップレベルにあります。usage は送信したトークン数(prompt_tokens)とモデルが書いたトークン数(completion_tokens)を示し、リクエストのコストを見積もるのに便利です。

レスポンスのどこを見るか: choices、message.content、finish_reason、usage
すべてのレスポンスで読む 3 つのフィールド

テキストだけ欲しい場合は、ボディを 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'
自分で試す試してみましょう: 制限を小さくしすぎて finish_reason を読む答えを表示

max_tokens:=200 を max_tokens:=5 に変えて、もう一度実行します。回答は途中で切れ、finish_reason は stop ではなく length を読み取ります。制限がモデルを止めたのであって、思考の終わりではありません。回答が途中で切れる理由 で修正方法を説明しています。

モデルを入れ替える: 1 つのフィールドを変更する#

モデルは 1 つの文字列なので、別のものを試すのは 1 語の編集です。以下の両方の ID は CheapTokens で 1 つの残高で利用できます。DeepSeek-V4-Flash は 380K のコンテキストと回答あたり最大 32,768 出力トークン、GLM-5.3-Flash は 390K のコンテキストと最大 8,192 です。

1 つのリクエスト、2 つのモデル

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."}]'

どの ID を使うかわからない場合は、GET /v1/models でモデルを一覧表示 し、正確な文字列をコピーしてください。

テストリクエスト 1 回のコスト#

このような短い質問は安価です。質問が約 100 トークン、回答が約 150 トークンだとすると、そのリクエストのコストは $0.000017 です。それを 1,000 回行うと、入力と出力を合計して次のようになります:

モデル リクエストあたり 1,000 リクエスト OpenRouter、1,000 リクエスト
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 入力トークンと 150 出力トークン。100万トークンあたりの価格は現行のもので、当社の料金体系に合わせて変動します。OpenRouter 列は同じワークロードの参考価格を示しています。

合計で、入力と出力を合わせて数えると、DeepSeek-V4-Flash は OpenRouter より安くなり、価格はピーク時間のない固定レートです。すべてのモデルの現在の料金は 料金ページ にあります。

うまくいかない場合#

  • プレーンな = で messages=[…] と入力した。 配列がメッセージのリストではなく文字列として送信されます。:= を使い、値全体をシングルクォートで囲んでください。
  • := 内の JSON が無効。 すべてのキーと文字列には二重引用符が必要で、外側の引用符はシングルでなければなりません。メッセージテキストを編集する場合は、引用符のバランスを保ってください。
  • キーが空。 echo ${#CHEAPTOKENS_API_KEY} はキーを表示せずに長さを出力します。0 はこのターミナルで変数が設定されていないことを意味します。
  • モデル ID が短い名前。 完全な deepseek-ai/DeepSeek-V4-Flash-0731 を使用してください。401 と 404 の回答については、間違ったキー、ベース URL、モデル ID を参照してください。
  • --session に手を伸ばした。 HTTPie の認証ドキュメントによると、セッションファイルは認証情報を平文で保存するので、キーは環境に置き、このコマンドから --session を外してください。

フラグの動作が上記と異なる場合は、http --version でバージョンを確認してください。Python のほうがよければ、SDK なしの同じリクエストは requests を使った Python での最初のリクエスト にあります。完全な API リファレンスは CheapTokens ドキュメント を参照してください。