Email / SUMMARY_FOUNDATION.md
lenzcom's picture
Upload folder using huggingface_hub
e706de2 verified
# Tổng hợp kiến thức: AI Agents from Scratch - Phần Foundation
Tài liệu này tổng hợp các khái niệm cốt lõi đã học được từ 4 bài học đầu tiên trong series "AI Agents from Scratch".
## 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 (LLM, Parser, Tool).
* **Hợp đồng (Contract):** Mọi Runnable đều phải triển khai phương thức `_call(input, config)`.
* **3 Phương thức thực thi:**
1. `invoke(input)`: Chạy đơn lẻ (1 input -> 1 output).
2. `stream(input)`: Trả về kết quả dạng dòng (chunks) theo thời gian thực.
3. `batch([inputs])`: Xử lý song song một danh sách input để tăng hiệu suất.
* **Lợi ích:** Cho phép nối các thành phần khác nhau thành một chuỗi (chain) dễ dàng bằng `.pipe()`.
## 2. Messages (Tin nhắn & Cấu trúc dữ liệu)
Thay vì sử dụng chuỗi văn bản thuần túy, hội thoại được cấu trúc hóa thành các đối tượng để dễ quản lý và phân loại.
* **Các loại tin nhắn:**
* `SystemMessage`: Chỉ thị hệ thống, thiết lập hành vi/nhân cách cho AI.
* `HumanMessage`: Tin nhắn từ người dùng.
* `AIMessage`: Phản hồi từ AI.
* `ToolMessage`: Kết quả trả về từ việc gọi công cụ (function calling).
* **Quản lý hội thoại:** Cần có cơ chế (như `ConversationHistory`) để lưu trữ, giới hạn độ dài (sliding window) và lọc tin nhắn theo loại.
## 3. LLM Wrapper (Bọc mô hình ngôn ngữ)
**LLM Wrapper** biến đổi một thư viện LLM thô (như `node-llama-cpp`) thành một **Runnable**.
* **Vai trò:** Đóng vai trò như một Adapter (bộ chuyển đổi).
* **Chức năng:**
* Chuyển đổi input (chuỗi hoặc danh sách Message) thành format mà model hiểu được.
* Xử lý việc gọi model (generate/stream).
* Trả về kết quả dưới dạng `AIMessage`.
* **Kết quả:** Giúp thay thế model dễ dàng mà không ảnh hưởng đến phần còn lại của hệ thống.
## 4. Context & Configuration (Ngữ cảnh & Cấu hình)
**RunnableConfig** là cơ chế truyền thông tin xuyên suốt chuỗi xử lý mà không làm rối mã nguồn.
* **Vấn đề giải quyết:** Tránh việc phải truyền tham số cấu hình (như `userId`, `debug flag`) qua từng hàm thủ công.
* **Thành phần của Config:**
* `callbacks`: Hệ thống hook để theo dõi (log, metrics) tại các điểm bắt đầu/kết thúc/lỗi.
* `metadata`: Dữ liệu ngữ cảnh (User ID, Session ID).
* `configurable`: Các tham số thay đổi lúc chạy (Runtime overrides), ví dụ: thay đổi `temperature` của LLM cho từng request cụ thể.
* **Ứng dụng:** Rất hữu ích cho A/B testing, logging tập trung và quản lý đa người dùng.
---
*Tài liệu được tạo tự động bởi Antigravity IDE sau quá trình tự học và phân tích code.*