Kết nối AI Agent LangGraph với Postgres: Hướng dẫn chi tiết từ Docker đến Cloud

28 tháng 8, 2026·5 phút đọc

Bài viết hướng dẫn cách kết nối AI agent xây dựng bằng LangGraph với cơ sở dữ liệu Postgres để lưu trữ dữ liệu bền vững. Tác giả trình bày hai phương pháp triển khai backend: chạy Postgres cục bộ bằng Docker và sử dụng dịch vụ Postgres lưu trữ trên cloud. Qua đó, người đọc sẽ hiểu rõ cách xây dựng một hệ thống đặt lịch tự động hoàn chỉnh có thể xử lý toàn bộ quy trình tư vấn và xác nhận cuộc hẹn.

Kết nối AI Agent LangGraph với Postgres: Hướng dẫn chi tiết từ Docker đến Cloud

Kết nối AI Agent LangGraph với Postgres: Từ Docker đến Cloud

Trong loạt bài viết này, chúng ta đã xây dựng một AI agent có trạng thái (stateful) dựa trên LangGraph, có khả năng xử lý quy trình đặt lịch hẹn trọn vẹn trong 15 phút. Giờ đây, chúng ta sẽ khám phá cách kết nối agent này với cơ sở dữ liệu Postgres — yếu tố then chốt để biến nguyên mẫu thành một sản phẩm thực thụ có giá trị kinh doanh.

Tổng quan hệ thống

AI agent của chúng ta hoạt động như một nhân viên chăm sóc khách hàng thực thụ, đảm nhận toàn bộ quy trình đặt lịch:

  • Trả lời các câu hỏi và hiểu nhu cầu của khách hàng.
  • Tính toán chi phí dịch vụ và thông báo cho khách hàng.
  • Xử lý sự đồng ý hoặc từ chối từ phía khách hàng.
  • Đề xuất các khung giờ phù hợp.
  • Xác nhận và ghi nhận cuộc hẹn.

Sơ đồ cấu trúc hệ thống AI agentSơ đồ cấu trúc hệ thống AI agent

Trạng thái của cuộc trò chuyện được lưu trong AgentState của LangGraph và được lưu dưới dạng checkpoint. Điểm đặc biệt là khi agent đề xuất khung giờ, nó sẽ đọc dữ liệu đặt lịch hiện có từ database để tránh đề xuất thời gian đã bị trùng. Khi khách hàng xác nhận, agent sẽ ghi một bản ghi mới vào database.

Hai chế độ lưu trữ dữ liệu

Agent hỗ trợ hai chế độ persistence:

In-memory: Dành cho kiểm tra nhanh và mục đích demo. Khi không cài đặt biến môi trường DATABASE_URL, ứng dụng sẽ sử dụng InMemoryBookingRepositoryMemorySaver — không tạo bảng hay lưu trữ gì cả.

Postgres: Dành cho môi trường sản xuất thực tế, đảm bảo dữ liệu được lưu trữ bền vững.

Kiểm thử với Docker

Tại sao nên dùng Docker?

Sử dụng Docker mang lại nhiều lợi ích thiết thực:

  • Không cần cài đặt Postgres cục bộ — mọi thứ chạy trong container.
  • Môi trường tái lập dễ dàng — URL và thông tin xác thực nằm trong docker-compose.yml, đảm bảo mọi người đều có cùng cấu hình.
  • Cô lập hoàn toàn — database chạy trong container riêng, có thể dừng (docker compose down) hoặc xóa sạch (docker compose down -v) mà không ảnh hưởng đến các ứng dụng khác.

Cấu hình Docker Compose

Dự án có file docker-compose.yml khởi chạy container PostgreSQL 16:

services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: booking
      POSTGRES_PASSWORD: booking
      POSTGRES_DB: booking_agent
    ports:
      - "5432:5432"
    volumes:
      - booking_pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U booking -d booking_agent"]
      interval: 5s
      timeout: 5s
      retries: 10
volumes:
  booking_pgdata:

Ứng dụng Streamlit vẫn chạy cục bộ và kết nối với container qua localhost:5432. Toàn bộ dữ liệu được lưu trong Docker volume (booking_pgdata) — một ổ đĩa bền vững, không nằm trong RAM, đảm bảo dữ liệu không bị mất khi khởi động lại.

Các bước thực hiện

Đầu tiên, khởi động container:

docker compose up -d

Sau đó, thêm dòng sau vào file .env:

DATABASE_URL=postgresql://booking:booking@localhost:5432/booking_agent

Cuối cùng, chạy ứng dụng Streamlit:

poetry run streamlit run customer_service_agent/streamlit_app.py

Giao diện Streamlit với lịch đặt hẹnGiao diện Streamlit với lịch đặt hẹn

Điểm mấu chốt: Streamlit và Postgres Docker là hai tiến trình riêng biệt. Khởi động lại Streamlit chỉ ảnh hưởng đến ứng dụng Python — container Postgres vẫn hoạt động và dữ liệu vẫn còn nguyên trong volume. Khi đặt lịch mới, ứng dụng sẽ thấy các cuộc hẹn trước đó từ database.

Sử dụng Postgres trên Cloud

Nếu bạn không muốn dùng Docker, hoàn toàn có thể sử dụng dịch vụ Postgres lưu trữ trên cloud như Supabase, AWS RDS hay Neon. Quy trình rất đơn giản:

  1. Tạo database Postgres trên nền tảng bạn chọn.
  2. Sao chép chuỗi kết nối có dạng: postgresql://USER:PASSWORD@HOST:PORT/DATABASE.
  3. Gán chuỗi này vào biến DATABASE_URL trong file .env.
  4. Khởi chạy ứng dụng như bình thường.

Ứng dụng hoạt động giống hệt như với Docker — chỉ khác biệt ở vị trí chạy Postgres: giờ đây nó nằm trên một máy chủ từ xa.

Kết luận và hướng phát triển tiếp theo

Việc kết nối AI agent với Postgres — dù qua Docker hay cloud — đánh dấu bước chuyển quan trọng từ nguyên mẫu demo sang sản phẩm có thể mang lại giá trị kinh doanh thực tế. Tuy nhiên, vẫn còn nhiều việc cần làm:

  • Thêm các kênh giao tiếp khác như WhatsApp để mở rộng phạm vi tiếp cận.
  • Xây dựng lớp bảo mật để giảm thiểu rủi ro prompt injection.
  • Cải thiện quy trình đặt lịch và trải nghiệm chat cho người dùng.

Kiến trúc triển khai tổng thểKiến trúc triển khai tổng thể

Với người dùng Việt Nam, việc ứng dụng AI agent vào chăm sóc khách hàng đang trở thành xu hướng tất yếu — đặc biệt trong các lĩnh vực dịch vụ như vệ sinh, giao hàng hay tư vấn. Kiến trúc được trình bày trong bài viết này hoàn toàn có thể áp dụng để xây dựng các hệ thống tương tự, giúp doanh nghiệp tiết kiệm chi phí và nâng cao trải nghiệm khách hàng.

Toàn bộ mã nguồn của dự án có sẵn trên GitHub tại customer-service-agent — bạn có thể clone về và tự mình trải nghiệm quy trình này.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗