Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 8 — Vận hành Production: streaming, debug, giám sát và tối ưu

Đã đọc 0/7 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Agent chạy trên máy bạn khác hẳn agent phục vụ người dùng thật. Bài cuối tập trung vào những gì giúp agent sống sót trong production: streaming để trải nghiệm mượt, quan sát để debug, và kỷ luật để kiểm soát chi phí và độ trễ.

Streaming: đừng bắt người dùng chờ

invoke chỉ trả kết quả cuối, người dùng nhìn màn hình trắng suốt thời gian agent chạy — dễ tưởng bị treo. stream phát cập nhật theo thời gian thực, cải thiện cảm nhận tốc độ mà không đổi logic.

for chunk in app.stream(inputs, config, stream_mode="updates"):
    print(chunk)   # cập nhật state sau mỗi node

Các stream_mode chính:

  • values: state đầy đủ sau mỗi bước.
  • updates: chỉ phần thay đổi của mỗi node — gọn, tốt để hiển thị tiến độ.
  • messages: stream token của LLM — cho hiệu ứng gõ chữ, trải nghiệm chat mượt.
Dùng messages để hiển thị câu trả lời chảy dần, updates để hiện trạng thái "đang tra cứu... đang viết...".

Debug: nhìn vào bên trong graph

Khi agent hành xử lạ, đừng đoán — hãy quan sát:

  • Vẽ graph để xác nhận cấu trúc: app.get_graph().draw_mermaid().
  • Tua lịch sử state: app.get_state_history(config) cho thấy state trước mỗi quyết định, giúp tìm đúng bước sai.
  • Bật tracing (ví dụ LangSmith qua biến môi trường) để xem từng lần gọi LLM, tool, độ trễ và token tiêu thụ.
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="..."

Tracing cho bạn thấy chính xác prompt gửi đi và phản hồi nhận về — thứ hầu như không thể suy đoán từ log thường. Đây là công cụ mạnh nhất khi agent chọn nhánh sai một cách khó hiểu.

Xử lý lỗi và độ bền

  • Bọc tool bằng try/except và trả về kết quả có kiểm soát, để một lỗi tool không giết cả graph.
  • Đặt timeout cho lời gọi mạng để node không treo vô hạn.
  • Retry có giới hạn cho lỗi tạm thời (rate limit), tránh retry mù đốt token.
  • Idempotency cho node có side effect: nếu resume sau crash chạy lại node gửi email, phải đảm bảo không gửi trùng — ví dụ lưu cờ đã gửi và kiểm tra trước khi gửi.

Kiểm soát chi phí và độ trễ

  • Đặt recursion_limit để chặn vòng lặp đốt token.
  • Chọn model theo node: node phân loại dùng model rẻ, node viết mới dùng model mạnh.
  • Cache kết quả tra cứu lặp lại để khỏi gọi tool nhiều lần cho cùng truy vấn.
  • Giữ state gọn — messages dài đẩy token và tiền lên nhanh; cắt bớt lịch sử cũ khi cần.

Checklist go-live

  • [ ] Checkpointer bền (Postgres) đã cấu hình và test khôi phục.
  • [ ] thread_id tách biệt theo từng người dùng.
  • [ ] Tracing/log đã bật để điều tra sự cố.
  • [ ] Mọi tool có timeout và xử lý lỗi.
  • [ ] Có recursion_limit và ngưỡng lặp nghiệp vụ.
  • [ ] Node side-effect an toàn khi resume (idempotent).
  • [ ] Streaming bật cho trải nghiệm người dùng.
  • [ ] Có cảnh báo khi token hoặc độ trễ vượt ngưỡng.

Sai lầm thường gặp

  • Chỉ dùng invoke trong app chat: người dùng chờ lâu tưởng treo. Dùng streaming.
  • Debug bằng cách đoán thay vì bật tracing và tua state — mất hàng giờ vô ích.
  • Không idempotent node gửi email/thanh toán: resume sau crash gây gửi trùng, tính tiền hai lần.
  • Bỏ qua giới hạn token/độ trễ: hóa đơn tăng vọt, người dùng bỏ đi vì chậm.
  • Dùng một model đắt cho mọi node: lãng phí; hãy phân bổ model theo độ khó của từng node.
  • Không test kịch bản khôi phục: đến khi prod crash mới phát hiện checkpoint cấu hình sai thì đã muộn.
Hoàn thành khóa học, bạn đã đi trọn hành trình: từ tư duy state machine, dựng graph, thiết kế state với reducer, rẽ nhánh và cycle, checkpoint, human-in-the-loop, tới một dự án thực chiến và vận hành production. Đây là bộ kỹ năng đủ để xây agent LangGraph chạy được trong sản phẩm thật.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi