Langfuse WorkshopClickHouse Workshops

05 Kumpulan Data

Anda memiliki aplikasi terlacak, beratribut, dan dipantau. data/seed-dataset.json dan scripts/seed-dataset.ts sudah ada di repo di checkpoint ini.

Materi workshop dikelola di repositori publik langfuse/langfuse-workshop. Gunakan repositori untuk aplikasi yang dapat dijalankan, cabang checkpoint, dan setup lokal.

Lihat file Markdown ini

Titik awal

git checkout checkpoint/05-dataset

Anda memiliki aplikasi terlacak, beratribut, dan dipantau. data/seed-dataset.json dan scripts/seed-dataset.ts sudah ada di repo di checkpoint ini.

Pastikan .env memiliki:

DATASET_NAME=dad-it-support-workshop

Mengapa membangun dataset

Dataset adalah representasi Anda tentang apa yang akan dihadapi sistem dalam produksi — masukan yang Anda harapkan, dan untuk masing-masing, seperti apa jawaban yang baik. Dengan kumpulan harapan yang jelas ditulis, Anda dapat menjalankan kembali agen melawan mereka setelah setiap perubahan dan tahu apakah Anda membantu atau merugikan. Dataset yang baik adalah fondasi untuk pengiriman yang percaya diri dan iterasi tanpa regresi.

Pelajari lebih lanjut di pelajaran Akademi Langfuse tentang dataset.

Tujuan

Taburi dataset pertama yang menangkap jenis permintaan yang kami harapkan Specs tangani. Untuk sampai ke sana:

  1. Pahami bentuk item — setiap item dataset memiliki tiga bidang yang sama, dan kami ingin milik kami cocok dengan masukan agen yang sebenarnya.
  2. Taburi dataset yang dihosting sehingga hidup di Langfuse dan siap untuk eksperimen di langkah berikutnya.

Bagaimana Specs menangani tiket — satu agen, dua alat, satu model, setiap lompatan adalah pengamatan dalam jejak.

Langkah 1 — Baca bentuk item

Item dataset di Langfuse mengikuti bentuk yang konsisten — tiga bidang, satu diperlukan, dua opsional:

BidangDiperlukanTujuan
inputyaApa yang akan Anda berikan kepada agen. Untuk kami, bentuk { messages: [...] } yang sama /api/chat terima.
expectedOutputopsionalSeperti apa jawaban yang baik. Bebas-bentuk — digunakan oleh evaluator untuk membandingkan aktual vs diharapkan.
metadataopsionalTag atau bidang lain untuk penyaringan dan pengelompokan (category, difficulty, dll.).

Untuk kami, bentuk konseptual satu item adalah:

{
  "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" }
}

Dua bidang di dalam expectedOutput menjawab dua pertanyaan evaluator yang berbeda:

  • idealAnswer adalah balasan referensi yang dapat dibaca manusia. Ini adalah apa yang evaluator kebenaran berbasis LLM (bab 06) baca dari $.idealAnswer untuk memutuskan apakah artinya cocok.
  • expectedKeywords adalah daftar kecil string yang jawabannya harus berisi untuk dianggap "mencakup langkah-langkahnya." Di bab 06 skrip eksperimen menggunakannya untuk skor keyword_overlap deterministik — cepat, murah, dan tidak ada panggilan model yang diperlukan.

metadata memungkinkan kami untuk iris jalankan berdasarkan kategori atau kesulitan nanti ketika membandingkan jalankan eksperimen berdampingan.

Jika Anda melihat JSON aktual di data/seed-dataset.json, input adalah bentuk { messages: [...] } lengkap yang /api/chat terima, ditambah bidang id untuk baris dataset. Kami telah menyederhanakan contoh di atas untuk menunjukkan apa itu item; format on-disk adalah apa yang dapat diumpankan skrip eksperimen (langkah 06) langsung ke runSupportConversation(...) tanpa menulis ulang masukan.

Langkah 2 — Taburi dataset

Anda memiliki beberapa opsi untuk mendapatkan item ke dalam dataset Langfuse:

  • Tambahkan item secara manual di UI (Datasets → New item).
  • Unggah file CSV / JSON via UI.
  • Ubah jejak produksi langsung menjadi item dataset dari tampilan Trace — ini adalah jalur paling kuat setelah Anda memiliki monitor menangkap jejak menarik.
  • Penyemaian terprogram via SDK / CLI — terbaik untuk beban awal massal seperti milik kami.

Untuk workshop ini kami menggunakan jalur terprogram karena kami sudah memiliki file JSON yang dikurasi:

npm run dataset:seed

Buka Langfuse → Datasets. Tampilan daftar harus menampilkan dataset dad-it-support-workshop baru dengan 14 item dan 0 jalankan eksperimen (sejauh ini):

Tampilan daftar Datasets di Langfuse — dad-it-support-workshop dengan 14 item dan tidak ada jalankan namun.

Klik ke dalam dataset dan beralih ke tab Items. Anda harus melihat setiap item yang ditabur dengan kolom masukan, keluaran yang diharapkan, dan metadata:

Tampilan Items dari dataset dad-it-support-workshop — semua 14 baris dengan masukan pesan, jawaban ideal + kata kunci yang diharapkan, dan metadata kategori/kesulitan.

Apa yang dicakup dataset starter

  • Dasar-dasar Bluetooth iPhone dan kasus tepi
  • Sambungkan kembali Wi-Fi iPhone + "Saya tidak dapat melihat jaringan"
  • Penangkapan foto + WhatsApp bagikan
  • Arah Peta Apple + batas lokasi langsung
  • Dasar-dasar Pesan
  • Out-of-scope (ajukan pajak saya, pesan kereta saya)
  • Kasus keterbatasan (kata sandi, lokasi langsung)

Jika Anda menambahkan item nanti, lebih suka item yang cocok dengan sinyal nyata yang Anda lihat dalam pemantauan daripada item yang ditemukan dari goresan.

Cara memverifikasi Anda selesai

  • Dataset menampilkan di Langfuse dengan semua item.
  • Masukan item terlihat seperti array messages yang akan dimiliki giliran chat nyata.
  • Anda dapat mengartikulasikan mode kegagalan yang dicakup dataset.

Kesimpulan

Dataset adalah cara Anda menulis apa yang sistem Anda diharapkan untuk menangani. Satu yang baik memberi Anda kepercayaan diri untuk pengiriman dan untuk iterasi tanpa regresi. Anda dapat menabur dataset via Langfuse CLI atau keterampilan, membangunnya dari jejak produksi di UI, atau mempertahankannya dalam kode seperti yang kami lakukan — pendekatan yang tepat tergantung di mana contoh terbaik Anda berasal.

Selanjutnya kami menggunakan dataset ini untuk menjalankan eksperimen melawan agen.

Status akhir

Ini adalah titik awal untuk 06-experiments.

Di halaman ini

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.

ID