Anthropic ปล่อย Python SDK 1.0 — ย้ายฐาน HTTP จาก httpx ไป httpx2 ของทีม Pydantic พร้อมรื้อ API เก่าทิ้งยกชุด
20 สิงหาคม 2026 ไลบรารี anthropic สำหรับ Python ขึ้นเวอร์ชัน 1.0.0 อย่างเป็นทางการ หลังอยู่กับเลข 0.x มาตลอดตั้งแต่วันแรก และนี่ไม่ใช่การขึ้นเลขเวอร์ชันเพื่อความสวยงาม — มันคือ major release ที่มี breaking change จริงจัง โดยหัวใจของงานอยู่ที่การ ย้ายชั้น HTTP ทั้งหมดจาก httpx ไปเป็น httpx2
สำหรับนักพัฒนาไทยที่เรียก Claude API ผ่าน Python — ไม่ว่าจะเป็นสคริปต์เล็ก ๆ, งาน RAG, หรือ backend production — นี่คือหนึ่งใน release ที่ต้องอ่าน MIGRATION.md ก่อนกด pip install --upgrade เพราะบางกับดักในนี้ ไม่พังตอนรัน แต่ไปพังเงียบ ๆ ที่ระบบ observability ของคุณแทน
ทำไมต้องย้ายไป httpx2 และใครคือ httpx2
httpx คือไลบรารี HTTP client ที่แทบทุก SDK สมัยใหม่ในโลก Python วางอยู่บน — รวมถึง SDK ของ Anthropic เอง แต่โปรเจกต์ต้นทาง (encode/httpx) ออกรีลีสล่าสุดคือ 0.28.1 เมื่อธันวาคม 2024 และ commit ล่าสุดบน repo ค้างอยู่ที่เดือนมีนาคม 2026 ทั้งที่มีคนใช้งานระดับ 15,000+ ดาว และอยู่บน critical path ของระบบ production นับไม่ถ้วน
httpx2 คือฟอร์กที่ ทีม Pydantic รับมาดูแลต่อ เปิด repo เมื่อ 11 พฤษภาคม 2026 และตอนนี้ปล่อยถึง v2.12.0 (18 ส.ค. 2026) ใน README ทีมเขียนตรงไปตรงมาว่า “เนื่องจาก HTTPX เองมีความเคลื่อนไหวจำกัดในช่วงหลัง Pydantic จึงขอรับหน้าที่ดูแลต่อภายใต้ชื่อ HTTPX2 เพื่อให้ผู้ใช้มีเส้นทางที่มีการบำรุงรักษาแน่นอน — รวมถึงแพตช์ความปลอดภัยที่ออกทันเวลา”
Anthropic อธิบายใน MIGRATION.md ว่า httpx2 เป็น drop-in continuation: คลาสเดิม พฤติกรรมเดิม แต่มีแพตช์ความปลอดภัยตามมาให้ ถ้าโค้ดของคุณส่งแค่ค่าธรรมดาเข้าไป (timeout=30.0, max_retries=3) ก็แทบไม่ต้องทำอะไรเลย ปัญหาจะเกิดกับโค้ดที่ ส่งอ็อบเจ็กต์ httpx เข้าไปให้ SDK หรือรับอ็อบเจ็กต์ httpx ออกมาตรวจ
# เดิม
import httpx
from anthropic import Anthropic, DefaultHttpxClient
client = Anthropic(timeout=httpx.Timeout(60.0, connect=5.0))
# ใหม่
import httpx2 as httpx # หรือเปลี่ยนชื่ออ้างอิงทั้งหมด
from anthropic import Anthropic, DefaultHttpxClient
client = Anthropic(timeout=httpx.Timeout(60.0, connect=5.0))
ข่าวดีคือถ้าส่ง httpx.Client ตัวเก่าเข้าไป SDK จะโยน TypeError ตั้งแต่ตอนสร้าง client — พังทันที ไม่พังแบบเงียบ
กับดักตัวจริง: เครื่องมือ tracing และ mock จะ “ตาบอด” โดยไม่แจ้งเตือน
นี่คือส่วนที่ทีมงานควรอ่านให้ละเอียดที่สุด ไลบรารีที่ทำงานด้วยการ แพตช์ httpx — เช่น HTTPXClientInstrumentor ของ OpenTelemetry, integration ของ Sentry, respx, pytest-httpx และ vcrpy — ยังทำงานได้ตามปกติ แต่ จะมองไม่เห็น request ของ SDK อีกต่อไป เพราะ SDK ไม่ได้ใช้แพ็กเกจนั้นแล้ว
ผลลัพธ์คือสถานการณ์คลาสสิกที่หา bug ยากที่สุด: เทสต์ที่เคย mock ไว้กลับยิงออกอินเทอร์เน็ตจริง, dashboard ที่เคยมี span ของ Claude API หายไปเฉย ๆ โดยไม่มี error ให้เห็น ทางแก้ที่ Anthropic แนะนำคือเรียก httpx2.alias_httpx() ก่อนที่อะไรก็ตามจะ import httpx:
# บรรทัดแรกสุดของ entry point
import httpx2
httpx2.alias_httpx()
import httpx # ตอนนี้ httpx คือ httpx2 แล้ว
assert httpx.Client is httpx2.Client
สำหรับเทสต์ ให้ทำเป็น pytest plugin ที่โหลดก่อน (addopts = "-p tests._alias_httpx") เอกสารย้ำว่าฟังก์ชันนี้มีไว้สำหรับ แอปพลิเคชัน เท่านั้น ไลบรารีไม่ควรเรียกแทนผู้ใช้ของตัวเอง
ของที่ถูกถอดออก และ Bedrock ที่เข้มขึ้น
รายการที่หายไปใน 1.0 ยาวพอสมควร ที่กระทบคนไทยที่ทำงานกับ Claude มากที่สุดน่าจะเป็นสามข้อแรก:
- Python ขั้นต่ำขยับจาก 3.9 เป็น 3.10 (ส่วน Pydantic ยังรองรับทั้ง v1 และ v2 เหมือนเดิม)
- Text Completions API เก่าถูกลบทิ้ง —
client.completions.create(), ค่าคงที่HUMAN_PROMPT/AI_PROMPTหายหมด ทุกโมเดลปัจจุบันให้บริการผ่าน Messages API เท่านั้น temperature,top_p,top_kถูกถอดจาก method signature ของmessages.create()/stream()/parse()เพราะโมเดลรุ่นปัจจุบันไม่ได้ใช้พารามิเตอร์กลุ่มนี้แล้ว ถ้ายังพินอยู่กับโมเดลรุ่นเก่าที่ยังรองรับ ให้ส่งผ่านextra_body={"temperature": 0.2}แทนoutput_format={...}แบบส่ง schema dict เปลี่ยนเป็นoutput_config={"format": {...}}ส่วน helper อย่างparse()ยังรับoutput_format=Orderแบบส่งคลาสได้เหมือนเดิม.with_raw_responseเปลี่ยนคลาสผลลัพธ์ — ฝั่ง async ต้องawait response.parse()/await response.text()แล้ว และ.text/.contentกลายเป็น method ทั้งฝั่ง sync และ asynctool_runner(compaction_control=...)ถูกแทนที่ด้วย compaction ฝั่งเซิร์ฟเวอร์ผ่านcontext_management(threshold ต่ำสุด 50,000 โทเคน)- ชื่อ HTTP header ถูกจับคู่แบบ ไม่สนตัวพิมพ์เล็กใหญ่ แล้ว — เดิมส่ง
USER-AGENTเข้าไปจะได้ header สองบรรทัด ตอนนี้จะทับตัวที่ SDK ตั้งเอง
ส่วนคนที่รัน Claude บน Amazon Bedrock มีของแถมที่ควรรู้: AnthropicBedrock() เดิมถ้าหา region ไม่เจอจะเตือนแล้ว fallback ไป us-east-1 เงียบ ๆ ตอนนี้มัน โยน ValueError ตั้งแต่ตอนสร้างอ็อบเจ็กต์ และลำดับการหา region คือ argument aws_region= → ตัวแปรแวดล้อม AWS_REGION / AWS_DEFAULT_REGION → คอนฟิกของ boto3 session ตาม aws_profile (ซึ่งเมื่อก่อนถูกมองข้ามไปเลยตอนหา region)
ทางลัด: ให้ Claude Code แก้ให้
จุดที่น่าสนใจในเชิงการทำงานคือ Anthropic ไม่ได้ปล่อยแค่คู่มือ — ใน Claude Code เวอร์ชัน 2.1.239 (21 ส.ค. 2026) มีคำสั่งใหม่ /claude-api upgrade ที่ทำการแก้โค้ดโปรเจกต์ Python จาก anthropic 0.x ไป 1.x ให้ และ MIGRATION.md ก็เขียนแนะนำตรง ๆ ว่า “ถ้าคุณใช้ Claude Code ทางที่เร็วที่สุดคือให้มันแก้ให้ แล้วค่อยรีวิว diff”
อีกคำแนะนำที่ควรทำตามคือ รัน type checker (pyright หรือ mypy) หลังอัปเกรด เพราะเกือบทุกอย่างในคู่มือจะโผล่เป็น error ให้เห็นเป็นเช็กลิสต์ทันที — ยกเว้นกรณี params ของ messages.batches.create() ที่ type checker เตือน แต่ SDK ยังส่งต่อค่าให้ตอนรันไทม์
น่าสังเกตว่า ณ ตอนนี้ มีแค่ฝั่ง Python ที่ข้ามไป 1.0 — SDK ฝั่ง TypeScript ยังอยู่ที่ 0.120.0 และฝั่ง Go อยู่ที่ v1.66.0 ตามสายเดิม
มุมมอง AI Curator
เรื่องนี้ใหญ่กว่า SDK ตัวเดียว สิ่งที่เกิดขึ้นจริง ๆ คือ การเปลี่ยนมือผู้ดูแลไลบรารีพื้นฐานของ Python ที่คนทั้งวงการวางน้ำหนักไว้ — httpx ไม่ได้ตาย ไม่ได้ถูก archive แต่มันเงียบ และเมื่อของที่เงียบอยู่บน critical path ของ production ทั่วโลก คำถามเรื่องแพตช์ความปลอดภัยก็กลายเป็นความเสี่ยงที่รอไม่ได้ การที่ทีม Pydantic ยื่นมือมารับ แล้ว Anthropic ยอมกิน breaking change ของตัวเองเพื่อย้ายตาม คือการโหวตด้วยเท้าที่ชัดเจนมาก และผมคาดว่า SDK รายอื่นจะทยอยตามในไม่กี่เดือนข้างหน้า
สำหรับทีมไทย บทเรียนที่ใช้ได้ทันทีมีสองข้อ ข้อแรก — ตรวจ dependency ที่คุณไม่เคยตรวจ ทีมส่วนใหญ่รู้ว่าตัวเองใช้ anthropic หรือ openai แต่น้อยทีมที่รู้ว่าตัวเองพึ่ง httpx ทางอ้อมผ่านอะไรบ้าง ลอง pip list แล้วดูว่ามีกี่แพ็กเกจในระบบที่แตะมัน คำตอบมักจะเซอร์ไพรส์กว่าที่คิด
ข้อสอง — กับดัก observability ในรีลีสนี้คือกรณีศึกษาที่ควรจำ ความล้มเหลวที่อันตรายที่สุดไม่ใช่ระบบที่พังเสียงดัง แต่คือระบบที่ยัง “เขียว” ทุกอย่างทั้งที่มันตาบอดไปแล้ว ทีมที่ mock HTTP ในเทสต์แล้วไม่ได้เรียก alias_httpx() จะมีเทสต์ที่ผ่านสวยงาม — แล้วยิง API จริงไปพร้อมกัน ทั้งบิลค่าโทเคนและ rate limit จะเป็นคนบอกคุณเองในภายหลัง ถ้าทีมคุณมี CI ที่รันเทสต์บ่อย ๆ ให้ถือว่าข้อนี้เป็นงานเร่งด่วนกว่าการแก้ temperature เสียอีก
และข้อสังเกตเชิงทิศทางที่ควรจับตา: การถอด temperature / top_p / top_k ออกจาก signature ไม่ใช่แค่การทำความสะอาดโค้ด มันสะท้อนว่าโมเดลยุคใหม่ที่ทำ reasoning ภายในไม่ได้ให้คุณคุมความสุ่มด้วยปุ่มพวกนี้อีกแล้ว ใครที่ยังออกแบบระบบโดยคิดว่า “ลด temperature เพื่อให้ผลลัพธ์นิ่ง” อาจต้องเปลี่ยนวิธีคิดไปเป็นการคุมด้วย structured output และ prompt แทน
แหล่งข่าว
- anthropic-sdk-python v1.0.0 release notes — GitHub, 20 ส.ค. 2026
- MIGRATION.md — Migrating to v1 — คู่มือย้ายเวอร์ชันฉบับเต็ม
- pydantic/httpx2 — ฟอร์กที่ทีม Pydantic รับดูแลต่อ
- Claude Code changelog 2.1.239 — คำสั่ง
/claude-api upgrade
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog