# 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.*