inflearn logo

[Phần 1] Học các kỹ thuật kiểm soát ứng dụng AI qua ví dụ Spring AI: kiểm soát chi phí, chất lượng, rủi ro và luồng xử lý

Nếu đã triển khai các tính năng AI bằng Spring AI, thì giờ là lúc suy nghĩ về cách quan sát hoạt động của AI và kiểm soát chi phí, chất lượng, rủi ro cũng như luồng xử lý. Chỉ gọi LLM, kết nối RAG và nhận phản hồi có cấu trúc thôi thì chưa đủ để khiến ứng dụng AI trở nên đáng tin cậy. Trong ứng dụng thực tế, chúng ta còn cần cân nhắc yêu cầu được xử lý theo lộ trình nào, đang truyền bao nhiêu ngữ cảnh cho mô hình, có thể tin tưởng kết quả được tạo ra đến mức nào và làm thế nào để hạn chế các đề xuất nguy hiểm. Trong khóa học này, chúng ta sẽ sử dụng ứng dụng Incident Responder dựa trên Spring AI làm một ví dụ xuyên suốt. Bắt đầu từ phiên bản baseline hoạt động bình thường nhưng chưa được kiểm soát đầy đủ, chúng ta sẽ quan sát kết quả thực thi thực tế, phát hiện vấn đề, bổ sung các điểm kiểm soát vào mã và so sánh trước với sau khi cải thiện. Qua đó, thay vì chỉ học thêm cách sử dụng một tính năng AI cụ thể, bạn sẽ tiếp thu góc nhìn thiết kế về cách quan sát, giới hạn và kiểm chứng AI hoạt động theo xác suất trong ứng dụng Java/Spring.

3 học viên đang tham gia khóa học này

Độ khó Cơ bản

Thời gian Không giới hạn

Java
Java
Spring Boot
Spring Boot
observability
observability
AI
AI
LLM
LLM
Java
Java
Spring Boot
Spring Boot
observability
observability
AI
AI
LLM
LLM

Bạn sẽ nhận được điều này sau khi học.

  • Bạn có thể theo dõi trace và span của yêu cầu AI để phân tích luồng yêu cầu thực tế, bao gồm các lần gọi mô hình, prompt, ngữ cảnh, mức sử dụng token, độ trễ, v.v.

  • Có thể phân nhánh luồng xử lý AI tùy theo đặc điểm của yêu cầu và kiểm soát cách ứng dụng sử dụng mô hình.

  • Có thể kiểm soát chi phí ngữ cảnh bằng cách trực tiếp giới hạn runbook, lịch sử sự cố trước đây và kích thước prompt được truyền cho LLM.

  • Có thể xác thực hợp đồng cơ bản của các phản hồi AI có cấu trúc, đồng thời xử lý ổn định bằng cách thử lại và dùng phương án dự phòng khi thất bại.

  • Ngoài việc ánh xạ DTO, bạn có thể đánh giá và cải thiện mức độ bám sát căn cứ, tính cụ thể, sự tự tin thái quá và tính phù hợp của hành động trong các phản hồi AI.

  • Có thể phân loại mức độ rủi ro của các đề xuất do AI tạo ra và áp dụng chính sách để kiểm soát, ngăn kết quả nguy hiểm được truyền tải nguyên trạng.

  • Bạn có thể phát hiện những điểm chưa được kiểm soát trong ứng dụng AI đang vận hành và thiết kế các điểm kiểm soát phù hợp xét theo luồng, chi phí, chất lượng và rủi ro.

Ứng dụng AI, chỉ hoạt động thôi đã đủ chưa?

Với Spring AI, chúng ta đã gọi LLM và nhận được phản hồi mong muốn.

Ứng dụng cũng hoạt động bình thường.

Tuy nhiên, chỉ vì nhận được phản hồi bình thường thì có thể nói ứng dụng AI đang được kiểm soát tốt không?

Có thể khó biết yêu cầu thực sự đã đi qua những bước nào, hoặc nhiều thông tin hơn mức cần thiết có thể được gửi đến LLM. Ngay cả khi phản hồi được tạo ra đúng định dạng, nội dung có chính xác và phù hợp hay không lại là chuyện khác; cũng có thể xuất hiện những đề xuất nghe có vẻ hợp lý về mặt kỹ thuật nhưng sẽ nguy hiểm nếu được truyền đạt nguyên trạng.

Khi AI hoạt động theo xác suất được tích hợp vào các ứng dụng Java/Spring hiện có, chúng ta cần cùng nhau suy nghĩ không chỉ về "liệu nó có hoạt động bình thường hay không?" mà còn về "cần quan sát ở đâu, giới hạn những gì và xác minh kết quả nào?".

Bài giảng này bắt đầu từ chính câu hỏi đó.

Trong quá trình xử lý một yêu cầu, ứng dụng AI sẽ đi qua nhiều nguồn dữ liệu và dịch vụ để gọi LLM, rồi chuyển kết quả đó thành phản hồi của ứng dụng.

Vấn đề là chỉ từ việc quá trình này kết thúc bình thường thì không thể biết liệu quá trình và kết quả đó có phù hợp hay không.

Có thể chúng ta không nhìn thấy yêu cầu thực sự đã đi qua những đường nào, và LLM có thể được cung cấp nhiều runbook cùng hồ sơ sự cố trong quá khứ hơn mức cần thiết. Dù phản hồi tuân theo cấu trúc JSON đã định, điều đó cũng không đảm bảo nội dung chính xác và có chất lượng; LLM cũng có thể đưa ra những đề xuất nghe có vẻ hợp lý nhưng lại nguy hiểm nếu chuyển tiếp nguyên văn.

Nói cách khác, vấn đề không phải là LLM không hoạt động.

vẫn còn những điểm trong ứng dụng mà chúng ta chưa quan sát, kiểm soát và xác minhđó.

Vậy cần dựa trên tiêu chí nào để phát hiện và kiểm soát những điểm này?

Đã gọi LLM bằng Spring AI, kết nối thông tin cần thiết bằng RAG và tạo ra phản hồi theo định dạng mong muốn.

Ứng dụng hoạt động bình thường.

Nhưng hoạt động bình thường không có nghĩa là đang được kiểm soát.

Nếu không biết yêu cầu thực sự đã được xử lý như thế nào, thì khi xảy ra sự cố sẽ khó truy tìm nguyên nhân.

Nếu thông tin nhiều hơn mức cần thiết liên tục được gửi đến mô hình, chi phí và thời gian xử lý có thể tăng lên không cần thiết.

Ngay cả khi phản hồi được tạo ra đúng định dạng mong muốn, cũng không có gì đảm bảo rằng nội dung của nó đáng tin cậy.

Ngay cả một đề xuất có vẻ hợp lý về mặt kỹ thuật cũng có thể tiềm ẩn rủi ro nếu được truyền tải nguyên vẹn.

Khóa học này bắt đầu chính từ điểm này.

Không phải tạo thêm một tính năng AI, mà là tìm hiểu cần quan sát, giới hạn và xác minh những gì bên trong một ứng dụng AI đang hoạt động.

Phát triển một Incident Responder xuyên suốt khóa học.

Trong khóa học này, chúng tôi không tạo ví dụ mới cho mỗi khái niệm.

Lấy một Incident Responder làm trường hợp xuyên suốt, khóa học sẽ liên tục phát triển cùng một ứng dụng.

Incident Responder là một ứng dụng Spring AI tiếp nhận thông tin về sự cố vận hành, thu thập runbook liên quan, lịch sử các sự cố trước đây và chính sách leo thang, sau đó sử dụng AI để phân tích tình hình sự cố và các nguyên nhân tiềm ẩn, đồng thời đề xuất các hành động ứng phó ưu tiên.

Chúng tôi không giới thiệu ngay từ đầu một ứng dụng được kiểm soát hoàn hảo.

baseline làm điểm xuất phát của khóa học không phải là mã được viết sai, mà là một ứng dụng hoạt động bình thường nhưng chưa được kiểm soát đầy đủ.

Trên baseline này, chúng ta sẽ thực hiện các yêu cầu thực tế, phát hiện vấn đề rồi lần lượt bổ sung những điểm kiểm soát cần thiết về luồng xử lý, chi phí, chất lượng và rủi ro. Sau đó, chúng ta sẽ chạy lại cùng yêu cầu để xem điều gì đã thay đổi.

Bạn sẽ theo dõi từ đầu đến cuối quá trình một ứng dụng phát triển thành cấu trúc đáng tin cậy hơn như thế nào thông qua việc liên tục phát hiện vấn đề và kiểm soát.

Khóa học này không diễn ra theo cách liệt kê từng tính năng của Spring AI rồi hướng dẫn cách sử dụng chúng.

Trước tiên, hãy chạy baseline hoạt động bình thường và kiểm tra xem thực tế có vấn đề gì phát sinh bên trong.

Khi thấy vấn đề, hãy tìm trong mã điểm cần kiểm soát, quan sát kết quả thực thi và tìm hiểu vì sao cần cải thiện điểm này.

Chỉ khi đó, các kỹ thuật và mẫu hình cần thiết để giải quyết vấn đề mới xuất hiện.

Các kỹ thuật như Routing, Observability, Context Budget, Validation và Evaluator–Optimizer cũng không phải là mục tiêu học tập tự thân.

Sau khi xác định trước “Công nghệ này giải quyết vấn đề gì và cần thiết để kiểm soát phần nào của ứng dụng?”, hãy áp dụng vào mã.

Và chạy lại cùng một yêu cầu để so sánh trước và sau khi cải thiện.

Trước tiên phát hiện vấn đề, chọn kỹ thuật cần thiết, rồi kiểm chứng sự thay đổi qua kết quả thực tế.

Đây là phương pháp học tập của khóa học này.

Tự mình giải quyết bốn vấn đề kiểm soát.

Khi xảy ra sự cố trong ứng dụng AI, chỉ nhìn vào câu trả lời cuối cùng thì rất khó tìm ra nguyên nhân.

Trong khóa học này, chúng ta sẽ kết nối khả năng quan sát (Observability) để theo dõi một yêu cầu Incident đã đi qua những dịch vụ và lần gọi mô hình nào, bằng cấu trúc trace · span · event.

Trên màn hình Langfuse Trace thực tế, bạn sẽ trực tiếp kiểm tra luồng xử lý của yêu cầu, thời gian cần thiết cho từng bước, các lần gọi mô hình, lượng token sử dụng, độ trễ và lỗi. Sau đó, bạn sẽ áp dụng Routing để lựa chọn đường xử lý cần thiết dựa trên đặc điểm của yêu cầu.

Trước tiên hãy làm cho luồng trở nên rõ ràng, sau đó kiểm soát luồng.

Để kiểm soát chi phí LLM, không nên chỉ dừng lại ở việc kiểm tra số token đã sử dụng.

Bạn cần tự quyết định lượng thông tin mà ứng dụng được phép gửi đến LLM.

Trong bài học này, bạn sẽ giới hạn số lượng và độ dài của runbook cũng như lịch sử sự cố trước đây, loại bỏ nội dung trùng lặp và áp dụng ngân sách context tùy theo mức độ nghiêm trọng để kiểm soát kích thước Prompt cuối cùng.

Và chạy lại cùng một yêu cầu để theo dõi mức sử dụng token, đồng thời so sánh trước và sau khi cải thiện.

Từ việc theo dõi chi phí đến kiểm soát chính ngữ cảnh tạo ra chi phí.

LLM 응답이 DTO에 정상적으로 매핑되었다고 해서 그 내용을 바로 신뢰할 수 있는 것은 아닙니다.

Trước tiên, hãy kiểm tra các điều kiện cơ bản như giá trị bắt buộc, số lượng phần tử trong danh sách, mục trùng lặp và phạm vi priority; nếu có vấn đề, hãy xử lý bằng cách retry và fallback.

Tuy nhiên, ngay cả phản hồi đúng định dạng cũng có thể thiếu căn cứ hoặc chứa nội dung quá tự tin. Vì vậy, chúng tôi tiến thêm một bước, đánh giá mức độ phù hợp với căn cứ, tính cụ thể, sự tự tin thái quá và tính phù hợp của hành động, rồi cải thiện phản hồi thông qua Evaluator–Optimizer.

Từ kiểm chứng cấu trúc đến kiểm chứng cả chất lượng nội dung.

Ngay cả những đề xuất AI có vẻ hợp lý về mặt kỹ thuật cũng có thể tiềm ẩn rủi ro nếu được truyền đạt nguyên xi cho người dùng.

Trong khóa học này, bạn sẽ xác định mức độ rủi ro của các đề xuất, gán riskLevel, approvalRequired, riskReason và áp dụng các chính sách của ứng dụng như minimumSeverity và escalation policy.

Điều cốt lõi là tách biệt vai trò tạo đề xuất của AI và vai trò kiểm soát theo chính sách của ứng dụng.

Trong khóa học này, chúng ta không đề cập đến việc thực thi công cụ thực tế hay tự động khôi phục. Khóa học chỉ đề cập đến việc kiểm soát các đề xuất của AI theo chính sách và truyền chúng ra bên ngoài một cách an toàn.

Từ việc tin tưởng nguyên xi các đề xuất của AI đến việc kiểm soát chúng bằng chính sách của ứng dụng.

Khóa học này từng bước phát triển một Incident Responder dựa trên Java 21và Spring Boot, Spring AI.

Để quan sát luồng yêu cầu, chúng ta sử dụng Micrometer, OpenTelemetry, Langfuse, đồng thời chạy mã thực tế, gọi API và trực tiếp kiểm tra kết quả.

Thay vì phải học một môi trường phức tạp hoàn toàn mới, bạn sẽ tập trung vào quá trình thiết kế và kiểm chứng các điểm kiểm soát của ứng dụng AI trong môi trường phát triển quen thuộc với các nhà phát triển Java/Spring.

🔗 Tải tài liệu khóa học

Mã thực hành, tài liệu hướng dẫn và bảng thuật ngữ theo từng buổi học được cung cấp trong GitHub Repository.

📦 Kho lưu trữ GitHub tài liệu khóa học

Bạn có thể xem toàn bộ tài liệu khóa học tại Repository dưới đây.

Truy cập GitHub Repository

Trước khi bắt đầu thực hành, hãy tìm tệp README.md ở thư mục gốc Repository và nhớ đọc trước.
Bạn có thể xem hướng dẫn cần thiết để sử dụng tài liệu khóa học, chẳng hạn như cấu trúc và cách sử dụng mã của từng buổi học.


⚙️ Hướng dẫn thiết lập Langfuse

Dành cho học viên lần đầu sử dụng Langfuse, chúng tôi cung cấp tài liệu hướng dẫn riêng về các bước chuẩn bị cần thiết cho bài thực hành, từ đăng ký tài khoản đến thiết lập API Key.

Hướng dẫn đăng ký Langfuse và thiết lập API Key


📖 Bảng thuật ngữ khóa học

Nếu chưa quen với các thuật ngữ chính xuất hiện trong bài giảng như kiểm soát ứng dụng AI, Prompt, Context, Observability, Quality và Risk, bạn có thể tham khảo thêm bảng thuật ngữ.

Xem bảng thuật ngữ của khóa học

Khi gặp thuật ngữ lạ trong lúc theo dõi khóa học, hãy sử dụng tài liệu này như tài liệu bổ trợ để nhanh chóng tra cứu ý nghĩa của thuật ngữ, thay vì xem đây là tài liệu giải thích cách triển khai.

👉 Vui lòng kiểm tra trước khi bắt đầu

Kiến thức tiên quyết

Khóa học này dành cho các nhà phát triển Java/Spring.

Bạn cần có kinh nghiệm phát triển ứng dụng cơ bản với Java và Spring Boot, đồng thời nên có hiểu biết cơ bản về REST API và xử lý dữ liệu JSON.

Ngoài ra, nếu bạn nắm được các khái niệm cơ bản về AI tạo sinh như LLM, Prompt, Token và cách gọi LLM cơ bản bằng Spring AI, bạn sẽ dễ dàng theo dõi khóa học hơn.


Môi trường phát triển

Buổi thực hành được tiến hành dựa trên Java 21, Spring Boot và Spring AI.

Chúng ta sẽ tập trung viết mã trên IntelliJ IDEA, đồng thời sử dụng Postman và các công cụ khác để gửi yêu cầu Incident thực tế và kiểm tra kết quả.


Phạm vi được đề cập trong khóa học

Trong quá trình phát triển một Incident Responder, bạn sẽ học cách quan sát và kiểm soát luồng (Flow) · chi phí (Cost) · chất lượng (Quality) · rủi ro (Risk) của ứng dụng AI.

Khóa học tập trung vào quá trình phát hiện những điểm chưa được kiểm soát, bổ sung các biện pháp kiểm soát cần thiết vào mã rồi so sánh kết quả thực thi thực tế, thay vì chỉ hướng dẫn cách sử dụng các tính năng đơn thuần.


Những nội dung không thuộc phạm vi của khóa học này

Incident Responder trong khóa học này chịu trách nhiệm đến khâu tạo đề xuất từ AI, xác định mức độ rủi ro, áp dụng chính sách và chuyển giao thông tin một cách an toàn.

Do đó, nội dung khóa học không bao gồm việc thực thi các Tool như restart · rollback · scale trong hệ thống thực tế, tự động khôi phục, thực thi sau khi quản trị viên phê duyệt hoặc quy trình tiếp tục workflow bị gián đoạn.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển Java/Spring sau khi tìm hiểu các chức năng cơ bản của Spring AI, đang băn khoăn không biết nên thiết kế ứng dụng AI thực tế như thế nào.

  • Nhà phát triển đã triển khai lời gọi LLM nhưng khó nắm bắt luồng yêu cầu và quá trình gọi mô hình một cách chính xác.

  • Nhà phát triển lo lắng về việc quản lý token và chi phí khi lượng RAG và ngữ cảnh được truyền vào prompt ngày càng tăng.

  • Nhà phát triển cảm thấy khó tin tưởng vào chất lượng phản hồi của AI chỉ dựa trên đầu ra có cấu trúc.

  • Nhà phát triển muốn kiểm soát các đề xuất và phán đoán do AI tạo ra thông qua mã nguồn và chính sách của ứng dụng.

  • Nhà phát triển muốn học cách thiết kế các ứng dụng AI có thể vận hành ổn định và đáng tin cậy, thay vì chỉ triển khai các tính năng AI.

Cần biết trước khi bắt đầu?

  • Hiểu biết cơ bản về Java và lập trình hướng đối tượng

  • Kinh nghiệm phát triển ứng dụng bằng Spring Boot

  • Hiểu về tiêm phụ thuộc (DI) của Spring và cấu trúc ứng dụng cơ bản.

  • Hiểu biết cơ bản về REST API và xử lý dữ liệu JSON

  • Hiểu biết về các khái niệm cơ bản của AI tạo sinh như mô hình ngôn ngữ lớn (LLM), prompt và token.

  • Có kinh nghiệm triển khai các lệnh gọi LLM cơ bản như ChatClient bằng Spring AI.

Xin chào
Đây là Kevin

Xác minh sự nghiệp

6,936

Học viên

311

Đánh giá

133

Trả lời

4.8

Xếp hạng

12

Các khóa học

  • Ngôn ngữ hoặc công nghệ chủ lực: Java, Spring Framework, RxJava, Reactor, Spring WebFlux

  • Hoạt động với tư cách là nhà phát triển Backend tại Penta Security (From 2015.07 To 2022.01)

  • Hoạt động với tư cách là Senior Educational Software Engineer(Backend) tại Code States Co., Ltd. (https://www.codestates.com)
    (Từ 03.2022 đến 31.01.2024)

- Hoạt động với tư cách là nhà phát triển tự do và giảng viên (Since 2024.02)

- Tác phẩm (Sách đã xuất bản)

Xin chào? Tôi tên là Kevin. ^^

Rất vui được gặp các bạn với tư cách là giảng viên trên Inflearn.

Dù ở bất kỳ lĩnh vực nào cũng vậy, nhưng đặc biệt đối với một nhà phát triển phần mềm, tôi tin rằng cách duy nhất để tồn tại là luôn rèn luyện bản thân để không bị tụt hậu trước những xu hướng không ngừng thay đổi. Tôi là một trong những nhà phát triển đang tận hưởng việc phát triển phần mềm với thái độ luôn luôn học hỏi.

Với mong muốn những kiến thức và kinh nghiệm của bản thân có thể giúp ích được phần nào cho mọi người, tôi đã bắt đầu các khóa học trên Inflearn.

Trong tương lai, tôi sẽ tiếp tục gặp gỡ các bạn học viên thông qua nhiều khóa học đa dạng và mang lại những lợi ích thực tế. Xin cảm ơn.

 

Mọi câu hỏi hay ý kiến đóng góp luôn được chào đón, vì vậy hãy thoải mái liên hệ với tôi qua email (it.village.host@gmail.com).

 

Thêm

Chương trình giảng dạy

Tất cả

16 bài giảng ∙ (6giờ 23phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của Kevin

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

29 ₫

33%

1.138.434 ₫