Gần đây tôi nhận được một email từ một học giả tài năng hỏi về cách Botpress kết nối với các LLM.
Anh ấy đang viết một bài báo về cách tránh bị phụ thuộc vào nhà cung cấp, và muốn biết liệu chúng tôi có sử dụng một framework như LangChain hoặc Haystack không.
Tôi rất vui khi chia sẻ với anh ấy rằng chúng tôi đã tự xây dựng các lớp trừu tượng cho phép người dùng Botpress kết nối với các LLM.
Vì chủ đề này được nhiều người quan tâm, tôi muốn công khai thông tin này. Có thể nó sẽ hữu ích cho các lập trình viên khác hoặc người dùng nền tảng của chúng tôi. Hy vọng bạn thấy nó thú vị như tôi khi xây dựng nó.
Hai cách Botpress kết nối với LLM
Botpress đã xây dựng các lớp trừu tượng riêng hoạt động theo hai cách:
1. Tích hợp
Tích hợp có khái niệm về các hành động với kiểu dữ liệu đầu vào và đầu ra cụ thể.
Chúng tôi có các thành phần mã nguồn mở trên nền tảng, cho phép cộng đồng tạo tích hợp riêng, có thể dùng cá nhân hoặc chia sẻ công khai.
Vì vậy, các nhà cung cấp LLM – OpenAI, Anthropic, Groq, v.v. – đều có một tích hợp riêng. Đây là một cách để người dùng của chúng tôi kết nối với họ.
2. Giao diện tích hợp LLM
Bên cạnh khái niệm tích hợp, chúng tôi bổ sung thêm “giao diện”.
Đây chỉ là các định nghĩa lược đồ tiêu chuẩn mà các tích hợp có thể mở rộng. Chúng tôi đã tạo một lược đồ tiêu chuẩn cho các LLM.
Chỉ cần một tích hợp mở rộng theo lược đồ này, tích hợp đó sẽ được xem là một nhà cung cấp LLM. Vì vậy, nó hoạt động ngay lập tức trong Botpress.
Dưới đây là một số ví dụ về tích hợp của Botpress cho các nhà cung cấp LLM khác nhau:
Chúng tôi cũng có các giao diện tương tự cho text2image, image2text, voice2text, text2voice, v.v.
Cấu hình mô hình
Trong Botpress Studio, chúng tôi có hai cấu hình chung: "Best Model" và "Fast Model". Chúng tôi nhận thấy hầu hết các tác vụ đều phù hợp với một trong hai chế độ này.


Nhưng ngoài việc chỉ chọn mô hình, chúng tôi nhận thấy các nhà cung cấp khác nhau có sự khác biệt lớn về cách gọi công cụ và định dạng tin nhắn, khiến việc chuyển đổi giữa các mô hình không dễ dàng và khó đạt hiệu suất tốt.
Bộ máy suy luận của Botpress
Chính vì vậy, chúng tôi đã phát triển một công cụ suy luận riêng gọi là LLMz, có thể hoạt động với bất kỳ mô hình nào mà không cần (hoặc chỉ cần rất ít) thay đổi prompt. Công cụ này cũng cung cấp khả năng gọi công cụ tốt hơn nhiều và thường mang lại hiệu suất tốt hơn về chi phí token và số lần tương tác với LLM.
Bộ máy này sử dụng các kiểu typescript cho định nghĩa công cụ, markdown cho định dạng tin nhắn và mã, cùng một sandbox thực thi tương thích LLM cho quá trình suy luận.
LLMz cung cấp nhiều tối ưu hóa và tính năng gỡ lỗi cần thiết cho các trường hợp sử dụng nâng cao như:
- Nén token đầu vào
- Cắt bớt token thông minh
- Tối ưu hóa bộ nhớ thành ngữ cảnh dựa trên token
- Gọi công cụ song song & kết hợp
- Kết hợp nhiều tin nhắn + gọi công cụ trong một lần gọi LLM
- Công cụ đảm bảo kiểu dữ liệu (đầu vào & đầu ra) hoàn toàn
- Phiên làm việc lâu dài thông qua lưu trữ sandbox
- Giả lập, bao bọc và theo dõi công cụ
- Cách ly thực thi hoàn toàn trong các V8 isolate nhẹ (cho phép chạy hàng nghìn tiến trình đồng thời nhanh và tiết kiệm chi phí)
- Tự động lặp lại và phục hồi lỗi
Tất cả những điều này đều cần thiết cho các trường hợp sử dụng của chúng tôi. Nhưng với cách gọi công cụ thông thường thì không thể hoặc rất khó thực hiện.
Lý do không dùng mô hình router nhẹ
Chúng tôi từng cân nhắc xây dựng một mô hình router nhẹ nằm trên các mô hình hiện có và tự động chọn mô hình phù hợp cho từng tác vụ.
Nhưng chúng tôi đã quyết định không làm vậy vì nhiều lý do:
1. Tính dự đoán được
Hầu hết khách hàng của chúng tôi – điều này hoàn toàn dễ hiểu – đều muốn kết quả ổn định và có thể dự đoán được.
Vì vậy, ý tưởng về một router mô hình động khá rủi ro cho các agent cấp cao. Nó làm tăng thêm một lớp không chắc chắn cho LLM.
2. Tốc độ
Độ trễ là yếu tố rất quan trọng đối với các trường hợp sử dụng của chúng tôi. Để bộ định tuyến hoạt động nhanh, mô hình phải rất nhỏ (và có thể kém thông minh hơn) so với các mô hình mà nó sẽ chuyển tiếp – có lẽ là một bộ phân loại truyền thống.
Dù các mô hình này thường hoạt động ổn khi được huấn luyện cho tác vụ cụ thể, a) kích thước ngữ cảnh ngắn là vấn đề với prompt dài và b) chúng không tổng quát hóa tốt với các prompt ngoài phạm vi huấn luyện.
3. Ưu thế mô hình hoặc bình đẳng mô hình
Dù các bảng xếp hạng có thể nói khác, thực tế chúng tôi hiếm khi thấy mô hình nào vượt trội hơn GPT-4o (cho đến nay).
Vẫn chưa rõ liệu LLM sẽ thực sự làm tốt hơn ở tác vụ X so với Y theo thời gian, hay tất cả LLM sẽ đều rất mạnh ở hầu hết mọi thứ. Nếu rơi vào trường hợp sau, việc chọn mô hình sẽ không còn ý nghĩa.
Tương lai bảo vệ LLM bằng phản hồi
Trong vài năm tới, LLM sẽ trở thành một mặt hàng phổ biến và việc lựa chọn mô hình sẽ không còn quan trọng nữa.
Vì những lý do đó, chúng tôi quyết định đầu tư nỗ lực vào việc cung cấp một cơ chế tốt để cung cấp ví dụ cho các LLM.
Chúng tôi đã xây dựng một hệ thống thu thập phản hồi. Nó lưu trữ "bài học" cho các lần thực thi sau. Và nó tự động cung cấp các bài học phù hợp nhất khi tạo prompt cho các lần thực thi tiếp theo, nhằm đảm bảo cải thiện liên tục và ổn định theo thời gian.
Khi các LLM ngày càng đạt hiệu suất cao hơn, chúng tôi đã sẵn sàng và rất hào hứng tận dụng tối đa chúng cho người dùng nền tảng của mình.





.webp)
