Sản phẩm
LangSmith tích hợp Pytest và Vitest: Đưa đánh giá AI vào quy trình kiểm thử chuẩn
(giờ Việt Nam)
Tóm tắt AI
LangSmith vừa ra mắt tính năng tích hợp Pytest và Vitest, cho phép nhà phát triển thực hiện đánh giá mô hình trực tiếp trong quy trình kiểm thử phần mềm quen thuộc.
Bản dịch AI

Đánh giá (evals) là một phần thiết yếu trong việc xây dựng các ứng dụng LLM đáng tin cậy và chất lượng cao. Chúng giúp bạn đánh giá hiệu suất ứng dụng, đảm bảo chất lượng luôn nhất quán khi bạn thực hiện các cập nhật. Nếu bạn xuất thân từ lĩnh vực kỹ thuật phần mềm, bạn có lẽ đã quen thuộc với việc sử dụng các bài kiểm thử (tests) cho mục đích này. Để mở rộng giao diện quen thuộc đó, chúng tôi rất vui mừng được giới thiệu một cách thức mới để chạy các đánh giá bằng cách sử dụng các tích hợp Pytest và Vitest/Jest của LangSmith.
Các tích hợp mới này hiện đã có sẵn ở phiên bản beta cùng với LangSmith Python và Typescript SDK v0.3.0.

Tại sao nên sử dụng các framework kiểm thử cho đánh giá LLM?
Nếu bạn đang sử dụng Pytest hoặc Vitest/Jest để kiểm thử ứng dụng của mình, các tích hợp mới của LangSmith mang đến cho bạn sự linh hoạt, tính quen thuộc và hành vi runtime của Pytest/Vitest cùng với các tính năng quan sát và chia sẻ của LangSmith. Các tích hợp này sử dụng chính xác trải nghiệm nhà phát triển (DX) mà bạn đã quen thuộc và mang lại những lợi ích sau:
Gỡ lỗi các bài kiểm thử của bạn trong LangSmith
Các ứng dụng sử dụng LLM có thêm độ phức tạp khi gỡ lỗi do bản chất không xác định (non-deterministic) của chúng. LangSmith lưu lại các đầu vào/đầu ra và dấu vết ngăn xếp (stack traces) từ các trường hợp kiểm thử của bạn để giúp bạn xác định nguyên nhân gốc rễ của các vấn đề.
Ghi lại các chỉ số (ngoài kết quả đạt/không đạt) trong LangSmith và theo dõi tiến trình theo thời gian
Thông thường, các framework kiểm thử chỉ tập trung vào kết quả đạt/không đạt, nhưng việc kiểm thử các ứng dụng LLM thường đòi hỏi một cách tiếp cận tinh tế hơn. Bạn có thể không có các tiêu chí đạt/không đạt cứng nhắc; thay vào đó, bạn muốn ghi lại kết quả và xem ứng dụng của mình cải thiện như thế nào theo thời gian. Với LangSmith, bạn có thể ghi lại phản hồi và so sánh kết quả theo thời gian để ngăn chặn các lỗi hồi quy (regressions) và đảm bảo rằng bạn luôn triển khai phiên bản tốt nhất của ứng dụng.

Chia sẻ kết quả với nhóm của bạn
Xây dựng ứng dụng với LLM thường là một nỗ lực của cả nhóm. Chúng tôi thường thấy các chuyên gia về lĩnh vực (subject matter experts) tham gia vào quá trình tạo prompt hoặc khi tạo các đánh giá. LangSmith cho phép bạn chia sẻ kết quả của các thử nghiệm trong nhóm của mình, giúp việc cộng tác trở nên dễ dàng hơn.
Các hàm đánh giá tích hợp sẵn
Nếu bạn đang sử dụng Python, LangSmith cung cấp một số hàm đánh giá tích hợp sẵn để hỗ trợ khi kiểm tra đầu ra của LLM. Ví dụ, expect.edit_distance được sử dụng để tính toán khoảng cách chuỗi giữa đầu ra của bài kiểm thử và đầu ra tham chiếu được cung cấp. Để biết thêm chi tiết về các hàm đánh giá tích hợp sẵn, hãy truy cập tài liệu tham khảo API của chúng tôi.
Bắt đầu
Dưới đây là một trường hợp kiểm thử đơn giản để minh họa cách đánh giá một ứng dụng tạo các truy vấn SQL. Bài kiểm thử này kiểm tra xem ứng dụng có xác định đúng đầu vào người dùng không liên quan (off-topic) hay không và ghi lại kết quả vào LangSmith. Khi bạn chạy một bộ kiểm thử, một tập dữ liệu trong LangSmith sẽ được tạo/cập nhật và một thử nghiệm mới sẽ được tạo ra.
Bắt đầu với Pytest
Để theo dõi một bài kiểm thử trong LangSmith, hãy thêm decorator @pytest.mark.langsmith.
[Mã nguồn Python]
oai_client = wrappers.wrap_openai(openai.OpenAI)
# Xác định logic ứng dụng của bạn ở nơi khác:# @traceable# def generate_sql(user_query: str) -> str:...
@pytest.mark.langsmithdef test_offtopic_input -> None: # Ghi lại đầu vào và đầu ra tham chiếu của trường hợp kiểm thử. user_query = "whats up" t.log_inputs({"user_query": user_query})
expected = "Sorry that is not a valid question." t.log_reference_outputs({"response": expected})
actual = generate_sql(user_query) t.log_outputs({"response": actual})
# Sử dụng trình quản lý ngữ cảnh này để theo dõi bất kỳ bước nào được sử dụng cho # việc tạo phản hồi đánh giá tách biệt với # logic ứng dụng chính. with t.trace_feedback: instructions = ( "Return 1 if the ACTUAL and EXPECTED answers are semantically equivalent, " "otherwise return 0. Return only 0 or 1 and nothing else.") grade = oai_client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": instructions}, {"role": "user", "content": f"ACTUAL: {actual}\nEXPECTED: {expected}"},],) score = float(grade.choices[0].message.content) t.log_feedback(key="correctness", score=score)
assert actual assert score
Khởi chạy các bài kiểm thử như cách bạn vẫn thường làm:
pytest tests
Thao tác này sẽ chạy giống như bất kỳ lần chạy kiểm thử pytest nào khác và cũng ghi lại tất cả kết quả trường hợp kiểm thử, dấu vết ứng dụng và dấu vết phản hồi vào LangSmith.



Truy cập hướng dẫn sử dụng Pytest của chúng tôi để xem ví dụ đầy đủ.
Bắt đầu với Vitest
Để theo dõi một bài kiểm thử trong LangSmith, hãy bao bọc các trường hợp kiểm thử của bạn trong một khối ls.describe.
[Mã nguồn Vitest]
import OpenAI from "openai";import { traceable } from "langsmith/traceable";import { wrapOpenAI } from "langsmith/wrappers/openai";
//Thiết lập OPENAI_API_KEY dưới dạng biến môi trườngconst tracedClient = wrapOpenAI(new OpenAI);
const myEvaluator = async (params: { outputs: { sql: string }; referenceOutputs: { sql: string };}) => { const { outputs, referenceOutputs } = params; const instructions = [ "Return 1 if the ACTUAL and EXPECTED answers are semantically equivalent, ", "otherwise return 0. Return only 0 or 1 and nothing else.",].join("\n"); const grade = await tracedClient.chat.completions.create({ model: "gpt-4o-mini", messages: [ { role: "system", content: instructions, }, { role: "user", content: `ACTUAL: ${outputs.sql}\nEXPECTED: ${referenceOutputs.sql}`, },], }); const score = parseInt(grade.choices[0].message.content?? ""); return { key: "correctness", score };};
Bài viết được AI dịch và tổng hợp tự động từ LangChain: Blog. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.