inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Đánh giá chân thực của Seunghyun Lee, khóa học Tạo AI Agent xem tử vi chuyên nghiệp - Fullstack n8n+Python

Seunghyun Lee

1 đánh giá

Điểm trung bình 3

Trước đây tôi đã từng học khóa hướng dẫn hoàn hảo về tự động hóa n8n của giảng viên và cảm thấy rất hài lòng, nên lần này tôi đã đăng ký học với sự kỳ vọng lớn khi biết giảng viên tổ chức khóa học về phương pháp xây dựng dịch vụ thực tế. Nhìn chung, phần giải thích về phương pháp luận để xây dựng một dịch vụ agent thực tế thông qua "Vibe Coding" và chỉnh sửa prompt khá ổn. Ngoài ra, tôi cũng đánh giá cao việc giảng viên đã chỉ ra những điểm thay đổi của n8n trong phiên bản 2.x. Tuy nhiên, tôi đã phát hiện một vấn đề cực kỳ nghiêm trọng trong việc thực hành ngay từ đầu khóa học. Rất tiếc là vì điểm này mà tôi buộc phải đánh giá thấp khóa học. https://github.com/n8n-io/n8n/security/advisories/GHSA-44v6-jhgm-p3m4 Trong n8n, việc thực thi mã cần cài đặt và chạy các thư viện bên ngoài (không phải thư viện tiêu chuẩn) trong node Python Code được quy định là một lỗi bảo mật nghiêm trọng gọi là 'Python Task Runner Sandbox Escape'. Và mỗi khi vấn đề này phát sinh, họ đều tung ra bản vá ngay lập tức. Giảng viên chỉ đề cập duy nhất một câu là hãy sử dụng phiên bản n8n 2.12.2 khi thiết lập docker-compose ở đầu khóa học, nhưng theo kết quả thiết lập thực tế của tôi, phải khớp cả phiên bản trong Dockerfile của Python Task Runner thì node code đó mới hoạt động bình thường. Nếu học viên không quen thuộc với Docker hoặc không biết về vấn đề này, khả năng cao là họ sẽ không thể thực hành theo khóa học. Rất mong giảng viên thông báo rõ ràng về điều này hoặc đưa ra giải pháp khác để các học viên sau này không gặp phải sự bất tiện tương tự.

3

nambaksa

Xin chào bạn Seunghyun Lee. Trước hết, tôi hoàn toàn đồng ý 100% về tầm quan trọng của môi trường thực hành. Nhìn những nội dung bạn để lại ngay cả khi phải hạ điểm đánh giá khóa học, tôi có thể cảm nhận rõ rệt bạn đã phải trải qua bao nhiêu lần thử sai và sự bất tiện khi trực tiếp thử nghiệm nhiều phiên bản khác nhau. Với tư cách là người cung cấp bài giảng, tôi nghĩ lẽ ra mình phải hướng dẫn chi tiết hơn về phần này. Để giải thích thêm về vấn đề liên quan đến Python Task Runner Sandbox mà bạn đã đề cập, tại thời điểm vài tháng trước khi tôi cấu hình dự án và kiểm tra cho bài giảng này, tình hình vẫn chưa nổi cộm thành vấn đề như hiện tại. Ban đầu, khi n8n mới xuất hiện, việc nó là công cụ AI Agent duy nhất cung cấp node mã Python đã trở thành một chủ đề nóng trong cộng đồng nhà phát triển. Tuy nhiên, khi thực sự sử dụng node mã này, đã có nhiều phàn nàn rằng đây chỉ là một tính năng "nửa vời" do không thể sử dụng thư viện bên ngoài và các chức năng quá hạn chế. Sau đó, node mã này đã được mở rộng thành khái niệm Task Runner trong phiên bản 2.x. Mặc dù có những lời phàn nàn về sự bất tiện khi cú pháp cũ bị thay đổi khiến không thể tái sử dụng node mã từ phiên bản trước, nhưng cũng có nhiều người hoan nghênh vì cuối cùng đã có thể sử dụng các thư viện bên ngoài mà phiên bản 1.x không làm được. Tất nhiên, ngay từ khi khái niệm Task Runner lần đầu được giới thiệu trong n8n 2.x, đã có nhiều ý kiến khác nhau trong cộng đồng nhà phát triển về node mã, và đúng là các vấn đề tương tự cũng đã được đề cập rải rác. Tuy nhiên, đây là một lĩnh vực nằm ở ranh giới, tùy theo góc nhìn mà có thể coi là lỗ hổng bảo mật, hoặc ngược lại, có thể được giải thích là một tính năng để thực thi linh hoạt. Ngoài ra, tôi cũng đã không nắm bắt kịp thời bối cảnh tại sao một phần trước đây không bị coi là vấn đề lớn thì hiện tại lại được xử lý chính thức như một sự cố bảo mật. Tuy nhiên, tại thời điểm chuẩn bị bài giảng, tôi đã nhận định rằng phiên bản 2.x đã đi vào giai đoạn ổn định ở mức độ nhất định, nên việc chưa xem xét đầy đủ đến sự phụ thuộc vào phiên bản là thiếu sót trong phán đoán của tôi. Như bạn đã chỉ ra, việc phải khớp không chỉ phiên bản n8n mà cả môi trường Task Runner và Dockerfile để hoạt động bình thường là một yếu tố quan trọng lẽ ra phải được hướng dẫn rõ ràng ngay từ đầu. Hiện tại, tôi đã thay đổi tài liệu học tập trong bài giảng cài đặt n8n bằng nội dung chỉ định rõ phiên bản không chỉ cho n8n mà cả Dockerfile của Task Runner, đồng thời thêm nội dung về việc chỉ định phiên bản vào ghi chú bài học để các học viên khác không gặp phải vấn đề tương tự. Ngoài ra, tôi cũng sẽ bổ sung nội dung bắt buộc về phiên bản vào các tệp video sau này bằng cách sử dụng phụ đề. Một lần nữa, xin cảm ơn bạn vì những phản hồi chi tiết và chân thành. --------------- Bổ sung Sau khi để lại bình luận trên, tôi đã tham khảo GitHub và nhiều diễn đàn khác để tổng hợp lại một số điểm đã được xác nhận như sau: Trong phiên bản mới nhất hiện nay (2.17.7), có một lỗi lạ là thuộc tính đối tượng date do date.today() trả về bị bao bọc nội bộ bởi mappingproxy. Tôi không biết đây là lỗi hay là ý đồ (mặc dù chẳng có lý do gì để cố ý làm vậy), nhưng nhìn vào việc các mã khác không có vấn đề gì mà chỉ riêng cái này bị lạ, thì có vẻ như đây là một lỗi (bug). Do vấn đề này, nếu chạy mã cung cấp trong bài giảng trên phiên bản n8n mới nhất, lỗi mappingproxy sẽ xảy ra. Vì vậy, để sử dụng nguyên văn mã cung cấp trong bài giảng, bạn nên thực hiện trên phiên bản 2.12.2, hoặc nếu muốn thực hiện trên phiên bản mới nhất (2.17.7), bạn phải thay đổi today = date.today() đang dùng trong mã từ đối tượng date sang đối tượng time. Tôi sẽ đính kèm mã đã sửa đổi này vào tài liệu học tập của bài giảng "Chạy mã Python trong n8n và hiểu luồng dữ liệu". Tóm lại, vấn đề bảo mật Python Task Runner Sandbox Escape mà bạn đề cập không liên quan nhiều đến bài giảng hiện tại, mà có vẻ như do lỗi của chính n8n khiến mã cung cấp trong tài liệu học tập không hoạt động bình thường trên phiên bản mới nhất. Dù sao, cảm ơn bạn đã cung cấp thông tin quý giá giúp tôi biết được lỗi mà mình đã bỏ lỡ.

6

nambaksa

30 bài giảng

354 người đã học

Tạo AI Agent xem tử vi chuyên nghiệp - Fullstack n8n+Python
4.8(19 đánh giá)