Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh xã hội hiện đại, đặc biệt là giai đoạn sau thời điểm dịch bệnh COVID-19 và các đợt giãn cách xã hội, nhu cầu tự học nấu ăn và quy mô cộng đồng người yêu thích ẩm thực tại gia đình gia tăng đáng kể. Tuy nhiên, nhịp sống bận rộn khiến nhiều người ít có thời gian chăm sóc chất lượng bữa ăn và cân bằng dinh dưỡng, dẫn đến gia tăng các bệnh lý về đường tiêu hóa và dạ dày. Bên cạnh đó, việc duy trì sở thích nấu nướng gặp nhiều rào cản do tốn kém thời gian và thiếu môi trường kết nối, chia sẻ kinh nghiệm. Người nấu ăn, đặc biệt là giới trẻ và những người mới bắt đầu, thường xuyên đối mặt với câu hỏi thường nhật như "hôm nay ăn gì" hoặc "nấu gì bây giờ" do thiếu nguồn tư liệu tham khảo trực quan và kịp thời.
Thực trạng các nền tảng công nghệ hiện nay cho thấy tồn tại nhiều bất cập:
- Mạng xã hội tổng quát (Facebook, YouTube): Có lượng nội dung và hội nhóm ẩm thực lớn nhưng bị phân tán bởi quá nhiều chủ đề đa dạng, dễ gây xao nhãng và giới hạn các chức năng chuyên biệt cho việc quản lý công thức món ăn.
- Các website chuyên về ẩm thực: Cung cấp thông tin phong phú từ chuyên gia nhưng phương thức tương tác chủ yếu là một chiều, thiếu tính năng kết nối cộng đồng xã hội hai chiều.
- Các ứng dụng di động chuyên biệt hiện hành: Các ứng dụng phổ biến tại Việt Nam như Cookpad hay Cooky đã giải quyết được việc chia sẻ công thức nhưng vẫn còn hạn chế về khả năng tương tác mạng xã hội sâu rộng hoặc hoàn toàn chưa tích hợp công cụ tư vấn tự động (chatbot) hỗ trợ người dùng tức thì.
Trước thực trạng đó, đề tài "Xây dựng ứng dụng chia sẻ công thức nấu ăn tích hợp chatbot" (tên tiếng Anh: Building a food recipe sharing application with a built-in chatbot) được thực hiện nhằm giải quyết các nhiệm vụ và mục tiêu cụ thể sau:
- Kết nối cộng đồng những người yêu thích nấu ăn thông qua môi trường mạng xã hội chuyên biệt.
- Giúp người dùng giải đáp câu hỏi "ăn gì giờ đây" một cách nhanh chóng và chính xác.
- Khơi dậy và duy trì sở thích nấu ăn cho nhiều đối tượng trong xã hội.
- Tạo dựng sự quan tâm đúng mức về văn hóa ẩm thực và chế độ dinh dưỡng hàng ngày.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Các phương pháp xây dựng hệ thống mạng xã hội di động, mô hình cơ sở dữ liệu phi quan hệ, kiến trúc xử lý ngôn ngữ tự nhiên (NLU) cho chatbot tư vấn ẩm thực.
- Đối tượng sử dụng: Những người có sự quan tâm đến nấu ăn, ẩm thực và chăm sóc sức khỏe dinh dưỡng.
- Nguồn dữ liệu tham chiếu và tích hợp: Nguồn dữ liệu từ nền tảng ẩm thực Cooky và API dịch vụ dinh dưỡng Edamam.
- Phạm vi triển khai: Khóa luận tốt nghiệp Kỹ sư ngành Công nghệ Phần mềm tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh, hoàn thành vào tháng 6 năm 2022.
Cơ sở lý thuyết và phương pháp
Khóa luận áp dụng các lý thuyết kiến trúc phần mềm hiện đại, quy trình phát triển ứng dụng di động và kỹ thuật xử lý ngôn ngữ tự nhiên để hiện thực hóa bài toán:
- Khung kiến trúc hệ thống:
- Áp dụng mô hình kiến trúc ba lớp (3-tier architecture) cho hệ thống máy chủ dịch vụ backend nhằm phân tách rõ ràng giữa tầng tiếp nhận yêu cầu (Controller/Routing), tầng xử lý nghiệp vụ (Business Logic/Service) và tầng truy xuất dữ liệu (Data Access/Repository).
- Áp dụng mẫu thiết kế BLoC (Business Logic Component) cho ứng dụng di động Flutter nhằm quản lý trạng thái (state management) và phân tách độc lập giữa tầng giao diện người dùng (UI) với tầng xử lý logic.
- Xử lý ngôn ngữ tự nhiên và Chatbot:
- Ứng dụng nền tảng mã nguồn mở Rasa Framework để xây dựng hệ thống đàm thoại thông minh.
- Sử dụng pipeline NLU (Natural Language Understanding) bao gồm các thành phần cốt lõi: Bộ tách từ (Tokenizer), bộ trích xuất đặc trưng văn bản (Featurizer), bộ phân loại ý định (Intent Classifier) và bộ trích xuất thực thể (Entity Extraction).
- Quản lý luồng hội thoại dựa trên mô hình máy trạng thái hữu hạn (FSA - Finite State Automata), kịch bản mẫu (Stories) và các hành động tùy biến (Custom Actions).
- Phương pháp nghiên cứu và kỹ thuật thực tế:
- Phương pháp phân tích - tổng hợp và so sánh hệ thống: Khảo sát và đánh giá ưu, nhược điểm của các ứng dụng Cookpad và Cooky.
- Phương pháp phân tích và thiết kế hướng đối tượng (OOAD): Xây dựng sơ đồ ca sử dụng (Use Case Diagram), đặc tả ca sử dụng và mô hình hóa sơ đồ lớp (Class Diagram).
- Phương pháp thiết kế cơ sở dữ liệu NoSQL: Thiết kế mô hình dữ liệu tài liệu (Document-based) trên hệ quản trị cơ sở dữ liệu MongoDB.
- Phương pháp tích hợp hệ thống qua RESTful API: Xây dựng giao diện lập trình ứng dụng kết nối giữa Flutter Client, Node.js Server, Rasa Chatbot Server và các API ngoài.
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế và triển khai bao gồm ba thành phần chính hoạt động đồng bộ: Ứng dụng di động (Client), Máy chủ ứng dụng (Server) và Máy chủ Chatbot (Chatbot Server).
1. Kiến trúc cơ sở dữ liệu (MongoDB Collections)
Cơ sở dữ liệu được xây dựng trên MongoDB, bao gồm 18 collections chuyên biệt nhằm phục vụ các tính năng mạng xã hội, quản lý ẩm thực và thương mại đồ gia dụng bếp:
| STT |
Tên Collection |
Chức năng và mô tả lưu trữ |
| 1 |
Users |
Lưu trữ thông tin tài khoản người dùng, email, mật khẩu mã hóa (hashPassword), danh sách theo dõi (followingUsers, followerUsers), thông tin cá nhân. |
| 2 |
Posts |
Lưu trữ các bài viết trên bảng tin mạng xã hội, hình ảnh, video, phạm vi hiển thị (viewRange), màu nền, nội dung và thẻ phân loại (tags). |
| 3 |
Comments |
Quản lý bình luận trong bài viết, hỗ trợ cấu trúc phân cấp qua parentId để trả lời bình luận, đính kèm hình ảnh và video. |
| 4 |
Recipes |
Lưu trữ chi tiết công thức nấu ăn: khẩu phần (servings), các bước chế biến (steps), độ khó (level), tổng thời gian (totalTime), lượt xem, phương pháp nấu, nguyên liệu. |
| 5 |
Products |
Quản lý thông tin sản phẩm và dụng cụ hỗ trợ làm bếp: tên, giá (price), đơn vị tiền tệ (currencyUnit), địa điểm bán (salesLocation), hình ảnh, video. |
| 6 |
RecipeLikes |
Lưu trữ quan hệ người dùng yêu thích công thức món ăn (cặp recipeId - userId duy nhất). |
| 7 |
RecipeCooks |
Lưu trữ danh sách người dùng đã thực hiện nấu thành công công thức món ăn. |
| 8 |
Ratings |
Lưu trữ điểm đánh giá (point) của người dùng dành cho công thức nấu ăn. |
| 9 |
PostReactions |
Lưu trữ các tương tác cảm xúc (loại phản ứng type) của người dùng đối với bài viết. |
| 10 |
CommentReactions |
Lưu trữ các phản ứng cảm xúc của người dùng đối với từng bình luận. |
| 11 |
Ingredients |
Danh mục chuẩn hóa tên các nguyên liệu nấu ăn. |
| 12 |
Units |
Danh mục các đơn vị tính định lượng nguyên liệu (gam, ml, thìa...). |
| 13 |
Cuisines |
Danh mục các nền văn hóa ẩm thực theo vùng miền hoặc quốc gia. |
| 14 |
DishTypes |
Danh mục phân loại món ăn (món mặn, món chay, món tráng miệng...). |
| 15 |
MenuTypes |
Danh mục phân loại các dạng thực đơn. |
| 16 |
SpecialGoals |
Danh mục các mục tiêu ăn uống đặc biệt (giảm cân, ăn kiêng, tăng cơ...). |
| 17 |
CookMethods |
Danh mục các phương pháp chế biến món ăn (chiên, xào, hấp, nướng...). |
| 18 |
ProductTypes |
Danh mục phân loại các sản phẩm, thiết bị đồ bếp. |
2. Triển khai Máy chủ dịch vụ (Backend Server)
Máy chủ dịch vụ được phát triển bằng môi trường thực thi Node.js cùng ExpressJS framework, tuân thủ mô hình 3 lớp:
- Tầng định tuyến và điều khiển (Routes & Controllers): Tiếp nhận yêu cầu HTTP từ ứng dụng di động, thực hiện kiểm tra quyền hạn và chuyển tiếp dữ liệu đến tầng nghiệp vụ.
- Tầng nghiệp vụ (Services): Thực hiện các xử lý logic của ứng dụng như tính toán lượt xem, xử lý dữ liệu tìm kiếm công thức, quản lý mối quan hệ tương tác giữa người dùng.
- Tầng dữ liệu (Repositories/Models): Tương tác trực tiếp với cơ sở dữ liệu MongoDB thông qua các truy vấn tối ưu. Hệ thống cung cấp đầy đủ các RESTful API endpoints phục vụ xác thực người dùng, quản lý bài đăng, quản lý công thức và danh mục sản phẩm.
3. Triển khai Ứng dụng di động (Mobile Client)
Ứng dụng di động được xây dựng bằng nền tảng đa nền tảng Flutter, áp dụng BLoC pattern:
- Cấu trúc giao diện: Được chia thành các mô-đun chức năng chính gồm: Màn hình đăng nhập/đăng ký; Màn hình trang chủ hiển thị bảng tin mạng xã hội; Màn hình tạo và chỉnh sửa bài viết; Màn hình chi tiết bài viết và quản lý bình luận; Màn hình danh sách công thức và chi tiết từng bước nấu ăn; Màn hình thêm và chỉnh sửa công thức; Màn hình giới thiệu sản phẩm đồ bếp; Màn hình trang cá nhân và màn hình quản lý danh sách người theo dõi (Follow/Unfollow); Màn hình trò chuyện trực tiếp với Chatbot.
- Cơ chế tương tác: Người dùng có thể đăng tải nội dung kèm đa phương tiện (hình ảnh, video), thả cảm xúc, bình luận phân cấp, đánh giá chất lượng món ăn theo thang điểm và chia sẻ bài viết.
4. Xây dựng và Huấn luyện Chatbot (Rasa Framework)
Chatbot được triển khai dưới dạng dịch vụ chuyên biệt sử dụng Rasa Framework:
- Xây dựng tập dữ liệu: Xây dựng tập dữ liệu huấn luyện NLU trong file định dạng YAML bao gồm các ý định (Intents), các thực thể (Entities), bảng tra cứu từ khóa (Lookup tables) và bảng các từ đồng nghĩa (Synonyms) liên quan đến thuật ngữ nấu ăn và dinh dưỡng.
- Cấu hình luồng hội thoại: Thiết lập kịch bản mẫu trong
stories.yml và quy tắc phản hồi trong rules.yml nhằm nhận diện chính xác ý định của người dùng khi đặt câu hỏi.
- Xử lý hành động tùy biến (Rasa Custom Actions): Triển khai máy chủ hành động (Action Server) cho phép chatbot thực hiện truy vấn trực tiếp vào cơ sở dữ liệu món ăn hoặc gọi API từ Edamam và Cooky để trích xuất hàm lượng calo, thành phần dinh dưỡng, gợi ý nguyên liệu và hướng dẫn công thức nấu ăn tự động theo yêu cầu của người dùng.
Nội dung chính theo từng chương
Chương 1: Tổng quan đề tài
Chương 1 thiết lập nền tảng và tính cấp thiết của nghiên cứu. Tác giả trình bày thực trạng dinh dưỡng trong xã hội hiện đại, những khó khăn khi duy trì thói quen nấu nướng và hạn chế của các nền tảng mạng xã hội đa mục đích hiện nay. Từ đó, xác định rõ 4 mục tiêu nghiên cứu của đồ án, khoanh vùng phạm vi dữ liệu tích hợp (Edamam, Cooky), đối tượng người dùng hướng đến và đặt ra các tiêu chuẩn kỹ thuật mong đợi cho ứng dụng di động và hệ thống chatbot.
Chương 2: Một số nghiên cứu và ứng dụng liên quan
Chương 2 thực hiện nghiên cứu, khảo sát và đánh giá thực trạng các giải pháp phần mềm chia sẻ ẩm thực hiện hành:
- Đánh giá tổng quan các website chuyên gia và các nhóm nấu ăn trên mạng xã hội Facebook, YouTube.
- Phân tích chi tiết hai ứng dụng di động nổi bật tại Việt Nam: Cookpad (kho công thức cộng đồng phong phú nhưng giao diện chưa tối ưu, ít chức năng ngoài công thức, thiếu chatbot) và Cooky (hơn 31.000 công thức chuyên nghiệp, hình ảnh chất lượng cao nhưng tính năng tương tác mạng xã hội còn yếu và chưa có chatbot).
- Tổng hợp bảng so sánh ưu, nhược điểm của hai ứng dụng làm cơ sở thực tiễn để định hình các yêu cầu chức năng mới cho hệ thống.
Chương 3: Phân tích và thiết kế hệ thống
Chương 3 tập trung vào thiết kế hệ thống phần mềm một cách chi tiết:
- Xác định tác nhân chính tương tác với hệ thống là
User (Người dùng).
- Thiết lập sơ đồ và đặc tả chi tiết cho 8 ca sử dụng (Use Case) cốt lõi: Đăng nhập, Đăng ký, Quản lý bài viết, Tương tác bài viết, Theo dõi người dùng khác, Quản lý công thức nấu ăn, Chat với chatbot, Cập nhật thông tin cá nhân.
- Thiết kế dữ liệu với sơ đồ lớp tổng quát (Class Diagram) và mô tả chi tiết cấu trúc trường, kiểu dữ liệu, các ràng buộc duy nhất (Unique) của 18 collections trên MongoDB.
Chương 4: Hiện thực hệ thống
Chương 4 trình bày chi tiết quá trình hiện thực hóa các thành phần phần mềm:
- Hiện thực kiến trúc tổng thể kết nối giữa Flutter Client, Node.js Server, Rasa Chatbot và MongoDB.
- Trình bày cấu trúc mã nguồn máy chủ Node.js/ExpressJS theo mô hình 3 lớp và danh mục các RESTful API endpoints.
- Xây dựng ứng dụng di động Flutter theo mẫu thiết kế BLoC; chi tiết hóa thiết kế giao diện từ màn hình đăng nhập, bảng tin, chi tiết bài đăng, công thức món ăn, danh mục đồ bếp cho đến giao diện nhắn tin với chatbot.
- Xây dựng hệ thống Chatbot với Rasa: cấu hình NLU Pipeline, xử lý bộ tách từ, bộ trích xuất đặc trưng văn bản, bộ phân loại ý định, trích xuất thực thể và lập trình các Custom Actions xử lý câu hỏi về dinh dưỡng và gợi ý món ăn.
Chương 5: Kết luận và hướng phát triển
Chương 5 tổng kết toàn bộ các kết quả đạt được sau quá trình nghiên cứu và xây dựng hệ thống, đồng thời chỉ ra các hạn chế kỹ thuật hiện tại và đề xuất các định hướng nâng cấp hệ thống trong tương lai.
Kết quả và đóng góp
1. Kết quả chính đạt được
- Ứng dụng di động hoàn chỉnh: Triển khai thành công ứng dụng di động đa nền tảng bằng Flutter, tích hợp mô hình quản lý trạng thái BLoC, mang lại trải nghiệm tương tác mạng xã hội mượt mà cho người yêu thích nấu ăn.
- Hệ thống API và Cơ sở dữ liệu chuyên biệt: Xây dựng hệ thống máy chủ Node.js/ExpressJS ổn định và cơ sở dữ liệu MongoDB chuẩn hóa gồm 18 collections, đáp ứng đầy đủ các nghiệp vụ quản lý tài khoản, tương tác bài viết nhiều cấp, lưu trữ công thức nấu ăn chi tiết từng bước và quản lý thông tin sản phẩm đồ bếp.
- Chatbot tư vấn tự động: Hiện thực hóa thành công chatbot thông minh dựa trên Rasa Framework, có khả năng phân loại ý định, trích xuất thực thể, tra cứu dữ liệu dinh dưỡng và hỗ trợ người dùng tìm kiếm công thức món ăn cũng như gợi ý thực đơn hàng ngày.
2. Đóng góp của đề tài so với các nghiên cứu và hệ thống trước
- Khắc phục nhược điểm thiếu tính tương tác hai chiều của các website dạy nấu ăn truyền thống và tình trạng nhiễu thông tin trên các mạng xã hội tổng quát như Facebook, YouTube bằng cách tạo ra một không gian mạng xã hội chuyên biệt cho ẩm thực.
- Bổ sung tính năng trợ lý ảo (Chatbot) thông minh vào ứng dụng chia sẻ ẩm thực—đây là tính năng mà các ứng dụng hàng đầu tại Việt Nam như Cookpad và Cooky chưa tích hợp—giúp giải quyết kịp thời câu hỏi "hôm nay ăn gì" và hỗ trợ người dùng mới tra cứu kiến thức dinh dưỡng một cách nhanh chóng.
Hạn chế và hướng nghiên cứu tiếp
1. Hạn chế của đề tài
- Hệ thống Chatbot hiện mới dừng lại ở mức độ hỗ trợ giải đáp các câu hỏi cơ bản, tìm kiếm công thức theo nguyên liệu và tra cứu thông tin dinh dưỡng trong phạm vi tập dữ liệu huấn luyện và API tích hợp; chưa xử lý được các ngữ cảnh hội thoại phức tạp hoặc tư vấn chuyên sâu theo bệnh lý riêng biệt.
- Phạm vi dữ liệu ban đầu còn phụ thuộc vào các nguồn dữ liệu trích xuất khảo sát từ Cooky, Edamam và nội dung do người dùng tự đóng góp.
2. Hướng phát triển tiếp theo
- Nâng cao năng lực xử lý ngôn ngữ tự nhiên của Chatbot Rasa, bổ sung thêm nhiều kịch bản đàm thoại phức tạp và mở rộng khả năng hiểu ngữ cảnh người dùng.
- Tích hợp thêm các thuật toán gợi ý (Recommendation Systems) để tự động cá nhân hóa thực đơn dựa trên thói quen, sở thích và chế độ dinh dưỡng của từng cá nhân.
- Mở rộng kho dữ liệu công thức món ăn và thông tin dinh dưỡng từ nhiều nguồn chuyên gia ẩm thực uy tín.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo kỹ thuật hữu ích đối với:
- Sinh viên và nghiên cứu sinh ngành Công nghệ thông tin, Công nghệ phần mềm: Cung cấp tài liệu mẫu về quy trình phân tích thiết kế hệ thống mạng xã hội di động, từ việc xây dựng đặc tả use case, thiết kế sơ đồ lớp đến việc thiết kế cấu trúc dữ liệu NoSQL trên MongoDB.
- Lập trình viên ứng dụng di động: Tham khảo phương pháp áp dụng kiến trúc BLoC pattern trong Flutter để quản lý trạng thái cho các ứng dụng có luồng dữ liệu phức tạp.
- Kỹ sư phát triển Chatbot và NLP: Tham khảo kiến trúc triển khai thực tế của Rasa Framework, quy trình xây dựng NLU pipeline, cách tổ chức dữ liệu huấn luyện (intents, entities, stories) và kỹ thuật viết Custom Actions để kết nối Chatbot với cơ sở dữ liệu và API ngoài.
Câu hỏi thường gặp
1. Khóa luận đã khảo sát những ứng dụng nào và rút ra các nhược điểm gì của chúng?
Tác giả đã khảo sát hai ứng dụng ẩm thực tiêu biểu tại Việt Nam là Cookpad và Cooky. Nhược điểm được chỉ ra gồm: Cookpad có giao diện chưa thực sự hấp dẫn, ít tính năng mở rộng ngoài công thức và chưa có chatbot; Cooky sở hữu kho dữ liệu lớn từ đầu bếp nhưng chưa hỗ trợ tương tác mạng xã hội sâu giữa người dùng và cũng hoàn toàn chưa có tính năng chatbot hỗ trợ.
2. Cơ sở dữ liệu MongoDB của hệ thống được tổ chức thành những nhóm dữ liệu nào?
Cơ sở dữ liệu gồm 18 collections, chia thành các nhóm chính:
- Nhóm người dùng và mạng xã hội:
Users, Posts, Comments, PostReactions, CommentReactions.
- Nhóm công thức nấu ăn và tương tác:
Recipes, RecipeLikes, RecipeCooks, Ratings.
- Nhóm danh mục và thuộc tính ẩm thực:
Ingredients, Units, Cuisines, DishTypes, MenuTypes, SpecialGoals, CookMethods.
- Nhóm sản phẩm đồ bếp:
Products, ProductTypes.
3. Công nghệ nào được lựa chọn để xây dựng ứng dụng di động và máy chủ backend?
Ứng dụng di động phía người dùng (Client) được phát triển bằng framework đa nền tảng Flutter kết hợp mẫu thiết kế BLoC. Hệ thống máy chủ backend được xây dựng trên môi trường thực thi Node.js sử dụng ExpressJS framework theo mô hình kiến trúc 3 lớp, kết nối cơ sở dữ liệu NoSQL MongoDB.
4. Chatbot trong hệ thống được xây dựng bằng framework nào và có những chức năng gì?
Chatbot được xây dựng bằng Rasa Framework với pipeline xử lý NLU (Tokenizer, Featurizer, Intent Classifier, Entity Extraction). Chatbot đảm nhận nhiệm vụ nhận diện ý định của người dùng, giải đáp các câu hỏi cơ bản về tìm kiếm công thức nấu ăn, gợi ý thực đơn, giải thích các khái niệm ẩm thực và tra cứu hàm lượng dinh dưỡng của món ăn.
5. Hệ thống sử dụng những nguồn dữ liệu bên ngoài nào để tích hợp thông tin?
Hệ thống sử dụng và tham chiếu dữ liệu từ nền tảng ẩm thực Cooky và dịch vụ dữ liệu dinh dưỡng Edamam nhằm cung cấp dữ liệu về công thức nấu ăn, định lượng nguyên liệu và thành phần dinh dưỡng phục vụ người dùng và chatbot.
Kết luận
Khóa luận tốt nghiệp "Xây dựng ứng dụng chia sẻ công thức nấu ăn tích hợp chatbot" của sinh viên Lê Nhị Khang và Võ Đoàn Minh Hiếu đã giải quyết trọn vẹn bài toán kết nối cộng đồng người yêu thích ẩm thực thông qua nền tảng mạng xã hội di động chuyên biệt. Bằng việc kết hợp hiệu quả giữa Flutter (BLoC pattern), Node.js/ExpressJS, cơ sở dữ liệu MongoDB và Rasa Framework, hệ thống không chỉ cung cấp đầy đủ các chức năng chia sẻ, tương tác bài viết và quản lý công thức nấu ăn chi tiết mà còn tích hợp thành công trợ lý ảo tư vấn dinh dưỡng và gợi ý thực đơn tức thì. Đồ án thể hiện quy trình phân tích, thiết kế và hiện thực phần mềm bài bản, mang lại giá trị thực tiễn và giá trị tham khảo kỹ thuật cao cho lĩnh vực phát triển ứng dụng di động tích hợp trí tuệ nhân tạo.