กลับไปที่บล็อก

เริ่มต้นใช้งานคู่มือ

คำขอแรกไปยัง CheapTokens ด้วย HTTPie: คีย์ใน env, = และ :=

คำสั่ง http ที่อ่านง่ายหนึ่งคำสั่งที่ส่ง chat completion ด้วยคีย์ในตัวแปรสภาพแวดล้อม แล้วแสดงตำแหน่งของคำตอบและการใช้โทเค็น

โดย CheapTokens Teamเผยแพร่เมื่อ ใช้เวลาอ่าน 5 นาที

เทอร์มินัลแสดงคำสั่ง http พร้อมตัวแปรคีย์ bearer และฟิลด์ JSON
ในหน้านี้
  1. = และ := ทำอะไรจริง ๆ
  2. คำตอบอยู่ที่ไหน
  3. สลับโมเดล: เปลี่ยนฟิลด์เดียว
  4. คำขอทดสอบหนึ่งครั้งมีค่าใช้จ่ายเท่าไร
  5. หากไม่ทำงาน

คุณต้องการรู้ว่าคีย์ใช้งานได้และ model id ถูกต้อง และต้องการรู้ในบรรทัดเดียว คำสั่ง http ของ HTTPie ทำสิ่งนั้นได้โดยใช้เครื่องหมายคำพูดน้อยกว่า 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 ดังนั้น base URL คือ https://api.cheaptokens.dev/v1 และคำขอแชทไปที่ /chat/completions ภายใต้ base URL นั้น model id คือแบบเต็ม deepseek-ai/DeepSeek-V4-Flash-0731 (ชื่อย่อจากตารางราคาไม่ได้รับการยอมรับ) หากคุณยังไม่เคยเก็บคีย์มาก่อน ให้ เก็บ API key อย่างปลอดภัย ก่อน: การพิมพ์บรรทัด export จะทำให้คีย์อยู่ในประวัติเชลล์ของคุณ ดังนั้นไฟล์โปรไฟล์หรือตัวจัดการความลับจึงเป็นที่เก็บที่ดีกว่า

คำขอในเทอร์มินัล: คีย์ bearer จากตัวแปร, model เป็นสตริง, max_tokens เป็นตัวเลข, messages เป็นอาร์เรย์ดิบ
คำขอเดียวกันเมื่อมองในเทอร์มินัล

= และ := ทำอะไรจริง ๆ#

นี่คือส่วนเดียวของ HTTPie ที่คุณต้องเรียนรู้ เอกสาร JSON ของ HTTPie (เวอร์ชัน 3.2.4, ลงวันที่ 1 พฤศจิกายน 2024, อ่านเมื่อ 9 พฤศจิกายน 2026) กล่าวว่า = ตั้งค่าฟิลด์สตริง และ := ตั้งค่าดิบ JSON: ตัวเลข, บูลีน, อาร์เรย์ หรือออบเจ็กต์ ฟิลด์ที่ให้ในลักษณะนี้จะถูกส่งเป็น body JSON โดยค่าเริ่มต้น ดังนั้นคุณไม่ต้องเพิ่มเฮดเดอร์ Content-Type เอง

ในคำขอของเรา สิ่งนี้ให้รูปแบบที่แตกต่างกันสามแบบ:

  • model=deepseek-ai/DeepSeek-V4-Flash-0731 เป็นสตริง ดังนั้น =
  • max_tokens:=200 เป็นตัวเลข ดังนั้น := ด้วย = คุณจะส่งสตริง "200"
  • messages:=[…] เป็นอาร์เรย์ของออบเจ็กต์ ดังนั้น := อีกครั้ง และค่าอยู่ในเครื่องหมายคำพูดเดี่ยวเพื่อให้เชลล์ไม่แตะเครื่องหมายคำพูดคู่ภายใน

เอกสารยังกล่าวว่า body จาก stdin ไม่สามารถรวมกับฟิลด์บรรทัดคำสั่งได้ ดังนั้นเลือกสไตล์เดียว สำหรับการทดสอบครั้งแรก ฟิลด์จะสั้นกว่าและแก้ไขได้ง่ายกว่า

เช็กด่วน

max_tokens=200 (ด้วย = ธรรมดา) ส่งอะไร?

แสดงคำตอบ

คำตอบ: สตริง "200"

= สร้างสตริงเสมอ สำหรับตัวเลขคุณต้องใช้ := ดังนั้นเขียน max_tokens:=200

คำตอบอยู่ที่ไหน#

การตอบกลับเป็นไปตามรูปแบบ chat-completions ของ OpenAI คุณกำลังมองหาสามสิ่ง และ它們อยู่ในตำแหน่งที่แตกต่างกัน:

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
สามฟิลด์ที่ต้องอ่านในการตอบกลับทุกครั้ง

หากคุณต้องการเพียงข้อความ ให้ส่ง body ไปยัง 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 อ่าน length แทน stop: ขีดจำกัดหยุดโมเดล ไม่ใช่จุดสิ้นสุดของความคิด ทำไมคำตอบจึงถูกตัด ครอบคลุมวิธีแก้ไข

สลับโมเดล: เปลี่ยนฟิลด์เดียว#

โมเดลเป็นสตริงเดียว ดังนั้นการลองอีกตัวคือการแก้ไขคำเดียว id ทั้งสองด้านล่างมีให้ใช้บน CheapTokens ด้วยยอดคงเหลือเดียว; DeepSeek-V4-Flash ให้บริบท 380K และเอาต์พุตสูงสุด 32,768 โทเค็นต่อคำตอบ, GLM-5.3-Flash บริบท 390K และสูงสุด 8,192

คำขอเดียว สองโมเดล

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 และคัดลอกสตริงที่แน่นอน

คำขอทดสอบหนึ่งครั้งมีค่าใช้จ่ายเท่าไร#

คำถามสั้น ๆ เช่นนี้มีราคาถูก สมมติว่าคำถามประมาณ 100 โทเค็นและคำตอบประมาณ 150: คำขอนั้นมีค่าใช้จ่าย $0.000017 หนึ่งพันคำขอมีลักษณะเช่นนี้ โดยนับอินพุตและเอาต์พุตรวมกัน:

โมเดล ต่อคำขอ 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 โทเค็นเอาต์พุตต่อคำขอ ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน

โดยรวม เมื่อนับอินพุตและเอาต์พุตรวมกัน DeepSeek-V4-Flash ออกมาถูกกว่า OpenRouter และราคาเป็นอัตราคงที่เดียวโดยไม่มีช่วงเวลาเร่งด่วน อัตราปัจจุบันสำหรับทุกโมเดลอยู่บน หน้าราคา

หากไม่ทำงาน#

  • คุณพิมพ์ messages=[…] ด้วย = ธรรมดา อาร์เรย์จะออกมาเป็นสตริง ไม่ใช่รายการข้อความ ใช้ := และเครื่องหมายคำพูดเดี่ยวรอบค่าทั้งหมด
  • JSON ภายใน := ไม่ถูกต้อง ทุกคีย์และสตริงต้องมีเครื่องหมายคำพูดคู่ และเครื่องหมายคำพูดภายนอกต้องเป็นเดี่ยว หากคุณแก้ไขข้อความ ให้รักษาเครื่องหมายคำพูดให้สมดุล
  • คีย์ว่างเปล่า echo ${#CHEAPTOKENS_API_KEY} พิมพ์ความยาวโดยไม่แสดงคีย์; 0 หมายความว่าตัวแปรไม่ได้ตั้งค่าในเทอร์มินัลนี้
  • model id เป็นชื่อย่อ ใช้ deepseek-ai/DeepSeek-V4-Flash-0731 แบบเต็ม สำหรับคำตอบ 401 และ 404 ดู คีย์, base URL หรือ model id ผิด
  • คุณเอื้อมไปใช้ --session เอกสารการรับรองความถูกต้องของ HTTPie กล่าวว่าไฟล์เซสชันเก็บข้อมูลรับรองในข้อความธรรมดา ดังนั้นเก็บคีย์ในสภาพแวดล้อมและปล่อย --session ออกจากคำสั่งนี้

ตรวจสอบเวอร์ชันของคุณด้วย http --version หากแฟล็กทำงานแตกต่างจากข้างต้น ชอบ Python? คำขอเดียวกันโดยไม่มี SDK อยู่ใน คำขอแรกใน Python ด้วย requests สำหรับข้อมูลอ้างอิง API ทั้งหมด ดู เอกสาร CheapTokens