Langfuse WorkshopClickHouse Workshops

05 Tập dữ liệu

Bạn có một ứng dụng được theo dõi, đã gán thuộc tính và được giám sát. data/seed-dataset.json và scripts/seed-dataset.ts đã có sẵn trong kho lưu trữ tại điểm kiểm tra này.

Tài liệu hội thảo được duy trì trong kho lưu trữ công khai langfuse/langfuse-workshop. Sử dụng kho lưu trữ cho ứng dụng có thể chạy được, các nhánh điểm kiểm tra và thiết lập cục bộ.

Xem tệp Markdown này

Điểm bắt đầu

git checkout checkpoint/05-dataset

Bạn có một ứng dụng được theo dõi, đã gán thuộc tính và được giám sát. data/seed-dataset.json và scripts/seed-dataset.ts đã có sẵn trong kho lưu trữ tại điểm kiểm tra này.

Bảo đảm .env có:

DATASET_NAME=dad-it-support-workshop

Tại sao xây dựng tập dữ liệu

Tập dữ liệu là đại diện của bạn về những gì hệ thống sẽ gặp phải trong sản xuất — các đầu vào bạn mong đợi, và đối với mỗi cái, câu trả lời tốt trông như thế nào. Với một bộ kỳ vọng rõ ràng được viết ra, bạn có thể chạy lại agent theo những thay đổi này và biết liệu bạn đã giúp hay làm hại. Một tập dữ liệu tốt là nền tảng để gửi một cách tự tin và lặp lại mà không bị suy thoái.

Tìm hiểu thêm trong bài học Langfuse Academy về tập dữ liệu.

Mục tiêu

Thêm dữ liệu vào tập dữ liệu đầu tiên để nắm bắt những loại yêu cầu mà chúng tôi mong đợi Specs xử lý. Để đến đó:

  1. Hiểu hình dạng mục — mỗi mục tập dữ liệu có ba trường giống nhau, và chúng tôi muốn của mình khớp với đầu vào thực tế của agent.
  2. Thêm dữ liệu vào tập dữ liệu được lưu trữ để nó tồn tại trong Langfuse và sẵn sàng cho các thử nghiệm ở bước tiếp theo.

Cách Specs xử lý vé — một agent, hai công cụ, một mô hình, mỗi bước là một quan sát trong dấu vết.

Bước 1 — Đọc hình dạng mục

Các mục tập dữ liệu trong Langfuse theo một hình dạng nhất quán — ba trường, một bắt buộc, hai tùy chọn:

TrườngBắt buộcMục đích
inputcóNhững gì bạn sẽ cung cấp cho agent. Đối với chúng tôi, hình dạng { messages: [...] } giống nhau mà /api/chat chấp nhận.
expectedOutputtùy chọnCâu trả lời tốt sẽ trông như thế nào. Tự do định dạng — được sử dụng bởi các bộ đánh giá để so sánh thực tế so với dự kiến.
metadatatùy chọnThẻ hoặc các trường khác để lọc và nhóm (category, difficulty, v.v.).

Đối với chúng tôi, hình dạng khái niệm của một mục là:

{
  "input": "How do I turn Bluetooth on on my iPhone?",
  "expectedOutput": {
    "idealAnswer": "Open Settings, tap Bluetooth, and turn the Bluetooth switch on.",
    "expectedKeywords": ["Settings", "Bluetooth", "switch", "on"]
  },
  "metadata": { "category": "iphone-bluetooth", "difficulty": "easy" }
}

Hai trường bên trong expectedOutput trả lời hai câu hỏi bộ đánh giá khác nhau:

  • idealAnswer là câu trả lời tham chiếu có thể đọc được của con người. Đó là những gì bộ đánh giá tính đúng đắn LLM-as-a-judge (chương 06) đọc từ $.idealAnswer để quyết định liệu ý nghĩa có khớp không.
  • expectedKeywords là một danh sách nhỏ các chuỗi mà câu trả lời phải chứa để được coi là "đã bao gồm các bước." Trong chương 06, tập lệnh thử nghiệm sử dụng nó cho điểm keyword_overlap xác định — nhanh, rẻ và không cần gọi mô hình.

metadata cho phép chúng tôi cắt các lần chạy theo danh mục hoặc độ khó sau này khi so sánh các lần chạy thử nghiệm cạnh nhau.

Nếu bạn nhìn vào JSON thực tế trong data/seed-dataset.json, input là hình dạng { messages: [...] } đầy đủ mà /api/chat chấp nhận, cộng với trường id cho hàng tập dữ liệu. Chúng tôi đã đơn giản hóa ví dụ ở trên để hiển thị mục là gì; định dạng trên đĩa là những gì tập lệnh thử nghiệm (bước 06) có thể cung cấp trực tiếp vào runSupportConversation(...) mà không viết lại đầu vào.

Bước 2 — Thêm dữ liệu vào tập dữ liệu

Bạn có một số tùy chọn để đưa các mục vào tập dữ liệu Langfuse:

  • Thêm mục theo cách thủ công trong giao diện người dùng (Tập dữ liệu → Mục mới).
  • Tải tệp CSV / JSON thông qua giao diện người dùng.
  • Chuyển dấu vết sản xuất trực tiếp thành các mục tập dữ liệu trực tiếp từ chế độ xem Trace — đây là con đường mạnh nhất sau khi bạn có giám sát bắt các dấu vết thú vị.
  • Thêm dữ liệu theo chương trình qua SDK / CLI — tốt nhất cho tải hàng loạt ban đầu như của chúng tôi.

Đối với hội thảo này, chúng tôi sử dụng con đường lập trình vì chúng tôi đã có tệp JSON được xử lý:

npm run dataset:seed

Mở Langfuse → Tập dữ liệu. Chế độ xem danh sách sẽ hiển thị tập dữ liệu dad-it-support-workshop mới với 14 mục và 0 lần chạy thử nghiệm (cho đến nay):

Chế độ xem danh sách Tập dữ liệu trong Langfuse — dad-it-support-workshop với 14 mục và không có lần chạy nào.

Nhấp vào tập dữ liệu và chuyển sang tab Mục. Bạn sẽ thấy mọi mục được thêm dữ liệu với cột đầu vào, đầu ra dự kiến và siêu dữ liệu:

Chế độ xem Mục của tập dữ liệu dad-it-support-workshop — tất cả 14 hàng với đầu vào tin nhắn, câu trả lời lý tưởng + các từ khóa dự kiến, và siêu dữ liệu danh mục/độ khó.

Tập dữ liệu khởi đầu bao gồm những gì

  • Cơ bản Bluetooth của iPhone và các trường hợp biên
  • Kết nối lại Wi-Fi của iPhone + "Tôi không thể thấy mạng"
  • Chụp ảnh + chia sẻ WhatsApp
  • Chỉ đường Apple Maps + giới hạn vị trí trực tiếp
  • Tin nhắn cơ bản
  • Ngoài phạm vi (nộp thuế, đặt chuyến tàu của tôi)
  • Trường hợp giới hạn (mật khẩu, vị trí trực tiếp)

Nếu bạn thêm mục sau này, ưu tiên những mục phù hợp với tín hiệu thực tế bạn thấy trong giám sát thay vì các mục được phát minh từ đầu.

Cách xác minh bạn đã hoàn thành

  • Tập dữ liệu xuất hiện trong Langfuse với tất cả các mục.
  • Các đầu vào mục trông giống như mảng messages mà một lần quay của trò chuyện thực tế sẽ có.
  • Bạn có thể nêu các chế độ lỗi mà tập dữ liệu bao gồm.

Tóm tắt

Tập dữ liệu là cách bạn ghi lại những gì hệ thống của bạn dự kiến sẽ xử lý. Một tập tốt cho bạn sự tự tin để gửi và lặp lại mà không bị suy thoái. Bạn có thể thêm dữ liệu vào tập dữ liệu qua Langfuse CLI hoặc kỹ năng, xây dựng chúng từ các dấu vết sản xuất trong giao diện người dùng, hoặc duy trì chúng trong mã như chúng tôi đã làm — cách tiếp cận đúng phụ thuộc vào nơi những ví dụ tốt nhất của bạn đến từ.

Tiếp theo, chúng tôi sử dụng tập dữ liệu này để chạy các thử nghiệm đối với agent.

Trạng thái cuối cùng

Đây là điểm bắt đầu cho 06-experiments.

Trên trang này

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

VI