CrewAI rất tốt! - Ấn tượng đầu tiên của tôi
Sau 10 ngày xây podcast được tạo bởi AI với CrewAI, tôi nhận ra rằng mặc dù framework dễ dùng đáng ngạc nhiên, nội dung chất lượng vẫn đòi hỏi nỗ lực thực sự từ con người.
Tôi tình cờ biết đến CrewAI vài tuần trước qua khóa học "Practical Multi AI Agents and Advanced Use Cases with crewAI". Dù ban đầu ngần ngại vì đã dùng Langgraph cho agent Sydney, hai điều đã khơi gợi sự quan tâm:
- Tôi đã khám phá cách tạo podcast từ đầu, đặc biệt tập trung vào cách dùng AI tạo sinh để "suy luận" qua 15 năm nội dung blog thay vì chỉ copy paste bài viết. Tôi đã thử NotebookLLM cho việc này (hoạt động tạm ổn, bạn có thể nghe tập podcast ở đây), nhưng tôi muốn kiểm soát nhiều hơn flow hội thoại và hook mở đầu.
- Tôi muốn học thứ gì mới và thử nghiệm với mô hình text-to-speech của OpenAI.
Cập nhật tháng 11 2025: Tôi đã tốt nghiệp khỏi agent framework và bắt đầu code từ đầu với Claude Code và Google Gemini CLI. Điều này cho tôi nhiều quyền kiểm soát hơn. Các sản phẩm mới nhất là STRAŦUM (market intelligence) và DIALØGUE (AI podcast generator) — phát triển trực tiếp từ thí nghiệm CrewAI bên dưới.
Sau khoảng 10 ngày thử nghiệm với CrewAI, đây là những quan sát chính:
1. Những điểm tốt
1.1 Dễ bắt đầu đến ngạc nhiên
- Đường cong học tập ban đầu ngắn đáng ngạc nhiên — tôi đã chạy được trong vài giờ
- Thiết lập custom tools (như lấy nội dung từ blog sử dụng Weaviate làm vector store) rất đơn giản. Chuyển podcast script thành audio output cũng khá dễ.
- Khả năng mô tả agents và tasks bằng tiếng Anh đơn giản sử dụng file YAML rất mạnh (Mẹo: autocomplete của Visual Studio Code rất hữu ích ở đây!)
1.2 Lựa chọn model linh hoạt
Chuyển đổi giữa các LLM khác nhau đơn giản như cập nhật crew.py:
llm_openai_4o_mini = LLM(model="gpt-4o-mini", temperature=0)
llm_anthropic_35 = LLM(model="claude-3-5-sonnet-20240620", temperature=0)
llm_openai_4o = LLM(model="gpt-4o", temperature=0)
llm_gemini_15_pro = LLM(model="gemini/gemini-1.5-pro-002", temperature=0)
Bạn có thể gán model cụ thể cho các agent khác nhau dựa trên thế mạnh. Ví dụ,
@agent
def content_researcher(self) -> Agent:
return Agent(
config=self.agents_config['content_researcher'],
llm=llm_anthropic_35,
tools=[BlogContentRetrievalTool()],
verbose=True
)
Tất cả điều này có nghĩa là quyền kiểm soát lớn về cách tôi muốn podcast được cấu trúc, viết kịch bản.
1.3 Text-to-Speech: Hứa hẹn và hạn chế
Mặc dù API text-to-speech của OpenAI ấn tượng về chất lượng, hiện tại chỉ cung cấp sáu mô hình giọng nói. Cho việc tạo podcast, điều này khá hạn chế — đặc biệt khi bạn cố tạo cuộc hội thoại hấp dẫn giữa nhiều host. Thiếu đa dạng giọng nói có nghĩa podcast của bạn có thể nghe giống người khác cũng dùng công nghệ tương tự. Đây chắc chắn là lĩnh vực tôi hy vọng sẽ thấy cải thiện, hoặc qua OpenAI mở rộng tùy chọn giọng nói hoặc qua tích hợp với nhà cung cấp text-to-speech khác.
Tôi cũng hiểu lo ngại về an toàn AI nên các lab AI khác nhau có thể không vội vàng cung cấp quá nhiều mô hình giọng nói.
2. Kiểm tra thực tế: Không phải chỉ "Click và tạo"
Ban đầu, tôi lo điều này có thể góp phần vào làn sóng nội dung do AI tạo (hay "AI Slop") chúng ta đang thấy online. Suy cho cùng, tôi có thể tạo kịch bản podcast 15 phút trong khoảng 5 phút. (Trong khóa đào tạo DeepLearning.AI ở trên, João thực sự đã đi qua ví dụ code về "Content creation at scale".)
Tuy nhiên, góc nhìn của tôi thay đổi sau khi thực sự đọc/xem lại vài kịch bản đầu tiên được tạo.
Tạo nội dung chất lượng cao vẫn đòi hỏi công sức đáng kể!
2.1 Cấu trúc agent chu đáo
Tôi phải sửa đổi cấu trúc AI crew nhiều lần, thêm vai trò bổ sung, đặc biệt vai trò "fact_checker". Crew podcast hiện tại bao gồm:
- Content researcher
- Script writer
- Fact checker
- Script editor
- Audio producer
2.2 Tinh chỉnh liên tục
Thành công đòi hỏi:
- Định nghĩa cẩn thận mục tiêu và nhiệm vụ của mỗi agent bằng ngôn ngữ chuyên ngành. Người có kinh nghiệm thực tế trong ngành podcast có thể dùng ngôn ngữ chuyên ngành và yêu cầu mỗi agent thực hiện nhiệm vụ rất cụ thể. Output sẽ tốt hơn nhiều.
- Chọn lọc quyền truy cập tool (nhiều không phải lúc nào cũng tốt hơn). Agent dễ bị kẹt trong vòng lặp liên tục.
- Quy tắc ủy quyền rõ ràng giữa các agent
- Yêu cầu cấu trúc output cụ thể
- Tiêu chí chất lượng rõ ràng về "Công việc tốt trông như thế nào" (Tôi còn kéo con gái vào đây — con bé là người sáng tạo! :D).
Lại nói, như bạn thấy, mặc dù dùng crew AI agent giúp tăng tốc công việc đáng kể (ít nhất 5X từ nghiên cứu đến viết kịch bản, kiểm tra facts, sửa đổi, tạo audio), vẫn phụ thuộc vào tôi để tạo nội dung chất lượng cao.
2.3 Lựa chọn model quan trọng
Các mô hình LLM khác nhau có "tính cách" riêng biệt và mức độ tuân thủ hướng dẫn khác nhau. Nên bạn phải thử nghiệm để hiểu thế mạnh và điểm yếu của từng mô hình và cách chúng phù hợp với nhu cầu ở mỗi bước.
Một số quan sát:
- Phản hồi API có thể khác với phản hồi giao diện web chat cho cùng mô hình
- Hiện tại, tôi thích mô hình Anthropic cho nội dung dài sử dụng API. Tuy nhiên, với phiên bản web, tôi thực sự nghĩ claude-3-5-sonnet-20241022 và GPT-4o ngang nhau.
- OpenAI o1-preview là lựa chọn hàng đầu cho nhiệm vụ code
2.4 Feedback và memory là game-changer
Bạn phải cung cấp feedback cho AI crew. Chúng giỏi tuân thủ hướng dẫn nhưng không biết bạn muốn gì và không thể đọc suy nghĩ (ít nhất chưa haha). Khả năng huấn luyện crew qua feedback rất quan trọng.
Với CrewAI, việc huấn luyện crew và cho feedback khá đơn giản, chỉ cần chạy
crewai train -n <n_iterations> <filename> (optional)
Mặc dù chưa khám phá hết chức năng memory của CrewAI, sự kết hợp feedback và memory có vẻ cực kỳ mạnh mẽ để tạo output nhất quán, chất lượng cao.
3. Cho tôi xem kết quả!
Ok, ok - tôi nghe bạn nói "Chandler, nói đủ rồi. Cho xem mẫu kịch bản podcast do AI crew tạo!"
Đây là ví dụ workflow hoàn chỉnh:
- Giai đoạn nghiên cứu: Xem agent Content Researcher phân tích và trích xuất thông tin chính từ bài blog
- Tóm tắt kiểm tra facts: Báo cáo xác minh chi tiết của Fact Checker
- Bản nháp kịch bản đầu: Bản đầu tiên của Script Writer về cuộc hội thoại podcast
- Kịch bản hoàn chỉnh cuối: Phiên bản tinh chỉnh của Script Editor với flow và engagement cải thiện
- Nghe kết quả: Phiên bản audio cuối cùng do Audio Producer agent tạo
Mỗi link trên cho thấy tiến trình từ nội dung thô đến podcast hoàn thiện, thể hiện cách các agent khác nhau đóng góp vào sản phẩm cuối cùng.
Dù tôi vẫn có suy nghĩ về cách cải thiện toàn bộ pipeline hơn, hy vọng những điều trên cho bạn cảm nhận tốt về những gì có thể.
Suy nghĩ cuối
CrewAI đã ấn tượng tôi với sự cân bằng giữa đơn giản và sức mạnh. Mặc dù nó làm việc tạo nội dung dễ tiếp cận hơn, nó không phải nút bấm thần kỳ — chất lượng vẫn đòi hỏi chuyên môn, kế hoạch cẩn thận, và tinh chỉnh liên tục.
Bạn đã thử nghiệm với multi-agent framework như CrewAI hoặc Langgraph chưa? Tôi rất muốn nghe bạn đang xây gì — hãy comment hoặc liên hệ.
Thân mến,
Chandler
Cập nhật tháng 1 2026: Thí nghiệm CrewAI này cuối cùng trở thành DIALØGUE — một ứng dụng production hoàn chỉnh. Hạn chế giọng nói tôi đề cập ở trên? Tôi đã chuyển sang Gemini TTS, cho tôi 30 giọng nói qua 7 ngôn ngữ. Nâng cấp đáng kể từ 6 giọng OpenAI! Nếu bạn tò mò, xem thử.





