การแก้ไขปัญหาคู่มือ
Claude API 400 error บน temperature, top_p, top_k: วิธีแก้ไข
คำขอ Claude ของคุณเริ่มคืนค่า 400 บน API เวอร์ชัน 2026-10-21? ลบ temperature, top_p และ top_k หรือปักหมุดเวอร์ชันเก่า ขั้นตอนอยู่ข้างใน

ในหน้านี้
คำขอ Claude ของคุณทำงานได้เมื่อวาน คุณอัปเดตเป็น API เวอร์ชัน 2026-10-21 (เฮดเดอร์ anthropic- หรือ SDK รุ่นที่สร้างมาสำหรับเวอร์ชันนั้น) และตอนนี้มันตอบกลับด้วย 400 ดูที่ body ของคำขอ: ถ้ามี temperature, top_p หรือ top_k นั่นคือสาเหตุ ลบสามฟิลด์นั้นแล้วคำขอจะผ่าน
ตามคู่มือการย้ายเวอร์ชันของ Anthropic สำหรับเวอร์ชัน 2026-10-21 (ตรวจสอบ https://platform.claude.com/docs/en/api/migration-2026-10-21, เมื่อ 24 ตุลาคม 2026) คำขอ Messages หรือ Message Batches ที่ส่งหนึ่งในสามฟิลด์นี้จะคืนค่า 400 error เกิดขึ้นแม้ว่าค่าจะเป็นค่าเริ่มต้นของพารามิเตอร์นั้น ให้มองหา status 400 และชื่อฟิลด์เหล่านั้นในคำขอของคุณ
คำขอที่ล้มเหลวมีหน้าตาอย่างไร#
สมมติว่าคุณมีสคริปต์เล็ก ๆ ที่ขอให้ Claude สรุปตั๋วและทำให้คำตอบคงที่ด้วย temperature ต่ำ:
import anthropic
client = anthropic.Anthropic()
reply = client.messages.create(
model="<your Claude model>",
max_tokens=500,
temperature=0.2, # <- this line now causes the 400
messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)เรื่องเดียวกันกับ HTTP ธรรมดา ถ้าคุณตั้งเฮดเดอร์เวอร์ชันเอง นี่คือบรรทัดที่พาคุณไปสู่พฤติกรรมใหม่:
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2026-10-21" \
-H "content-type: application/json" \
-d '{"model": "<your Claude model>", "max_tokens": 500, "top_p": 0.9,
"messages": [{"role": "user", "content": "Hello"}]}'วิธีแก้: ลบสามพารามิเตอร์#
ลบ temperature, top_p และ top_k ออกจากทุกคำขอ Messages และ Message Batches หากไม่มีพารามิเตอร์เหล่านี้ โมเดลจะสุ่มด้วยค่าเริ่มต้นของมัน (temperature 1.0) เหมือนกับคำขอ 2023-06-01 ที่ไม่ใส่พารามิเตอร์เหล่านี้
reply = client.messages.create(
model="<your Claude model>",
max_tokens=500,
messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)
SDK เวอร์ชันหลักล่าสุดและ CLI ant (2.0.0) ไม่มีพารามิเตอร์เหล่านี้แล้ว ดังนั้นหลังจากอัปเกรดคุณต้องลบมันออกจากโค้ดของคุณ 400 มาจากคำขอที่ส่งออกไปด้วย anthropic- และยังมีหนึ่งในสามฟิลด์นั้น อะแดปเตอร์ .NET IChatClient ใช้เส้นทางที่นุ่มนวลกว่า: ตอนนี้พวกมันเพิกเฉยต่อ ChatOptions., TopK และ TopP หมายเลขเวอร์ชัน SDK ที่แน่นอนสำหรับแต่ละภาษาอยู่ในแท็บ Upgrade steps ของคู่มือ
ถ้าคุณเรียก API โดยไม่มี SDK เวอร์ชันคือเฮดเดอร์ anthropic- และ 2026-10-21 คือค่าที่เปิดใช้กฎใหม่
คำตอบจะเปลี่ยนไปหลังจากลบมันหรือไม่?#
ขึ้นอยู่กับโมเดล และคู่มือระบุไว้ชัดเจนตรงนี้
- Claude 4.7 และใหม่กว่า ยอมรับเฉพาะค่าการสุ่มเริ่มต้นเท่านั้น ไม่มีอะไรเปลี่ยนสำหรับคุณ: พวกมันสุ่มด้วยค่าเริ่มต้นมาก่อนและยังคงเป็นเช่นนั้น
- โมเดลที่ยอมรับค่าอื่น เช่น Claude Sonnet 4.6: ถ้าคุณลด
temperatureเพื่อให้ได้ผลลัพธ์ที่สม่ำเสมอขึ้น ผลนั้นจะหายไป และไม่มีการตั้งค่าอื่นมาแทนที่
ถ้าคำขอใดคำขอหนึ่งพึ่งพาค่าที่ไม่ใช่ค่าเริ่มต้นจริง ๆ คุณมีสองทางเลือกจากคู่มือ: หยุดส่งพารามิเตอร์และยอมรับการสุ่มแบบค่าเริ่มต้น หรือเก็บคำขอนั้นไว้บน anthropic-
ถ้าคำตอบของคุณต้องสม่ำเสมออย่างเคร่งครัด ให้ใส่ความสม่ำเสมอลงใน prompt แทน: รูปแบบผลลัพธ์ที่ตายตัว ตัวอย่างสั้น ๆ ของคำตอบที่คุณต้องการ และการตรวจสอบในโค้ดของคุณที่ปฏิเสธสิ่งที่ไม่ตรงรูปแบบ มันทำงานมากกว่าตัวเลขหนึ่งตัว แต่ไม่ขึ้นอยู่กับปุ่มปรับการสุ่ม
เช็กลิสต์ด่วนเมื่อคุณเจอ 400#
- ค้นหาในโปรเจกต์สำหรับ
temperature,top_p,top_kรวมถึง wrapper และไฟล์ config ที่ใช้ร่วมกัน - ตรวจสอบงาน batch: กฎนี้ใช้กับแต่ละคำขอภายใน Message Batch ที่สร้างด้วย 2026-10-21 ดังนั้นดูที่ params ของทุกคำขอใน batch
- ตรวจสอบว่าอะไรเปลี่ยนไป: เวอร์ชันหลักของ SDK, เวอร์ชัน CLI หรือเฮดเดอร์
anthropic-version - ลบฟิลด์เหล่านั้น หรือปักหมุดคำขอนั้นไว้ที่
2023-06-01ถ้ามันต้องการค่าที่ไม่ใช่ค่าเริ่มต้น - รันหนึ่งคำขอก่อนที่คุณจะเริ่ม batch ขนาดใหญ่อีกครั้ง
เส้นทางโค้ดเดียวสำหรับ Claude และ API สไตล์ OpenAI#
การตั้งค่าที่พบบ่อย: helper ตัวเดียวที่สร้างคำขอและส่งไปยัง Anthropic Messages หรือไปยัง endpoint Chat Completions สไตล์ OpenAI วิธีแก้ที่ง่ายที่สุดคือแยกพารามิเตอร์ เก็บ temperature ไว้ในสาขาสไตล์ OpenAI เท่านั้น และอย่าเพิ่มมันในสาขา Messages
ในรูปแบบ Chat Completions การตั้งค่านี้เป็นฟิลด์คำขอปกติ บน CheapTokens มันทำงานผ่านที่อยู่ที่เข้ากันได้กับ OpenAI https:/ นี่คือคำขอไปยัง DeepSeek-V4-Flash (context 380K, เอาต์พุตสูงสุด 32,768 โทเค็นต่อคำตอบ) พร้อม model id แบบเต็มจากเอกสาร CheapTokens:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"temperature": 0.2,
"max_tokens": 300,
"messages": [{"role": "user", "content": "Summarise this ticket in two lines: ..."}]
}'คำขอแบบนั้น ที่มีอินพุต 1,000 โทเค็นและเอาต์พุต 300 โทเค็น มีค่าใช้จ่าย $0.000045 ที่ราคาปัจจุบัน DeepSeek-V4-Flash มีราคาเดียวตลอดเวลา ไม่มีช่วง peak และยอดคงเหลือเดียวครอบคลุมทุกโมเดล สำหรับเส้นทางโค้ดเดียวกันกับหน้าต่าง context 390K ยังมี GLM-5.3-Flash (zai-, เอาต์พุตสูงสุด 8,192 โทเค็น) ราคาปัจจุบันของทุกโมเดลอยู่ในหน้าราคา
หากต้องการดูว่าการตั้งค่านี้ทำงานอย่างไร อ่าน System prompt และ temperature: มันทำอะไรและตั้งค่าอย่างไร หากต้องการเรียก Messages รูปแบบ Claude จาก Python ดู Anthropic Python SDK กับ CheapTokens การตั้งค่าที่อยู่ฐานและคีย์อยู่ในเอกสาร CheapTokens



