- Cách để LLM xử lý toàn bộ kết quả trả về từ lời gọi công cụ là chậm, tốn kém và bất lợi cho khả năng mở rộng
- Thay vào đó, đề xuất để LLM điều phối theo cách xử lý dữ liệu có cấu trúc bằng mã dựa trên output schema
- Cách tiếp cận này phù hợp để xử lý khối lượng dữ liệu lớn nhờ chuỗi hàm bằng mã và quản lý bộ nhớ dựa trên biến
- Phương thức xử lý dữ liệu dựa trên thực thi mã có độ chính xác và khả năng mở rộng cao vì LLM không trực tiếp tái tạo dữ liệu
- Việc xây dựng môi trường runtime AI an toàn đang nổi lên như một bài toán mới, đòi hỏi môi trường thực thi bền vững và có khả năng duy trì trạng thái
Lời gọi hàm của LLM không mở rộng tốt; điều phối bằng mã đơn giản và hiệu quả hơn.
Giới hạn của cách làm truyền thống là đưa kết quả gọi công cụ trở lại cho LLM
- Khi dùng công cụ MCP(Machine Context Protocol), thông thường người ta gửi kết quả đầu ra của công cụ cho LLM dưới dạng message rồi dẫn dắt hành động tiếp theo
- Trong các trường hợp sử dụng thực tế, máy chủ MCP của Linear và Intercom trả về các phản hồi JSON rất lớn
- JSON tương tự API nhưng không có output schema được định nghĩa, khiến LLM phải gánh việc phân tích toàn bộ văn bản
- Ví dụ, kết quả truy vấn danh sách issue của Linear có 50 mục, 70.000 ký tự, khoảng 25.000 token, là cực kỳ lớn
- Nhiều trường
id không mang nhiều ý nghĩa nhưng vẫn tiêu tốn token, và nếu LLM phải tái hiện nguyên trạng chúng thì chi phí và lỗi sẽ tăng cao
Cần tách riêng xử lý dữ liệu và điều phối
- Cách làm hiện tại đang trộn xử lý dữ liệu và điều phối vào cùng một phiên chat
- Một số nơi tạo thêm thread khác như một "agent" cho việc này, nhưng nếu JSON đã có cấu trúc thì đó là cách làm kém hiệu quả
- Cách tốt hơn là xử lý trực tiếp dữ liệu có cấu trúc bằng mã
- Ví dụ: thay vì để LLM tạo đầu ra cho việc sắp xếp issue, chạy
sort bằng mã rồi chỉ trả về mảng kết quả
Xử lý dữ liệu dựa trên thực thi mã
- Tính toán AI thông qua thực thi mã đã được dùng trong nhiều AI interpreter khác nhau
- Cách này cho phép một cấu trúc gọn hơn, trong đó LLM không trực tiếp xuất dữ liệu mà chỉ cần quyết định cách sử dụng công cụ
Các khái niệm chính
- Dùng biến như bộ nhớ: gán giá trị = lưu trữ, output = truy xuất, khi gọi hàm thì truyền làm đối số
- Hỗ trợ chuỗi hàm: kết hợp nhiều lời gọi hàm song song/tuần tự, và biểu diễn phụ thuộc bằng luồng tự nhiên trong mã
- Xử lý dữ liệu lớn có thể mở rộng: kết hợp với NumPy, pandas... để xử lý dễ dàng từ hàng nghìn đến hàng chục nghìn bản ghi
- Cũng có thể gọi LLM khác: trong đoạn mã do LLM viết, có thể gọi một LLM khác để xử lý dữ liệu phi cấu trúc
MCP đã sẵn sàng chưa?
- Đặc tả MCP đã định nghĩa input schema, và gần đây cũng đã có PR cho output schema được gửi lên
- Khi output schema trở nên phổ biến, có thể dùng theo các cách như sau:
- Dashboard tình trạng issue
- Báo cáo ticket hoàn thành hằng tuần
- AI giám sát các ticket bị đình trệ và chủ động đẩy thông báo
Thách thức của môi trường thực thi mã
- Bảo mật là vấn đề cốt lõi: vì chạy mã do AI/người dùng tạo ra nên cần thiết kế để ngăn lộ API key và dữ liệu
- Với Lutra, môi trường thực thi được cấu thành theo mô hình sandbox, và chỉ cung cấp cho model tài liệu gọi API
- Môi trường thực thi có trạng thái (như Jupyter) có chi phí cao, nên để phục vụ các phiên dài hạn cần các đặc tính stateless + persistent
- Điều này đang hình thành một danh mục mới là AI runtime, và việc thiết kế vẫn đang được thúc đẩy mạnh mẽ
Kết luận
- Cách làm truyền thống là đưa kết quả gọi công cụ vào LLM để xử lý có giới hạn về chi phí và độ chính xác
- Điều phối dựa trên mã cho phép xử lý gọn hơn, chính xác hơn và có thể mở rộng
- Môi trường thực thi mã AI đang được chú ý như runtime thế hệ tiếp theo với bảo mật, tính bền vững và khả năng mở rộng
1 bình luận
Ý kiến Hacker News