← กลับไปที่บล็อก

Claude Computer Use Tool: คู่มือนักพัฒนาฉบับสมบูรณ์สำหรับ AI Desktop Automation

· Save Team
claudeaicomputer-useautomationapideveloperanthropic

ถ้าคุณสามารถบอก AI ว่า “เปิด Firefox ไปที่เว็บไซต์ กรอกฟอร์ม และบันทึกผลลัพธ์” — แล้วมันทำจริงๆ? ไม่ใช่ผ่าน Selenium script ที่เปราะบาง ไม่ใช่ผ่าน custom API integration เพียงแค่… ดูหน้าจอและใช้เมาส์กับแป้นพิมพ์เหมือนมนุษย์

นั่นคือสิ่งที่ computer use tool ของ Claude ทำ

Computer Use คืออะไร?

Computer use คือฟีเจอร์ API เบต้าที่ให้ Claude โต้ตอบกับ desktop environment ผ่าน:

  • Screenshot capture — Claude เห็นสิ่งที่อยู่บนหน้าจอ
  • Mouse control — คลิก ลาก เลื่อน
  • Keyboard input — พิมพ์ข้อความ กดคีย์ลัด
  • Desktop automation — โต้ตอบกับแอปพลิเคชันใดก็ได้

คำสำคัญคือ ใดก็ได้ ต่างจาก automation แบบดั้งเดิม (Selenium สำหรับเบราว์เซอร์ AppleScript สำหรับ macOS) Claude ไม่ต้องการ API พิเศษหรือ element selector มันดูพิกเซลบนหน้าจอและตัดสินใจว่าจะคลิกที่ใด เหมือนที่คุณทำ

วิธีการทำงาน (Agent Loop)

Computer use ทำตามวงจรง่ายๆ:

  1. คุณส่งงานให้ Claude — “บันทึกรูปแมวลงบน desktop ของฉัน”
  2. Claude ขอ tool action — “ถ่าย screenshot”
  3. แอปของคุณดำเนินการ — จับภาพหน้าจอ ส่งคืนภาพ
  4. Claude วิเคราะห์และขอการกระทำต่อไป — “คลิกที่พิกัด (500, 300)”
  5. ทำซ้ำ จนกว่างานจะเสร็จ

วงจรนี้เรียกว่า agent loop Claude ยังคงขอการกระทำ (screenshot คลิก พิมพ์ เลื่อน) และแอปพลิเคชันของคุณดำเนินการเหล่านั้นจนกว่า Claude จะพิจารณาว่างานเสร็จสิ้น

API call ขั้นต่ำเพื่อเริ่มต้น:

import anthropic

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-opus-4-6",
    max_tokens=1024,
    tools=[
        {
            "type": "computer_20251124",
            "name": "computer",
            "display_width_px": 1024,
            "display_height_px": 768,
            "display_number": 1,
        },
        {"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
        {"type": "bash_20250124", "name": "bash"},
    ],
    messages=[{
        "role": "user",
        "content": "Save a picture of a cat to my desktop."
    }],
    betas=["computer-use-2025-11-24"],
)

Beta header "computer-use-2025-11-24" เป็นข้อกำหนด เครื่องมือสามตัว (computer, text editor, bash) ทำงานร่วมกันเพื่อให้ Claude ควบคุม environment ได้อย่างสมบูรณ์

การกระทำที่ใช้ได้

Computer use tool รองรับชุดการโต้ตอบที่หลากหลาย:

การกระทำพื้นฐาน

  • screenshot — จับภาพ display ปัจจุบัน
  • left_click — คลิกที่พิกัด [x, y]
  • type — พิมพ์สตริงข้อความ
  • key — กดปุ่มหรือคอมโบ (เช่น ctrl+s, alt+tab)
  • mouse_move — เลื่อน cursor

การกระทำขั้นสูง (Claude 4.x Models)

  • scroll — เลื่อนในทิศทางใดก็ได้พร้อมควบคุมปริมาณ
  • left_click_drag — คลิกและลากระหว่างพิกัด
  • right_click, middle_click — ปุ่มเมาส์เพิ่มเติม
  • double_click, triple_click — multi-click
  • hold_key — กดปุ่มค้างไว้ตามระยะเวลา
  • wait — หยุดระหว่างการกระทำ

การเพิ่มล่าสุด: Zoom

ใช้ได้กับ Claude Opus 4.6, Sonnet 4.6 และ Opus 4.5:

  • zoom — ตรวจสอบส่วนหน้าจอเฉพาะด้วยความละเอียดเต็ม

มีประโยชน์โดยเฉพาะเมื่อ Claude ต้องอ่านตัวอักษรขนาดเล็กหรือระบุรายละเอียด UI ที่ละเอียด

Computing Environment

Claude ไม่ได้เชื่อมต่อกับคอมพิวเตอร์ของคุณโดยตรง คุณต้องจัดหา sandboxed environment — โดยทั่วไปเป็น Docker container ที่รัน:

  • Virtual display — Xvfb (X Virtual Framebuffer) render desktop
  • Desktop environment — lightweight window manager เช่น Mutter
  • Applications — Firefox, LibreOffice, file manager ฯลฯ
  • Tool implementations — โค้ดที่แปล request ของ Claude เป็น mouse/keyboard operations จริง

Anthropic จัดหา reference implementation ที่มีทุกอย่างนี้พร้อมตั้งค่าใน Docker เป็นวิธีที่เร็วที่สุดในการเริ่มต้น

สร้าง Agent Loop

นี่คือ agent loop แบบง่ายที่จัดการการโต้ตอบ:

async def agent_loop(task: str, max_iterations: int = 10):
    client = anthropic.Anthropic()
    messages = [{"role": "user", "content": task}]

    tools = [
        {
            "type": "computer_20251124",
            "name": "computer",
            "display_width_px": 1024,
            "display_height_px": 768,
        },
        {"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
        {"type": "bash_20250124", "name": "bash"},
    ]

    for _ in range(max_iterations):
        response = client.beta.messages.create(
            model="claude-opus-4-6",
            max_tokens=4096,
            messages=messages,
            tools=tools,
            betas=["computer-use-2025-11-24"],
        )

        messages.append({"role": "assistant", "content": response.content})

        # ดึง tool calls
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result,
                })

        if not tool_results:
            return messages  # งานเสร็จสิ้น

        messages.append({"role": "user", "content": tool_results})

ฟังก์ชัน execute_tool คือที่ที่คุณเชื่อมต่อการจับภาพหน้าจอจริง การคลิกเมาส์ และ keyboard input กับ computing environment ของคุณ

Coordinate Scaling: จุดที่ต้องระวัง

API จำกัดภาพไว้สูงสุด 1568px บนขอบยาวที่สุด ถ้า display ของคุณใหญ่กว่า (เช่น 1512x982) screenshot จะถูกลดขนาด — แต่ Claude ส่งคืนพิกัดตามภาพที่ เล็กกว่า

คุณต้องปรับขนาดพิกัดกลับขึ้นไป:

import math

def get_scale_factor(width, height):
    long_edge = max(width, height)
    total_pixels = width * height
    long_edge_scale = 1568 / long_edge
    total_pixels_scale = math.sqrt(1_150_000 / total_pixels)
    return min(1.0, long_edge_scale, total_pixels_scale)

scale = get_scale_factor(1512, 982)

# เมื่อ Claude บอกว่า "คลิกที่ (450, 300)" ให้ปรับขนาดขึ้น:
def execute_click(x, y):
    screen_x = x / scale
    screen_y = y / scale
    perform_click(screen_x, screen_y)

การข้ามขั้นตอนนี้หมายความว่าการคลิกของ Claude จะพลาดเป้าหมาย นี่คือ implementation bug ที่พบบ่อยที่สุด

เคล็ดลับ Prompting สำหรับผลลัพธ์ที่ดีขึ้น

Computer use ทำงานได้ดีที่สุดกับ prompt ที่ชัดเจนและมีโครงสร้าง:

  1. ระบุรายละเอียด “เปิด Firefox ไปที่ example.com และคลิกปุ่ม Login” ทำงานได้ดีกว่า “เข้าสู่ระบบเว็บไซต์”

  2. ให้ Claude ยืนยัน เพิ่มสิ่งนี้ใน prompt: “หลังจากแต่ละขั้นตอน ถ่าย screenshot และประเมินว่าคุณได้ผลลัพธ์ที่ถูกต้องหรือไม่ ดำเนินการต่อเมื่อยืนยันแล้วเท่านั้น”

  3. ใช้คีย์ลัด Dropdown และ scrollbar อาจคลิกได้ยาก กระตุ้น Claude ให้ใช้ Tab, Enter และปุ่มลูกศรแทน

  4. ให้ตัวอย่าง สำหรับงานที่ทำซ้ำ ให้รวม example screenshot และ expected tool calls ใน prompt

  5. ใช้ XML tags สำหรับ credentials ถ้า Claude ต้องเข้าสู่ระบบ ส่ง credentials ใน <robot_credentials> tags แต่ระวัง — ความเสี่ยง prompt injection สูงขึ้นเมื่อ Claude โต้ตอบกับเนื้อหาที่ไม่น่าเชื่อถือ

ความปลอดภัย: ต้องจริงจัง

Computer use มีความเสี่ยงด้านความปลอดภัยเฉพาะ:

  • Prompt injection ผ่านเนื้อหาหน้าจอ Claude อ่านทุกอย่างบนหน้าจอ เว็บเพจที่เป็นอันตรายอาจแสดงคำสั่งที่แทนที่ prompt ของคุณ
  • การกระทำอัตโนมัติ Claude อาจคลิกลิงก์ ยืนยัน dialog หรือนำทางออกจากที่คุณตั้งใจ
  • การเปิดเผย credentials ถ้า Claude เห็นรหัสผ่านหรือ token บนหน้าจอ สิ่งเหล่านั้นกลายเป็นส่วนหนึ่งของการสนทนา

Anthropic มี classifier ในตัวที่ตรวจจับ prompt injection ที่อาจเกิดขึ้นใน screenshot แต่การป้องกันที่ดีที่สุดคือการแยกออก:

  • รันใน VM หรือ Docker container เฉพาะ ที่มีสิทธิ์น้อยที่สุด
  • อย่าให้สิทธิ์เข้าถึงบัญชีที่ละเอียดอ่อน โดยไม่มีการกำกับดูแล
  • จำกัดการเข้าถึงอินเทอร์เน็ต ด้วย allowlist ของ domain
  • ต้องการการยืนยันจากมนุษย์ สำหรับการกระทำที่มีผลลัพธ์ (การซื้อ การสร้างบัญชี ฯลฯ)

สิ่งที่ควรสร้างด้วย

Computer use เหมาะที่สุดสำหรับงานที่ความเร็วไม่ใช่สิ่งสำคัญแต่ automation มีคุณค่า:

  • Automated testing — ทดสอบแอปพลิเคชัน desktop ใดก็ได้ ไม่ใช่แค่ web app
  • Data collection — นำทางเว็บไซต์และดึงข้อมูล
  • Legacy system integration — จัดการ workflow ใน app ที่ไม่มี API
  • Form filling — กรอก web form ข้ามหลายเว็บไซต์
  • Research workflows — ค้นหา อ่าน และรวบรวมข้อมูลจากเว็บ
  • QA & monitoring — ตรวจสอบว่า UI render ถูกต้อง

สำหรับ research และ workflow การเก็บข้อมูล เครื่องมืออย่าง Save เสริม computer use ได้ดี — เมื่อ Claude นำทางไปยังหน้าเว็บ การแปลงเป็น Markdown ที่สะอาดให้เนื้อหาที่มีโครงสร้างและพร้อมสำหรับ AI แทน screenshot ดิบ

ข้อจำกัดปัจจุบัน

ระวังข้อจำกัดเบต้าเหล่านี้:

  • Latency การกระทำแต่ละอย่างต้องการ API call การจับ screenshot และการตอบสนอง ช้ากว่ามนุษย์ที่คลิก
  • ความแม่นยำในการมองเห็น Claude อาจอ่านตัวอักษรขนาดเล็กผิดหรือระบุ UI elements ผิด zoom action ใหม่ช่วย แต่ไม่สมบูรณ์
  • Scrolling ปรับปรุงมากในรุ่นล่าสุด แต่การ scroll แบบซับซ้อนอาจยังไม่น่าเชื่อถือ
  • Spreadsheet การเลือกเซลล์ยุ่งยาก ใช้ keyboard navigation เมื่อเป็นไปได้
  • ไม่มีการสร้างบัญชีบน social platform Claude จงใจจะไม่สร้างบัญชีหรือแอบอ้างเป็นมนุษย์บน social media

ราคา

Computer use ใช้ราคา tool use มาตรฐาน:

  • System prompt overhead: 466-499 tokens
  • Tool definition: 735 tokens ต่อ tool (สำหรับ Claude 4.x)
  • Screenshots: เรียกเก็บเงินเป็น vision tokens (ขึ้นอยู่กับความละเอียด)
  • แต่ละ API call ใน agent loop เป็นคำขอที่เรียกเก็บเงินแยกต่างหาก

สำหรับงาน 10 ขั้นตอนทั่วไป คาดว่าจะใช้ 15,000-50,000 tokens ขึ้นอยู่กับขนาด screenshot และความซับซ้อนของการตอบสนอง

เริ่มต้น

  1. ลอง reference implementation Clone anthropic-quickstarts รัน Docker container และทดลอง
  2. เริ่มด้วยงานง่ายๆ “เปิด text editor พิมพ์ Hello World บันทึกไฟล์” ให้ agent loop ทำงานก่อนที่จะลอง workflow ที่ซับซ้อน
  3. เพิ่มมาตรการป้องกัน กำหนดขีดจำกัดการวนซ้ำ ตรวจสอบพิกัด บันทึกทุกการกระทำ เพิ่มการยืนยันจากมนุษย์สำหรับสิ่งที่ยกเลิกไม่ได้
  4. ปรับ prompt ให้เหมาะสม ยิ่งคำสั่งดีเท่าไหร่ Claude ต้องการการวนซ้ำน้อยลง — และค่า token ของคุณก็จะลดลง

Computer use แสดงถึงการเปลี่ยนแปลงขั้นพื้นฐานในสิ่งที่เป็นไปได้ด้วย AI API แทนที่จะสร้าง custom integration สำหรับทุกแอปพลิเคชัน คุณสามารถให้ Claude ใช้ interface เดียวกับที่มนุษย์ใช้ — หน้าจอ เมาส์ และแป้นพิมพ์ — และให้มันคิดออกเอง

อนาคตของ automation ไม่ใช่ API มากขึ้น มันคือ AI ที่สามารถใช้ interface ที่เรามีอยู่แล้ว