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 thực tế: observability, lỗi & chi phí

Đã đọc 0/8 mục · còn khoảng 4 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.

Từ demo chạy được đến hệ thống đáng tin

Một crew chạy đẹp trên máy bạn khác xa một hệ thống multi-agent phục vụ người dùng thật. Khi lên production, ba thứ quyết định sống còn: quan sát được (observability), chịu lỗi (resilience), và kiểm soát chi phí. Bài này biến prototype thành thứ vận hành được.

1. Observability — nhìn thấy agent đang làm gì

Multi-agent dễ trở thành "hộp đen": bạn chỉ thấy output cuối, không biết agent nào gây lỗi. Cần log có cấu trúc:

  • Log mỗi bước: agent nào, input, output, số token, thời gian.
  • Gán một run_id cho mỗi lần chạy để trace toàn bộ luồng.
  • Lưu transcript (đặc biệt với AutoGen) để phục dựng khi cần điều tra.
import logging, uuid, time
log = logging.getLogger("agents")

def run_with_trace(crew, inputs):
    run_id = str(uuid.uuid4())[:8]
    t0 = time.time()
    log.info("run=%s start inputs=%s", run_id, inputs)
    try:
        result = crew.kickoff(inputs=inputs)
        log.info("run=%s done in %.1fs", run_id, time.time() - t0)
        return result
    except Exception as e:
        log.exception("run=%s FAILED: %s", run_id, e)
        raise

> Các nền tảng như LangSmith/AgentOps giúp trực quan hóa trace này; nhưng ngay cả logging cơ bản đã cứu bạn rất nhiều giờ debug.

2. Xử lý lỗi & giới hạn

LLM và tool sẽ lỗi: timeout, rate limit, output sai định dạng, tool trả rác. Các lá chắn cần có:

  • Timeout cho mỗi agent/tool để không treo vô hạn.
  • Retry với backoff cho lỗi tạm thời (rate limit, mạng).
  • Giới hạn vòng lặp: max_round (AutoGen), giới hạn số task (CrewAI).
  • Validate output: nếu agent phải trả JSON, parse và bắt lỗi ngay, cho retry hoặc fallback.
  • Fallback an toàn: khi thất bại, trả thông báo rõ ràng thay vì crash.
import json

def safe_parse(agent_output: str):
    try:
        return json.loads(agent_output)
    except json.JSONDecodeError:
        log.warning("Output không phải JSON hợp lệ, dùng fallback")
        return {"status": "error", "raw": agent_output}

3. Kiểm soát chi phí

Multi-agent nhân token lên nhiều lần. Chiến lược thực chiến:

  • Model theo vai trò: model mạnh cho agent chủ chốt/manager, model rẻ cho agent phụ.
  • Đặt trần vòng lặp để một hội thoại lỗi không đốt cả quota.
  • Cache kết quả các bước tất định (ví dụ tra cứu lặp lại).
  • Đo token mỗi run và đặt cảnh báo ngân sách.
  • Cắt ngữ cảnh: đừng truyền toàn bộ lịch sử nếu agent chỉ cần phần liên quan.

Khung tư duy "Ba câu hỏi trước khi lên production"

1. QUAN SÁT: Nếu chạy sai lúc 2h sáng, tôi có LOG để biết agent nào lỗi không?
2. CHỊU LỖI: Nếu một tool/LLM lỗi, hệ thống DỪNG AN TOÀN hay crash dây chuyền?
3. CHI PHÍ: Trường hợp TỆ NHẤT (lặp tối đa) tốn bao nhiêu? Có TRẦN chưa?

Trả lời được cả ba, team của bạn đã sẵn sàng phục vụ thật.

Các bước đưa team lên production

  • Thêm logging có run_id cho mọi lần chạy.
  • Đặt timeout + retry cho tool và lời gọi LLM.
  • Đặt trần vòng lặp/số task rõ ràng.
  • Validate mọi output có định dạng bắt buộc.
  • Phân bổ model theo vai trò để tối ưu chi phí.
  • Chạy thử với dữ liệu thật đa dạng (kể cả input xấu) trước khi mở cho người dùng.
  • Theo dõi token & tỉ lệ lỗi sau khi ra mắt, tinh chỉnh dần.

Checklist production

  • [ ] Mỗi run có run_id và log từng bước.
  • [ ] Có timeout + retry cho tool/LLM.
  • [ ] Có trần vòng lặp/số task.
  • [ ] Output định dạng được validate + fallback.
  • [ ] Model phân bổ theo vai trò để tiết kiệm.
  • [ ] Có cảnh báo ngân sách token.
  • [ ] Đã test với input xấu, không chỉ input đẹp.

Sai lầm thường gặp

  • Không log gì → khi lỗi trên production, mò kim đáy bể.
  • Không giới hạn vòng lặp → một hội thoại kẹt đốt sạch quota trong đêm.
  • Tin output LLM là đúng định dạng → task sau vỡ vì nhận rác, không có validate.
  • Dùng model mạnh cho mọi agent → hóa đơn gấp nhiều lần cần thiết.
  • Chỉ test input đẹp → gặp input thật xấu là sập.
  • Không có fallback → một agent lỗi làm crash toàn bộ pipeline thay vì suy giảm êm.
Hoàn thành 8 bài, bạn đã có đủ nền tảng để thiết kế, xây và vận hành các team multi-agent thật bằng CrewAI và AutoGen. Hãy chọn một quy trình thật trong công việc của bạn và áp dụng ngay.

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