T3 — NLP và Large Language Models cho Trợ Lý Thông Minh - congsinhv/fluxion GitHub Wiki

NLP và Large Language Models cho Trợ Lý Thông Minh MDM

Issue: #19 — Nghiên cứu NLP và Large Language Models cho trợ lý thông minh Tuần: 3 | 07/04 – 13/04/2026

Numbering chính thức: Mục 2.8 theo Master TOC (Chương 2)


2.8.1 Tổng Quan Xử Lý Ngôn Ngữ Tự Nhiên (NLP)

2.8.1.1 Tokenization

Tokenization chuyển đổi văn bản thô thành các đơn vị rời rạc (tokens) cho mô hình xử lý. Ba mô hình chính [8]:

Phương pháp Cơ chế Sử dụng bởi Đánh đổi
Word-level Tách theo khoảng trắng/dấu câu NLP cổ điển Vấn đề OOV; kém với hình thái học
BPE (Byte Pair Encoding) Ghép cặp ký tự tần suất cao nhất GPT-2/3/4, Llama Cân bằng OOV + độ dài chuỗi
WordPiece Ghép cặp tối đa hoá likelihood BERT, DistilBERT Nắm bắt ngữ nghĩa tốt hơn BPE
SentencePiece Agnostic ngôn ngữ, byte-level input T5, mô hình đa ngôn ngữ Tốt nhất cho chữ viết non-Latin

Phương pháp subword (BPE, WordPiece, SentencePiece) thống trị LLM hiện đại vì loại bỏ OOV tokens trong khi giữ độ dài chuỗi hợp lý [8].

2.8.1.2 Nhận Dạng Ý Định (Intent Recognition)

Xác định mục tiêu ngữ nghĩa đằng sau câu phát ngôn của người dùng. Ba thế hệ:

  • Rule-based: Pattern regex/keyword. Nhanh, chi phí zero, nhưng dễ vỡ trước paraphrase.
  • ML-based: Classifiers (SVM, BiLSTM+CRF, BERT fine-tuned). Cần labeled dataset; robust với paraphrase; taxonomy cố định.
  • LLM-based (zero/few-shot): Prompt LLM phân loại intent từ mô tả ngôn ngữ tự nhiên. Không cần labeled data; xử lý intent mới; latency và cost cao hơn [8].

Cho chatbot MDM: LLM-based là lựa chọn tối ưu — không gian lệnh rộng, paraphrases đa dạng, labeled data khan hiếm.

2.8.1.3 Nhận Dạng Thực Thể (NER)

Xác định và phân loại các entity spans (device ID, username, policy name) trong văn bản. Kiến trúc: sequence labeling với BIO tagging. Cho MDM: entity types tuỳ chỉnh — DEVICE_ID, USERNAME, COMMAND — cần few-shot prompting với domain examples [8].


2.8.2 Large Language Models (LLMs)

2.8.2.1 Kiến Trúc Transformer

Vaswani et al. (2017) trong "Attention Is All You Need" thay thế RNN/CNN bằng kiến trúc hoàn toàn dựa trên attention [1]:

  • Self-attention: Mỗi token attend đến tất cả tokens khác; nắm bắt phụ thuộc tầm xa trong O(1) layers
  • Multi-head attention: h=8 heads × d_k=64 chiều = phép chiếu không gian con song song
  • Positional encoding: Vectors hình sin được thêm vào vì attention không nhạy cảm thứ tự
  • Song song hoá: Khác RNN, xử lý toàn bộ chuỗi song song khi huấn luyện

2.8.2.2 Tiến Hoá LLM

Mô hình Nghiên cứu Năm Đóng góp chính
GPT-3 Brown et al. [2] 2020 175B tham số; in-context learning xuất hiện ở quy mô lớn
GPT-4 / GPT-4o OpenAI Tech Report 2023/2024 Đa phương thức; instruction-following; structured output
Claude Anthropic, Constitutional AI 2022+ RLHF + CAI; tập trung an toàn
Llama 3 Meta AI 2024 Open weights; 8B/70B/405B; cạnh tranh GPT-4

2.8.2.3 Khả Năng Chính

  • In-context learning: Mô hình suy luận task từ examples trong prompt mà không cần cập nhật trọng số [2]
  • Few-shot learning: 3–8 examples trong context đủ để chuyển giao hành vi task
  • Instruction following: Mô hình RLHF (InstructGPT → GPT-4) tuân thủ chỉ dẫn ngôn ngữ tự nhiên

2.8.2.4 Hạn Chế

Hạn chế Mô tả Giải pháp
Hallucination Sinh nội dung hợp lý nhưng sai sự thật [9] RAG, tool use, grounding
Context window Giới hạn token cố định; nội dung cũ bị cắt Sliding window, summarization
Latency API round-trip 0,5–5s Streaming, mô hình nhỏ
Chi phí Tính theo token; tốn kém ở volume cao Caching, mô hình nhỏ cho task đơn giản

2.8.2.5 So Sánh Mô Hình

Mô hình Provider Context Input ($/1M) Output ($/1M) Open Weights
GPT-4o OpenAI 128K $5,00 $15,00 Không
GPT-4o mini OpenAI 128K $0,15 $0,60 Không
Claude 3.5 Sonnet Anthropic 200K $3,00 $15,00 Không
Claude 3.5 Haiku Anthropic 200K $0,80 $4,00 Không
Llama 3.1 70B Meta 128K ~$0,90 ~$0,90

Bảng 2.8.1: So sánh LLM hiện tại (giá tham khảo, có thể thay đổi)


2.8.3 Prompt Engineering

2.8.3.1 System Prompts

Được inject trước user turns; định nghĩa vai trò, ràng buộc, format output:

You are the Fluxion MDM assistant. You help admins manage iOS devices via natural language.
Available device states: idle, registered, enrolled, active, locked, released.
Rules:
- For wipe or release commands: always ask for explicit confirmation first.
- If device_id is ambiguous, call query_devices first to clarify.
- Respond in the same language as the user (Vietnamese or English).

2.8.3.2 Few-Shot Learning

Cung cấp 3–8 cặp (input, output) trong context. Thực nghiệm cho thấy few-shot > zero-shot trên các task extraction có cấu trúc mà không cần fine-tuning.

2.8.3.3 Chain-of-Thought (CoT)

Wei et al. (2022) trong "Chain-of-Thought Prompting Elicits Reasoning" [3]: thêm bước suy luận trung gian (intermediate reasoning steps) vào exemplars kích hoạt suy luận từng bước trong output. Hiệu quả trên arithmetic, commonsense, symbolic reasoning. Xuất hiện ở mô hình > 100B tham số.

2.8.3.4 ReAct Pattern

Yao et al. (2023) "ReAct: Synergizing Reasoning and Acting" [4]: xen kẽ Thought → Action → Observation:

  1. Thought: Mô hình suy luận cần làm gì
  2. Action: Thực thi tool call
  3. Observation: Nhận kết quả từ tool
  4. Lặp lại cho đến khi hoàn thành

Vượt CoT-only 34% trên ALFWorld benchmark. Là tiền thân trực tiếp của các framework agent hiện đại (LangChain, AutoGen) [4].


2.8.4 Function Calling / Tool Use

2.8.4.1 Khái Niệm

Thay vì sinh văn bản tự do, LLM sinh đối tượng JSON có cấu trúc chỉ định function nào cần gọi và với tham số gì. Hệ thống host thực thi call, trả kết quả; LLM format response cuối cùng.

User query → LLM nhận tool schemas → LLM output tool_call JSON
  → System thực thi → Kết quả trả về → LLM sinh answer cuối

2.8.4.2 Định Dạng OpenAI

{
  "tools": [{
    "type": "function",
    "function": {
      "name": "lock_device",
      "description": "Locks a managed device",
      "strict": true,
      "parameters": {
        "type": "object",
        "properties": { "device_id": {"type": "string"} },
        "required": ["device_id"],
        "additionalProperties": false
      }
    }
  }]
}

strict: true (2024) đảm bảo output khớp schema chính xác — loại bỏ hallucinated parameters.

2.8.4.3 Định Dạng Anthropic Claude

Truyền qua tools array với name, description, input_schema (JSON Schema). Claude trả về tool_use content blocks; caller thực thi và trả tool_result blocks.

2.8.4.4 Nghiên Cứu Nền Tảng

  • Toolformer — Schick et al. (2023) [5]: Self-supervised training về khi nào/cách gọi API. Chứng minh đầu tiên rằng LLM tự học tool use từ minimal demonstrations.
  • Gorilla — Patil et al. (2023) [6]: Fine-tuned LLaMA trên 1.600+ API schemas; vượt GPT-4 về API call accuracy; giới thiệu Retriever-Aware Training (RAT) giảm hallucination trong function arguments.

2.8.5 Quản Lý Bộ Nhớ Hội Thoại (Conversation Memory)

2.8.5.1 Chiến Lược

Chiến lược Cơ chế Ưu điểm Nhược điểm
Full history Truyền tất cả turns mỗi request Không mất thông tin Token cost tăng không giới hạn
Sliding window Giữ N messages gần nhất Chi phí dự đoán được Mất context đầu
Summarization Nén turns cũ qua LLM Giữ bản chất ngữ nghĩa Summary mất chi tiết
RAG Truy xuất chunks liên quan từ vector store Scale lớn; recall chính xác Latency index; embedding cost

2.8.5.2 RAG (Retrieval-Augmented Generation)

Lewis et al. (2020) [7]: Kết hợp bộ nhớ tham số (parametric memory — trọng số LLM) với bộ nhớ phi tham số (non-parametric memory — dense vector index). Retriever (DPR) truy xuất top-k passages; generator sinh conditioned trên query + passages.

2.8.5.3 Chiến Lược Cho Fluxion MDM Chatbot

Chatbot MDM cần mang theo trong context:

  1. Device inventory — device ID, OS version, trạng thái (ngăn hallucinate device references)
  2. User permissions — lệnh nào user được phép thực thi
  3. Command history — N lệnh gần nhất (ngăn duplicate lock/wipe)
  4. Conversation turns — 8–12 messages gần nhất

Chiến lược đề xuất: Sliding window (turns) — giữ 10 messages gần nhất. Ở quy mô thesis (< 500 devices), device inventory đủ nhỏ để nhúng vào system prompt hoặc truy vấn trực tiếp qua tool call.


2.8.6 Ứng Dụng trong Fluxion — Thiết Kế Chatbot MDM

2.8.6.1 Intent Mapping

Intent (Tiếng Việt) Entities GraphQL Operation Mức nguy hiểm
"khóa thiết bị X" device_id mutation lockDevice(id)
"mở khóa thiết bị X" device_id mutation unlockDevice(id)
"khởi động lại thiết bị X" device_id mutation restartDevice(id)
"xóa dữ liệu thiết bị X" device_id mutation wipeDevice(id) CAO
"kết thúc quản lý thiết bị X" / "hoàn tất hợp đồng thiết bị X" device_id mutation releaseDevice(id) CAO (terminal — không revert được)
"liệt kê thiết bị đang [state]" state query listDevices(state)
"thông tin thiết bị X" device_id query getDevice(id)
"thống kê theo trạng thái" query deviceStatsByState()
"lịch sử lệnh thiết bị X" device_id query commandHistory(deviceId)
"thiết bị nào anomaly cao?" threshold query anomalyAlerts(threshold)
"gửi profile cho thiết bị X" device_id, profile_id mutation installProfile()

Bảng 2.8.2: Intent mapping cho Fluxion MDM chatbot

2.8.6.2 Function Definitions (Tool Schema)

6 tools được định nghĩa theo OpenAI JSON Schema format:

Tool Mô tả Tham số chính
query_devices Liệt kê/lọc devices theo FSM state state (enum 6 giá trị), limit
get_device Thông tin chi tiết 1 device device_id (required)
send_device_command Gửi lệnh MDM device_id, command (enum), confirmed (boolean)
get_command_history Lịch sử lệnh device device_id, limit
get_device_stats Thống kê device theo state
query_anomaly_alerts Devices có anomaly score cao min_score, limit

Cơ chế an toàn: send_device_command có field confirmed: boolean. Khi confirmed=false, Lambda short-circuit trả về confirmation prompt; chỉ thực thi khi user xác nhận rõ ràng và LLM gọi lại với confirmed=true.

2.8.6.3 Lựa Chọn LLM Provider

Tiêu chí GPT-4o mini Claude 3.5 Haiku Llama 3.3 70B (Bedrock)
Input price $0,15/M tokens $0,80/M tokens ~$0,72/M tokens
Output price $0,60/M tokens $4,00/M tokens ~$0,72/M tokens
Function calling Xuất sắc; strict:true Xuất sắc; input_schema Tốt; occasional schema hallucination
Tiếng Việt Mạnh Mạnh Trung bình
Latency ~600ms p50 ~500ms p50 ~800ms–1,2s p50
Chi phí thesis (~10K msgs) ~$0,20–0,50 ~$1,20–2,00 ~$0,80–1,20

Bảng 2.8.3: So sánh LLM provider cho Fluxion chatbot

Đề xuất: GPT-4o mini — chi phí gần zero ở quy mô thesis, Vietnamese entity extraction tốt nhất, strict JSON schema enforcement. Có thể thay thế bằng Claude Haiku hoặc Llama 3 via Bedrock tuỳ ràng buộc.

2.8.6.4 Luồng Xác Nhận Lệnh Nguy Hiểm

User: "xóa dữ liệu thiết bị abc-123"
  → LLM: phát hiện wipe intent
    → LLM gọi send_device_command(device_id="abc-123", command="wipe", confirmed=false)
      → Lambda: confirmed=false → trả về {requiresConfirmation: true}
        → LLM → User: "Bạn có chắc muốn XÓA DỮ LIỆU thiết bị abc-123? Nhập 'xác nhận'."
          → User: "xác nhận"
            → LLM gọi send_device_command(confirmed=true) → thực thi

Phân quyền: Lambda kiểm tra JWT role claim — admin cho wipe/release, operator cho lock/unlock. Mọi attempt được log vào PostgreSQL.

2.8.6.5 Kiến Trúc trong Fluxion

[API Gateway POST /api/v1/chat]
  → chat-handler Lambda
    1. Validate JWT → extract user_id, role
    2. Load 10 messages gần nhất từ PostgreSQL (chat_messages)
    3. Build messages: [system_prompt] + history + user message
    4. Call LLM API với tools array
    5. Nếu tool_call: validate confirmed → execute → gọi LLM lần 2
    6. Persist messages vào chat_messages
    7. Return response

DB Schema:

CREATE TABLE chat_sessions (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL,
  created_at TIMESTAMPTZ DEFAULT now()
);

CREATE TABLE chat_messages (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  session_id UUID REFERENCES chat_sessions(id),
  role TEXT CHECK (role IN ('user','assistant','tool')),
  content TEXT NOT NULL,
  tool_call_id TEXT,
  created_at TIMESTAMPTZ DEFAULT now()
);

Sync vs Streaming: Sử dụng synchronous cho thesis — MDM responses ngắn (< 100 tokens), streaming thêm ~3x complexity mà không cải thiện UX đáng kể ở admin tooling.


Kết Luận

Nghiên cứu về Xử lý Ngôn Ngữ Tự Nhiên (Natural Language Processing — NLP) và Mô hình Ngôn Ngữ Lớn (Large Language Models — LLM) trong chương này cung cấp nền tảng lý thuyết từ kiến trúc Transformer (Vaswani et al., 2017) và học tập trong ngữ cảnh (In-Context Learning) của GPT-3 (Brown et al., 2020) đến các kỹ thuật nâng cao như Retrieval-Augmented Generation (RAG) và Function Calling. Sự phát triển từ NLP truyền thống (rule-based, ML-based) đến LLM-based approach đánh dấu bước chuyển mình quan trọng: thay vì xây dựng và duy trì taxonomy intent cố định, hệ thống có thể hiểu ngôn ngữ tự nhiên theo ngữ cảnh và thực thi hành động phức tạp thông qua cơ chế Tool Use / Function Calling.

Cần lưu ý rằng module NLP Chatbot trong Fluxion được định vị là ứng dụng LLM tăng cường công cụ (Tool-Augmented LLM Application), tập trung vào thiết kế prompt engineering, định nghĩa tool schema, và cơ chế an toàn (safety gate) — chứ không phải nghiên cứu NLP cơ bản. Đóng góp chính của module này nằm ở việc thiết kế system prompt chuyên biệt cho domain MDM, xây dựng 5 tool definitions cho phép LLM tương tác với hệ thống, và triển khai cơ chế xác nhận 2 bước (two-step confirmation) cho các lệnh nguy hiểm.

Thách thức kỹ thuật chính được xác định là vấn đề ảo giác (hallucination) của LLM — nguy cơ nghiêm trọng trong bối cảnh quản lý thiết bị nơi một lệnh sai có thể khóa hàng trăm thiết bị. Giải pháp được chọn kết hợp ba lớp bảo vệ: (1) system prompt với role-binding rõ ràng ngăn LLM thực thi ngoài domain MDM, (2) cơ chế xác nhận hai bước yêu cầu admin phê duyệt trước khi thực thi lệnh nguy hiểm, và (3) kiểm tra quyền hạn (permission check) tại tầng GraphQL resolver — đảm bảo chatbot không thể vượt qua cơ chế phân quyền hiện có của hệ thống.


Tài Liệu Tham Khảo

[1] Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS. arXiv:1706.03762.

[2] Brown, T., et al. (2020). Language Models are Few-Shot Learners. NeurIPS. arXiv:2005.14165.

[3] Wei, J., et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS. arXiv:2201.11903.

[4] Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR. arXiv:2210.03629.

[5] Schick, T., et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS. arXiv:2302.04761.

[6] Patil, S. G., et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. NeurIPS 2024. arXiv:2305.15334.

[7] Lewis, P., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.

[8] Jurafsky, D. & Martin, J. H. (2024). Speech and Language Processing (3rd ed., draft). Stanford.

[9] Xu, Z., et al. (2024). Hallucination is Inevitable: An Innate Limitation of Large Language Models. arXiv:2401.11817.

[10] OpenAI. Function Calling Documentation. https://developers.openai.com/api/docs/guides/function-calling

[11] Anthropic. Tool Use Documentation. https://docs.anthropic.com/en/docs/agents-and-tools/tool-use

[12] AWS. Bedrock Tool Use. https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html