Email / SUMMARY_FULL.md
lenzcom's picture
Upload folder using huggingface_hub
e706de2 verified
# Tổng hợp kiến thức: AI Agents from Scratch
Tài liệu này tổng hợp toàn bộ các khái niệm cốt lõi và mẫu thiết kế đã học được từ repository "AI Agents from Scratch".
## PHẦN 1: FOUNDATION (NỀN TẢNG)
### 1. Runnable (Đơn vị thực thi)
**Runnable** là "viên gạch LEGO" của framework, chuẩn hóa giao diện cho mọi thành phần.
* **Hợp đồng (Contract):** Triển khai phương thức `_call(input, config)`.
* **3 Chế độ:** `invoke` (đơn), `stream` (dòng), `batch` (song song).
* **Composition:** Dễ dàng nối chuỗi bằng `.pipe()`.
### 2. Messages (Cấu trúc hội thoại)
Sử dụng các lớp đối tượng thay vì chuỗi trần.
* **SystemMessage**: Chỉ thị, nhân cách.
* **HumanMessage**: Input người dùng.
* **AIMessage**: Output mô hình.
* **ToolMessage**: Kết quả gọi hàm.
### 3. LLM Wrapper
Đóng gói model thô (node-llama-cpp) thành một **Runnable** để đồng bộ hóa giao diện và dễ dàng thay thế.
### 4. Context & Configuration
Truyền `RunnableConfig` xuyên suốt pipeline.
* `callbacks`: Logging, metrics, side-effects.
* `metadata`: Context người dùng/phiên.
* `configurable`: Runtime overrides (ví dụ: thay đổi temperature động).
---
## PHẦN 2: COMPOSITION (KẾT HỢP)
### 1. Prompts
Quản lý đầu vào LLM bằng Templates.
* **PromptTemplate**: Tách logic khỏi văn bản, hỗ trợ biến số.
* **ChatPromptTemplate**: Cấu trúc hóa hội thoại đa lượt (Multi-turn conversation).
### 2. Output Parsers
Chuyển đổi văn bản thô từ LLM thành dữ liệu có cấu trúc.
* **StructuredOutputParser**: Định nghĩa Schema (JSON), tự động sinh hướng dẫn định dạng (`format_instructions`) và validate kết quả. Giải quyết vấn đề output không nhất quán của LLM.
---
## PHẦN 3: PROJECT PATTERNS (MẪU THIẾT KẾ THỰC TẾ)
Từ dự án **Smart Email Classifier**, rút ra mẫu kiến trúc tham khảo cho các tác vụ phân loại/xử lý văn bản:
1. **Separation of Concerns (Phân tách mối quan tâm):**
* `ParserRunnable`: Chỉ lo việc làm sạch và chuẩn hóa dữ liệu đầu vào.
* `ClassifierRunnable`: Chỉ lo việc gọi LLM và xử lý logic phân loại.
2. **Pipeline:** Kết nối `Parser -> Classifier`.
3. **Side Effects via Callbacks:** Sử dụng Callback để ghi log lịch sử và tính toán thống kê (Statistics), giữ cho code chính sạch sẽ.
4. **Strict System Prompts:** Sử dụng System Prompt chi tiết để định nghĩa danh mục và ép kiểu JSON output.
---
*Tài liệu được tạo tự động bởi Antigravity IDE.*