Giải thích LangSmith: Gỡ lỗi và Đánh giá các Tác nhân LLM
Giới thiệu
Xây dựng các tác nhân tự động với LLM có thể là một trải nghiệm gây nản lòng và không đáng tin cậy. Các lệnh nhắc có thể tạo ra các kết quả khác nhau ở mỗi lần chạy, công cụ có thể bị lỗi mà không báo hiệu, và các mô hình có thể ảo tưởng hoặc lặp lại mà không có một chỉ báo rõ ràng. LangSmith là một nền tảng để trang bị, gỡ lỗi, đánh giá và giám sát các ứng dụng LLM nhằm vượt qua những thách thức này và cung cấp khả năng quan sát toàn bộ hành vi của tác nhân của bạn. Trong hướng dẫn này, chúng ta sẽ đi qua một vòng lặp độ tin cậy điển hình của tác nhân: trang bị cho tác nhân bằng cách theo dõi, gỡ lỗi các lần chạy của tác nhân tự động và thủ công, đánh giá hiệu suất của nó, lặp lại các lệnh nhắc, và cuối cùng là giám sát tác nhân trong môi trường sản xuất. Khi kết thúc, bạn sẽ hiểu được LangSmith là gì, nó có thể giúp bạn như thế nào và cách sử dụng nó để xây dựng các tác nhân AI đáng tin cậy hơn.
Điểm chính
- Khả năng quan sát là nền tảng cho độ tin cậy của tác nhân: Với việc theo dõi của LangSmith, mọi cuộc gọi LLM, lời gọi công cụ và các bước lý luận trung gian đều có thể quan sát được, vì vậy bạn có thể hiểu tại sao một tác nhân thực hiện một hành động cụ thể thay vì phải suy đoán từ các nhật ký.
- Traces biến gỡ lỗi thành phân tích: Các bản traces có cấu trúc cho phép bạn kiểm tra và chẩn đoán một cách có phương pháp các lỗi khi xử lý prompt, lỗi công cụ, vấn đề truy xuất, lỗi điều phối và sửa điểm thất bại chính xác.
- Đánh giá cho phép lặp lại an toàn: Quy trình đánh giá dựa trên tập dữ liệu của LangSmith (có sẵn cả ngoại tuyến và trực tuyến) cho phép bạn đo lường chất lượng ứng dụng của mình, so sánh các phiên bản prompt/mô hình, và phát hiện các lỗi suy giảm trước khi phát hành bất kỳ thay đổi nào ra môi trường sản xuất.
- Kỹ thuật tạo lệnh trở nên có hệ thống: Prompt Playground và việc quản lý phiên bản lệnh biến các lệnh thành một tài sản chính, có thể theo dõi. Điều này cho phép bạn hợp tác trên các lệnh, đảm bảo khả năng tái tạo và kiểm soát khi nào và cách thức các thay đổi được đưa vào sản xuất.
- Phản hồi của con người hoàn thiện vòng lặp: Hàng đợi chú thích (chạy đơn và theo cặp) cho phép bạn tận dụng hiệu quả đánh giá của con người ở quy mô lớn, cải thiện các bộ đánh giá và đảm bảo chất lượng nơi các chỉ số tự động không đạt yêu cầu.
LangSmith là gì (và Khi Nào Nên Sử Dụng)
LangSmith là một bộ công cụ toàn diện để xây dựng, gỡ lỗi, kiểm tra, đánh giá và triển khai các ứng dụng chạy bằng LLM của bạn. Sử dụng LangSmith, bạn có thể:
- Theo dõi từng yêu cầu (ghi lại mọi bước suy luận của một tác nhân).
- Đánh giá kết quả của bạn (đảm bảo rằng tác nhân của bạn đang tạo ra chất lượng).
- Lặp lại các câu lệnh của bạn với kiểm soát phiên bản.
- Quản lý việc triển khai đại lý của bạn.
Không giống như một số công cụ quan sát, vốn thường gắn chặt với một khung ứng dụng LLM cụ thể, LangSmith không phụ thuộc vào khung nào. Bạn có thể sử dụng nó với LangChain, LangGraph hoặc các mã tùy chỉnh khác. Điều này có nghĩa là bạn không cần phải xây dựng tác nhân của mình trên LangChain để tận dụng các tính năng theo dõi và đánh giá của LangSmith.
Nó hữu ích trong bất kỳ trường hợp nào mà các câu lệnh yêu cầu gọi các công cụ hoặc API khác, hoặc khi bạn đang xử lý suy luận nhiều bước, hoặc bất kỳ trường hợp nào mà việc tái hiện và gỡ lỗi là quan trọng. Về cơ bản, nếu bạn đã vượt qua giới hạn của các câu lệnh ghi nhật ký đơn giản và muốn hiểu tại sao tác nhân của bạn lại làm những gì nó đã làm, thì bạn nên thử LangSmith.
Vấn Đề Gỡ Lỗi Đại Lý mà LangSmith Giải Quyết
Phát triển các tác nhân tự động là một thách thức vì các tác nhân thường thất bại theo những cách tinh vi và không trực quan. Một thay đổi nhỏ trong lệnh hoặc một phản hồi không xác định từ cuộc gọi API của công cụ có thể làm thay đổi hoàn toàn một chuỗi lý luận. Các nhật ký và chỉ số tiêu chuẩn không đủ để hiểu các hành động của một tác nhân; bạn có thể thấy một tác nhân trả về kết quả sai hoặc vượt quá thời gian chờ, nhưng nguyên nhân của thất bại không ngay lập tức rõ ràng. Liệu tác nhân có sử dụng công cụ sai cho công việc không? Nó có thiếu ngữ cảnh trong lệnh không? Cuộc gọi LLM có gây ra một lỗi tinh vi xuất hiện sau đó không? Đây là những loại câu hỏi mà các dấu vết của LangSmith có thể giúp giải đáp.
Gỡ lỗi các tác nhân mà không có bản ghi chi tiết có thể biến thành một trò chơi đoán mò. Các tác nhân có thể thất bại một cách âm thầm bằng cách tưởng tượng sai hoặc bị mắc kẹt trong một vòng lặp, và bạn sẽ phải mò mẫm để tái hiện các sự cố. LangSmith giải quyết vấn đề này bằng cách ghi lại mọi bước trong hành trình của tác nhân (tất cả các cuộc gọi LLM, việc gọi công cụ, các lời nhắc trung gian, v.v.) vào một dòng thời gian có cấu trúc gọi là trace. Kiểm tra một trace cho phép bạn thấy chính xác những gì đã xảy ra sai sót.
Ví dụ: Giả sử bạn có một đại lý (agent) gọi một công cụ tìm kiếm để tra cứu thông tin. Nếu đại lý đưa ra câu trả lời không chính xác, vấn đề có thể là: (1) công cụ tìm kiếm trả về câu trả lời sai hoặc không có kết quả nào cả (lỗi công cụ), (2) mô hình ngôn ngữ lớn (LLM) không sử dụng kết quả tìm kiếm và tưởng tượng ra một câu trả lời (lỗi gợi ý/lập luận), hoặc (3) logic của đại lý không gọi công cụ khi cần thiết (lỗi điều phối).
Một bản ghi LangSmith sẽ bao gồm từng bước: truy vấn và kết quả khi gọi API tìm kiếm, lời nhắc của tác nhân được xây dựng dựa trên kết quả đó, câu trả lời từ LLM, và những thứ tương tự. Bằng cách này, bạn có thể ngay lập tức thấy được đâu là chỗ chuỗi không thực hiện theo các bước dự kiến.
Bắt đầu nhanh: Theo dõi một phiên chạy Agent (Ví dụ Python)
Chào mừng bạn đến với một ví dụ ngắn về cách sử dụng LangSmith để theo dõi quá trình chạy của một agent. Chúng ta sẽ sử dụng Python (LangSmith cũng có SDK cho JavaScript/TypeScript để theo dõi theo cách tương tự, nhưng ở đây sẽ minh họa bằng Python). Trong ví dụ này, chúng ta sẽ thực hiện một cuộc gọi LLM đơn giản và xây dựng một bản theo dõi trong giao diện LangSmith.
Yêu cầu trước: Đăng ký một tài khoản LangSmith miễn phí (nếu bạn chưa có) và lấy khóa API của bạn. Bạn cũng sẽ cần khóa API từ nhà cung cấp LLM của mình (ví dụ: khóa API của OpenAI). Cài đặt các gói cần thiết:
pip install -U langsmith openai # for this example1. Bật Theo dõi LangSmith. LangSmith hoạt động cùng LangChain ngay lập tức – nếu bạn đã sử dụng LangChain, bạn có thể bật theo dõi chỉ với một biến môi trường. Trong môi trường của bạn (hoặc file .env), hãy đảm bảo rằng những thiết lập sau được đặt:
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="<your-langsmith-api-key>"
export OPENAI_API_KEY="<your-openai-api-key>"Điều này đảm bảo rằng việc theo dõi LangSmith đang hoạt động và đã được xác thực. (Nếu bạn có nhiều hơn một workspace LangSmith, cũng hãy đặt LANGSMITH_WORKSPACE_ID một cách phù hợp.) Bạn cũng có thể thiết lập các biến này từ Python bằng cách sử dụng os.environ trước khi khởi tạo bất kỳ LLM nào
Quan trọng: Cờ LANGSMITH_TRACING=true phải được đặt trước khi mã của bạn thực hiện các cuộc gọi LLM, để SDK có thể chặn chúng.
2. Bao bọc hoặc Sử dụng một Client LLM. Nếu bạn đang sử dụng các lớp LLM của LangChain, bạn không cần bất kỳ mã đặc biệt nào để ghi lại các dấu vết – chỉ cần đảm bảo biến môi trường đã được thiết lập. Ví dụ, sử dụng wrapper OpenAI của LangChain:
import os
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = "<your-langsmith-api-key>"
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(model_name="gpt-3.5-turbo") # This is LangChain's LLM wrapper
response = llm.predict("Hello, world!")
print(response)Khi đoạn mã này chạy, LangChain sẽ phát hiện rằng tính năng theo dõi được bật và ghi lại cuộc gọi đến LangSmith trong nền. Sau khi chạy đoạn mã này, bạn có thể truy cập giao diện web của LangSmith và xem bản theo dõi (dưới danh sách các bản theo dõi của dự án mặc định).
Nếu bạn không sử dụng LangChain, bạn có thể tích hợp các cuộc gọi LLM của mình với SDK của LangSmith một cách thủ công. Ví dụ, nếu bạn muốn theo dõi trực tiếp các cuộc gọi API của OpenAI, LangSmith cung cấp một trợ giúp wrap_openai:
from langsmith import wrappers
import openai
openai.api_key = os.environ["OPENAI_API_KEY"]
openai_client = wrappers.wrap_openai(openai.OpenAI()) # wrap the OpenAI client for tracing:contentReference[oaicite:14]{index=14}
# Now any call through openai_client will be traced:
result = openai_client.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[ {"role": "user", "content": "Hello, world?"} ]
)
print(result["choices"][0]["message"]["content"])Ở đây chúng tôi đã sử dụng langsmith.wrappers.wrap_openai để lấy một client có theo dõi. LangSmith cũng có các wrapper tương tự cho các nhà cung cấp khác (Anthropic, v.v.). Sau khi chạy mã này, bạn cũng sẽ thấy toàn bộ quá trình theo dõi trong LangSmith, hiển thị yêu cầu và phản hồi của mô hình.
3. Xem dấu vết. Chuyển sang giao diện LangSmith (ứng dụng web). Vào Observability/Traces. Bạn sẽ thấy một mục mới cho lần chạy của mình ở đó. Nhấp vào nó, và bạn sẽ thấy một giao diện có cấu trúc của lần chạy. Vì ví dụ của chúng ta quá đơn giản, có thể chỉ có một nút gọi LLM (với prompt và đầu ra). Đối với một chuỗi/agent phức tạp hơn, nó sẽ là một cây gồm tất cả các bước con (ví dụ, quá trình suy nghĩ của Agent và từng lần gọi công cụ). Bạn có thể kiểm tra thời gian, đầu vào/đầu ra, thậm chí chia sẻ dấu vết, thêm chú thích, v.v. Khả năng nhìn thấy ngay lập tức này giúp bạn chắc chắn rằng mọi thứ hoạt động đúng. Nếu không (ví dụ, có lỗi trong chuỗi), bạn sẽ thấy chính xác nơi và lý do xảy ra.
Mẹo: Nếu chạy trong môi trường sản xuất, bạn có thể không muốn theo dõi mọi lần chạy (để tiết kiệm chi phí). LangSmith hỗ trợ lấy mẫu các bản theo dõi hoặc bật/tắt theo dõi trong mã. Ví dụ, bạn có thể bật theo dõi cho một tỷ lệ phần trăm yêu cầu hoặc cho các phiên cụ thể (thiết lập biến môi trường một cách động hoặc sử dụng SDK cấu hình của LangSmith). Đối với phát triển và gỡ lỗi, bật nó toàn cục (như trên) là cách dễ nhất.
Dấu Vết Đọc
Khi bạn đã có bản ghi, bước tiếp theo là chẩn đoán các vấn đề. Một bản ghi của LangSmith giống như nhật ký thí nghiệm – nó là cách để phân loại các lỗi và nhận diện các mô hình. Dưới đây là một số dạng lỗi phổ biến và các mô hình mà chúng tạo ra trong bản ghi:
| Loại lỗi | Trông nó như thế nào | Theo dõi giúp bạn làm gì/có khả năng sửa được gì |
|---|---|---|
| Lỗi nhắc lệnh | Kết quả cuối cùng của LLM bị sai hoặc không hợp lệ, mặc dù các kết quả của công cụ là chính xác và đầy đủ. | Kiểm tra kỹ câu lệnh chính xác + phản hồi thô của mô hình để tinh chỉnh hướng dẫn, thêm ví dụ, cải thiện định dạng/giới hạn, hoặc điều chỉnh mô hình/cài đặt. |
| Hỏng hóc dụng cụ | Một công cụ gọi trả về lỗi, hết thời gian chờ, hoặc trả về kết quả trống/không hợp lệ. | Xem bước công cụ bị lỗi (lỗi/kết quả rỗng) để thêm các lần thử lại, thời gian chờ, phương án dự phòng, xác thực và các biện pháp bảo vệ xung quanh công cụ đó. |
| Thất bại trong truy xuất/kiến thức | Bước truy xuất (RAG) lấy các tài liệu không liên quan hoặc bỏ sót các thông tin quan trọng, dẫn đến câu trả lời sai. | Xem xét truy vấn truy xuất và các tài liệu đã truy xuất để cải thiện kho vectơ, việc phân đoạn, lập chỉ mục, sắp xếp lại hoặc chiến lược truy vấn/truy xuất. |
| Sự cố phối hợp | Logic của tác nhân/chuỗi hoạt động sai (vòng lặp, nhánh sai, sắp xếp bước kém, quá nhiều bước, hoặc chạy rất chậm). | Sử dụng cây chạy + siêu dữ liệu để phát hiện các vòng lặp và điểm nghẽn, sau đó sửa luồng điều khiển (điều kiện dừng, logic phân nhánh, quy tắc chọn công cụ) và tối ưu hóa cấu trúc các bước. |
Hãy nghĩ một trace như một nhật ký nghiên cứu. Phân loại mọi vấn đề (prompt, công cụ hay vấn đề khác), đo lường tác động của nó (nó có lỗi hay chỉ giảm chất lượng câu trả lời?), và bạn sẽ biết chính xác điều gì cần được sửa. Các đầu vào, prompt và thứ tự công cụ đều rõ ràng và có thể kiểm tra được với LangSmith; các biến đổi bộ nhớ/trạng thái là rõ ràng; độ trễ, chi phí và các đường lỗi có thể định lượng được.
Quy trình Đánh giá: Bộ dữ liệu, Người đánh giá và Thí nghiệm
Theo dõi cho bạn biết điều gì đã xảy ra trong một lần chạy duy nhất. Đánh giá cho bạn biết mức độ tốt của những kết quả đó, đặc biệt khi bạn cần đo lường chất lượng qua nhiều lần chạy hoặc so sánh các phiên bản khác nhau của đại lý của bạn. LangSmith có một quy trình đánh giá đầy đủ để hỗ trợ cả thử nghiệm ngoại tuyến và giám sát trực tuyến chất lượng ứng dụng LLM của bạn.
Đánh giá ngoại tuyến và trực tuyến: LangSmith hỗ trợ cả hai chế độ. Đánh giá ngoại tuyến là những gì bạn thực hiện trước khi triển khai các thay đổi - bạn chuẩn bị một tập dữ liệu các đầu vào ví dụ (và có thể có cả đầu ra mong đợi), sau đó chạy đại lý của bạn trên tất cả chúng để xem hiệu suất. Điều này rất tốt để phát hiện sự suy giảm hiệu suất và so sánh các phiên bản prompt/mô hình trong một môi trường kiểm soát. Ngược lại, đánh giá trực tuyến diễn ra trong môi trường sản xuất - nó liên tục đánh giá các tương tác thực của người dùng khi chúng xảy ra, nhằm giám sát chất lượng dữ liệu trực tiếp. Cả hai đều hữu ích: đánh giá ngoại tuyến giống như kiểm thử đơn vị/tích hợp cho đại lý của bạn, và đánh giá trực tuyến giống như giám sát trực tiếp hoặc kiểm thử canary.
Quy trình đánh giá điển hình trong LangSmith trông như sau:
- Tạo một Bộ Dữ liệu: Một tập hợp các trường hợp kiểm thử cho tác nhân của bạn. Chúng có thể được thu thập từ những thất bại trước đây (dấu vết của tác nhân cung cấp phản hồi không chính xác), các ví dụ tổng hợp mà bạn cho là thách thức, hoặc các câu hỏi của người dùng mà bạn muốn đảm bảo đã được bao phủ. Trong LangSmith, một bộ dữ liệu đơn giản chỉ là một tập hợp các cặp đầu vào-đầu ra (hoặc chỉ đầu vào, nếu bạn chưa có đầu ra “chuẩn xác”). Bạn có thể tạo và quản lý các bộ dữ liệu bằng cách sử dụng giao diện người dùng hoặc SDK. Ví dụ, trong Python:
from langsmith import Client
client = Client()
dataset = client.create_dataset("MathQA set", description="Simple math Q&A tests")
client.create_examples(dataset.id, examples=[
{"inputs": {"question": "What is 2+2?"}, "outputs": {"answer": "4"}},
{"inputs": {"question": "What is the capital of France?"}, "outputs": {"answer": "Paris"}}
])Điều này sẽ lập trình để tạo một bộ dữ liệu với hai ví dụ Hỏi & Đáp. (Bạn cũng có thể tải lên bộ dữ liệu từ CSV/JSON hoặc tạo chúng trong giao diện người dùng.)
2. Xác định Người đánh giá: Người đánh giá là các hàm hoặc mô hình đánh giá kết quả đầu ra của tác nhân của bạn cho mỗi ví dụ. LangSmith đi kèm với một số người đánh giá tích hợp sẵn và hỗ trợ các người đánh giá tùy chỉnh. Các loại người đánh giá phổ biến bao gồm:
- Độ chính xác (Tính thật): Kết quả có chứa cùng câu trả lời với một câu trả lời tham chiếu đã biết đúng không? (Để làm điều này, bạn cần có các câu trả lời tham chiếu trong bộ dữ liệu của mình.)
- Chấm điểm theo tiêu chí: hàm Python tùy chỉnh hoặc phương pháp thủ công để kiểm tra một số điều (ví dụ: "kết quả có bao gồm trích dẫn không?").
- LLM-như-Trọng tài: Sử dụng một LLM khác để đánh giá chất lượng đầu ra. Ví dụ, một chức năng của OpenAI có thể so sánh đầu ra với tham chiếu và đưa ra điểm số.
- So sánh cặp: Sử dụng điều này khi bạn có hai kết quả đầu ra (ví dụ, từ mô hình A so với mô hình B) và muốn xác định cái nào tốt hơn.
Bạn có thể gắn một hoặc nhiều người đánh giá vào một thí nghiệm. LangSmith sử dụng thư viện OpenEvals (các bộ đánh giá mã nguồn mở) cho việc này. Ví dụ, để sử dụng bộ đánh giá LLM như một trọng tài về tính chính xác, bạn sẽ nhập một prompt như CORRECTNESS_PROMPT và thực hiện:
from openevals.llm import create_llm_as_judge
from openevals.prompts import CORRECTNESS_PROMPT
judge = create_llm_as_judge(prompt=CORRECTNESS_PROMPT)Như bạn có thể thấy, vị thẩm phán này sau đó có thể được sử dụng để chấm điểm từng kết quả đầu ra (nó thực chất hỏi một mô hình ngôn ngữ lớn với câu hỏi “Câu trả lời này có đúng so với tham chiếu không?”, rồi trả về một điểm số)
3. Tiến hành Thí nghiệm: Bây giờ là phần thú vị – chạy agent của bạn trên tập dữ liệu và thu thập kết quả. Trong giao diện LangSmith, bạn sẽ tạo một Thí nghiệm mới, chọn tập dữ liệu và hàm mục tiêu (agent/chain của bạn) để chạy, đính kèm các bộ đánh giá, v.v. Nếu bạn sử dụng mã, bạn sẽ dùng Client.run_on_dataset hoặc một cái gì đó tương tự.
client = Client()
# Assuming `target_fn` is your function that takes an input dict and returns an output dict
experiment = client.run_on_dataset(
dataset_name="MathQA set",
func=target_fn,
evaluators=[judge] # the evaluator we defined
)Điều này sẽ chạy target_fn của bạn cho mỗi ví dụ trong tập dữ liệu, ghi lại các kết quả đầu ra, và sau đó các bộ đánh giá sẽ chấm điểm từng kết quả. LangSmith sẽ lưu tất cả dữ liệu đã ghi này vào một đối tượng Experiment mà bạn có thể kiểm tra.
Trong giao diện người dùng, khi chạy một thí nghiệm sẽ hiển thị một bảng kết quả cập nhật trực tiếp – bạn sẽ thấy từng ví dụ, kết quả của mô hình và điểm số từ những người đánh giá. Điều này hữu ích để nhận diện các mẫu (ví dụ, “tác nhân thất bại với tất cả các câu hỏi toán học liên quan đến phép chia”).
4. Phân tích kết quả: Sau khi thí nghiệm hoàn tất, bạn có thể so sánh và phân tích các lần chạy của mình trong LangSmith. Sắp xếp và lọc các lần chạy theo điểm số, lọc ví dụ (ví dụ, “hiển thị cho tôi các ví dụ có điểm đúng thấp”), so sánh hai thí nghiệm nếu bạn chạy nhiều lần (ví dụ, so sánh Agent v1 và Agent v2 trên cùng một bộ dữ liệu), v.v. Điều này hữu ích cả để đánh giá các phiên bản/mô hình prompt khác nhau và để tạo các “bài kiểm tra hồi quy” (bạn có thể lưu một bộ “bộ mẫu vàng” các ví dụ, sau đó đảm bảo rằng các phiên bản sau này không làm giảm điểm số trên những ví dụ đó).
5. Lặp lại việc cải tiến: Nếu đánh giá chưa đủ tốt, bạn sẽ tinh chỉnh tác nhân bằng một cách nào đó (cải thiện câu lệnh, thay đổi ví dụ, sửa cách tác nhân sử dụng công cụ, v.v.) và tiến hành các thử nghiệm mới.
Một quy trình làm việc đặc biệt hữu ích là Prompt Playground (một giao diện "không cần mã" trong LangSmith) để thực hiện đánh giá nhanh các biến thể lời nhắc khác nhau. Playground cho phép bạn tải một bộ dữ liệu, thử các mẫu lời nhắc hoặc tham số mô hình khác nhau, và ngay lập tức xem kết quả đánh giá.
Một lưu ý cuối cùng – Việc đánh giá không phải lúc nào cũng được thực hiện tự động. Đôi khi, các chỉ số tự động hoặc đánh giá bởi LLM không nắm bắt được một số khía cạnh quan trọng. Đây là lúc đánh giá bởi con người trở nên cần thiết – và LangSmith cũng hỗ trợ điều này thông qua các hàng đợi chú thích, điều mà chúng ta sẽ thấy trong phần tiếp theo.
Con người trong vòng lặp: Hàng đợi chú thích để đảm bảo chất lượng ở quy mô lớn
Các công cụ đánh giá tự động rất tuyệt, nhưng đến một lúc nào đó, bạn sẽ muốn có đánh giá của con người để có được điểm số chính xác nhất. Hệ thống xếp hàng chú thích của LangSmith là một cách đơn giản và có thể mở rộng để nhận được đánh giá của con người cho các kết quả đầu ra của đại lý của bạn. Bạn có thể đưa các kết quả của mô hình vào một hàng đợi để được xem xét, và các chú thích viên (bao gồm bạn, đồng nghiệp, hoặc các chuyên gia gán nhãn) có thể chấm điểm dựa trên một tiêu chuẩn đã định trước.
LangSmith hỗ trợ hai kiểu hàng đợi chú thích:
- Hàng đợi Chú thích Chạy đơn: Phong cách này hiển thị một kết quả (một lần chạy) mỗi lượt cho người đánh giá, kèm theo một bảng tiêu chí hoặc các câu hỏi để trả lời về kết quả đó. Điều này có thể đơn giản như “Câu trả lời này có chính xác về mặt thực tế không? (Có/Không)” hoặc “Đánh giá độ rõ ràng của câu trả lời từ 1-5.” Người đánh giá sẽ thấy toàn bộ bối cảnh (lời nhắc, kết quả, và có thể là câu trả lời tham khảo nếu bạn có) và gửi phản hồi cho lượt chạy đó.
- Hàng đợi Chú thích Theo Cặp (PAQs): Điều này trình bày hai kết quả cạnh nhau và yêu cầu người đánh giá chọn kết quả nào tốt hơn (hoặc nếu chúng bằng nhau) theo một số tiêu chí. Điều này hữu ích cho kiểm thử A/B – ví dụ, bạn có Phiên bản Agent A và Phiên bản B trả lời cùng một câu hỏi, và bạn muốn một người xác định phiên bản nào làm tốt hơn. So sánh theo cặp cũng rất tuyệt nếu bạn muốn so sánh một mô hình hoặc prompt mới với mô hình cũ, đây là một trường hợp sử dụng phổ biến cho việc tinh chỉnh hoặc RLHF.
Khi nào nên sử dụng loại nào? Hàng đợi một lần chạy tốt để có được đánh giá tuyệt đối hoặc nhãn phân loại trên đầu ra (tuyệt vời nếu bạn đang xây dựng một bộ dữ liệu điểm số của con người để đào tạo một bộ đánh giá, hoặc chỉ đơn giản là giám sát chất lượng).
So sánh từng cặp là hữu ích khi chất lượng tương đối quan trọng hơn, tức là bạn muốn đảm bảo phiên bản mới là một cải tiến, và bạn muốn biết mức độ mọi người thích nó như thế nào. Trong thực tế, nhiều đội dùng phương pháp so sánh từng cặp khi thực hiện mô hình hóa sở thích hoặc học tăng cường từ phản hồi của con người (RLHF). Điều này là vì con người cảm thấy dễ dàng hơn khi nói “cái nào trong hai cái này tốt hơn” so với việc gán một điểm số tuyệt đối.
LangSmith và Các Lựa Chọn Thay Thế: So Sánh Hiệu Suất
Không gian quan sát/phản hồi của LLM đang phát triển, và một số công cụ đã xuất hiện có tính năng trùng lặp với bộ tính năng của LangSmith. Dưới đây là một so sánh ngắn về LangSmith và một số lựa chọn phổ biến, cùng với một số mẹo để chọn công cụ phù hợp cho trường hợp sử dụng của bạn:
| Công cụ/Tùy chọn | Nó là gì (phương pháp tiếp cận + các đặc điểm chính) | Phù hợp nhất/Đánh đổi |
|---|---|---|
| Langfuse | Nền tảng mã nguồn mở cho theo dõi, phân tích, đánh giá và chú thích LLM. Hỗ trợ tự lưu trữ (phiên bản cộng đồng) và tích hợp rộng rãi vượt ra ngoài LangChain (nhiều SDK/khuôn khổ, bao gồm cả SDK của OpenAI). | Chọn nếu bạn muốn kiểm soát dữ liệu đầy đủ, tự lưu trữ hoặc một hệ thống tùy chỉnh. Sự đánh đổi: có thể yêu cầu nhiều công sức vận hành hơn so với dịch vụ lưu trữ; LangSmith có thể cảm giác dễ sử dụng hơn cho LangChain/LangGraph và có thể mạnh hơn trong các quy trình làm việc với prompt/phiên bản. |
| Helicone | Công cụ quan sát mã nguồn mở hoạt động như một proxy API LLM: định tuyến các cuộc gọi qua Helicone (thường bằng cách thay đổi URL cơ sở API) để ghi lại các yêu cầu/phản hồi. Tập trung mạnh vào theo dõi chi phí, chỉ số độ trễ, bảng điều khiển và bộ nhớ đệm; hỗ trợ truy vết phiên cho các quy trình nhiều bước. | Chọn nếu bạn cần cài đặt nhanh nhất cho việc ghi log + giám sát chi phí với những thay đổi mã tối thiểu. Thỏa hiệp: thường ít chi tiết hơn so với các dấu vết tác nhân phân cấp; nói chung không phải là nền tảng ưu tiên đánh giá như LangSmith/Langfuse. Thường được sử dụng cùng với chúng (Helicone cho chi phí, các nền tảng khác cho gỡ lỗi/đánh giá tác nhân). |
| OpenTelemetry (OTel) + OpenLLMetry | Tiêu chuẩn mở cho việc đo lường từ xa (traces/logs/metrics). Các quy ước ngữ nghĩa GenAI nhằm chuẩn hóa cách mà các hoạt động của LLM/các bước của agent được biểu diễn. OpenLLMetry cung cấp các SDK để tích hợp ứng dụng LLM và xuất dữ liệu đến bất kỳ backend OTel nào (Datadog/Jaeger/etc). | Chọn nếu bạn cần khả năng di động không phụ thuộc nhà cung cấp, đã có một hệ thống quan sát, hoặc muốn tích hợp telemetri LLM với APM hiện có. Nhược điểm: cài đặt nhiều hơn (cấu hình công cụ + backend) và thường có giao diện chung trừ khi bạn xây dựng các chế độ xem tùy chỉnh cho lệnh/công cụ/tác nhân. |
| Khác (Phoenix/Arize, HoneyHive, v.v.) | Các công cụ chuyên biệt thường tập trung vào một phần cụ thể (ví dụ, Phoenix cho đánh giá/ phân tích dựa trên bộ dữ liệu; HoneyHive cho các quy trình phản hồi từ con người). | Chọn nếu ưu tiên của bạn là một năng lực cụ thể (phân tích đánh giá thuần túy hoặc phản hồi từ con người). Thỏa hiệp: bạn có thể cần kết hợp các công cụ để phù hợp với quy trình "một cửa" của LangSmith (theo dõi + đánh giá + vận hành prompt + giám sát). |
Câu hỏi thường gặp
Q1: Tôi có cần LangChain để sử dụng LangSmith không?
Không. LangSmith không phụ thuộc vào framework nào. Bạn có thể dùng nó với LangChain, LangGraph, hoặc thậm chí không dùng framework nào cả. Nếu bạn đã dùng LangChain, tuyệt – LangSmith tích hợp với thiết lập tối thiểu (chỉ cần đặt biến môi trường, và nó sẽ tự động ghi lại các chains/agents cho bạn). Nếu bạn không dùng framework nào, bạn có thể theo dõi các cuộc gọi LLM hoặc logic agent của mình thủ công bằng SDK của LangSmith.
Q2: Tôi có thể đánh giá các prompt mà không cần viết code không?
Vâng. LangSmith cung cấp một Khu Vườn Prompt và giao diện người dùng để đánh giá, cho phép bạn thực hiện nhiều việc mà không cần lập trình. Ví dụ, bạn có thể tạo một bộ dữ liệu và chạy một thí nghiệm hoàn toàn từ giao diện web – chỉ cần điền các ví dụ, chọn một bộ đánh giá từ menu thả xuống và nhấn Bắt đầu.
Q3: Sự khác biệt giữa chú thích một lần chạy và chú thích theo cặp trong LangSmith là gì?
Trong chú thích một lần chạy, người đánh giá sẽ được trình bày một kết quả đầu ra (một lần chạy) tại một thời điểm và cung cấp phản hồi dựa trên một bảng tiêu chí (ví dụ: đánh giá độ chính xác hoặc các đặc tính khác). Trong chú thích theo cặp, người đánh giá sẽ thấy hai kết quả đầu ra cạnh nhau (thường từ hai phiên bản mô hình khác nhau cho cùng một đầu vào) và được yêu cầu chọn cái nào tốt hơn hoặc xác định xem chúng có bằng nhau hay không. Chú thích một lần chạy dùng để đánh giá một kết quả đầu ra riêng lẻ. Chú thích theo cặp dùng để so sánh các kết quả đầu ra.
Q4: Tôi cần thiết lập gì để đảm bảo các cuộc gọi LLM của tôi được LangSmith theo dõi?
Cài đặt quan trọng là bật tính năng theo dõi thông qua biến môi trường hoặc cấu hình. Việc này có thể được thực hiện bằng biến môi trường hoặc thông qua cấu hình. Cách đơn giản nhất là thiết lập biến môi trường LANGSMITH_TRACING=true trước khi chạy ứng dụng của bạn. Bạn cũng nên thiết lập khóa API của bạn (LANGSMITH_API_KEY) để dữ liệu được liên kết với tài khoản của bạn, và tất nhiên, bất kỳ khóa API mô hình nào (như OPENAI_API_KEY). Với LANGSMITH_TRACING=true, bất kỳ tích hợp được hỗ trợ nào (LangChain, v.v.) sẽ bắt đầu ghi nhật ký. Nếu không thể sử dụng biến môi trường, LangSmith cũng hỗ trợ bật tính năng này theo cách lập trình – ví dụ, trong Python:
from langsmith import Client
client = Client()
client.configure_tracing(True)Đây là một ví dụ giả định; API thực tế có thể khác, nhưng về mặt khái niệm, bạn có thể bật nó trong mã. Chạy chuỗi/đại lý của bạn — bạn sẽ thấy các dấu vết trong giao diện LangSmith. Nếu không, hãy kiểm tra lại xem bạn đã định nghĩa các biến môi trường trong cùng ngữ cảnh mà mã đang thực sự chạy hay chưa (và không gian làm việc chính xác nếu có).
Câu 5: LangSmith chỉ để theo dõi, hay nó còn xử lý cả việc triển khai?
LangSmith được xây dựng với khả năng quan sát và đánh giá, nhưng nó cũng có một module Triển khai. Bạn có thể triển khai các agent như các điểm cuối được quản lý thông qua LangSmith (họ gọi chúng là Máy chủ Agent), và có được khả năng mở rộng, thời gian hoạt động và giám sát ngay khi triển khai.
Kết luận
LangSmith giúp bạn phát triển các tác nhân từ một quá trình thử và sai thành một quy trình kỹ thuật. Với việc theo dõi, đánh giá, quản lý phiên bản prompt, và kiểm tra bởi con người, bạn có thể chẩn đoán thất bại, đo lường sự cải thiện và ngăn chặn sự suy giảm ảnh hưởng đến người dùng. Thói quen cốt lõi trong phát triển tác nhân là vòng lặp độ tin cậy của tác nhân: theo dõi mọi lần chạy, biến các thất bại thực tế thành bộ dữ liệu, thực hiện các thí nghiệm có thể lặp lại bằng cách sử dụng các công cụ đánh giá (được hỗ trợ bởi con người khi cần), sau đó chỉ thúc đẩy các thay đổi prompt/mô hình tốt nhất thông qua các phiên bản phát hành có quản lý. Việc theo dõi và giám sát hoạt động cho phép bạn nhận cảnh báo sớm về các hiện tượng lệch, sự cố công cụ, biến động độ trễ và các tác động tài chính bất ngờ. LangSmith cung cấp một giải pháp có cấu trúc cho các nhà phát triển tác nhân sử dụng công cụ hoặc nhiều bước, những người ưu tiên khả năng tái tạo và sự lặp đi lặp lại có kỷ luật trong quá trình phát triển từ nguyên mẫu đến sản xuất.
Tài liệu tham khảo
- Tài liệu LangSmith
- LangSmith là gì? Theo dõi và gỡ lỗi cho LLMs
- Lựa chọn thay thế LangSmith? Langfuse vs. LangSmith
- Theo dõi LangSmith: Gỡ lỗi chuỗi LLM
- Khởi động nhanh theo dõi
- Đánh giá LangSmith
- Khởi động nhanh đánh giá
- Sử dụng hàng đợi chú thích
- Khái niệm về khả năng quan sát
- Hướng Dẫn Toàn Diện về Các Nền Tảng Quan Sát LLM vào Năm 2025
- OpenTelemetry cho GenAI và dự án OpenLLMetry
Cảm ơn bạn đã học cùng cộng đồng Linux-Console.net.

