วิธีสร้าง AI Agent ด้วย Claude บน VPS
เรียนรู้วิธีใช้ Claude Messages API ร่วมกับ Tool use และ MCP เพื่อสร้าง AI Agent ที่ควบคุมผ่าน VPS ของคุณเองเพื่อความปลอดภัยและจัดการทรัพยากรได้เต็มที่
ความหมายของการสร้าง agent ด้วย Claude
การสร้าง agent ด้วย Claude คือการใช้ Claude เป็นแกนกลางในการใช้เหตุผล (reasoning core) ในขณะที่ loop, เครื่องมือ (tools) และข้อมูลจะทำงานอยู่บน server ของคุณเอง Claude จะตัดสินใจว่าจะต้องทำอะไร ส่วน VPS ของคุณจะเป็นผู้ดำเนินการ คุณส่งงานและสถานะปัจจุบันให้ Claude จากนั้น Claude จะตอบกลับมาเป็นคำตอบหรือคำขอให้ใช้เครื่องมือที่คุณมี เมื่อ code ของคุณรันเครื่องมือนั้นแล้วส่งผลลัพธ์กลับไป loop จะดำเนินต่อไปจนกว่างานจะเสร็จสิ้น ความฉลาดคือบริการที่คุณเรียกใช้งานผ่านอินเทอร์เน็ต ส่วนองค์ประกอบอื่น ๆ ทั้งหมดเป็นของคุณ
การแยกส่วนแบบนี้คือจุดเด่น คุณจะได้รับความสามารถในการใช้เหตุผลระดับ frontier-level โดยไม่ต้องรัน model เอง และคุณยังสามารถควบคุมสิ่งที่ agent เข้าถึงได้อย่างสมบูรณ์ เพราะเครื่องมือต่าง ๆ ทำงานบน hardware ที่คุณเป็นเจ้าของ หากคุณเคยสร้างโปรแกรมด้วย Claude มาก่อนแล้ว คู่มือการสร้าง Claude app แรกบน VPS จะครอบคลุมพื้นฐานที่คู่มือนี้ใช้ต่อยอด
Claude คือสมอง: Messages API
ทุกการเรียกใช้งาน Claude จะผ่าน endpoint เดียวคือ Messages API คุณส่งประวัติการสนทนาที่ผ่านมาและรายการเครื่องมือที่ agent สามารถใช้ได้ จากนั้น Claude จะส่งข้อความถัดไปกลับมา ข้อความนั้นอาจเป็นคำตอบสุดท้ายหรือคำขอให้เรียกใช้เครื่องมือ สำหรับแนวทางการสร้างด้วยตนเองจะไม่มี "agent API" แยกต่างหาก การใช้เครื่องมือ (tool use) เป็นฟีเจอร์หนึ่งของ endpoint นี้ และคุณต้องเป็นผู้ควบคุม loop รอบตัวมันเอง
Claude เป็นแบบ stateless ระหว่างการเรียกใช้งาน หมายความว่ามันไม่จดจำอะไรด้วยตัวเอง ทุกการส่งคำขอจะต้องแนบประวัติการสนทนาทั้งหมดไปด้วย Code ของคุณจะเป็นผู้เก็บประวัติและส่งไปในทุกรอบ ซึ่งเป็น สาเหตุที่แต่ละรอบใน session ที่ยาวนานจะมีค่า token สูงกว่ารอบก่อนหน้า นี่ไม่ใช่ข้อจำกัดแต่เป็นความตั้งใจในการออกแบบ เพราะสถานะ (state) อยู่บน server ของคุณ คุณจึงสามารถกำหนดได้ว่าต้องการให้ Claude เห็นข้อมูลอะไร และไม่มีข้อมูลใดเกี่ยวกับงานถูกจัดเก็บไว้ในที่ที่คุณไม่ได้ควบคุม
Tool use คือ agent loop
Agent loop ของ Claude อธิบายได้ง่ายมาก คุณส่งคำขอที่มีเครื่องมือของคุณรวมอยู่ด้วย Claude จะอ่านงาน และหากจำเป็นต้องดำเนินการ จะตอบกลับด้วยคำขอใช้เครื่องมือ (tool-use request) ที่ระบุชื่อเครื่องมือและข้อมูล input ที่ต้องใช้ Code ของคุณจะรันเครื่องมือนั้น แล้วส่งผลลัพธ์กลับไปให้ Claude ในคำขอถัดไป Claude จะอ่านผลลัพธ์แล้วตัดสินใจว่าจะขอใช้เครื่องมืออื่นต่อ หรือจะเขียนคำตอบสุดท้าย เมื่อ Claude หยุดขอใช้เครื่องมือ งานก็ถือว่าเสร็จสิ้น
คุณสามารถเขียน loop นี้ด้วยตนเองได้ในไม่กี่บรรทัด ซึ่งหลายคนเลือกทำเช่นนั้นเพราะตรวจสอบและควบคุมได้ง่าย นอกจากนี้ official SDK ยังมี tool runner ที่ช่วยรัน loop ให้คุณ โดยคุณเพียงแค่เตรียม function ของเครื่องมือไว้ และ SDK จะจัดการการรับส่งข้อมูลระหว่างการเรียก Claude, การรันเครื่องมือ และการส่งผลลัพธ์กลับไปจนกว่า Claude จะทำงานเสร็จ ไม่ว่าจะวิธีใด รูปแบบการทำงานก็เหมือนกัน tool runner เพียงช่วยให้คุณไม่ต้องเขียน loop เอง
สามวิธีในการสร้าง และวิธีที่เหมาะกับ VPS
มี 3 วิธีในการสร้าง Claude agent ซึ่งแตกต่างกันที่ปริมาณของระบบที่คุณต้องรันเอง
วิธีแรกคือการใช้ code ของคุณเรียก Claude API พร้อมกับเครื่องมือของคุณเอง คุณต้องเขียน loop เอง หรือใช้ tool runner ของ SDK และโฮสต์ทุกอย่างบน VPS ของคุณ นี่คือวิธีที่นิยมที่สุด เพราะช่วยให้คุณควบคุมเครื่องมือ, ข้อมูล และความปลอดภัยได้อย่างสมบูรณ์ และทำงานเหมือนโปรแกรมทั่วไปบน server ของคุณ คู่มือส่วนใหญ่จะอ้างอิงตามแนวทางนี้
วิธีที่สองคือ Claude Agent SDK นี่คือ Claude Code ซึ่งเป็น coding agent ที่ถูกแพ็กมาในรูปแบบ library เพื่อให้คุณนำไปสร้างต่อได้ มันมาพร้อมกับ agent loop แบบเต็มรูปแบบและเครื่องมือสำเร็จรูปสำหรับการอ่านและเขียนไฟล์, การรัน shell commands และการค้นหา เพื่อให้คุณไม่ต้องประกอบสิ่งเหล่านี้เอง มันทำงานบน server ของคุณเช่นกัน จึงเหมาะอย่างยิ่งสำหรับ VPS เมื่อคุณต้องการ agent ที่จัดการไฟล์และ shell ได้อย่างมีประสิทธิภาพโดยไม่ต้องสร้างระบบควบคุมเอง agent ที่อ่านไฟล์และรัน shell commands จำเป็นต้องมีการจำกัดสิทธิ์ก่อนทำงานโดยไม่มีคนคุม ซึ่ง การรัน Claude Code บน server อย่างปลอดภัย จะครอบคลุมเรื่องระบบสิทธิ์, sandbox และตัวเลือกการแยกส่วน (isolation)
วิธีที่สามคือ Managed Agents ซึ่ง Anthropic จะเป็นผู้รัน loop และโฮสต์ sandbox สำหรับรันเครื่องมือของ agent นี่คือตัวเลือกแบบไม่ต้องดูแลเอง (hands-off) คุณแทบไม่ต้องดำเนินการใด ๆ แต่ workspace ของ agent จะอยู่บน infrastructure ของ Anthropic แทนที่จะเป็น VPS ของคุณ เลือกวิธีนี้เมื่อคุณต้องการลดภาระการดูแลระบบให้เหลือน้อยที่สุดและไม่จำเป็นต้องรันเครื่องมือบนเครื่องของคุณเอง สำหรับสองวิธีแรก server ของคุณคือที่อยู่ของ agent ซึ่งเป็นเนื้อหาหลักของคู่มือนี้
การเชื่อมต่อเครื่องมือด้วย MCP
ไม่ว่าคุณจะเลือกวิธีใด คุณย่อมต้องการเชื่อมต่อ agent เข้ากับระบบจริง และ Model Context Protocol คือวิธีที่จัดการได้อย่างเป็นระเบียบ MCP เป็นมาตรฐานเปิดสำหรับการเปิดเผยเครื่องมือและข้อมูลให้แก่ agent แทนที่จะต้องเขียน code เชื่อมต่อ (integration) สำหรับทุกบริการด้วยตนเอง คุณเพียงแค่ชี้ Claude ไปยัง MCP server ที่เตรียมความสามารถเหล่านั้นไว้ในรูปแบบเครื่องมือแล้ว คุณสามารถรัน MCP servers เป็น service ขนาดเล็กบน VPS เดียวกันได้ โดยแต่ละตัวมีสิทธิ์เข้าถึงเท่าที่จำเป็น ซึ่งฉันได้อธิบายไว้ใน การรัน MCP servers บน VPS
การเลือก model
Claude มีหลาย model และการเลือกใช้คือการแลกเปลี่ยนระหว่างความสามารถ, ความเร็ว และราคา ณ เวลาที่เขียนนี้ ตัวเลือกหลัก ๆ ได้แก่ Claude Opus 4.8 (claude-opus-4-8) ซึ่งเป็นค่าเริ่มต้นที่มีความสามารถสูงสำหรับการใช้เหตุผลที่ซับซ้อนและการรัน agent ระยะยาว; Claude Sonnet 5 (claude-sonnet-5) ซึ่งเป็นตัวเลือกที่สมดุล ราคาถูกกว่าและเร็วกว่าในขณะที่ยังทำงานได้ใกล้เคียงกับ Opus ในหลาย ๆ งาน; และ Claude Haiku 4.5 (claude-haiku-4-5) ซึ่งเร็วและถูกที่สุด สำหรับขั้นตอนที่ง่ายและมีปริมาณมาก และเหนือกว่านั้นคือ Claude Fable 5 (claude-fable-5) ซึ่งเป็น model ที่มีความสามารถสูงสุด สำหรับงานที่ต้องการประสิทธิภาพสูงสุด โปรดใช้ model identifier ที่ถูกต้องใน code โดยไม่ต้องระบุวันที่ต่อท้าย
รูปแบบที่ใช้งานได้จริงคือการใช้ผสมกัน ให้ model ที่ราคาถูกกว่าจัดการการเรียกใช้เครื่องมือทั่วไป และใช้ model ที่แข็งแกร่งกว่าจัดการการตัดสินใจที่ยากลำบาก เนื่องจาก model เป็นเพียง string ในคำขอของคุณ การสลับจึงทำได้เพียงการเปลี่ยน code บรรทัดเดียว ดังนั้นควรเริ่มจากค่าเริ่มต้นที่มีความสามารถสูง แล้วจึงปรับลดระดับลงในจุดที่ความเร็วหรือราคาสำคัญกว่าคุณภาพเล็กน้อย
รันในรูปแบบ hardened service บน VPS ของคุณ
agent จะมีประโยชน์ก็ต่อเมื่อมันทำงานได้อย่างต่อเนื่อง และจะปลอดภัยก็ต่อเมื่อมีการจำกัดสิทธิ์ (contained) บน VPS สิ่งเหล่านี้ทำได้โดยการรัน agent ในฐานะ hardened system service แทนที่จะเป็นโปรแกรมที่คุณสั่งรันด้วยมือใน terminal เมื่อรันเป็น service มันจะเริ่มทำงานเมื่อ boot, เริ่มใหม่หาก crash และบันทึก log ลงใน journal เมื่อถูกทำให้แข็งแกร่ง (hardened) มันจะทำงานในฐานะ unprivileged user ที่มีสิทธิ์เข้าถึงเท่าที่จำเป็นเท่านั้น เพื่อจำกัดความเสียหายหากเกิด bug หรือคำสั่งที่ผิดพลาด
กฎที่สำคัญที่สุดคือต้องเก็บ Claude API key ไว้ที่ฝั่ง server เท่านั้น เนื่องจาก key นี้ใช้สำหรับการชำระเงินและอนุญาตทุกการเรียกใช้งาน ดังนั้นควรเก็บไว้ในไฟล์ที่อ่านได้เฉพาะ user ของ agent เท่านั้น โดยโหลดเข้าสู่ service ในฐานะ environment variable และห้ามใส่ไว้ใน code, ใน repository หรือในที่ใดก็ตามที่ browser สามารถเข้าถึงได้ คุณสามารถสร้าง service unit ที่สมบูรณ์และแข็งแกร่งสำหรับ agent ของคุณได้ที่นี่:
จากนั้นจัดการส่วนของ server ให้เรียบร้อย ตั้งค่า SSH ให้ใช้เฉพาะ key และจำกัดสิทธิ์ account ที่คุณใช้ดูแลระบบ ตามที่อธิบายใน การทำ SSH hardening บน VPS หากคุณต้องการสั่งการ agent ผ่าน interactive session ในระหว่างการพัฒนา การรัน Claude Code บน VPS ด้วย tmux เป็นตัวช่วยที่ดี และหากคุณต้องการเข้าใจแนวคิดเบื้องหลังทั้งหมดนี้โดยไม่ยึดติดกับ model ใด model หนึ่ง คู่มือคู่ขนานเรื่อง การสร้าง AI agent ของคุณเองบน VPS จะวางรากฐานทั้งหมดไว้ให้
หากคุณต้องการผู้ช่วยเขียน code ผ่าน terminal การรัน coding AI agent บน VPS จะครอบคลุมเรื่อง Aider และ Goose
FAQ
ฉันควรใช้ Claude model ไหนในการสร้าง agent?
เริ่มจาก Claude Opus 4.8 (claude-opus-4-8) ซึ่งเป็นค่าเริ่มต้นที่มีความสามารถสูง แล้วค่อยปรับเปลี่ยนจากจุดนั้น Claude Sonnet 5 (claude-sonnet-5) ราคาถูกกว่าและเร็วกว่าสำหรับงานส่วนใหญ่, Claude Haiku 4.5 (claude-haiku-4-5) เหมาะที่สุดสำหรับขั้นตอนที่ง่ายและมีปริมาณมาก และ Claude Fable 5 (claude-fable-5) มีความสามารถสูงสุดสำหรับงานที่ยากที่สุด รูปแบบที่นิยมคือการใช้ model ที่ราคาถูกกว่าสำหรับขั้นตอนทั่วไป และใช้ model ที่แข็งแกร่งกว่าสำหรับการตัดสินใจที่ยากลำบาก เนื่องจากสามารถสลับได้เพียงการเปลี่ยน code บรรทัดเดียว
ฉันต้องรัน agent ทั้งหมดบน VPS ของฉัน หรือ Anthropic เป็นคนรัน?
ขึ้นอยู่กับแนวทางที่คุณเลือก หากคุณเขียน loop เองโดยใช้ Claude API หรือใช้ Claude Agent SDK ตัว agent จะทำงานบน VPS ของคุณทั้งหมด และจะมีการเรียกใช้งาน model ไปยัง Anthropic เท่านั้น หากคุณใช้ Managed Agents Anthropic จะเป็นผู้รัน loop และโฮสต์ sandbox ที่ใช้รันเครื่องมือ ดังนั้นจะมีส่วนที่ทำงานบน server ของคุณน้อยกว่า สำหรับ agent ที่ต้องการรันบนเครื่องของคุณเอง ให้เลือกสองวิธีแรก
ความแตกต่างระหว่าง Claude API และ Claude Agent SDK คืออะไร?
Claude API คือ Messages endpoint แบบดิบ: คุณส่งการสนทนาและเครื่องมือ แล้วคุณต้องเขียน agent loop รอบมันเอง หรือใช้ tool runner ของ SDK เพื่อควบคุม ส่วน Claude Agent SDK คือ library ระดับที่สูงกว่า (higher-level) ซึ่งเป็น Claude Code ที่แพ็กมาเพื่อการสร้างต่อ โดยมาพร้อมกับ loop แบบเต็มรูปแบบและเครื่องมือจัดการไฟล์, shell และการค้นหา ให้ใช้ API เมื่อคุณต้องการกำหนดทุกอย่างด้วยตนเอง และใช้ Agent SDK เมื่อคุณต้องการ agent ที่มีความสามารถโดยไม่ต้องประกอบระบบควบคุมเอง
ฉันจะเก็บ Claude API key ให้ปลอดภัยบน server ได้อย่างไร?
เก็บไว้ที่ฝั่ง server และห้ามใส่ไว้ใน code ให้เก็บไว้ในไฟล์ที่อ่านได้เฉพาะ account ที่ agent ใช้รัน โหลดเข้าสู่ service ในฐานะ environment variable และห้าม commit ลงใน repository หรือเปิดเผยต่อ browser เนื่องจากทุกการส่งคำขอไปยัง Claude มาจาก server ของคุณ key จึงไม่จำเป็นต้องไปถึงอุปกรณ์ของผู้ใช้ ซึ่งทำให้การรัน agent บน server ปลอดภัยกว่าการฝังไว้ใน client app
ฉันจำเป็นต้องโฮสต์ model เองเพื่อสร้าง agent ด้วย Claude หรือไม่?
ไม่จำเป็น สำหรับ Claude นั้น model คือบริการแบบ hosted service ที่คุณเรียกใช้งานผ่าน API ดังนั้นจึงไม่มีอะไรต้องรันบน GPU ตัว VPS ของคุณจะรัน agent loop, เครื่องมือ และข้อมูล ส่วนการใช้เหตุผลจะเกิดขึ้นที่ฝั่ง Anthropic นั่นคือเหตุผลที่ server สเปกปานกลางก็สามารถรัน agent ที่มีความสามารถสูงได้ หากคุณต้องการใช้ local model แทน นั่นคือแนวทางแบบ self-hosted ซึ่งมีรายละเอียดในคู่มือการสร้าง AI agent ของคุณเอง