Ở đây luồng công việc thật sự là gì
Phần lớn công cụ mang tên «luồng công việc» trong lĩnh vực trí tuệ nhân tạo chỉ là chuỗi lời nhắc phủ một lớp mỏng bên trên. Bộ dựng của ToRun là một đồ thị có hướng không chu trình gồm các bước có kiểu: bạn nối các lượt gọi mô hình, gọi công cụ, nhánh điều kiện, vòng lặp và luồng con thành một đồ thị, còn bộ máy thực thi chúng theo thứ tự phụ thuộc, song song ở nơi đồ thị cho phép.
Mỗi bước là một thực thể đầy đủ với thiết lập riêng: loại bước (gọi mô hình ngôn ngữ lớn, tìm kiếm trên mạng, chạy mã, tạo ảnh, truy hồi, biến đổi và vân vân), lược đồ đầu vào, chính sách lỗi (hỏng nhanh, thử lại có chờ, chuyển sang phương án khác), trần ngân sách thực thi theo bước và hạn thời gian.
Việc phân luồng mô hình bên trong mỗi bước gọi mô hình ngôn ngữ lớn đi qua đúng đường năng lực như mọi thứ khác trong ToRun. Bạn khai điều mình cần — đầu ra có cấu trúc, thị giác, dùng công cụ, suy luận, một cửa sổ ngữ cảnh ít nhất N thẻ — và bộ chạy giải ra mô hình hợp nhất trong số các nhà cung cấp khả dụng lúc ấy. Nếu nhà cung cấp bạn ưa trả về 5xx, chuỗi dự phòng tự động tiếp quản.
Bộ chạy ưu tiên chất lượng và điều nó đổi trong thực tế
Khi bạn chạy một luồng, bộ chạy cố ý chọn mô hình hạng chất lượng thay vì lựa chọn rẻ nhất. Hai lý do: tự động hóa cho ra sản phẩm (báo cáo, nội dung được sinh, mã nguồn) mà không ai soát ngay, nên những khiếm khuyết về chất lượng lặng lẽ dồn lại; và ở mức dùng vừa phải, chênh lệch chi phí nhỏ hơn cái giá của một đầu ra tồi buộc phải chạy lại hay sửa tay.
Trong thực tế, điều này nghĩa là luồng «tóm tắt nghiên cứu rồi viết một báo cáo» sẽ chuộng một mô hình suy luận vững cho phần tóm tắt và một mô hình văn bản chất lượng cao cho phần viết, thay vì lao xuống đáy giá. Bạn có thể ghi đè ở một bước cụ thể nếu biết ở đó một mô hình nhẹ là đủ.
Tính phí theo đúng phần còn lại của ToRun: mỗi lượt gọi mô hình bên trong một luồng ghi đúng một bản ghi kèm bản chụp giá đã đóng băng. Một lượt chạy gọi ba mô hình khác nhau qua năm bước sẽ cho năm bản ghi. Bạn có thể kiểm chi phí chính xác của từng lượt chạy, tách theo bước, kể cả về sau — thậm chí nhiều tháng sau, khi giá của nhà cung cấp đã dịch chuyển.
Mổ xẻ một lượt chạy
Mỗi lượt chạy luồng cho ra một vết có cấu trúc. Vết ấy trình đồ thị với chú thích ở từng nút: giờ bắt đầu, giờ kết thúc, mô hình đã giải ra, số thẻ vào và ra, các lượt gọi công cụ đã thực hiện, và lỗi nếu có. Ở các bước gọi mô hình ngôn ngữ lớn, bạn có thể mở ra đúng lời nhắc đã gửi và câu trả lời thô đã nhận.
Nếu một bước hỏng, vết cho bạn biết lỗi đến từ lượt gọi mô hình (lỗi nhà cung cấp, tràn ngữ cảnh, từ chối theo chính sách nội dung), từ một công cụ phía sau (hết hạn mạng, hỏng kiểm lược đồ) hay từ chính logic điều kiện của bạn. Bạn không phải thêm nhật ký: nó được bắt ở mức hạ tầng trong mọi lượt chạy.
Bất kỳ lượt chạy nào cũng có thể lặp lại với cùng đầu vào, khiến việc tái hiện một sự cố trở nên thẳng thắn.
Một ví dụ nhỏ: luồng theo dõi đối thủ hằng tuần
Hãy hình dung một luồng bạn khởi chạy vào mỗi sáng thứ Hai:
- Bước tìm kiếm trên mạng — tìm những bài gần đây cho một nhóm từ khóa về đối thủ và trả về danh sách địa chỉ cùng trích đoạn.
- Bước truy hồi — kéo bốn báo cáo gần nhất từ một kho tri thức để đặt ngữ cảnh xuất phát.
- Bước tóm tắt (mô hình ngôn ngữ lớn) — chưng kết quả tìm kiếm thành những phát hiện có cấu trúc: tính năng mới, đổi giá, công bố đáng chú ý.
- Bước viết (mô hình ngôn ngữ lớn) — viết một bản ghi nhớ nội bộ ngắn gọn theo một lối văn nhất quán, tựa trên các phát hiện đã tóm tắt.
- Bước chuyển giao — đăng bản ghi nhớ tới một điểm cuối webhook đã cấu hình.
Đồ thị có phụ thuộc tự nhiên: bước 3 phụ thuộc bước 1 và 2 (hai bước này chạy song song được), bước 4 phụ thuộc bước 3, bước 5 phụ thuộc bước 4. Bộ chạy làm vậy mà không cần bất kỳ thiết lập song song rõ ràng nào: nó đọc các cạnh.