บทความทั้งหมด
AnthropicClaudeAItool use

Anthropic tool use ในเครื่อง: tunnel สำหรับ Claude

tool use ของ Claude ไม่ใช่ webhook แบ็กเอนด์ของคุณส่งข้อความ Claude ตอบกลับ บางครั้งพร้อมคำขอให้เรียกเครื่องมือ โค้ดของคุณรันเครื่องมือแล้วส่งผลลัพธ์กลับ ทั้งหมดเกิดขึ้นผ่าน HTTPS ขาออกจากเครื่องของคุณ แล้วทำไมบทความนี้จึงพูดเรื่อง tunnel?

เพราะทันทีที่คุณสร้างอะไรที่ใช้งานจริงกับ Claude — เอเจนต์เขียนโค้ด ระบบอัตโนมัติด้านซัพพอร์ต เซิร์ฟเวอร์ MCP เวิร์กโฟลว์ยาว ๆ — คุณเริ่มต้องการการเชื่อมต่อขาเข้า สำหรับไคลเอนต์เบราว์เซอร์ สำหรับเซิร์ฟเวอร์ MCP ที่เปิดให้แอปอื่น สำหรับ webhook จากเครื่องมือภายนอกที่โมเดลเรียกใช้

tunnel ช่วยตรงไหนจริง ๆ

ฟรอนต์เอนด์เบราว์เซอร์สำหรับแอป Claude

รูปแบบเดียวกับ การตั้งค่า OpenAI Realtime ฟรอนต์เอนด์ของคุณเก็บคีย์ API ของ Anthropic ไม่ได้ จึงต้องคุยกับแบ็กเอนด์ ซึ่งคุยกับ Anthropic ฟรอนต์เอนด์ต้องการ HTTPS เพื่อให้การตอบแบบสตรีมแสดงผลสะอาด (บางเบราว์เซอร์ลดทอนการจัดการ SSE บน HTTP ธรรมดา) และแบ็กเอนด์ต้องการ HTTPS หากฟรอนต์เอนด์เป็น HTTPS tunnel จัดการให้ทั้งคู่

เซิร์ฟเวอร์ MCP ที่รันในเครื่อง

Model Context Protocol ให้ Claude (และไคลเอนต์อื่น) เชื่อมต่อกับเครื่องมือที่คุณเปิดเป็นเซิร์ฟเวอร์ MCP สำหรับเซิร์ฟเวอร์ MCP แบบ HTTP transport — ต่างจาก stdio — ไคลเอนต์ต้องเข้าถึงเซิร์ฟเวอร์ของคุณ หากคุณกำลังต้นแบบเซิร์ฟเวอร์ MCP และอยากทดสอบกับ Claude Desktop หรือไคลเอนต์รีโมตอื่น การเปิดเซิร์ฟเวอร์ MCP ในเครื่องผ่าน tunnel คือทางที่ง่ายที่สุด

callback ของ computer use

หากคุณใช้ computer use เบตาของ Claude และโมเดลโต้ตอบกับบริการที่ยิง webhook กลับมายังเครื่องของคุณ คุณก็อยู่ในดินแดน webhook รูปแบบเดียวกับผู้ให้บริการอื่น: จับ ส่งซ้ำ ตรวจสอบ (ถ้ามี)

สิ่งที่ tunnel ไม่ทำ

คุณไม่ต้องใช้ tunnel แค่เพื่อเรียก Claude จากสคริปต์ในเครื่อง curl https://api.anthropic.com/v1/messages ทำงานได้จากทุกเครื่อง SDK ของ Python และ TypeScript ก็ทำงานดี tool use เองเป็นการโต้ตอบขาออก — Claude ไม่ได้เรียกเครื่องของคุณเมื่ออยากใช้เครื่องมือ แต่โค้ดของคุณเป็นผู้เรียกตามคำตอบของ Claude

เรื่องนี้ทำให้บางคนงงในครั้งแรก รูปแบบคือ:

  1. โค้ดของคุณส่งข้อความผู้ใช้ไปยัง Claude พร้อมรายการเครื่องมือที่ใช้ได้
  2. Claude ตอบกลับ อาจมีบล็อก tool_use อธิบายเครื่องมือที่จะเรียก
  3. โค้ดของคุณ รันเครื่องมือกับระบบในเครื่องของคุณ
  4. โค้ดของคุณส่งผลลัพธ์เครื่องมือกลับไปยัง Claude เป็นข้อความต่อเนื่อง
  5. วนซ้ำจนเสร็จ

ทั้งห้าขั้นเกิดในโปรเซส Python หรือ TypeScript เดียว ไม่มีทราฟฟิกขาเข้า ไม่มี tunnel

เหตุผลที่แท้จริงว่าทำไม tunnel ช่วยเวิร์กโฟลว์ Claude

เหตุผลที่เราลงเอยด้วยการรัน tunnel ระหว่างพัฒนากับ Claude ไม่ใช่ตัวโมเดล แต่เป็นทุกอย่างรอบ ๆ มัน: แดชบอร์ดแสดงความคืบหน้าของเอเจนต์ ฟรอนต์เอนด์ที่สตรีมผลลัพธ์เครื่องมือ เซิร์ฟเวอร์ MCP ที่เปิดไว้ทดสอบ webhook จากเครื่องมือภายนอกที่เอเจนต์เรียก ("ส่งข้อความ Slack", "สร้าง issue ใน Linear") เอเจนต์จุดชนวนปฏิกิริยาลูกโซ่ และที่ไหนสักแห่งในห่วงโซ่นั้น บริการภายนอกก็อยากเข้าถึงเครื่องของคุณในที่สุด

การตั้งค่าลูปพัฒนาเซิร์ฟเวอร์ MCP

  1. สร้างเซิร์ฟเวอร์ MCP ด้วย HTTP transport
  2. รันในเครื่องที่พอร์ตที่คุณเลือก
  3. npx portpreview 3000 (หรือพอร์ตของคุณ)
  4. ใน Claude Desktop หรือไคลเอนต์ MCP อื่น ตั้งค่า URL เซิร์ฟเวอร์รีโมตให้ชี้ไปยัง tunnel ของคุณ
  5. ออกคำสั่ง สังเกตการจับคำขอใน tunnel และการตอบกลับที่เซิร์ฟเวอร์ของคุณส่งคืน

หากเซิร์ฟเวอร์ MCP ของคุณเป็น stdio transport เรื่องนี้ไม่เกี่ยว — เซิร์ฟเวอร์ stdio สื่อสารผ่าน process pipe และอยู่ในเครื่องตามการออกแบบ

การตอบแบบสตรีมกับ tunnel

Claude สตรีมการตอบผ่าน SSE tunnel ต้องจัดการการตอบแบบสตรีมที่อยู่ยาวให้ถูกต้อง — ส่วนใหญ่ทำได้ แต่ HTTP proxy เก่าบางตัวบัฟเฟอร์การตอบแล้วปล่อยตอนจบ ซึ่งทำให้การสตรีมไร้ความหมาย PortPreview, Cloudflare และ ngrok จัดการ SSE โดยไม่บัฟเฟอร์ หากฟรอนต์เอนด์ได้รับการตอบทั้งก้อนหลังรอนาน แสดงว่า tunnel กำลังบัฟเฟอร์ นั่นเป็นปัญหาของ tunnel ไม่ใช่ของ Claude

การดีบักลูปเอเจนต์

ส่วนที่ยากที่สุดของการพัฒนา tool use กับ Claude ไม่ใช่ API แต่คือการเข้าใจว่าโมเดลตัดสินใจทำอะไรในแต่ละขั้น ล็อกทุกบล็อก tool_use ก่อนรัน ล็อกทุกผลลัพธ์เครื่องมือก่อนส่งคืน Claude หากคุณมี tunnel ระหว่างฟรอนต์เอนด์กับแบ็กเอนด์ การจับคำขอยังให้บันทึกข้อความผู้ใช้ด้วย — มีประโยชน์ในการเล่นซ้ำการทำงานของเอเจนต์โดยไม่ต้องพิมพ์พรอมป์ใหม่

ทิศทางต่อไป

อีโคซิสเต็ม tool use ของ Anthropic ขยับเร็ว — MCP, computer use, หน้าต่างบริบทยาวขึ้น, latency ต่ำลง รูปแบบ webhook จาก การดีบัก webhook ในเครื่อง และคณิตศาสตร์ลายเซ็นจาก คู่มือตรวจสอบลายเซ็น ใช้ได้เมื่อเครื่องมือภายนอกใดก็ตามที่เอเจนต์เรียกยิง callback กลับมายังเครื่องของคุณ

เข้าร่วมรายชื่อรอของ PortPreview เพื่อ tunnel ที่มีการจับ ส่งซ้ำ และการส่งต่อที่ปลอดภัยกับ SSE ในตัว

คำถามที่พบบ่อย

ต้องใช้ tunnel เพื่อใช้ tool use ของ Claude ไหม?
ไม่ต้องสำหรับ API หลัก tool use ของ Claude เป็นการโต้ตอบขาออก — โค้ดของคุณเรียก Anthropic, Claude ตอบด้วยคำขอเครื่องมือ, โค้ดของคุณรัน, แล้วส่งผลลัพธ์กลับ ทั้งหมดขาออก คุณต้องใช้ tunnel เฉพาะเมื่อบริการภายนอกเรียกเครื่องของคุณ: ฟรอนต์เอนด์เบราว์เซอร์ เซิร์ฟเวอร์ MCP ที่เปิดแบบรีโมต หรือเครื่องมือภายนอกที่ยิง webhook กลับ
ทดสอบเซิร์ฟเวอร์ MCP กับ Claude ในเครื่องอย่างไร?
สำหรับเซิร์ฟเวอร์ MCP แบบ HTTP transport ให้รันเซิร์ฟเวอร์ในเครื่องแล้วเปิดผ่าน tunnel ตั้งค่า Claude Desktop (หรือไคลเอนต์ MCP รีโมตอื่น) ด้วย URL ของ tunnel เซิร์ฟเวอร์ MCP แบบ stdio ไม่ต้องใช้ tunnel เพราะสื่อสารผ่าน process pipe
tunnel จะทำให้การตอบแบบสตรีมของ Claude เสียไหม?
tunnel สมัยใหม่ส่วนใหญ่จัดการสตรีม SSE โดยไม่บัฟเฟอร์ หากฟรอนต์เอนด์ได้รับการตอบทั้งก้อนพร้อมกันหลังรอนาน แสดงว่า tunnel กำลังบัฟเฟอร์และทำให้การสตรีมเสีย PortPreview และ tunnel ใหม่ ๆ เลี่ยงเรื่องนี้