Bối cảnh và vấn đề nghiên cứu

Sự phát triển của trí tuệ nhân tạo (AI) và công nghệ xử lý ngôn ngữ tự nhiên đã thúc đẩy sự ra đời của các hệ thống đàm thoại tự động (Chatbot). Từ năm 2016, chatbot đã trở thành một xu hướng công nghệ được quan tâm với phạm vi ứng dụng rộng rãi từ thương mại, giải trí, y tế cho đến các quy trình tự động hóa kỹ thuật. Theo báo cáo dự báo từ Gartner được trích dẫn trong đồ án, có hơn 85% tương tác của khách hàng được ước tính sẽ quản lý tự động mà không cần sự can thiệp trực tiếp của con người vào năm 2020. Trong lĩnh vực nông nghiệp, nhu cầu tự động hóa các quy trình kỹ thuật như chiếu sáng nhân tạo, đóng mở hệ thống tưới tiêu và quản lý chu kỳ sinh trưởng của cây trồng đang đặt ra yêu cầu cấp thiết nhằm tối ưu hóa chi phí vận hành, tiết kiệm thời gian và giảm thiểu sức lao động thủ công.

Xuất phát từ mục tiêu tiếp cận các công nghệ xử lý ngôn ngữ tự nhiên hiện đại, củng cố kiến thức chuyên ngành Điện tử Công nghiệp và ứng dụng nền tảng Dialogflow vào việc điều khiển tự động hóa các thiết bị ngoại vi, các tác giả Mai Vũ Xuân Trường và Nguyễn Thanh Tân (dưới sự hướng dẫn của Thầy Nguyễn Mạnh Hùng tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh) đã thực hiện đồ án tốt nghiệp với đề tài: "Xây dựng hệ thống Chatbots tự động".

Mục tiêu cốt lõi của đề tài là nghiên cứu hệ thống chatbot và ứng dụng thực tiễn trong đời sống, cụ thể hóa thông qua việc xây dựng một mô hình tương tác người - máy trên nền tảng Dialogflow kết hợp với ngôn ngữ lập trình Python để tiếp nhận khẩu lệnh/văn bản và tự động điều khiển các thiết bị điện công nghiệp phục vụ việc trồng trọt.

Nhiệm vụ nghiên cứu của đồ án được triển khai thành 7 nội dung cụ thể:

  1. Nội dung 1: Tìm hiểu về Chatbots, Dialogflow, Intents, Entities, Contexts, Actions and Parameters, Training Phrase, Fulfillment.
  2. Nội dung 2: Vẽ sơ đồ khối của Chatbots, vẽ lưu đồ của Dialogflow.
  3. Nội dung 3: Nghiên cứu webhook trong Dialogflow để kết nối với PyCharm và lấy dữ liệu định dạng JSON của Dialogflow đưa vào Webhook.
  4. Nội dung 4: Tìm hiểu về Raspberry Pi, cài đặt hệ điều hành và nạp mã nguồn xuống Raspberry Pi.
  5. Nội dung 5: Nghiên cứu ngôn ngữ Python trên môi trường phát triển PyCharm, tìm hiểu công cụ ngrok để kết nối Dialogflow với Raspberry Pi.
  6. Nội dung 6: Đánh giá kết quả thực hiện mô hình.
  7. Nội dung 7: Viết báo cáo luận văn tốt nghiệp.

Đối tượng và phạm vi nghiên cứu của đề tài được giới hạn rõ ràng:

  • Đối tượng nghiên cứu: Mô hình phần mềm Chatbot tương tác bằng ngôn ngữ tự nhiên kết hợp kiến trúc phần cứng điều khiển thiết bị điện.
  • Phạm vi không gian ứng dụng: Hệ thống điều khiển chiếu sáng và tưới nước cho mô hình vườn rau.
  • Phạm vi thiết bị phần cứng: Điều khiển đóng ngắt tự động 2 bóng đèn chiếu sáng (lightbult1, lightbult2) và 1 động cơ bơm nước tưới tiêu (motor).
  • Phạm vi giao tiếp: Tiếp nhận dữ liệu người dùng qua giao diện văn bản và âm thanh trên Dialogflow, phân tích ngữ nghĩa và chuyển tín hiệu điều khiển xuống máy tính nhúng Raspberry Pi qua Webhook.
  • Thời gian nghiên cứu và thực nghiệm: Đồ án được hoàn thành trong thời gian hơn 2 tháng.

Cơ sở lý thuyết và phương pháp

Đề tài thiết lập nền tảng lý luận dựa trên các định nghĩa học thuật về trí tuệ nhân tạo của Bellman (1978) về việc tự động hóa các hoạt động phù hợp với suy nghĩ con người và Rich & Knight (1991) về việc nghiên cứu phương pháp giúp máy tính thực hiện các tác vụ con người đang làm tốt hơn. Về mặt phân loại học, chatbot được phân chia thành hai nhánh chính:

  • Chatbot viết kịch bản (Scripted Chatbot): Hoạt động dựa trên tập quy tắc cố định, người dùng lựa chọn các nhánh tùy chọn theo kịch bản định sẵn.
  • Chatbot thông minh (Intelligent Chatbot): Ứng dụng các kỹ thuật học máy (Machine Learning) và xử lý ngôn ngữ tự nhiên (NLP) để phân tích đầu vào tự do, tự học hỏi từ dữ liệu tương tác để nâng cao độ chính xác phản hồi.

Về mặt cấu trúc, một hệ thống chatbot tiêu chuẩn bao gồm ba thành phần nền tảng: Cơ sở dữ liệu (Database), Tầng ứng dụng (Application layer), và Giao diện lập trình ứng dụng (API) kết nối với giao diện người dùng. Đồ án tổng thuật toàn diện lịch sử phát triển của các hệ thống đàm thoại nhân tạo qua các mốc lịch sử tiêu biểu: Phép thử Turing (1950), Hội thảo Dartmouth (1956), Eliza (1960), Parry (1972), thí nghiệm Căn phòng tiếng Trung (Chinese Room - 1980), Sbaitso (1992), Alice (1995/1998/2001 với chuẩn AIML), Jabberwacky, SmarterChild, GooglyMinotaur, IBM Watson (2006/2011), Apple Siri, Google Now/Google Assistant (2016), Amazon Alexa (2014/2015), Microsoft Cortana (2015) và chatbot Tay (2016).

Khung công nghệ xử lý đàm thoại trọng tâm được sử dụng là Dialogflow (nền tảng của Google, đổi tên từ Speaktoit/API.AI vào ngày 10/10/2017). Dialogflow cung cấp dịch vụ NLU/NLP đa ngôn ngữ (hỗ trợ 14 ngôn ngữ) với các thành phần cốt lõi:

  • Ý định (Intents): Bao gồm Ý định ngẫu nhiên (Casual Intents - mở đầu, chào hỏi, cảm ơn, xác nhận) và Ý định nghiệp vụ (Business Intents - yêu cầu xử lý logic nghiệp vụ cụ thể).
  • Thực thể (Entities): Công cụ trích xuất giá trị tham số từ câu nói, chia thành thực thể hệ thống (System entities), thực thể do nhà phát triển định nghĩa (Developer entities), và thực thể người dùng (User entities).
  • Ngữ cảnh (Contexts): Gồm Input Context và Output Context nhằm duy trì bối cảnh hội thoại qua nhiều lượt trao đổi. Trong Dialogflow, một ngữ cảnh mặc định sẽ hết hạn sau 5 lần yêu cầu (requests) hoặc sau 10 phút kể từ thời điểm khởi tạo.
  • Tham số (Parameters): Lưu trữ dữ liệu được trích xuất từ câu thoại người dùng với các thuộc tính như Constant, Default, IsList, Required.
  • Cổng kết nối dịch vụ ngoài (Fulfillment/Webhook): Cho phép hệ thống chuyển tiếp dữ liệu yêu cầu dưới dạng gói tin JSON qua giao thức HTTP đến máy chủ backend để tương tác với cơ sở dữ liệu và phần cứng.

Phương pháp nghiên cứu được nhóm tác giả áp dụng bao gồm:

  • Phương pháp nghiên cứu lý thuyết: Thu thập, tổng hợp và phân tích tài liệu chuyên ngành về trí tuệ nhân tạo, kiến trúc chatbot, tài liệu kỹ thuật Dialogflow, tài liệu phần cứng máy tính nhúng Raspberry Pi và lập trình mạng trong Python.
  • Phương pháp thiết kế kỹ thuật và thực nghiệm: Xây dựng sơ đồ khối toàn hệ thống; thiết kế lưu đồ giải thuật phân nhánh điều khiển; huấn luyện mô hình ngôn ngữ trên Dialogflow; lập trình máy chủ Webhook bằng ngôn ngữ Python (sử dụng micro-framework Flask) trên môi trường PyCharm; thiết lập đường hầm mạng ngrok; và kết nối phần cứng máy tính nhúng Raspberry Pi để xuất tín hiệu điều khiển mức logic (High/Low) ra các chân GPIO.

Nguồn dữ liệu của nghiên cứu là tập dữ liệu huấn luyện (Training Phrases) được nhóm tự thiết lập trong hệ thống Dialogflow, bao gồm các biến thể câu thoại yêu cầu bật/tắt thiết bị và các định nghĩa thực thể thiết bị ngoại vi trong mô hình trồng trọt.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo mô hình tích hợp gồm ba khối chức năng cơ bản với quy trình truyền nhận dữ liệu khép kín:

Khối chức năng Thành phần con Nhiệm vụ kỹ thuật
Khối truyền dữ liệu, thông tin Người dùng (User), Khối đầu vào (Input), Khối đầu ra (Output) Tiếp nhận yêu cầu bằng văn bản hoặc giọng nói; truyền tín hiệu đến Dialogflow; tiếp nhận phản hồi từ hệ thống để hiển thị qua màn hình, loa hoặc trạng thái thiết bị điện.
Khối xử lý dữ liệu thông qua Dialogflow Khối truy vấn (Query), Khối ý định (Intent), Khối thao tác dữ liệu (Actionable Data) Phân tích câu nói tự nhiên, đối chiếu cụm từ huấn luyện, trích xuất tham số thành dữ liệu có cấu trúc JSON; phân luồng ý định ngẫu nhiên về khối dữ liệu đầu ra và chuyển ý định nghiệp vụ đến Webhook.
Khối thực hiện truy vấn trên Webhook Khối Code, Khối APIs, Khối Database Đồng bộ hóa dữ liệu với máy chủ ngoại vi qua HTTP; xử lý logic nghiệp vụ và ánh xạ tham số điều khiển phần cứng.

Kiến trúc điều khiển phần mềm tại Webhook được xây dựng bằng Python với thư viện Flask và RPi.GPIO để tương tác trực tiếp với phần cứng máy tính nhúng Raspberry Pi:

#!/usr/bin/env python
import urllib
import json
import os
from flask import Flask
from flask import request
from flask import make_response
import RPi.GPIO as GPIO

# Cấu hình GPIO
GPIO.setmode(GPIO.BCM)
# Thiết lập các chân xuất tín hiệu cho thiết bị

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    req = request.get_json(silent=True, force=True)
    res = makeWebhookResult(req)
    res = json.dumps(res, indent=4)
    r = make_response(res)
    r.headers['Content-Type'] = 'application/json'
    return r

def makeWebhookResult(req):
    if req.get("action") != "on:off":
        return {}
    queryResult = req.get("queryResult")
    parameters = queryResult.get("parameters")
    val1 = parameters.get("on-off")
    val2 = parameters.get("device")
    
    # Điều khiển đèn 1
    if val1 == "on" and val2 == "lightbult1":
        GPIO.output(pin_light1, GPIO.HIGH)
    if val1 == "off" and val2 == "lightbult1":
        GPIO.output(pin_light1, GPIO.LOW)
        
    # Điều khiển đèn 2
    if val1 == "on" and val2 == "lightbult2":
        GPIO.output(pin_light2, GPIO.HIGH)
    if val1 == "off" and val2 == "lightbult2":
        GPIO.output(pin_light2, GPIO.LOW)
        
    # Điều khiển motor bơm nước
    if val1 == "on" and val2 == "motor":
        GPIO.output(pin_motor, GPIO.HIGH)
    if val1 == "off" and val2 == "motor":
        GPIO.output(pin_motor, GPIO.LOW)
        
    speech = "OK " + val1 + " " + val2
    return {"fulfillmentText": speech}

if __name__ == '__main__':
    port = int(os.getenv('PORT', 5000))
    app.run(debug=True, port=port, host='0.0.0.0')

Lưu đồ giải thuật xử lý logic nghiệp vụ trên Dialogflow hoạt động theo quy tắc kiểm tra điều kiện tuần tự:

  • Khi người dùng gửi tín hiệu kích hoạt (ví dụ: "Hi Bot" hoặc "Hello Bot"), hệ thống phản hồi xác nhận ("Can I help you?").
  • Hệ thống phân tích yêu cầu đối với thiết bị đầu tiên (control lightbult 1):
    • Nếu có yêu cầu điều khiển đèn 1: Kiểm tra trạng thái yêu cầu (Turn on). Nếu xác nhận bật, hệ thống xuất mã trạng thái A1 (kích hoạt mức cao); nếu yêu cầu tắt, xuất mã A2 (kích hoạt mức thấp).
    • Nếu không có yêu cầu với đèn 1: Chuyển sang kiểm tra điều kiện thứ hai (control lightbult 2).
  • Tại điều kiện điều khiển đèn 2:
    • Nếu có yêu cầu: Kiểm tra Turn on. Nếu bật, xuất mã B1; nếu tắt, xuất mã B2.
    • Nếu không có yêu cầu: Chuyển sang kiểm tra điều kiện thứ ba (control motor).
  • Tại điều kiện điều khiển động cơ tưới:
    • Nếu có yêu cầu: Kiểm tra Turn on. Nếu bật, xuất mã C1; nếu tắt, xuất mã C2.
    • Nếu không nhận được bất kỳ yêu cầu điều khiển nào, hệ thống quay trở về trạng thái chờ lệnh mới.
  • Để Dialogflow chuyển tiếp dữ liệu đến máy chủ Flask đang chạy trên môi trường cục bộ của Raspberry Pi, công cụ ngrok được triển khai để tạo một đường hầm mạng bảo mật (secure tunnel) qua giao thức HTTP/HTTPS, cấp phát một URL công khai trỏ thẳng vào cổng dịch vụ của Webhook.

Nội dung chính theo từng chương

Chương 1: Tổng quan

Chương 1 trình bày bối cảnh công nghệ của trí tuệ nhân tạo và chatbot từ năm 2016 đến nay, trích dẫn dự báo của tổ chức Gartner về xu thế tự động hóa tương tác khách hàng vào năm 2020. Tác giả phân tích nhu cầu ứng dụng công nghệ đàm thoại vào việc điều khiển tự động hóa các quy trình nông nghiệp như tưới tiêu và chiếu sáng cây trồng. Từ đó, chương xác định mục tiêu nghiên cứu là làm chủ Dialogflow và ngôn ngữ Python để xây dựng hệ thống điều khiển thiết bị điện; đồng thời chi tiết hóa 7 nội dung nghiên cứu kỹ thuật, xác lập phạm vi giới hạn trong mô hình vườn rau (gồm 2 bóng đèn và 1 motor) cùng cấu trúc tổng thể gồm 6 chương của luận văn.

Chương 2: Cơ sở lý thuyết

Chương 2 tập trung hệ thống hóa nền tảng lý thuyết về Trí tuệ nhân tạo và Chatbot. Nội dung trình bày các định nghĩa kinh điển về AI của Bellman (1978) và Rich & Knight (1991); phân loại chatbot thành dạng kịch bản và dạng thông minh; phân tích cấu tạo 3 lớp (Cơ sở dữ liệu, Lớp ứng dụng, API); và tổng thuật chi tiết lịch sử chatbot qua các mốc nghiên cứu nổi bật từ năm 1950 đến 2017. Phần thứ hai của chương đi sâu vào nền tảng Dialogflow của Google: phân tích cơ chế NLP/NLU, khả năng hỗ trợ 14 ngôn ngữ, nguyên lý hoạt động của Ý định (Casual Intents và Business Intents), Thực thể (Entities), cơ chế hoạt động của Ngữ cảnh (Contexts - với chu kỳ sống mặc định 5 lượt request hoặc 10 phút), cấu hình Tham số (Parameters) và cơ chế kết nối Webhook Fulfillment.

Chương 3: Tính toán và thiết kế

Chương 3 thiết lập phương án thiết kế hệ thống tương tác người - máy. Tác giả phân rã cấu trúc hệ thống thành ba khối chức năng chính: Khối truyền dữ liệu/thông tin (gồm người dùng, tín hiệu âm thanh/bàn phím đầu vào và tín hiệu phản hồi đầu ra), Khối xử lý dữ liệu thông qua Dialogflow (gồm khối truy vấn Query xử lý dữ liệu JSON, khối Intent phân loại luồng ý định, và khối Actionable Data), và Khối thực hiện truy vấn trên Webhook (kết nối Code, APIs và Cơ sở dữ liệu bên ngoài). Chương cũng công bố sơ đồ kết nối phần cứng chi tiết giữa các thiết bị điện với các chân xuất tín hiệu của bo mạch máy tính nhúng Raspberry Pi.

Chương 4: Thi công hệ thống

Chương 4 mô tả toàn bộ quy trình hiện thực hóa giải pháp kỹ thuật trên môi trường phần mềm và phần cứng. Tác giả xây dựng sơ đồ chương trình tổng thể và lưu đồ giải thuật chi tiết trên Dialogflow với các nhánh quyết định điều khiển thiết bị (A1/A2 cho đèn 1, B1/B2 cho đèn 2, C1/C2 cho motor). Phần triển khai phần mềm trình bày từng bước thiết lập Agent trên giao diện điều khiển của Dialogflow, xây dựng Intent, định cấu hình cụm từ đào tạo (Training Phrases), thiết lập tham số và câu phản hồi. Chương giới thiệu môi trường phát triển PyCharm, chi tiết hóa toàn bộ mã nguồn Python sử dụng Flask để tiếp nhận gói tin JSON từ Webhook, trích xuất hai tham số on-off và device, sau đó gọi thư viện RPi.GPIO để kích hoạt mức logic tương ứng trên Raspberry Pi. Đồng thời, chương trình bày phương thức vận hành công cụ ngrok để thiết lập đường hầm truyền dữ liệu trực tiếp từ internet về máy chủ cục bộ.

Chương 5: Kết quả, nhận xét và đánh giá

Chương 5 tổng kết toàn bộ kết quả thực nghiệm đạt được sau hơn 2 tháng triển khai đề tài. Tác giả cung cấp các minh chứng thực nghiệm bằng hình ảnh chụp giao diện hệ thống: các tham số và cụm từ huấn luyện trong Intents, việc định nghĩa và trích xuất thành công các thực thể device và on-off. Kết quả thực tế ghi nhận hệ thống phản hồi chính xác các ý định ngẫu nhiên (chào hỏi, hỏi thăm) và thực thi đúng các lệnh điều khiển phần cứng. Dữ liệu thực nghiệm chứng minh khi người dùng gửi yêu cầu trên giao diện Dialogflow, hệ thống đã trích xuất đúng tham số và kích hoạt các trạng thái vật lý thực tế: bật/tắt đèn 1, bật/tắt đèn 2 và bật/tắt motor bơm nước theo đúng thời gian thực.

Chương 6: Kết luận và hướng phát triển

Chương 6 tổng kết lại các mục tiêu đã hoàn thành của đồ án về mặt lý thuyết và mô hình thực nghiệm; đồng thời nêu rõ các điểm hạn chế về số lượng thiết bị điều khiển và tính phụ thuộc vào hạ tầng mạng trung gian, từ đó đề xuất các hướng mở rộng cho hệ thống trong tương lai.

Kết quả và đóng góp

Đồ án đã xây dựng hoàn chỉnh một hệ thống điều khiển tự động bằng giọng nói và văn bản thông qua mô hình tương tác ngôn ngữ tự nhiên. Các kết quả kỹ thuật cụ thể đã được kiểm chứng trên mô hình thực nghiệm:

Thiết bị ngoại vi Tham số Entity device Trạng thái điều khiển (on-off) Mã trạng thái logic Kết quả vật lý thực tế ghi nhận
Bóng đèn 1 lightbult1 on A1 Đèn 1 sáng (GPIO.HIGH)
Bóng đèn 1 lightbult1 off A2 Đèn 1 tắt (GPIO.LOW)
Bóng đèn 2 lightbult2 on B1 Đèn 2 sáng (GPIO.HIGH)
Bóng đèn 2 lightbult2 off B2 Đèn 2 tắt (GPIO.LOW)
Motor tưới nước motor on C1 Motor quay (GPIO.HIGH)
Motor tưới nước motor off C2 Motor ngừng quay (GPIO.LOW)

Hệ thống đã thực hiện thành công các tương tác đàm thoại ngẫu nhiên thông thường (Casual Intents) và xử lý chính xác các yêu cầu nghiệp vụ phức tạp (Business Intents). Chuỗi dữ liệu từ đầu vào ngôn ngữ tự nhiên của người dùng được Dialogflow bóc tách thành các cặp khóa - giá trị (on-off: on/off; device: lightbult1/lightbult2/motor), đóng gói thành bản tin JSON gửi qua Webhook, giải mã qua mã nguồn Python Flask và kích hoạt chính xác trạng thái rơ-le điều khiển tải trên chân GPIO của máy tính nhúng Raspberry Pi.

Đóng góp kỹ thuật của đề tài thể hiện ở việc kết nối thành công nền tảng trí tuệ nhân tạo đám mây (Google Dialogflow) với phần cứng nhúng cục bộ (Raspberry Pi) thông qua đường hầm mạng ngrok. Nghiên cứu đã chứng minh tính khả thi của việc ứng dụng công nghệ xử lý ngôn ngữ tự nhiên trong tự động hóa nông nghiệp quy mô nhỏ, tạo ra giải pháp điều khiển thiết bị trực quan bằng giọng nói và tin nhắn thay thế cho các thao tác công tắc vật lý truyền thống.

Hạn chế và hướng nghiên cứu tiếp

Căn cứ theo nội dung và phạm vi nghiên cứu được công bố trong văn bản, đồ án tồn tại một số điểm hạn chế kỹ thuật:

  • Phạm vi phần cứng và đối tượng điều khiển còn giới hạn: Mô hình mới chỉ thử nghiệm điều khiển đóng ngắt cho 3 tải tiêu thụ độc lập (2 bóng đèn chiếu sáng và 1 động cơ bơm nước), chưa tích hợp mạng lưới thiết bị mở rộng trong nông nghiệp quy mô lớn.
  • Mô hình truyền thông phụ thuộc công cụ trung gian: Việc kết nối Webhook giữa dịch vụ đám mây Dialogflow và máy chủ nội bộ Raspberry Pi phụ thuộc vào phần mềm tạo đường hầm ngrok phiên bản thử nghiệm, chưa được cấu hình địa chỉ IP tĩnh cố định hoặc triển khai trực tiếp máy chủ Webhook độc lập trên nền tảng điện toán đám mây chuyên dụng (như Google Cloud Platform, Heroku hay AWS).
  • Luồng điều khiển mang tính một chiều: Hệ thống mới tiếp nhận mệnh lệnh từ người dùng để điều khiển thiết bị cơ điện, chưa tích hợp các khối cảm biến đo đạc môi trường thực tế (như nhiệt độ, độ ẩm đất, ánh sáng) để hình thành cơ chế phản hồi vòng kín (closed-loop control) và cảnh báo tự động ngược lại cho người dùng.

Các hướng phát triển tiếp theo được xác định bao gồm:

  • Mở rộng số lượng và chủng loại thiết bị chấp hành trong hệ thống tự động hóa nông nghiệp.
  • Triển khai máy chủ Webhook chính thức lên các dịch vụ đám mây tiêu chuẩn để loại bỏ sự phụ thuộc vào đường hầm ngrok cục bộ.
  • Tích hợp thêm các bộ cảm biến giám sát thông số môi trường nông nghiệp vào Raspberry Pi để chatbot có thể truy vấn số liệu và đưa ra các khuyến nghị chăm sóc cây trồng tự động.
  • Mở rộng tích hợp giao diện tương tác sang các nền tảng tin nhắn phổ biến khác như Facebook Messenger, Telegram, hoặc trợ lý ảo Google Assistant/Amazon Alexa.

Giá trị tham khảo

Đồ án là tài liệu kỹ thuật có giá trị tham khảo thiết thực cho sinh viên các ngành Kỹ thuật Điện tử, Tự động hóa, Kỹ thuật Máy tính, Điện tử Công nghiệp và Công nghệ Thông tin đang thực hiện các đề tài tốt nghiệp hoặc dự án nghiên cứu về Internet vạn vật (IoT) kết hợp Trí tuệ nhân tạo (AIoT).

Những nội dung có giá trị tham khảo chuyên sâu trong tài liệu:

  • Phương pháp luận xây dựng tác nhân đàm thoại trên Google Dialogflow: Hướng dẫn chi tiết quy trình thiết lập Intents, phân loại Casual/Business Intents, xây dựng Entities tùy biến (device, on-off), và cấu hình vòng đời của Contexts.
  • Kiến trúc kết nối phần mềm - phần cứng: Mô hình mẫu về việc lập trình Webhook bằng Python Flask để bắt sự kiện từ Dialogflow, trích xuất cấu trúc dữ liệu JSON và ánh xạ thành tín hiệu điều khiển phần cứng GPIO trên Raspberry Pi.
  • Giải pháp định tuyến mạng qua ngrok: Cung cấp giải pháp thực tế giúp các nhà phát triển kết nối một thiết bị nhúng chạy máy chủ cục bộ với các API đám mây công cộng trong giai đoạn thử nghiệm mà không cần cấu hình mạng phức tạp.

Câu hỏi thường gặp

1. Hệ thống chatbot trong đồ án được thiết kế để điều khiển những thiết bị cụ thể nào và ứng dụng trong mô hình gì?
Hệ thống được thiết kế chuyên biệt để điều khiển tự động 3 thiết bị điện gồm: 2 bóng đèn chiếu sáng (lightbult1, lightbult2) và 1 động cơ bơm nước (motor), phục vụ trực tiếp cho quy trình chiếu sáng và tưới tiêu trong mô hình vườn rau.

2. Nền tảng xử lý ngôn ngữ tự nhiên nào được sử dụng và cơ chế trích xuất tham số diễn ra như thế nào?
Đề tài sử dụng nền tảng Dialogflow của Google. Khi người dùng nhập câu lệnh, hệ thống sử dụng các Intents kết hợp với 2 thực thể (Entities) tự định nghĩa là device (nhận diện thiết bị: lightbult1, lightbult2, motor) và on-off (nhận diện trạng thái: on, off) để trích xuất dữ liệu thành định dạng tham số có cấu trúc.

3. Công cụ ngrok đóng vai trò gì trong kiến trúc kỹ thuật của hệ thống?
ngrok đóng vai trò tạo đường hầm an toàn (secure tunnel) kết nối máy chủ web cục bộ đang chạy trên máy tính/Raspberry Pi với mạng internet. Công cụ này cung cấp một URL công khai dạng HTTPS để cấu hình vào mục Fulfillment Webhook của Dialogflow, cho phép Dialogflow gửi dữ liệu HTTP POST về backend nội bộ theo thời gian thực.

4. Mã nguồn xử lý Webhook trên máy tính nhúng Raspberry Pi được viết bằng ngôn ngữ nào và sử dụng thư viện gì?
Webhook được lập trình bằng ngôn ngữ Python trên môi trường PyCharm, sử dụng micro-framework Flask để tạo endpoint @app.route('/webhook', methods=['POST']) xử lý các bản tin JSON và thư viện RPi.GPIO để trực tiếp điều khiển các mức điện áp logic (High/Low) trên các chân vật lý của Raspberry Pi.

5. Cơ chế quản lý ngữ cảnh (Context) trong Dialogflow được thiết lập với các thông số mặc định nào?
Trong Dialogflow, một ngữ cảnh (Context) được sử dụng để duy trì phạm vi thông tin qua các lượt đối thoại. Theo tài liệu đồ án, một context mặc định sẽ tự động hết hạn sau 5 lần yêu cầu (5 requests) hoặc sau 10 phút kể từ thời điểm nó được khởi tạo.

Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống Chatbots tự động" của sinh viên Mai Vũ Xuân Trường và Nguyễn Thanh Tân đã hoàn thành mục tiêu nghiên cứu và tích hợp thành công nền tảng xử lý ngôn ngữ tự nhiên Google Dialogflow với bo mạch máy tính nhúng Raspberry Pi. Thông qua việc phân loại chuẩn xác các ý định và thực thể đàm thoại kết hợp máy chủ Webhook lập trình bằng Python Flask, hệ thống đã điều khiển đóng ngắt thành công 2 bóng đèn chiếu sáng và 1 động cơ bơm nước phục vụ mô hình trồng trọt thực tế. Đây là công trình thực nghiệm tiêu biểu cho hướng ứng dụng giao tiếp người - máy bằng ngôn ngữ tự nhiên vào lĩnh vực tự động hóa nông nghiệp và Internet vạn vật.