File size: 2,791 Bytes
e706de2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 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.*