8 điểm bởi GN⁺ 2025-04-09 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Qodo là một đội ngũ đã phát triển công cụ hỗ trợ lập trình bằng AI từ thời GPT-3, và gần đây đã chọn framework LangGraph để tạo ra một coding agent linh hoạt và năng động hơn
  • Tài liệu này giải thích cách LangGraph có thể đồng thời đáp ứng tính linh hoạt của luồng phát triển và các tiêu chuẩn chất lượng mã

Chuyển từ cách tiếp cận có cấu trúc ban đầu sang LangGraph

  • Ở giai đoạn đầu dựa trên GPT-3, trọng tâm là các tác vụ có cấu trúc với luồng rõ ràng như tạo test, code review và cải thiện mã
  • Sau Claude Sonnet 3.5, hiệu năng của LLM đã được cải thiện đáng kể, giúp việc thiết kế agent động hơn trở nên khả thi
  • Trước đây chỉ có thể xây dựng workflow mang tính khuôn mẫu, nhưng với các mô hình mới, nhóm muốn phát triển một hệ thống có thể phản hồi linh hoạt theo yêu cầu của người dùng
  • Trong quá trình tìm kiếm một framework cho phép thử nghiệm và kiểm chứng nhanh, nhóm đã chọn LangGraph; nó không chỉ phù hợp cho giai đoạn proof of concept ban đầu mà còn có thể mở rộng thành sản phẩm thực tế

Sự cùng tồn tại của tính linh hoạt và các quy tắc rõ ràng

  • LangGraph cung cấp cấu trúc đồ thị dựa trên state machine
  • Mỗi node đảm nhiệm một bước riêng trong workflow (thu thập ngữ cảnh, lập kế hoạch, thực thi, xác minh, v.v.), còn các edge định nghĩa quy tắc chuyển tiếp giữa các bước
  • Mức độ linh hoạt hay tính cấu trúc của workflow thay đổi theo mật độ của các edge
    • Đồ thị thưa → luồng cố định và dễ dự đoán
    • Đồ thị dày → luồng động và có thể chọn nhiều lộ trình khác nhau
  • Điểm mạnh của LangGraph là có thể dễ dàng điều chỉnh lại mức độ cấu trúc của workflow khi mô hình tiếp tục phát triển
  • Luồng chính có cấu trúc như sau:
    • Thu thập ngữ cảnh → lập kế hoạch công việc → thực thi mã → xác minh kết quả → lặp lại nếu thất bại

Giao diện gọn gàng và trực quan

  • LangGraph cho phép định nghĩa workflow theo kiểu khai báo, nên mã gần như có thể đọc như tài liệu
  • Nó hoạt động bằng cách khai báo state graph rồi thêm node và edge
  • Các luồng có điều kiện cũng rất dễ triển khai (ví dụ: nếu xác minh thất bại thì quay lại node thực thi)
  • Khác với các lớp trừu tượng phức tạp của LangChain, LangGraph có cấu trúc làm lộ rõ logic nên mang lại trải nghiệm tốt cho lập trình viên

Khả năng tái sử dụng giữa nhiều workflow

  • Nhờ cấu trúc dựa trên node, việc tái sử dụng các thành phần rất dễ dàng
    • Ví dụ: node thu thập ngữ cảnh và node xác minh được dùng lặp lại trong hầu hết các flow
  • Ngay cả khi tạo các luồng chuyên biệt mới (như TDD), vẫn có thể nhanh chóng mở rộng bằng cách nối lại các node hiện có

Tính năng quản lý trạng thái được cung cấp sẵn

  • LangGraph cung cấp khả năng lưu trạng thái theo mặc định, nên việc triển khai persistence rất đơn giản
    • Ví dụ: tính năng checkpointing qua Postgres có thể được cấu hình chỉ với vài dòng mã
  • Có thể lưu toàn bộ trạng thái như ngữ cảnh đã thu thập, kế hoạch, kết quả thực thi, v.v., đồng thời hỗ trợ cả branch và rollback
  • Các phương thức khác như SQLite hay in-memory cũng có thể được thay thế dễ dàng

Những điểm cần cải thiện

  • Vì đây là một framework đang phát triển rất nhanh nên tài liệu đôi khi còn thiếu sót hoặc cập nhật chậm
    • May mắn là việc trao đổi với các maintainer qua Slack diễn ra nhanh và rất tích cực
  • Việc kiểm thử các hệ thống LLM phi định tính vẫn là một thách thức
    • Với các agent tương tác với IDE, rất khó xây dựng môi trường kiểm thử tự động
    • Một số tính năng của IDE rất khó mock, nên nhóm phải phụ thuộc vào kiểm thử thủ công, điều này làm chậm tốc độ lặp
  • Các framework trưởng thành thường cung cấp hạ tầng cho kiểm thử và mocking, và nhóm cũng kỳ vọng LangGraph sẽ phát triển theo hướng đó

Chưa có bình luận nào.

Chưa có bình luận nào.