Chọn trang

Hướng Dẫn Xây Dựng ‘Bộ Não Vàng’: Tích Hợp Bộ Nhớ Dài Hạn Letta AI vào n8n

 

Chào mọi người, Ticmiro đây.

Một trong những thách thức lớn nhất khi xây dựng các trợ lý ảo hay chatbot tự động trên các nền tảng như n8n là vấn đề về “trạng thái” (state). N8n cực kỳ mạnh mẽ trong việc xử lý các tác vụ không trạng thái (stateless) – nhận một yêu cầu, xử lý, và kết thúc. Nhưng làm thế nào để xây dựng một trợ lý có thể nhớ lại những gì bạn đã nói ở lượt trước, hay thậm chí là từ tuần trước?

Sau rất nhiều thử nghiệm và tinh chỉnh, tôi đã xây dựng thành công một kiến trúc mạnh mẽ và ổn định, biến n8n từ một công cụ tự động hóa thành một nền tảng để tạo ra các tác nhân AI có trí nhớ thực thụ, một trí nhớ mang tính cách, văn phong tự điều chỉnh sau một khoảng thời gian trò chuyện, liên tục cập nhật và hoàn thiện mảng cảm xúc này.
Hôm nay, tôi muốn chia sẻ lại toàn bộ quy trình và logic đằng sau nó, với nhân vật chính là Letta AI – bộ nhớ dài hạn tự host của chúng ta.

 

Mô Hình Kiến Trúc “Vòng Lặp Ký Ức”

Để một AI có thể “nhớ”, chúng ta cần tạo ra một vòng lặp nơi mỗi mẩu thông tin mới đều được ghi lại và các thông tin cũ có thể được truy xuất khi cần. Kiến trúc của tôi bao gồm ba thành phần chính:

  1. n8n (Bộ Điều Phối): Đóng vai trò là bộ não trung tâm, điều phối toàn bộ luồng công việc. Nó nhận yêu cầu từ người dùng, quyết định cần làm gì, và gọi đến các dịch vụ khác.
  2. Letta AI trên VPS (Bộ Nhớ Dài Hạn): Đây là trái tim của hệ thống. Mọi tương tác, mọi mẩu tin nhắn của người dùng và của AI đều được gửi đến Letta để lưu trữ an toàn trong một database PostgreSQL có hỗ trợ pgvector.
    Nó đồng bộ cùng với hệ thống Rag mà chúng ta đã xây dựng lên,
  3. LLM (Bộ Suy Luận): Dịch vụ như OpenAI đóng vai trò là bộ não suy luận, nhận ngữ cảnh (bao gồm cả ký ức được truy xuất từ Letta) và tạo ra câu trả lời thông minh.

 

Hướng Dẫn Tích Hợp Letta AI vào n8n

 

Kiến trúc này giảm số lượng node và tăng tốc độ phản hồi của trợ lý ảo.

Luồng hoạt động tối ưu: Webhook -> Ghi & Hồi Tưởng Ký Ức (1 node) -> Chuẩn Bị Ngữ Cảnh -> Gọi LLM -> Lưu Phản Hồi AI -> Gửi Phản Hồi

 

Bước 1: Cài Đặt và Chuẩn Bị

 

Hãy đảm bảo bạn đã có sẵn hạ tầng Letta AI trên VPS và các thông tin sau:
truy cập bài viết này, để selt host Letta AI chỉ bằng 1 câu lệnh:

 

  • URL của Letta API: http://<IP_CUA_BAN>:8283
  • Letta API Key: Khóa bí mật để xác thực. (khóa này bạn tạo trong quá trình self host Letta hoặc từ nhà cung cấp khi bạn dùng bản Cloud -> bản này tốn chi phí, nên seft host)

 

Bước 2: Xây Dựng Workflow n8n Từng Bước

 

Node 1: Webhook – “Điểm Khởi Đầu” ( có thể sử dụng ZALO, TELEGRAM, 

  • Loại Node: Webhook
  • Chức năng: Nhận yêu cầu từ người dùng. Dữ liệu đầu vào mẫu:

    JSON

    {
      "sessionId": "user-123",
      "chatInput": "Chào bạn, bạn tên gì?"
    }
    

     

Node 2: Ghi lại, hồi Tưởng Ký Ức và tổng hợp chắt lọc thông tin (3 công việc trong 1) Đây là node quan trọng nhất trong luồng tối ưu. Nó vừa ghi tin nhắn mới của người dùng vào bộ nhớ, vừa lấy ra toàn bộ lịch sử hội thoại vừa sử lý chắt lọc thông minh (đây là sự ưu việc của LETTA AI) trong cùng một thao tác.

  • Loại Node: HTTP Request
  • Tên Node (Gợi ý): Letta - Save User Msg & Get History
  • Method: POST
  • URL: {{ $env.LETTA_URL }}/v1/agents/{{ $json.body.sessionId }}/messages
  • Authentication: Bearer Token
  • Token: Sử dụng Letta API Key của bạn.
  • Body (JSON):

    JSON

    {
      "messages": [
        {
          "content": "{{ $json.body.chatInput }}",
          "role": "user"
        }
      ]
    }
    

     

  • Kết quả: Đầu ra (output) của node này sẽ là một đối tượng JSON chứa toàn bộ lịch sử tin nhắn đã được cập nhật. Chúng ta sẽ dùng chính đầu ra này cho bước tiếp theo.

Node 3: Chuẩn Bị Ngữ Cảnh Cho AI Agent

  • Loại Node: Code
  • Tên Node (Gợi ý): Format History for LLM
  • Input: Nối đầu vào từ node Letta - Save User Msg & Get History.
  • Mục đích: Chuyển đổi mảng tin nhắn JSON lấy được từ node trước thành một chuỗi văn bản sạch sẽ.
  • Code (JavaScript):

    JavaScript

    // Lấy dữ liệu từ ĐẦU RA của node trước
    const messages = {{ $('Letta - Save User Msg & Get History').item.json.messages }};
    
    let formattedHistory = "Đây là lịch sử trò chuyện:\n";
    
    // Giới hạn lịch sử để tránh prompt quá dài
    const historyLimit = 10;
    const recentMessages = messages.slice(-historyLimit);
    
    for (const msg of recentMessages) {
      formattedHistory += `${msg.role}: ${msg.content}\n`;
    }
    
    return { formattedHistory };
    

     

Node 4: Gọi AI Agent Trả Lời (n8n)

  • Loại Node: AI Agent
  • Input: Nối đầu vào từ node Format History for LLM.
  • Prompt:

    {{ $json.formattedHistory }}
    
    Dựa vào lịch sử trò chuyện trên, hãy trả lời câu hỏi cuối cùng của người dùng một cách tự nhiên.
    Câu hỏi của người dùng: "{{ $('Webhook').item.json.body.chatInput }}"
    

     

Node 5: Lưu Phản Hồi Của AI Agent vào Letta và gởi phản hồi cuối cùng cho người dùng

  • Loại Node: HTTP Request
  • Tên Node (Gợi ý): Letta - Save AI Msg
  • Method: POST
  • URL: {{ $env.LETTA_URL }}/v1/agents/{{ $('Webhook').item.json.body.sessionId }}/messages
  • Authentication: Bearer Token
  • Token: Sử dụng Letta API Key của bạn.
  • Body (JSON):

    JSON

    {
      "messages": [
        {
          "content": "{{ $('Gọi AI Trả Lời').item.json.choices[0].message.content }}",
          "role": "assistant"
        }
      ]
    }
Kết Quả: Một Trợ Lý Không Bao Giờ Quên

 

Bằng cách kết hợp các node này, chúng ta đã tạo ra một hệ thống mạnh mẽ. Giờ đây, bạn có thể có một cuộc hội thoại như thế này:

Bạn: Chào bạn, tôi là Ticmiro. AI: Chào Ticmiro, rất vui được gặp bạn! Tôi có thể giúp gì cho bạn hôm nay? (Vài phút sau) Bạn: Bạn có biết tôi tên gì không? AI: Tất nhiên rồi, bạn tên là Ticmiro. Chúng ta vừa trò chuyện lúc nãy.
sau khi trò chuyện nhiều chủ đề, một tuần sau quay lại bạn có thể hỏi
Bạn: Cuối tuần trước chúng ta đã bàn bạc về điều gì nhỉ. AI: oh! tuần trước chúng ta đã nói về rất nhiều chủ đề, đặc biệt là về một em gái đảm đang mà bạn nhắn tin trên tinder.. bạn có muốn tôi gợi ý về cách tán tỉnh cô ấy không, Bạn: có lẽ cần, . AI: …,,, có.,nhiều… 

Đây chỉ là một ví dụ đơn giản. Tiềm năng của nó là vô hạn: từ việc xây dựng các chatbot chăm sóc khách hàng cá nhân hóa, các trợ lý ảo quản lý công việc dài hạn, cho đến các tác nhân AI có khả năng tự học hỏi từ những lần tương tác trước.

Hành trình này đã cho tôi thấy rằng, bằng cách tách biệt “bộ nhớ” ra khỏi “bộ suy luận” và kết nối chúng lại với nhau một cách thông minh, chúng ta có thể vượt qua những giới hạn cố hữu của AI và tạo ra những ứng dụng thực sự đột phá.