# Kỹ Thuật Symbolic AI
- **Symbolic AI** = AI suy luận bằng **ký hiệu, quy tắc, luật logic**.
- Mọi thứ trong Symbolic AI là **"suy nghĩ như con người"**: có điều kiện, có suy luận "nếu thì", có quy tắc ràng buộc.
- Ví dụ:
> Nếu chi phí quảng cáo Google > 50% tổng ngân sách thì phải giảm ngân sách Facebook.
Nó là **gốc rễ** của AI cổ điển (những năm 1950–1990)
Ngày nay, chúng ta **không còn** lập trình Prolog hay Lisp như xưa nữa,
mà dùng **Prompt + LLMs** để:
- **Mô tả quy tắc**
- **Ràng buộc điều kiện**
- **Bắt AI lập luận (reasoning) theo luật**
**=> Tức là: Prompt chính là Symbolic Programming, nhưng bằng ngôn ngữ tự nhiên có cấu trúc.**
#### **Ứng dụng Symbolic AI vào viết Prompt**
**Bạn phải viết Prompt theo **nguyên tắc Symbolic**:**
**Quy tắc** | **Cách làm** |
---|
**Xác định mục tiêu rõ ràng** | "Tối ưu hóa ngân sách marketing 10,000 USD." |
**Nêu các biến số (symbols)** | "Có 3 kênh: Google (G), Facebook (F), Email (E)." |
**Đặt luật (constraints)** | "G + F + E = 10,000. G ≥ 5,000. E ≤ 2,000." |
**Chỉ định đầu ra mong muốn** | "Xuất ra bảng phân phối ngân sách." |
Ví dụ
Ví dụ **viết prompt tối ưu ngân sách marketing**:
```
Yêu cầu:
Phân bổ ngân sách marketing 10.000 USD vào ba kênh:
Quảng cáo Google (G)
Quảng cáo Facebook (F)
Marketing qua Email (E)
Các ràng buộc (Constraints):
G + F + E = 10.000 (Tổng chi ngân sách đúng 10.000 USD)
G ≥ 5.000 (Google phải chi ít nhất 5.000 USD)
F ≥ 3.000 (Facebook phải chi ít nhất 3.000 USD)
E ≤ 2.000 (Email tối đa chỉ được chi 2.000 USD)
Mục tiêu (Goal):
Tìm ra một hoặc nhiều bộ phân bổ hợp lệ (G, F, E).
Xuất kết quả thành bảng dạng markdown, với các cột: Kênh (Channel) và Ngân sách (Budget $).
```
Kết quả
Dựa trên yêu cầu của bạn, ta cần tìm các bộ phân bổ `(G, F, E)` sao cho:
- G + F + E = 10.000
- G ≥ 5.000
- F ≥ 3.000
- E ≤ 2.000
---
Ta phân tích nhanh:
- Vì E tối đa 2.000 USD nên G + F tối thiểu là 8.000 USD.
- G phải ít nhất 5.000 USD, F ít nhất 3.000 USD.
- Với E càng nhỏ thì G và F càng lớn.
- Vì tổng cố định 10.000 USD, nên chỉ cần tìm các giá trị của E từ 0 → 2.000 thoả mãn.
Ta kiểm tra một số trường hợp hợp lệ:
E (USD) | G + F (USD) | G min (5000) | F min (3000) | Hợp lệ không? |
---|
2000 | 8000 | Có | Có | Có |
1500 | 8500 | Có | Có | Có |
1000 | 9000 | Có | Có | Có |
500 | 9500 | Có | Có | Có |
0 | 10000 | Có | Có | Có |
#### **Bài tập thực hành**
#### **Bài 1: Prompt Symbolic AI trong Kế toán (Accounting)**
**Yêu cầu:**
Xác định các khoản mục kế toán hợp lệ để báo cáo lãi lỗ quý 1.
**Dữ liệu đầu vào:**
- Tổng Doanh thu (Revenue) = 500.000 USD
- Chi phí vận hành (Operating Expenses) = 300.000 USD
- Thu nhập khác (Other Income) = 20.000 USD
- Chi phí khác (Other Expenses) = 15.000 USD
**Công thức ràng buộc (Constraints):**
- Lợi nhuận trước thuế (Profit Before Tax) = (Doanh thu + Thu nhập khác) – (Chi phí vận hành + Chi phí khác)
**Mục tiêu (Goal):**
- Tính toán và xuất ra bảng kết quả gồm các cột:
`Khoản mục (Item)` | `Giá trị (USD)`
**Yêu cầu đặc biệt:**
- Tính toán nội bộ từng bước nếu cần.
- **Chỉ trả về bảng kết quả cuối cùng.**
---
Nếu bạn viết Prompt cho AI sẽ như thế này:
> **Prompt:**
> Hãy tính lợi nhuận trước thuế dựa trên các dữ liệu sau:
>
> - Doanh thu: 500.000 USD
> - Chi phí vận hành: 300.000 USD
> - Thu nhập khác: 20.000 USD
> - Chi phí khác: 15.000 USD
>
> Áp dụng công thức:
> Profit Before Tax = (Revenue + Other Income) – (Operating Expenses + Other Expenses)
>
> Xuất kết quả dưới dạng bảng Markdown, các cột: `Khoản mục`, `Giá trị (USD)`.
>
> Nếu cần suy luận, hãy làm nội bộ.
> **Chỉ trả về bảng.**
##### **Ví dụ2: Prompt Symbolic AI trong Quản lý chất lượng (Quality Control)**
**Yêu cầu:**
Phân loại sản phẩm theo kết quả kiểm tra chất lượng.
**Dữ liệu đầu vào:**
- 100 sản phẩm kiểm tra
- Kết quả:
- 80 sản phẩm đạt tiêu chuẩn (Pass)
- 15 sản phẩm cần sửa lỗi (Repair)
- 5 sản phẩm loại bỏ (Reject)
**Ràng buộc (Constraints):**
- Tổng số lượng phải đúng bằng 100.
**Mục tiêu (Goal):**
- Tạo bảng phân loại sản phẩm gồm các cột:
`Trạng thái (Status)` | `Số lượng (Quantity)` | `Tỷ lệ (%)`
**Yêu cầu đặc biệt:**
- Tính tỷ lệ phần trăm (%) chính xác cho từng loại.
- Chỉ xuất ra bảng cuối cùng.
---
Prompt Symbolic AI sẽ viết như sau:
> **Prompt:**
> Cho 100 sản phẩm sau kiểm tra chất lượng:
>
> - 80 sản phẩm đạt tiêu chuẩn (Pass)
> - 15 sản phẩm cần sửa lỗi (Repair)
> - 5 sản phẩm bị loại bỏ (Reject)
>
> Tạo bảng phân loại gồm 3 cột:
>
> - `Trạng thái (Status)`
> - `Số lượng (Quantity)`
> - `Tỷ lệ (%)` (Tính theo tổng 100 sản phẩm)
>
> Nếu cần suy luận bước trung gian, hãy thực hiện nội bộ.
>
> **Chỉ trả về bảng kết quả dạng Markdown.**
### Kết luận Prompt kiểu Symbolic AI:
- Cấu trúc rõ ràng: Đầu vào – Ràng buộc – Mục tiêu – Yêu cầu đặc biệt
- Đặc biệt nhấn mạnh: **Suy luận nội bộ**, **Chỉ trả về kết quả**, không kể lể dài dòng
- Các Prompt này giống như bạn **đặt bài toán** cho AI giải như cách lập trình logic thời Symbolic AI (như Prolog) nhưng hiện đại hơn và dành cho LLM.
***Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm [VHTSoft](https://vhtsoft.com/ "Công Ty Phần Mềm VHTSoft")***