Trong bài học trước, bạn đã xây dựng các chuỗi xử lý có tích hợp cơ chế kiểm soát chất lượng và xử lý lỗi — tạo ra những quy trình làm việc khép kín, đáng tin cậy. Tuy nhiên, hạn chế ở đây là mọi bước trong các chuỗi đó đều hoàn toàn phụ thuộc vào kiến thức có sẵn của AI hoặc dữ liệu bạn nhập vào thủ công.
Các quy trình làm việc thực tế đòi hỏi AI phải tương tác với thế giới bên ngoài: Truy vấn cơ sở dữ liệu, tìm kiếm trên web, gửi email, cập nhật bảng tính... Đó chính là lúc tính năng "gọi hàm" và các công cụ bên ngoài phát huy tác dụng.
Gọi hàm: AI đóng vai trò người ra quyết định
Thuật ngữ "gọi hàm" nghe có vẻ kỹ thuật, nhưng khái niệm này lại rất đơn giản. AI đọc yêu cầu, quyết định công cụ nào cần sử dụng và tạo ra các tham số cho công cụ đó. Bản thân AI không trực tiếp thực thi công cụ — mà chính ứng dụng của bạn mới là bên thực hiện việc đó. AI đóng vai trò bộ não, còn code (hoặc nền tảng) của bạn đóng vai trò đôi tay.
Dưới đây là cách quy trình này diễn ra trong một chuỗi xử lý:
Bước 1 (AI): Người dùng hỏi "Thời tiết ở Tokyo tuần tới như thế nào?"
Bước 2 (AI quyết định): "Tôi cần gọi API thời tiết với các tham số: location=Tokyo, range=7days"
Bước 3 (Hệ thống của bạn): Thực hiện gọi API thời tiết và nhận dữ liệu trả về
Bước 4 (AI): "Dựa trên dữ liệu dự báo, đây là tóm tắt: dự kiến có mưa vào thứ Ba và thứ Tư, nhiệt độ khoảng 15°C..."
AI không hề tương tác trực tiếp với API. Nó chỉ xác định hàm phù hợp và định dạng các tham số dưới dạng JSON. Ứng dụng của bạn mới là bên xử lý việc thực thi và chuyển kết quả ngược lại cho AI.
Tại sao điều này quan trọng đối với các chuỗi xử lý?
Tính năng gọi hàm biến các chuỗi prompt (câu lệnh) của bạn từ những công cụ xử lý văn bản khép kín thành các quy trình làm việc có khả năng tương tác với những hệ thống thực tế:
Bước 1: AI trích xuất thông tin đơn hàng từ email của khách hàng
Bước 2: AI gọi hàm để tra cứu đơn hàng trong cơ sở dữ liệu của bạn
Bước 3: AI kết hợp ngữ cảnh email với dữ liệu đơn hàng để soạn thảo phản hồi được cá nhân hóa
Bước 4: AI gọi hàm để ghi lại lịch sử tương tác vào hệ thống CRM của bạn
Mỗi bước vẫn là một câu lệnh (prompt). Tuy nhiên, xen giữa các câu lệnh đó, hệ thống của bạn sẽ thực hiện những hành động thực tế dựa trên quyết định của AI.
Kiểm tra nhanh: Trong ví dụ về email khách hàng ở trên, bước nào là câu lệnh AI và bước nào là thực thi hàm?
Trả lời: Bước 1 và 3 là các câu lệnh AI (hiểu và tạo văn bản). Bước 2 và 4 là các lệnh gọi hàm (tra cứu cơ sở dữ liệu và ghi nhật ký vào CRM). Chuỗi quy trình này luân phiên giữa việc tư duy và thực hiện hành động.
RAG: Retrieval-Augmented Generation
RAG là một mô hình chuỗi cụ thể mà bạn sẽ thường xuyên sử dụng. Nó có vẻ đơn giản nhưng lại rất hiệu quả: Trước tiên truy xuất thông tin liên quan, sau đó tạo câu trả lời dựa trên thông tin đó.
Thực tế, bạn đã từng thấy RAG hoạt động rồi. Chuỗi quy trình hỏi đáp tài liệu ở Bài 3 — "trích xuất các đoạn trích dẫn, sau đó trả lời chỉ sử dụng những đoạn trích dẫn đó" — chính là một phiên bản thủ công của RAG. Phiên bản chính thức sẽ tự động hóa khâu truy xuất thông tin.
Cách RAG hoạt động như một chuỗi quy trình
Bước 1 — Hiểu truy vấn:
Người dùng thực sự đang hỏi gì? Hãy diễn giải lại câu hỏi này để tìm kiếm trong cơ sở dữ liệu: [câu hỏi của người dùng]
Bước 2 — Truy xuất (gọi hàm):
Tìm kiếm trong cơ sở dữ liệu tài liệu của bạn bằng truy vấn đã được diễn giải lại. Lấy ra 5 đoạn nội dung phù hợp nhất.
Bước 3 — Tạo nội dung:
Trả lời câu hỏi này CHỈ sử dụng các tài liệu nguồn sau đây. Hãy trích dẫn nguồn hỗ trợ cho mỗi khẳng định. Nếu các nguồn không chứa đủ thông tin, hãy nêu rõ điều đó.
Câu hỏi: [câu hỏi gốc] Nguồn: [các đoạn nội dung đã truy xuất ở Bước 2]
Chuỗi quy trình gồm ba bước này giải quyết đồng thời hai vấn đề:
Tính cập nhật — AI tiếp cận được thông tin hiện tại chứ không chỉ dữ liệu huấn luyện của nó.
Độ chính xác — Bằng cách giới hạn AI chỉ sử dụng các nguồn đã truy xuất, bạn giảm thiểu đáng kể tình trạng ảo giác AI.
RAG so với việc dán toàn bộ tài liệu
"Tại sao không chỉ dán toàn bộ tài liệu vào câu lệnh (prompt)?"
Có ba lý do:
Giới hạn cửa sổ ngữ cảnh — Tài liệu có thể dài hàng nghìn trang. Chúng sẽ không thể nạp hết vào được.
Tìm kim đáy bể — Ngay cả khi tài liệu nạp được vào, AI vẫn gặp khó khăn khi tìm các phần liên quan giữa một biển văn bản. Nghiên cứu cho thấy độ chính xác khi truy xuất sẽ giảm khi độ dài ngữ cảnh tăng lên.
Chi phí — Việc xử lý hàng nghìn token cho mỗi truy vấn sẽ nhanh chóng trở nên tốn kém. Việc chỉ truy xuất các đoạn nội dung liên quan sẽ tiết kiệm chi phí hơn.
RAG là giải pháp thực tế: Tìm kiếm trước, sau đó chỉ đọc những gì quan trọng.
Các công cụ tự động hóa chuỗi quy trình
Cho đến nay, bạn vẫn đang xây dựng các chuỗi quy trình theo cách thủ công — sao chép kết quả đầu ra từ bước này và dán vào bước tiếp theo. Cách làm đó phù hợp cho việc học tập và các tác vụ thực hiện một lần. Đối với bất kỳ tác vụ nào bạn sẽ thực hiện nhiều hơn hai lần, bạn nên áp dụng tự động hóa.
Các nền tảng No-Code (Không cần lập trình)
n8n (mã nguồn mở, tự host)
Công cụ xây dựng quy trình làm việc trực quan với khả năng tích hợp sẵn LangChain
Tích hợp sẵn các mô-đun bộ nhớ để quản lý ngữ cảnh xuyên suốt các bước trong chuỗi
Phù hợp nhất cho: các nhóm muốn kiểm soát hoàn toàn dữ liệu và các quy trình AI phức tạp
Mức độ khó khi học: trung bình (giao diện trực quan nhưng tính năng mạnh mẽ)
Zapier (dịch vụ đám mây, trả phí định kỳ)
Kết nối hơn 6.000 ứng dụng thông qua quy trình kích hoạt-hành động đơn giản
Tính năng AI: Zapier Agents, tạo chuỗi cơ bản thông qua việc kết nối các bước
Phù hợp nhất cho: tự động hóa đơn giản khi kết nối các công cụ có sẵn
Mức độ khó khi học: thấp
Make (trước đây là Integromat, dịch vụ đám mây)
Giao diện trực quan dạng canvas với khả năng phân nhánh và logic có điều kiện
Linh hoạt hơn Zapier đối với các quy trình phức tạp, ít đòi hỏi kỹ thuật hơn n8n
Phù hợp nhất cho: quy trình có độ phức tạp trung bình với logic trực quan rõ ràng
Mức độ khó khi học: trung bình-thấp
Các Code Framework
LangChain / LangGraph
Các thư viện Python và JavaScript được thiết kế chuyên biệt cho ứng dụng LLM
Kiểm soát chi tiết các prompt (câu lệnh), bộ nhớ, công cụ và logic của chuỗi
LangGraph bổ sung khả năng tạo quy trình nhiều bước có trạng thái và các vòng lặp/phân nhánh
Phù hợp nhất cho: lập trình viên xây dựng hệ thống AI thực tế (production)
Mức độ khó khi học: cao (cần kỹ năng lập trình)
Promptfoo
Framework kiểm thử dành riêng cho các chuỗi LLM
Cho phép định nghĩa các trường hợp kiểm thử (test case), chạy thử trên chuỗi và đánh giá chất lượng
Phù hợp nhất cho: xác thực tính ổn định của chuỗi trước khi triển khai
Kiểm tra nhanh: Ghép nối từng tình huống với công cụ phù hợp nhất: (a) "Tôi muốn tự động xử lý email khách hàng và cập nhật CRM" (b) "Tôi đang xây dựng sản phẩm AI tùy chỉnh với yêu cầu phức tạp về bộ nhớ" (c) "Tôi muốn kiểm thử chuỗi của mình với 50 đầu vào khác nhau."
Đáp án: (a) n8n hoặc Zapier, (b) LangChain/LangGraph, (c) Promptfoo.
Lựa chọn công cụ phù hợp
Dưới đây là khung hướng dẫn ra quyết định:
Câu hỏi
Nếu Có →
Tôi có cần viết code không?
LangChain/LangGraph
Tôi có muốn một giao diện trực quan không?
n8n hoặc Make
Đó có phải là quy trình tự động hóa đơn giản kiểu A→B không?
Zapier
Tôi có cần tự host không?
n8n
Tôi có cần kiểm tra chất lượng chuỗi không?
Promptfoo
Đối với khóa học này, bạn không cần bất kỳ công cụ nào trong số đó. Mọi nội dung giảng dạy đều có thể thực hiện bằng cách sao chép-dán thủ công vào bất kỳ trợ lý AI nào. Tuy nhiên, việc nắm bắt các công cụ hiện có sẽ giúp bạn quyết định khi nào nên chuyển từ quy trình chuỗi thủ công sang quy trình tự động.
Kết hợp chuỗi, hàm và RAG
Sức mạnh thực sự bộc lộ khi bạn kết hợp tất cả các yếu tố này lại với nhau. Dưới đây là một ví dụ thực tế — quy trình hỗ trợ khách hàng:
Điều hướng/Phân loại (AI prompt): Phân loại tin nhắn đến thuộc nhóm thanh toán, kỹ thuật hay thắc mắc chung.
Truy xuất RAG (hàm): Tìm kiếm trong cơ sở tri thức các bài viết phù hợp với vấn đề của khách hàng.
Tra cứu ngữ cảnh (hàm): Lấy thông tin chi tiết tài khoản khách hàng và các tương tác gần đây từ hệ thống CRM.
Tạo phản hồi (AI prompt): "Dựa trên bài viết trong cơ sở tri thức và ngữ cảnh khách hàng, hãy soạn thảo phản hồi giải quyết vấn đề cụ thể của họ."
Kiểm soát chất lượng (AI prompt): "Phản hồi này có thực sự giải đáp câu hỏi của họ không? Thông tin có chính xác so với tài liệu nguồn không? Giọng văn có phù hợp không?"
Ghi nhật ký (hàm): Lưu lại tương tác vào CRM và cập nhật trạng thái phiếu yêu cầu (ticket).
Sáu bước. Ba câu lệnh AI (prompt), ba lần gọi hàm, một bước kiểm soát chất lượng. Đây chính là diện mạo thực tế của các quy trình AI trong môi trường vận hành thực tế — sự kết hợp giữa tư duy (AI) và hành động (công cụ), đi kèm với cơ chế kiểm chứng tích hợp.
Thử ngay: Xây dựng chuỗi quy trình kiểu RAG mà không cần công cụ chuyên dụng
Bạn có thể mô phỏng một chuỗi RAG theo cách thủ công — không cần cơ sở dữ liệu vector, không cần gọi hàm — chỉ để hình dung cấu trúc của nó. Hãy mở ChatGPT, Claude hoặc Gemini và lần lượt nhập hai tin nhắn sau đây.
Tin nhắn 1 (Truy xuất cơ bản — viết lại câu hỏi):
Cách sao chép câu lệnh này: Nhấp vào bất kỳ đâu trong khối màu xám, nhấn Cmd+A rồi Cmd+C (trên Mac) hoặc Ctrl+A rồi Ctrl+C (trên Windows). Hoặc sử dụng biểu tượng sao chép xuất hiện.
Tôi sẽ đặt một câu hỏi. Trước tiên, hãy viết lại câu hỏi đó theo 3 cách để tối ưu hóa việc tìm kiếm tài liệu:
- Phiên bản A: sử dụng từ khóa chính xác
- Phiên bản B: sử dụng các khái niệm liên quan (tài liệu có thể dùng những thuật ngữ nào?)
- Phiên bản C: dạng câu hỏi mà người khác có thể đã đặt ra về cùng vấn đề đó
Câu hỏi của tôi:
[ví dụ: "Tại sao hóa đơn tháng này của tôi lại cao hơn tháng trước?"]
Chỉ xuất ra 3 phiên bản đó. Không thêm bất kỳ văn bản nào khác.
Những gì bạn sẽ thấy: Chỉ trong vài giây, AI sẽ đưa ra phản hồi có cấu trúc dựa trên câu lệnh (prompt) ở trên. Hãy đọc kỹ và coi đó là bản nháp, không phải câu trả lời cuối cùng.
Tin nhắn 2 (Tạo nội dung có cơ sở dữ liệu — yếu tố "R" và "G" trong RAG):
Trả lời câu hỏi dưới đây CHỈ sử dụng tài liệu nguồn mà tôi dán vào. KHÔNG sử dụng kiến thức chung của bạn. Nếu các nguồn không cung cấp đủ thông tin để trả lời đầy đủ, hãy nói "Nguồn không đề cập đến: [thông tin còn thiếu]" thay vì tự bịa ra bất cứ điều gì.
Câu hỏi:
[dán câu hỏi GỐC từ Tin nhắn 1]
Các nguồn (mỗi nguồn được đánh số — hãy trích dẫn số thứ tự bên cạnh mỗi khẳng định):
NGUỒN 1:
"""
[DÁN một đoạn từ tài liệu thực tế — ví dụ: FAQ về thanh toán, sổ tay nhân viên, bài viết trung tâm trợ giúp, tài liệu chính sách, v.v.]
"""
NGUỒN 2:
"""
[DÁN một đoạn khác từ cùng tài liệu hoặc tài liệu khác]
"""
NGUỒN 3:
"""
[DÁN một đoạn khác]
"""
Định dạng câu trả lời:
- Câu trả lời trực tiếp (2-3 câu) kèm trích dẫn [S1], [S2], [S3] sau mỗi khẳng định.
- Nếu nguồn không đầy đủ, liệt kê rõ ràng các mục "KHÔNG ĐƯỢC ĐỀ CẬP".
- Mức độ tin cậy: CAO / TRUNG BÌNH / THẤP dựa trên chất lượng nguồn.
Cách điền thông tin chi tiết: Thay thế các phần trong ngoặc vuông [] bằng thông tin cụ thể từ tình huống thực tế của bạn. Đầu vào mơ hồ sẽ tạo ra kết quả mơ hồ — hãy đưa ra thông tin cụ thể.
Những gì bạn sẽ thấy: Một câu trả lời dựa trên chính tài liệu CỦA BẠN, có trích dẫn và thông báo rõ ràng khi nguồn không đề cập đến vấn đề nào đó. Hãy so sánh kết quả này với những gì AI nói khi không có tài liệu nguồn — phiên bản có cơ sở dữ liệu hầu như luôn tránh được tình trạng "ảo tưởng" vì nó thực sự không thể làm vậy; bạn đã giới hạn những gì nó được phép sử dụng.
Cần làm gì với kết quả nhận được: Lưu phản hồi vào file ghi chú. Chọn ra một đề xuất mang lại hiệu quả cao nhất và thực hiện ngay trong tuần này — đừng cố gắng làm mọi thứ cùng lúc.
Nếu kết quả không như ý: Nếu các đề xuất có vẻ chung chung, hãy dán câu lệnh bổ sung sau: "Hãy đưa ra câu trả lời cụ thể hơn cho bối cảnh thực tế của tôi. Bỏ qua những lời khuyên chung chung". Nếu hệ thống bỏ qua các chi tiết quan trọng mà bạn đã cung cấp, hãy yêu cầu: "Bạn đã bỏ sót [X] trong ngữ cảnh của tôi — hãy thực hiện lại với [X] là ràng buộc chính".
Để tự động hóa quy trình này một cách thực sự, bạn sẽ thay thế kết quả đầu ra của Tin nhắn 1 bằng một lệnh gọi tìm kiếm vector và tự động điền nội dung vào các khối SOURCE trong Tin nhắn 2 từ kho tài liệu của mình. Đó chính là RAG. Quy trình thủ công này có cấu trúc y hệt — chỉ khác là thay vì dùng lệnh gọi API thì bạn thực hiện thao tác sao chép-dán.
Những điểm chính cần lưu ý
Tính năng gọi hàm cho phép AI quyết định công cụ nào cần sử dụng và định dạng các tham số — còn code của bạn sẽ đảm nhiệm việc thực thi
RAG là một mô hình chuỗi: truy xuất thông tin liên quan, sau đó tạo nội dung chỉ dựa trên thông tin đó
RAG giải quyết các vấn đề về tính cập nhật, độ chính xác và chi phí so với việc nhồi nhét toàn bộ tài liệu vào câu lệnh (prompt)
Các công cụ no-code (như n8n, Zapier, Make) giúp tự động hóa các chuỗi quy trình mà không cần viết code; trong khi đó, các framework lập trình (như LangChain) mang lại khả năng kiểm soát cao hơn
Quy trình làm việc thực tế kết hợp các câu lệnh AI, lệnh gọi hàm và các bước kiểm soát chất lượng trong cùng một chuỗi duy nhất
Bạn không nhất thiết cần công cụ ngay từ đầu — các chuỗi quy trình thủ công giúp bạn nắm bắt mô hình, còn tự động hóa giúp mở rộng quy mô thực hiện
Câu 1:
Bạn sẽ chọn nền tảng nào cho một chuỗi quy trình AI phức tạp cần quản lý bộ nhớ tùy chỉnh và khả năng kiểm soát chi tiết?
GIẢI THÍCH:
LangChain và LangGraph là các code framework được xây dựng đặc biệt cho các ứng dụng AI phức tạp, hỗ trợ quản lý bộ nhớ tùy chỉnh, tích hợp công cụ và kiểm soát chi tiết các chuỗi câu lệnh. Zapier rất tốt cho các tác vụ tự động hóa đơn giản nhưng lại thiếu sự linh hoạt cần thiết cho các quy trình làm việc phức tạp và chuyên biệt về AI.
Câu 2:
Trong chuỗi RAG, tại sao bước truy xuất (retrieval) lại diễn ra trước bước tạo nội dung (generation)?
GIẢI THÍCH:
RAG truy xuất các tài liệu liên quan trước để bước tạo nội dung có thông tin thực tế và cập nhật để xử lý. Nếu không có bước truy xuất, AI sẽ chỉ dựa vào dữ liệu huấn luyện của nó, vốn có thể đã lỗi thời hoặc không đầy đủ. Về cơ bản, nguyên lý này giống với chuỗi quy trình hỏi đáp tài liệu trong Bài 3 — đó là neo giữ AI vào dữ liệu thực tế.
Câu 3:
Tính năng "gọi hàm" cho phép LLM thực hiện điều gì?
GIẢI THÍCH:
Bản thân LLM không thực thi các hàm. Nó phân tích yêu cầu, xác định hàm cần gọi và tạo ra các tham số có cấu trúc (thường là JSON). Sau đó, code ứng dụng của bạn sẽ thực thi hàm thực tế và chuyển kết quả ngược lại cho LLM. AI đóng vai trò là bộ não, còn code của bạn đóng vai trò là đôi tay.
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây: