Bức tường tự động hóa lúc 2 giờ sáng
Bây giờ là 2 giờ sáng thứ Ba. Tôi đang đối mặt với một sự cố hệ thống nghiêm trọng. Một hệ thống CRM cũ—không có REST API, không có CLI, và giao diện người dùng thường xuyên thay đổi các class CSS sau mỗi lần triển khai—đã khóa 500 tài khoản khách hàng quan trọng. Các script Selenium của tôi trở nên vô dụng; cấu trúc DOM là một ‘nghĩa địa’ của các component React đã được mã hóa rối rắm. Đây chính là thời điểm tôi nhận ra rằng việc tự động hóa dựa trên selector vốn rất dễ gãy là một ngõ cụt.
Trong nhiều thập kỷ, chúng ta đã cố gắng dạy máy tính cách phân tích mã nguồn đằng sau một giao diện người dùng. Nhưng con người không đọc mã; chúng ta nhìn vào các pixel. API Computer Use của Anthropic đã thay đổi cuộc chơi. Nó cho phép Claude 3.5 Sonnet ‘nhìn’ màn hình của bạn, di chuyển con trỏ và nhấp vào các nút chính xác như một con người. Nếu bạn muốn tiến xa hơn những chatbot đơn thuần và xây dựng các Agent Python tự hành có thể giải quyết vấn đề trong thế giới thực, việc làm chủ vòng lặp thị giác này là bước đi logic tiếp theo.
Kiến trúc Computer Use thực sự hoạt động như thế nào
Đây không phải là một lệnh gọi API dạng văn bản vào-ra thông thường. Hãy coi đó là một cuộc hội thoại lặp đi lặp lại giữa script của bạn, mô hình AI và hệ điều hành máy chủ. Mỗi bước tiêu tốn khoảng 1.600 token chỉ cho ảnh chụp màn hình, vì vậy việc hiểu rõ tính hiệu quả của vòng lặp là điều tối quan trọng.
Quy trình làm việc tuân theo một chu kỳ nghiêm ngặt:
- Quan sát (Observation): Hệ thống của bạn chụp ảnh màn hình và gửi cho Claude.
- Suy nghĩ (Thought): Claude xác định tọa độ giao diện người dùng (như nút ‘Submit’ tại vị trí 512, 384) và lập kế hoạch cho bước tiếp theo.
- Hành động (Action): Claude trả về một lệnh gọi công cụ cụ thể, chẳng hạn như
mouse_movehoặckey. - Thực thi (Execution): Môi trường cục bộ của bạn chạy lệnh và gửi kết quả—thường là một ảnh chụp màn hình mới—trở lại cho mô hình.
Vòng chu kỳ này lặp lại cho đến khi đạt được mục tiêu. Động cơ đằng sau chính là tính năng beta computer_20241022, cung cấp quyền truy cập vào ba công cụ chính: computer, bash, và str_replace_editor. Để hiểu rõ hơn về khả năng điều khiển máy tính, bạn có thể tham khảo cách kiểm soát AI Agent bằng thư mục .claude/ nhằm tối ưu hóa các lệnh thực thi cục bộ.
Thực hành: Xây dựng AI Agent đầu tiên của bạn
Kinh nghiệm đã dạy tôi rằng việc chạy các agent này bên trong một Docker container là con đường an toàn duy nhất. Bạn chắc chắn không muốn một AI agent vô tình xóa sạch thư mục /home khi nó đang ‘khám phá’ hệ điều hành. Mặc dù Anthropic cung cấp một bản triển khai tham khảo, nhưng việc tự xây dựng logic điều phối từ đầu sẽ giúp bạn kiểm soát chặt chẽ hơn quyền tự chủ của agent. Điều này tương tự như việc sử dụng Function Calling với OpenAI và Claude để thực thi các tác vụ cụ thể một cách chính xác.
1. Thiết lập môi trường
Bắt đầu bằng cách lấy khóa API của bạn. Bạn sẽ cần thư viện Python anthropic mới nhất. Tôi luôn sử dụng môi trường ảo (virtual environment) để tránh xung đột phụ thuộc.
export ANTHROPIC_API_KEY="your_api_key_here"
pip install anthropic
2. Vòng lặp điều khiển cơ bản
Dưới đây là một script tinh gọn hướng dẫn Claude mở Firefox và kiểm tra giá Bitcoin hiện tại. Lưu ý cách chúng ta xác định rõ kích thước hiển thị để giúp mô hình định hướng.
import anthropic
import os
client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
# Lệnh gọi điều phối cốt lõi
response = client.beta.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
tools=[{
"type": "computer_20241022",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 0,
}],
messages=[{
"role": "user",
"content": "Mở Firefox và tìm kiếm giá Bitcoin."
}],
betas=["computer-use-2024-10-22"]
)
print(response.content)
3. Làm chủ tọa độ và tỷ lệ
Tỷ lệ tọa độ là nơi hầu hết các nhà phát triển gặp khó khăn. Claude mong đợi tọa độ dựa trên display_width_px mà bạn định nghĩa trong phần thiết lập công cụ. Nếu màn hình thực tế của bạn là 4K nhưng bạn nói với Claude nó là 1024×768, các cú nhấp chuột sẽ bị lệch hoàn toàn. Hãy bám sát mức 1024×768 hoặc 1280×800; chúng mang lại sự cân bằng tốt nhất giữa chi tiết hình ảnh và chi phí token.
Khi Claude quyết định tương tác, nó sẽ gửi một đối tượng JSON như sau:
{
"action": "mouse_move",
"coordinate": [512, 384]
}
Lớp thực thi của bạn—thường là một script Python sử dụng pyautogui—sẽ chuyển đổi các con số này thành chuyển động trỏ chuột vật lý trong máy tính được container hóa của bạn. Việc này mở ra khả năng tự động hóa kiểm thử bằng AI bằng cách kết hợp sức mạnh của thị giác máy tính với các công cụ như Playwright.
Kinh nghiệm thực chiến: Bảo mật và Độ tin cậy
Các agent chạy thực tế không thể theo kiểu ‘chạy xong rồi bỏ’. Tôi đã từng thấy các agent xoay vòng vô tận trong 10 phút chỉ vì một cửa sổ pop-up chấp nhận cookie che mất tầm nhìn. Dưới đây là các quy tắc ‘bất di bất dịch’ của tôi cho các agent triển khai thực tế:
- Cô lập hoàn toàn: Sử dụng một máy ảo (VM) riêng biệt. Không bao giờ cấp quyền cho agent truy cập vào hệ thống tệp của máy chính hoặc mật khẩu trình duyệt đã lưu.
- Con người tham gia (Human-in-the-loop): Đối với các hành động ‘nguy hiểm’ như nhấp vào nút ‘Delete’ hoặc thực hiện chuyển khoản, hãy thiết lập thông báo Slack để con người phê duyệt.
- Rào chắn Token: Mỗi bước đều tốn phí. Với mức ~$0.005 cho mỗi ảnh chụp màn hình, một vòng lặp không kiểm soát 100 bước sẽ tiêu tốn $0.50. Hãy đặt giới hạn cứng khoảng 15 lần lặp cho mỗi tác vụ để bảo vệ ngân sách của bạn.
Vượt xa hơn cấu trúc DOM
Sức mạnh thực sự của API Computer Use là tính linh hoạt. Tuần trước, tôi đã sử dụng nó để tự động hóa việc nhập dữ liệu cho 45 trường vào một ứng dụng Java cũ từ năm 2008. Không có công cụ cào dữ liệu hiện đại nào có thể làm được. Claude chỉ cần nhìn vào các nhãn, di chuyển chuột và hoàn thành công việc trong chưa đầy ba phút. Bạn cũng có thể áp dụng tư duy này để xây dựng quy trình AI Multi-Agent, nơi nhiều agent phối hợp thực hiện các tác vụ phức tạp trên giao diện người dùng.
Chúng ta đang bước vào một kỷ nguyên mà chúng ta không còn viết script cho các ứng dụng cụ thể nữa mà bắt đầu xác định mục tiêu cho các agent. Thay vì tìm kiếm ID của một nút, chúng ta nói với agent: ‘Gửi biểu mẫu khi đèn tín hiệu thành công màu xanh hiện ra.’ Đó là một sự chuyển đổi cơ bản từ mã lệnh sang ý định khai báo. Hãy ngừng cuộc chiến với các selector DOM hay thay đổi và bắt đầu nhìn vào các pixel. Nếu bạn có thể thấy nó, Claude có thể tự động hóa nó.

