16 điểm bởi xguru 2023-07-16 | 4 bình luận | Chia sẻ qua WhatsApp
  • LangChain: thư viện Python và JavaScript giao tiếp với API GPT của OpenAI để tạo văn bản bằng AI
    • Là một triển khai của bài báo ReAct, được biết đến với khả năng cải thiện chất lượng văn bản đầu ra của LLM
    • Quy trình ReAct đặc biệt hiệu quả với InstructGPT/text-davinci-003, nhưng chi phí cao và không dễ dùng cho các dự án nhỏ
  • Khi LangChain trở nên nổi tiếng, dự án đã huy động được khá nhiều vốn dù không có doanh thu riêng hay kế hoạch kiếm tiền rõ ràng
  • Trên thực tế, đã từng định dùng nó để xây chatbot tại BuzzFeed
    • Vì LangChain là một công cụ phổ biến cho RAG(Retrieval-Augemented Generation)
    • Nhưng dù nghiên cứu rất lâu vẫn không ổn. Nhiều lỗi và chất lượng cũng không tốt
    • Khi quay lại tầng thấp hơn và tự phát triển trực tiếp, kết quả tốt hơn LangChain rất nhiều
    • Trên Hacker News, qua bài viết "Tạo LangChain bằng 100 dòng code" và phần bình luận chỉ trích LangChain, tác giả nhận ra không chỉ mình mới gặp tình trạng này
  • Vấn đề của LangChain là nó thêm vào hệ sinh thái AI những độ phức tạp và thiên lệch không cần thiết
    • Người mới muốn học cách giao tiếp với ChatGPT tuyệt đối không nên bắt đầu bằng LangChain
    • Ví dụ và mã nguồn phức tạp hơn so với việc dùng thư viện Python chính thức của OpenAI
    • Prompt engineering của LangChain về bản chất chỉ là f-strings có thêm vài bước phụ
    • Workflow agent và tính năng nhớ hội thoại được tài liệu hóa chưa tốt nên dễ gây bối rối khi sử dụng
    • Tính năng system prompt không được tích hợp đúng cách với workflow agent
    • Tài liệu và ví dụ có nhiều vấn đề hơn là ưu điểm nên gây khó khăn khi dùng thực tế
  • Agent của LangChain dùng một cách chọn công cụ khá đặc thù thông qua prompt engineering và đầu ra JSON
    • Chỉ cần cấu trúc đầu ra thông thường thay đổi là agent có thể ngừng hoạt động và có thể phải xử lý lỗi phân tích cú pháp
    • Chatbot có thể trích xuất và định dạng công thức đúng cách, nhưng đầu ra lại tẻ nhạt
    • Dù có tính năng agent và chain tùy biến, điều này lại làm quy trình trở nên phức tạp hơn
    • Với các tiện ích như text splitter và vector store tích hợp, LangChain đặt ra giới hạn khiến bạn chỉ có thể dùng mã dựa trên LangChain
  • LangChain làm tăng overhead và độ phức tạp trong hầu hết các trường hợp sử dụng phổ biến
    • Có vẻ như nó hiện thân cho triết lý “it’s complicated, so it must be better!”
  • Tác giả đã phát triển một gói Python đơn giản hơn nhiều là simpleaichat như một lựa chọn thay thế cho LangChain
  • Đây không phải để quảng bá simpleaichat, mà là vì tác giả lo rằng người mới sẽ chọn LangChain ngay từ đầu

4 bình luận

 
sungwoo 2023-07-18

Tôi cũng đã phân tích LangChain và cảm nhận khá rõ rằng nó bị over-engineering.
http://swcho.github.io/blogs/2023-07-15-langchainjs-part-3

Có lẽ nên tìm ý nghĩa của langchain ở chỗ đây là mã nguồn mở đầu tiên đặt ra câu hỏi: nên xây dựng hệ sinh thái LLM như thế nào?

Dù tính dễ sử dụng của LangChain có kém đi nữa, vấn đề mà LangChain muốn giải quyết vẫn vẫn còn đó.

 
ohyecloudy 2023-07-17

Giờ thì cả RSS cũng đã bao gồm GN+ rồi nhỉ. Cảm ơn. @xguru, tôi sẽ theo dõi kỹ.

 
xguru 2023-07-16

LangChain là vô nghĩa

Có thể xem đây là bài viết nối tiếp bài báo đó.
Tác giả blog này là Max Woolf trước đó đã chỉ trích trong phần bình luận của bài viết trên rằng LangChain thực sự vô dụng, rồi sau đó phát triển và công khai simpleaichat như một giải pháp thay thế.
Lần này ông ấy còn đăng cả một bài viết tổng hợp các vấn đề của nó nữa.

 
GN⁺ 2023-07-16
Ý kiến trên Hacker News
  • LangChain bị đánh giá là phần mềm rác và có kế hoạch viết lại toàn bộ.
  • Công cụ CLI cho LLM đã được bổ sung API thư viện Python, cho phép gọi mô hình một cách gọn nhẹ.
  • LangChain bị chỉ trích là không cần thiết trong vai trò lớp trung gian và không cải thiện được trải nghiệm lập trình.
  • Dù có vấn đề, nhiều người dùng vẫn thấy LangChain thú vị và hữu ích khi xây dựng với LLM.
  • LangChain cung cấp các công cụ và bộ chọn ví dụ thú vị, nhưng chất lượng mã còn kém.
  • Bài viết này bị chỉ trích là mang tính công kích và hạ thấp công trình của tác giả gốc.
  • LangChain hữu ích để lấy ý tưởng và làm nguyên mẫu, nhưng tự triển khai mọi thứ thường còn dễ hơn.
  • Việc tạo nguyên mẫu bằng LangChain giúp kiểm chứng ý tưởng trước khi đầu tư các nguồn lực quan trọng.
  • Một cách tiếp cận thay thế dùng lambda over let over lambda được đề xuất để triển khai các chức năng tương tự.