Đến nội dung chính
AI Agents

Hiểu AI Agents qua ví dụ thực tế

Phân biệt chat, workflow cố định và agent bằng một bài tra cứu tồn kho giả lập, có quan sát và điều kiện dừng.

Tổng quan

Dành cho người học muốn tự hoàn thành bài thực hành hiểu ai agents qua ví dụ thực tế, với dữ liệu mẫu có thể kiểm tra.

  • Vẽ vòng lặp mục tiêu, quyết định, công cụ, quan sát.
  • Phân biệt model đề xuất hành động với ứng dụng thực thi.
  • Đặt ngân sách lượt và giới hạn quyền.

Bạn sẽ hoàn thành: Một trace có công cụ, observation, câu trả lời và điều kiện dừng rõ ràng.

Chuẩn bị

  • Một trình soạn thảo; tùy chọn Python 3 để chạy mô phỏng.

Bài khái niệm và mô phỏng chạy offline. Nó không cần tài khoản hay API; mô phỏng có luật cố định không được gọi là một LLM agent.

Thực hành từng bước

Luồng thực hành minh họa; không phải kết quả đo thực nghiệm.

Bước 1. So sánh ba cách giải cùng nhiệm vụ

Nhiệm vụ: trả lời số lượng DEMO-PEN trong kho đào tạo. Chat không có tool chỉ có thể dùng dữ liệu trong hội thoại. Workflow cố định luôn gọi cùng một chuỗi bước. Agent chọn hành động dựa trên mục tiêu và observation, có thể hỏi thêm hoặc dừng. Việc dùng LLM không tự biến mọi workflow thành agent.

Bước 2. Định nghĩa quyền và dữ liệu

TEXT
Goal: answer the training stock question
Allowed tool: lookup_stock(sku), read-only
Fixture: DEMO-PEN = 7; DEMO-BOOK = 0
Unknown SKU: missing, never zero by assumption
Budget: at most 3 decisions
Forbidden: purchases, database writes, shell commands

Phân biệt 0 (đã biết hết hàng) với thiếu dữ liệu (chưa biết). Một observation đáng tin hơn trí nhớ model đối với dữ liệu thay đổi, nhưng tool vẫn phải được kiểm tra quyền và nguồn.

Bước 3. Chạy mô phỏng có nhãn rõ ràng

PYTHON
stock = {"DEMO-PEN": 7, "DEMO-BOOK": 0}
question_sku = "DEMO-PEN"
observation = None
for turn in range(3):
    if observation is None:
        observation = {"found": question_sku in stock,
                       "units": stock.get(question_sku)}
        print("TOOL", observation)
    else:
        answer = str(observation["units"]) if observation["found"] else "unknown"
        print("FINAL fictional stock:", answer)
        break
else:
    raise RuntimeError("turn limit")

Đây là controller theo luật, không có model suy luận hoặc gọi API. Nó giúp bạn đọc trace và kiểm tra điều kiện dừng trước khi chuyển sang bài Python agent có model thật. Đổi SKU thành DEMO-BOOK rồi MISSING để thấy khác biệt giữa 0 và unknown.

Bước 4. Đọc trace và chọn điểm cần người quyết định

Ghi lại mỗi bước gồm input, tool được đề xuất, kết quả và điều kiện dừng. Nếu nhiệm vụ chuyển từ “xem kho” sang “đặt mua”, đó là quyền mới: không tự thêm tool ghi. Nếu thiếu SKU, hãy hỏi thêm thay vì tìm ngẫu nhiên một sản phẩm giống tên.

PROMPT · HƯỚNG DẪN
Rà soát trace này. Chỉ ra dữ liệu nào do tool trả về, đâu là quyết định của controller, và những trường hợp phải dừng hoặc hỏi thêm. Không thêm hành động mua hàng hay quyền ghi dữ liệu.

Kiểm tra kết quả

  • Chỉ đúng phần mô phỏng và không tuyên bố có LLM khi không có.
  • DEMO-BOOK trả 0, MISSING trả unknown, mọi lượt đều có giới hạn.

Xử lý lỗi thường gặp

Gọi mọi chatbot là agent

Nguyên nhân: Chưa xác định vòng lặp hành động và observation.

Cách xử lý: Vẽ các bước thực sự diễn ra và ghi rõ bước nào model được quyền lựa chọn.

Thiếu dữ liệu bị biến thành số 0

Nguyên nhân: Không tách trạng thái found khỏi units.

Cách xử lý: Giữ found=false và trả unknown; không suy ra lượng tồn.

Bài tập & mở rộng

  • Viết trace cho câu hỏi có hai SKU; xác định số tool call tối đa.
  • Tiếp tục bài Python agent để thay quyết định theo luật bằng Responses API.

Mô phỏng không đo năng lực tự chủ, độ chính xác hay độ tin cậy của một model. Mọi số tồn kho trong bài đều là dữ liệu hư cấu.

Nguồn tham khảo

  1. OpenAI function calling
  2. Python control flow

Kiến thức liên quan

Tiếp tục thực hành