# คำอธิบายฟิลด์ Request Body

คำอธิบายฟิลด์ระดับบนสุดของ request body สำหรับ `/v1/messages` ของ Claude API

## รายการฟิลด์

| ฟิลด์ | ประเภท | คำอธิบาย |
|------|------|------|
| **model** | string | ชื่อโมเดลที่ใช้ เช่น `claude-opus-4-6`, `claude-sonnet-4-6` |
| **messages** | array | ประวัติข้อความสนทนา แต่ละข้อความประกอบด้วย `role` (user/assistant) และ `content` (อาร์เรย์ของบล็อก เช่น ข้อความ, รูปภาพ, tool_use, tool_result) |
| **system** | array | System prompt ประกอบด้วยคำสั่งหลักของ Claude Code, คำแนะนำการใช้เครื่องมือ, ข้อมูลสภาพแวดล้อม, เนื้อหา CLAUDE.md เป็นต้น บล็อกที่มี `cache_control` จะถูกแคชผ่าน prompt caching |
| **tools** | array | รายการคำจำกัดความของเครื่องมือที่ใช้ได้ แต่ละเครื่องมือประกอบด้วย `name`, `description` และ `input_schema` (JSON Schema) โดยทั่วไป MainAgent มีเครื่องมือมากกว่า 20 รายการ ขณะที่ SubAgent มีเพียงไม่กี่รายการ |
| **metadata** | object | เมตาดาต้าของคำขอ โดยทั่วไปประกอบด้วย `user_id` สำหรับระบุตัวตนผู้ใช้ |
| **max_tokens** | number | จำนวนโทเค็นสูงสุดต่อการตอบกลับหนึ่งครั้งของโมเดล เช่น `16000`, `64000` |
| **thinking** | object | การกำหนดค่าการคิดแบบขยาย `type: "enabled"` เปิดใช้งานโหมดการคิด `budget_tokens` ควบคุมขีดจำกัดโทเค็นการคิด |
| **context_management** | object | การกำหนดค่าการจัดการบริบท `truncation: "auto"` อนุญาตให้ Claude Code ตัดประวัติข้อความที่ยาวเกินไปโดยอัตโนมัติ |
| **output_config** | object | การกำหนดค่าเอาต์พุต เช่น การตั้งค่า `format` |
| **stream** | boolean | เปิดใช้งานการตอบกลับแบบสตรีมหรือไม่ Claude Code ใช้ `true` เสมอ |

## โครงสร้าง messages

`content` ของแต่ละข้อความเป็นอาร์เรย์ของบล็อก ประเภทที่พบบ่อย ได้แก่:

- **text**: เนื้อหาข้อความธรรมดา
- **tool_use**: โมเดลเรียกใช้เครื่องมือ (ประกอบด้วย `name`, `input`)
- **tool_result**: ผลลัพธ์การทำงานของเครื่องมือ (ประกอบด้วย `tool_use_id`, `content`)
- **image**: เนื้อหารูปภาพ (base64 หรือ URL)
- **thinking**: กระบวนการคิดของโมเดล (โหมดการคิดแบบขยาย)

## โครงสร้าง system

อาร์เรย์ system prompt โดยทั่วไปประกอบด้วย:

1. **คำสั่งหลักของเอเจนต์** ("You are Claude Code...")
2. **ข้อกำหนดการใช้เครื่องมือ**
3. **เนื้อหา CLAUDE.md** (คำสั่งระดับโปรเจกต์)
4. **การแจ้งเตือนทักษะ** (skills reminder)
5. **ข้อมูลสภาพแวดล้อม** (OS, shell, สถานะ git ฯลฯ) — ในความเป็นจริง Claude Code พึ่งพา git เป็นอย่างมาก หากโปรเจกต์มี git repository Claude Code สามารถแสดงความเข้าใจโปรเจกต์ได้ดีขึ้น รวมถึงสามารถดึงการเปลี่ยนแปลงจากรีโมตและบันทึกคอมมิตมาช่วยในการวิเคราะห์

บล็อกที่ทำเครื่องหมายด้วย `cache_control: { type: "ephemeral" }` จะถูกแคชโดย Anthropic API เป็นเวลา 5 นาที เมื่อแคชถูกเรียกใช้จะคิดค่าใช้จ่ายเป็น `cache_read_input_tokens` (ต่ำกว่า `input_tokens` มาก)

> **หมายเหตุ**: สำหรับไคลเอ็นต์พิเศษอย่าง Claude Code เซิร์ฟเวอร์ของ Anthropic ไม่ได้พึ่งพาคุณสมบัติ `cache_control` ในคำขอทั้งหมดเพื่อกำหนดพฤติกรรมการแคช เซิร์ฟเวอร์จะดำเนินนโยบายการแคชโดยอัตโนมัติสำหรับฟิลด์เฉพาะ (เช่น system prompt, คำจำกัดความเครื่องมือ) แม้ว่าคำขอจะไม่มีเครื่องหมาย `cache_control` อย่างชัดเจน ดังนั้น เมื่อคุณไม่เห็นคุณสมบัตินี้ใน request body ไม่ต้องแปลกใจ เซิร์ฟเวอร์ได้ดำเนินการแคชเบื้องหลังแล้ว เพียงแต่ไม่ได้เปิดเผยข้อมูลนี้ให้ไคลเอ็นต์ทราบ นี่คือความเข้าใจโดยปริยายระหว่าง Claude Code กับ Anthropic API
