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:
- 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.
- Pipeline: Kết nối
Parser -> Classifier. - 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ẽ.
- 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.