05 ชุดข้อมูล
คุณมีแอปที่ติดตาม กำหนดคุณลักษณะ และมีการตรวจสอบได้ data/seed-dataset.json และ scripts/seed-dataset.ts มีอยู่ในที่เก็บที่จุดเช็คพอยต์นี้แล้ว
วัสดุการอบรมได้รับการบำรุงรักษาในที่เก็บ langfuse/langfuse-workshop สาธารณะ ใช้ที่เก็บสำหรับแอปที่สามารถรันได้ สาขาจุดเช็คพอยต์ และการตั้งค่าระดับท้องถิ่น
จุดเริ่มต้น
git checkout checkpoint/05-datasetคุณมีแอปที่ติดตาม กำหนดคุณลักษณะ และมีการตรวจสอบได้ data/seed-dataset.json และ scripts/seed-dataset.ts มีอยู่ในที่เก็บที่จุดเช็คพอยต์นี้แล้ว
ตรวจสอบให้แน่ใจว่า .env มี:
DATASET_NAME=dad-it-support-workshopเหตุใดจึงต้องสร้างชุดข้อมูล
ชุดข้อมูลคือการแสดงเป็นตัวแทนของสิ่งที่ระบบจะเผชิญหน้าในการใช้งานจริง — อินพุตที่คุณคาดหวัง และสำหรับแต่ละอินพุต สิ่งที่คำตอบที่ดีจะเป็น ด้วยชุดความคาดหวังที่ชัดเจนที่เขียนลงไป คุณสามารถรันเอเจนต์กับชุดข้อมูลนั้นได้อีกครั้งหลังจากการเปลี่ยนแปลงทุกครั้ง และรู้ว่าคุณช่วยหรือทำให้เลวลง ชุดข้อมูลที่ดีคือรากฐานสำหรับการปล่อยอย่างมั่นใจและการปรับปรุงต่ออย่างไม่ถดถอย
เรียนรู้เพิ่มเติมในบทเรียน Langfuse Academy เกี่ยวกับชุดข้อมูล.
เป้าหมาย
ปลูกชุดข้อมูลแรกที่จับประเภทของคำขอที่เราคาดหวังว่า Specs จะจัดการ เพื่อไปถึงที่นั่น:
- ทำความเข้าใจรูปแบบรายการ — รายการชุดข้อมูลทุกรายการมีฟิลด์เดียวกันสามฟิลด์ และเราต้องการให้ของเราตรงกับอินพุตจริงของเอเจนต์
- ปลูกชุดข้อมูลที่โฮสต์ เพื่อให้อยู่ใน Langfuse และพร้อมสำหรับการทดลองในขั้นตอนถัดไป

ขั้นตอนที่ 1 — อ่านรูปแบบรายการ
รายการชุดข้อมูลใน Langfuse ปฏิบัติตามรูปแบบที่สอดคล้องกัน — สามฟิลด์ หนึ่งที่จำเป็น สองฟิลด์เป็นทางเลือก:
| ฟิลด์ | จำเป็น | วัตถุประสงค์ |
|---|---|---|
input | ใช่ | สิ่งที่คุณจะป้อนให้เอเจนต์ สำหรับเรา รูปแบบ { messages: [...] } เดียวกัน /api/chat ยอมรับ |
expectedOutput | ทางเลือก | คำตอบที่ดีจะเป็นอย่างไร ฟรี — ใช้โดยตัวประเมินผลเพื่อเปรียบเทียบจริงกับคาดหวัง |
metadata | ทางเลือก | แท็กหรือฟิลด์อื่นสำหรับการกรองและการจัดกลุ่ม (category, difficulty เป็นต้น) |
สำหรับเรา รูปแบบแนวคิดของรายการเดียวคือ:
{
"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" }
}สองฟิลด์ภายใน expectedOutput ตอบคำถามตัวประเมินผลที่แตกต่างกันสองคำถาม:
idealAnswerคือคำตอบอ้างอิงที่อ่านได้โดยมนุษย์ มันคือสิ่งที่ตัวประเมินผลความถูกต้องแบบ LLM-as-a-judge (บทที่ 06) อ่านจาก$.idealAnswerเพื่อตัดสินใจว่าความหมายตรงกันexpectedKeywordsคือรายการสตริงเล็กน้อยที่คำตอบ ต้อง มีเพื่อให้ถือว่า "ครอบคลุมขั้นตอน" ในบทที่ 06 สคริปต์การทดลองใช้มันสำหรับคะแนนkeyword_overlapที่กำหนด — เร็ว ราคาถูก และไม่ต้องเรียกโมเดล
metadata ให้เราแบ่งการรันตามหมวดหมู่หรือความยากลำบากภายหลังเมื่อเปรียบเทียบการรันการทดลองแบบเคียงข้าง
หากคุณดู JSON ที่แท้จริงใน data/seed-dataset.json input คือรูปแบบ { messages: [...] } เต็มที่ /api/chat ยอมรับ บวกฟิลด์ id สำหรับแถวชุดข้อมูล เราได้ลดความซับซ้อนของตัวอย่างข้างบนเพื่อแสดง รายการคืออะไร รูปแบบบนดิสก์คือสิ่งที่สคริปต์การทดลอง (ขั้นตอน 06) สามารถป้อนลงใน runSupportConversation(...) ได้โดยตรงโดยไม่ต้องเขียนใหม่อินพุต
ขั้นตอนที่ 2 — ปลูกชุดข้อมูล
คุณมีตัวเลือกหลายตัวสำหรับการนำรายการเข้าสู่ชุดข้อมูล Langfuse:
- เพิ่มรายการด้วยตนเอง ใน UI (ชุดข้อมูล → รายการใหม่)
- อัปโหลดไฟล์ CSV / JSON ผ่าน UI
- เปลี่ยนร่องรอยการใช้งานจริงที่ใช้งานอยู่ เป็นรายการชุดข้อมูลโดยตรงจากมุมมองร่องรอย — นี่คือเส้นทางที่ทรงพลังที่สุดเมื่อคุณมีการตรวจสอบที่จับร่องรอยที่น่าสนใจ
- การปลูกแบบโปรแกรม ผ่าน SDK / CLI — ดีที่สุดสำหรับการโหลดแบบรวมเริ่มต้นเช่นของเรา
สำหรับการอบรมนี้เราใช้เส้นทางโปรแกรมเพราะเรามีไฟล์ JSON ที่ได้รับการคัดสรร:
npm run dataset:seedเปิด Langfuse → ชุดข้อมูล มุมมองรายการควรแสดงชุดข้อมูล dad-it-support-workshop ใหม่ที่มี 14 รายการและ 0 การรันการทดลอง (จนถึงตอนนี้):

คลิกเข้าไปในชุดข้อมูลและสลับไปยังแท็บ รายการ คุณควรเห็นรายการที่ปลูกแต่ละรายการพร้อมคอลัมน์อินพุต เอาต์พุตที่คาดหวัง และข้อมูลเมตา:

สิ่งที่ชุดข้อมูลเริ่มต้นครอบคลุม
- พื้นฐาน iPhone Bluetooth และกรณีขอบ
- iPhone Wi-Fi เชื่อมต่อใหม่ + "ฉันไม่เห็นเครือข่าย"
- จับภาพ + แชร์ WhatsApp
- ทิศทาง Apple Maps + ขีดจำกัดตำแหน่งสด
- ข้อความพื้นฐาน
- นอกเหนือขอบเขต (ยื่นภาษีของฉัน จองรถไฟของฉัน)
- กรณีจำกัด (รหัสผ่าน ตำแหน่งสด)
หากคุณเพิ่มรายการในภายหลัง ให้ชอบไลค์ที่ตรงกับสัญญาณจริงที่คุณเห็นในการตรวจสอบมากกว่ารายการที่คิดค้นขึ้นจากศูนย์
วิธีตรวจสอบว่าคุณเสร็จสิ้นแล้ว
- ชุดข้อมูลปรากฏใน Langfuse พร้อมรายการทั้งหมด
- อินพุตรายการดูเหมือนอาร์เรย์
messagesที่การเปิดใช้งานแชทจริงจะมี - คุณสามารถอธิบายโหมดความล้มเหลวที่ชุดข้อมูลครอบคลุม
ห่อ
ชุดข้อมูลคือวิธีที่คุณเขียนลงสิ่งที่ระบบของคุณคาดว่าจะจัดการ ชุดข้อมูลที่ดีให้ความมั่นใจแก่คุณในการปล่อยและเพื่อวนซ้ำโดยไม่ถดถอย คุณสามารถปลูกชุดข้อมูลผ่าน Langfuse CLI หรือทักษะ สร้างมันจากร่องรอยการใช้งานจริงใน UI หรือบำรุงรักษาพวกมันในโค้ดเช่นที่เราทำ — วิธีที่ถูกต้องขึ้นอยู่กับว่าตัวอย่างที่ดีที่สุดของคุณมาจากที่ใด
ต่อไปเราใช้ชุดข้อมูลนี้เพื่อรันการทดลองกับเอเจนต์
สถานะการสิ้นสุด
นี่คือจุดเริ่มต้นสำหรับ 06-experiments