- Đầu năm 2023, LinkedIn bắt đầu ra mắt danh mục sản phẩm tận dụng các tính năng GenAI
- Các sản phẩm GenAI ban đầu khởi đầu từ mô hình đơn giản “nhập prompt, xuất chuỗi”, rồi phát triển thành trải nghiệm agent hội thoại có hỗ trợ bộ nhớ ngữ cảnh
- Thông qua việc xây dựng tech stack ứng dụng GenAI, LinkedIn đã hiện thực hóa một cách tiếp cận giúp cân bằng giữa time-to-market và đòn bẩy dài hạn
Khởi đầu và quá trình phát triển
- Cần xây dựng một framework cung cấp cơ chế tiêu chuẩn cho các tác vụ dùng chung
- Do phần lớn online serving stack của LinkedIn được lập trình bằng Java, ban đầu họ bắt đầu với một Java midtier dùng chung
- Khi số lượng use case tăng lên, midtier này trở thành nút thắt cổ chai trong phát triển và vận hành, nên được tách thành nhiều dịch vụ Java midtier theo từng use case
- Các AI engineer ưu tiên Python cho workflow offline dựa trên LLM, prompt engineering và đánh giá
- Trong ngắn hạn, họ duy trì online/offline stack bị phân mảnh, nhưng về dài hạn đã quyết định dùng Python cho cả online serving
- Xây dựng framework Python cho online serving dựa trên dự án mã nguồn mở LangChain
- Khởi động dự án kích hoạt hỗ trợ Python cho các dependency hạ tầng cốt lõi, với trọng tâm là Python
- Hiện tại framework ứng dụng GenAI là một lớp wrapper mỏng được xây dựng trên LangChain
Quản lý prompt
- Prompt engineering là cơ chế chính để “lập trình” LLM
- Ban đầu họ dùng nội suy chuỗi thủ công trong code, nhưng cách này dễ phát sinh lỗi và không thể mở rộng
- Giới thiệu thành phần Prompt Source of Truth và chuẩn hóa việc sử dụng ngôn ngữ template Jinja
- Viết lại thư viện phân giải prompt từ Java sang Python
- Khi UI hội thoại xuất hiện, cần cung cấp thêm cấu trúc cho vai trò của con người và AI trong cuộc trò chuyện
- Cuối cùng hội tụ về OpenAI Chat Completions API
Tự động hóa tác vụ thông qua skill
- Mở rộng abstraction skill sang ứng dụng GenAI để dùng làm cơ chế tự động hóa tác vụ
- Ban đầu được xây dựng bằng code tùy biến để bọc các API nội bộ và bên ngoài của LinkedIn bằng schema JSON thân thiện với LLM
- Phát sinh các vấn đề như triển khai skill trùng lặp, thay đổi ở downstream skill và việc developer phải chỉ định skill thủ công
- Giới thiệu khái niệm Skill Inversion, cho phép downstream định nghĩa skill và công khai chúng cho ứng dụng gọi sử dụng
- Đơn giản hóa quy trình truy cập, phát triển và vận hành skill thông qua dịch vụ registry skill tập trung, build plugin và LangChain tool động
- Tech stack đang tiếp tục phát triển theo hướng dần tạo abstraction skill cho mọi API để LLM có thể tương tác trơn tru
Nhận thức ngữ cảnh và cá nhân hóa
- Vì LLM về bản chất là stateless, nên việc nhận thức ngữ cảnh và cá nhân hóa là khó khăn
- Ban đầu dùng Couchbase hoặc Espresso DB làm storage, và mỗi team tự phụ trách thiết lập DB, ghi/đọc dữ liệu, v.v.
- Do cửa sổ ngữ cảnh của LLM bị giới hạn, nên cần thêm khả năng tìm kiếm ngữ nghĩa (dùng embedding) và tóm tắt
- Xây dựng hạ tầng bộ nhớ hội thoại bằng cách tận dụng messaging stack của LinkedIn
- Giới thiệu khái niệm Experiential Memory được suy ra từ trải nghiệm tương tác giữa người dùng và ứng dụng
- Tích hợp vào framework ứng dụng GenAI để hỗ trợ developer sử dụng một cách liền mạch
Suy luận mô hình và fine-tuning
- Ban đầu chỉ sử dụng các LLM do Azure OpenAI Service cung cấp
- Các LLM như Llama được fine-tuning cho các tác vụ đặc thù của LinkedIn cho thấy chất lượng tương đương hoặc tốt hơn các mô hình thương mại
- Đang nỗ lực làm cho trải nghiệm của developer ứng dụng trở nên minh bạch giữa mô hình bên ngoài và nội bộ
- Lớp suy luận phơi bày OpenAI Chat Completions API cho mọi LLM
- Có thể chuyển đổi dễ dàng giữa mô hình on-premises và mô hình bên ngoài thông qua các hook cấu hình của framework ứng dụng
Di chuyển
- Việc nhanh chóng di chuyển từ các giải pháp tùy biến cũ sang các giải pháp chuẩn hóa là rất quan trọng
- Một team tinh gọn gồm các engineer có hiểu biết sâu về Java stack và stack mới đã xử lý quá trình migration
- Sử dụng cách tiếp cận từng bước để di chuyển từng thành phần một
- Bắt đầu từ các ứng dụng nhỏ, đơn giản rồi tiến tới các ứng dụng lớn, phức tạp
- Ghép cặp các engineer kỳ cựu với developer Python mới để họ có thể học Python ngay trong công việc thực tế
Suy nghĩ cuối cùng
- Tech stack ứng dụng GenAI mới chấp nhận cách phát triển ưu tiên AI và tạo nền tảng vững chắc để xây dựng các ứng dụng GenAI một cách hiệu quả và có trách nhiệm
- Nó sẽ đóng vai trò quan trọng trong việc hiện thực hóa tầm nhìn mang lại cơ hội kinh tế cho mọi thành viên của lực lượng lao động toàn cầu
- Vẫn còn rất nhiều thách thức cần giải quyết
- Khi ranh giới tiên tiến nhất của trải nghiệm sản phẩm chuyển từ trợ lý hội thoại sang AI agent, các yêu cầu mới về tính năng và vận hành đang bùng nổ nhanh chóng. Nội dung này cũng sẽ được công bố thêm
Chưa có bình luận nào.