Browser Use trong Managed Deep Agents: dùng API, phiên và handoff đúng cách
Managed Deep Agents của LangChain bổ sung browser từ xa để agent đọc trang JavaScript, bấm nút và điền biểu mẫu. Điểm đáng chú ý là cách chọn API hay browser, phạm vi phiên và handoff để người dùng tự đăng nhập.
Một workflow có thể xử lý gần như mọi thứ bằng API — cho đến khi gặp một website chỉ cho phép người dùng bấm nút, điền biểu mẫu và đi qua các trang được dựng bằng JavaScript.
Đó là khoảng trống mà Browser Use trong Managed Deep Agents của LangChain nhắm tới. Agent có thể đọc nội dung đã render, cuộn trang, bấm phần tử và điền form. Tuy vậy, browser không nên trở thành lựa chọn mặc định: nếu có API phù hợp, LangChain khuyến nghị dùng API thay vì thao tác qua giao diện.
Khi nào cần browser thay vì API?
Browser phù hợp với các việc không có API phù hợp, chẳng hạn:
Đặt chuyến đi hoặc đặt chỗ.
Hủy gói dịch vụ.
Gửi yêu cầu bồi thường.
Thao tác trên trang cần JavaScript để hiển thị giao diện.
Kiểm thử end-to-end cho thay đổi frontend.
Việc chỉ lấy HTML bằng curl không giải quyết được những tình huống này: HTML nhận về có thể là trạng thái trước khi JavaScript render giao diện, đồng thời không thể bấm nút hay gửi biểu mẫu.
Với người xây workflow, cách chia luồng đơn giản là:
Có API phù hợp: gọi API và xử lý kết quả theo workflow thông thường.
Không có API phù hợp: chuyển tác vụ cho agent có browser.
Cần người đăng nhập: dùng handoff để người dùng tự thao tác bước đăng nhập, rồi trả browser cho agent.
Managed Deep Agents bổ sung những công cụ nào?
Managed Deep Agents chạy browser từ xa trong một LangSmith sandbox, tách khỏi sandbox của agent. Agent điều khiển browser qua các công cụ được quản lý:
browsersnapshot: đọc accessibility tree của trang và gắn ID cho các phần tử có thể tương tác.
browserrun: thực hiện một nhóm thao tác như click và fill, hoặc chạy mã theo kiểu đối tượng page của Playwright.
browserscreenshot: chụp trang đã render.
browserhandoff: bàn giao browser cho người dùng, sau đó nhận lại quyền điều khiển.
browserrun có thể gộp nhiều bước thành một lần gọi, ví dụ mở trang, điền trường, bấm nút rồi kiểm tra kết quả. Theo LangChain, cách này giúp hạn chế lượng nội dung của trang phải đưa vào context của model.
Bộ công cụ này được xây dựng trên Stagehand, SDK mã nguồn mở của Browserbase. LangChain cho biết trong thử nghiệm 100 tác vụ từ WebVoyager, công cụ của họ hoàn thành 90% tác vụ với tổng chi phí 1,98 USD. Đây là số liệu do nhà cung cấp công bố, không phải cam kết cho mọi website hoặc quy trình nội bộ.
Bật browser và chọn phạm vi phiên
Để thêm browser vào một Managed Deep Agents project, LangChain hướng dẫn tạo browser.py ở thư mục gốc:
python
# browser.py
from manageddeepagents import definebrowser
browser = definebrowser(
scope="thread",
idlettlseconds=600,
)
Tham số scope quyết định cách chia sẻ trạng thái browser.
| Phạm vi | Cách hoạt động |
|---|---|
| thread | Mỗi cuộc hội thoại có browser riêng, khởi đầu không có cookie hay trạng thái đăng nhập từ thread khác. Đây là giá trị mặc định. |
| user | Các thread của cùng một người dùng đã đăng nhập chia sẻ cookie và trạng thái browser. Mỗi thread vẫn có cửa sổ riêng. |
Với scope="user", người dùng có thể đăng nhập ở một thread và dùng lại phiên đó trong thread sau. LangChain lưu ý phạm vi này hoạt động cùng cơ chế Identity.
Browser tự dừng sau một thời gian không hoạt động. Trong ví dụ trên là 600 giây; thời gian mặc định cũng là 10 phút. Khi thiết kế workflow dài, cần tính đến việc browser có thể đã dừng nếu tác vụ bị chờ quá lâu.
Gợi ý cho workflow vận hành
Dùng thread khi mỗi yêu cầu cần một browser tách biệt.
Chỉ dùng user khi cần tái sử dụng trạng thái đăng nhập của đúng một người dùng đã được định danh.
Không xem user là một phiên đăng nhập dùng chung cho cả đội hoặc cho nhiều khách hàng.
Đăng nhập bằng handoff, không đưa mật khẩu cho agent
Đăng nhập là bước LangChain thiết kế để có người dùng tham gia trực tiếp. Khi agent gặp trang đăng nhập, nó có thể gọi browserhandoff với một lý do, chẳng hạn yêu cầu người dùng đăng nhập để tiếp tục.
Trong LangSmith Studio, người dùng nhận browser tương tác, tự đăng nhập rồi chọn Hand back. Agent tiếp tục từ chính phiên browser đó mà không cần nhận mật khẩu trong tin nhắn model hoặc trace.
Handoff cũng được hỗ trợ trong các kênh Managed Deep Agents như Slack. Theo bài viết phát hành liên quan của LangChain, liên kết handoff hết hạn sau 15 phút.
Điểm quan trọng là handoff phục vụ việc bàn giao thao tác đăng nhập; nó không tự thay thế quy trình phê duyệt nghiệp vụ. Với các hành động như hủy dịch vụ, thanh toán, gửi email hoặc xóa dữ liệu, đội vận hành nên tự thiết kế điểm duyệt phù hợp trước khi agent thực hiện bước cuối.
Browser cho kiểm thử end-to-end
Browser Use cũng hỗ trợ kiểm thử ứng dụng web. Ứng dụng cần kiểm thử chạy trong sandbox của agent, còn browser chạy trong sandbox riêng. LangChain kết nối hai môi trường qua một localhost bridge riêng.
Ví dụ, khi browser mở localhost:5173, yêu cầu được chuyển tới cổng 5173 trong sandbox của agent. Ứng dụng không cần có URL công khai.
Luồng kiểm thử có thể là:
Agent khởi chạy ứng dụng trong sandbox.
Browser mở ứng dụng qua localhost.
Agent đi qua một luồng thực tế, như form đăng ký.
Agent kiểm tra nội dung đã render.
Khi luồng chạy đúng, các bước có thể được lưu thành file test.
LangChain cho biết mỗi lần gọi browserrun có thể tương ứng với một phần của Playwright script. Sau đó, file test có thể được chạy lại mà không cần gọi model, cho đến khi giao diện thay đổi.
Checklist trước khi triển khai
[ ] Kiểm tra xem hệ thống đích có API phù hợp trước khi dùng browser.
[ ] Chọn scope="thread" hoặc scope="user" theo ranh giới người dùng và phiên đăng nhập.
[ ] Dùng browserhandoff cho bước người dùng cần tự đăng nhập.
[ ] Đặt điểm duyệt riêng cho các thao tác có hậu quả nghiệp vụ.
[ ] Theo dõi trạng thái tác vụ và thời gian idle của browser.
[ ] Không đưa mật khẩu vào prompt, trace hoặc nơi lưu log workflow.
[ ] Với luồng kiểm thử lặp lại, cân nhắc lưu thành test Playwright thay vì để agent khám phá lại từ đầu.
Browser Use không biến website thành API. Nhưng với các trang không có API phù hợp, cần JavaScript để hoạt động hoặc cần kiểm thử đúng trải nghiệm người dùng, đây là cách để agent thao tác trên web dưới sự quản lý của Managed Deep Agents — đồng thời vẫn giữ bước đăng nhập trong tay người dùng.