Làm AI mà không có Observability là một sai lầm
Nếu đang xây dựng ứng dụng với LangChain, chắc hẳn bạn đã từng gặp cảnh con bot bỗng dưng trả lời “ngáo”. Tệ hơn, có những chuỗi (chain) chạy mất cả 20 giây mà bạn chẳng rõ nó đang nghẽn ở bước nào. Qua nhiều dự án thực tế, mình rút ra một điều: Observability (khả năng quan sát) là kỹ năng sống còn. Nếu không nhìn thấy những gì diễn ra bên trong các lớp code trừu tượng, bạn chẳng khác nào đang mò kim đáy bể khi debug.
LangSmith sinh ra để dẹp bỏ sự mù mờ đó. Đây không chỉ là công cụ log đơn thuần, mà là một hệ sinh thái để theo dõi (trace), đánh giá (evaluate) và quản lý prompt. Bài viết này mình sẽ hướng dẫn cách tích hợp LangSmith vào dự án trong “một nốt nhạc” cùng những kinh nghiệm thực chiến khi đưa AI lên production.
Quick Start: Xem kết quả sau 5 phút
Tin vui là bạn không cần thiết lập server rườm rà. LangSmith cung cấp bản cloud dùng ngay rất mượt.
Bước 1: Lấy API Key
Hãy truy cập smith.langchain.com để đăng ký tài khoản. Bạn vào phần Settings, tạo một API Key mới và nhớ copy lại ngay vì nó sẽ không hiển thị lần hai.
Bước 2: Cấu hình biến môi trường
LangChain cực kỳ thông minh ở chỗ nó tự động nhận diện cấu hình qua biến môi trường. Bạn chỉ cần thêm vài dòng này vào file .env hoặc gõ trực tiếp trong terminal:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY="lsv2_pt_..."
export LANGCHAIN_PROJECT="itfromzero-demo" # Tên project để dễ quản lý
Bước 3: Chạy thử code
Điểm cộng lớn nhất là bạn không phải sửa một dòng logic nào. LangChain sẽ tự động “bắn” dữ liệu về dashboard. Thử với đoạn code đơn giản sau:
import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
model = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template("Giải thích {topic} cho người mới bắt đầu.")
chain = prompt | model
response = chain.invoke({"topic": "LangSmith Tracing"})
print(response.content)
Bây giờ, hãy mở dashboard LangSmith. Một “Run” mới đã xuất hiện với đầy đủ thông số từ input, output đến thời gian phản hồi chi tiết.
Đọc hiểu các Trace: Đừng để dữ liệu đánh lừa
Giao diện LangSmith hiển thị theo dạng cây (Tree view), mỗi nút là một Span. Với ứng dụng RAG (Retrieval-Augmented Generation) phức tạp, sơ đồ này cực kỳ đáng giá:
- Input/Output thực tế: Bạn sẽ thấy chính xác prompt cuối cùng gửi đến OpenAI trông như thế nào. Đôi khi lỗi chỉ vì một dấu cách hoặc biến bị inject sai định dạng.
- Đo lường Latency: Từng bước mất bao nhiêu mili giây? Ví dụ: Retrieval chỉ mất 200ms nhưng LLM lại “ngâm” mất tận 10s. Bạn sẽ biết ngay cần tối ưu ở đâu.
- Kiểm soát Token: Theo dõi chi phí theo thời gian thực. Mình từng phát hiện một lỗi lặp vô hạn khiến hệ thống tiêu tốn sạch $50 credit chỉ trong một đêm nhờ nhìn vào biểu đồ token vọt lên bất thường.
Nâng cao: Kiểm thử tự động thay vì gõ tay
Viết xong code mới chỉ là bước đầu. Làm sao biết prompt mới có thực sự tốt hơn cái cũ? Thay vì ngồi gõ thử từng câu, mình hay dùng tính năng Datasets & Testing.
Bạn có thể gom các câu hỏi mẫu thành một Dataset, sau đó chạy test hàng loạt. LangSmith cho phép dùng chính AI (ví dụ GPT-4) để chấm điểm câu trả lời của model nhỏ hơn dựa trên tiêu chí: độ chính xác, tính hữu ích, hoặc format JSON. Cách làm này giúp team mình tự tin bấm merge code mà không sợ làm giảm chất lượng phản hồi của bot.
Kinh nghiệm thực chiến từ góc nhìn DevOps
Khi triển khai cho hệ thống có người dùng thật, bạn nên lưu ý 4 điểm sau:
1. Chia môi trường rạch ròi
Đừng tống tất cả dữ liệu vào một project mặc định. Hãy tận dụng LANGCHAIN_PROJECT để phân tách dev, staging và production. Việc này giúp bạn không bị nhiễu khi cần lọc dữ liệu lỗi.
2. Cẩn trọng với dữ liệu nhạy cảm (PII)
LangSmith lưu lại toàn bộ nội dung chat. Nếu người dùng nhập email hoặc số thẻ tín dụng, chúng sẽ hiện rõ trên dashboard. Hãy cấu hình hide_inputs trong code để đảm bảo an toàn thông tin cho khách hàng.
3. Kỹ thuật Sampling cho Production
Trace mọi thứ ở môi trường prod có 10.000 user mỗi ngày sẽ rất tốn kém và làm tăng độ trễ mạng. Thay vào đó, hãy dùng Sampling: chỉ lưu lại khoảng 5-10% trace ngẫu nhiên để theo dõi sức khỏe hệ thống là đủ.
4. Tận dụng Feedback Loop
Nếu người dùng bấm “Dislike”, hãy dùng SDK của LangSmith gắn tag score=0 cho chính run_id đó. Cuối tuần, bạn chỉ cần lọc những ca bị điểm thấp để phân tích. Đây là cách nhanh nhất để cải tiến prompt dựa trên phản hồi thực tế.
Tạm kết
Làm AI mà thiếu công cụ giám sát thì giống như lái xe trong sương mù dày đặc. LangSmith có thể khiến bạn hơi choáng vì quá nhiều tính năng, nhưng chỉ cần bật Tracing lên là bạn đã tiến xa hơn rất nhiều đồng nghiệp rồi.
Đừng ngại cài thử vào dự án hiện tại. Tin mình đi, bạn sẽ tìm ra những lỗi “vô tri” mà lệnh print() thông thường không bao giờ bắt được. Nếu gặp khó khăn khi setup, cứ để lại bình luận, mình sẽ hỗ trợ anh em ngay.

