ชุดเครื่องมืออัตโนมัติสำหรับจดหมายข่าวบนฐาน LLM ที่สร้างโดยนักพัฒนาจากสายโบราณคดี
(github.com/kimhongyeon)สวัสดีครับ ผมเป็นวิศวกรที่แม้จะเรียนเอกโบราณคดีในมหาวิทยาลัย แต่ก็ผันตัวมาเป็นนักพัฒนาเพื่อแก้ปัญหางานทำมือที่ไม่สิ้นสุด (พูดตรงตัวคือขุดดินและงานใช้แรงหนัก)
หลังจากคิดอยู่มานาน ผมขอแชร์โอเพนซอร์สเอนจินอัตโนมัติสำหรับจดหมายข่าว (LLM Newsletter Kit) ที่ผมสร้างขึ้นมาเพื่อใช้เอง
ตอนนี้เอนจินนี้เป็นแกนหลักของจดหมายข่าวด้านมรดกวัฒนธรรม "Research Radar" ที่ผมดูแลอยู่ โดยยังคงรักษาอัตราการคลิก (CTR) ไว้ที่ 15% และปรับต้นทุน LLM API ต่อการส่งแต่ละครั้งให้อยู่ราว $0.20
มันไม่ใช่แค่การรวบรวมลิงก์ แต่เป็นพายป์ไลน์ที่ให้ LLM วิเคราะห์และสรุปความรู้ในโดเมนเฉพาะทางเพื่อมอบอินไซต์
เบื้องหลังการพัฒนาและเรื่องเล่าตรงไปตรงมา
ด้วยความที่มันเป็นโค้ด ผมจึงคิดว่าเมื่อเทียบกับเครื่องมือ no-code แล้วอาจมีอุปสรรคในการเริ่มต้นใช้งาน และอาจไม่ได้ถูกใช้แพร่หลายในวงกว้างนัก ตั้งแต่แรกเป้าหมายของผมก็ไม่ใช่การทำให้มันถูกใช้กันอย่างแพร่หลาย แต่คือการแก้ปัญหาความต้องการที่ชัดเจนของตัวเอง
ตอนแรกมันเป็น "จดหมายข่าวเฉพาะทางด้านมรดกวัฒนธรรม" ที่ทำไว้ดูเองคนเดียว หลังจากนั้นจึงเปิดให้ใครก็สมัครรับได้
พอพัฒนาไปเรื่อย ๆ ก็พบว่าซอร์สโค้ดกับลอจิกของโดเมนมรดกวัฒนธรรมผูกติดกันแน่นเกินไป เพื่อแก้ปัญหานี้ ผมจึงทำ abstraction ด้วยโครงสร้าง DI (dependency injection) แล้วแยกออกมาเป็นไลบรารีที่ใครก็ใช้งานได้
npm i @llm-newsletter-kit/core
ตอนนี้บริการของผมเองก็เลิกใช้ legacy code แบบเดิมที่ผูกติดแน่นในอดีต และกำลัง migrate มารันบนโอเพนซอร์สคอร์ตัวนี้อยู่
ปรัชญาการออกแบบ: "Logic in code, reasoning in AI"
เหตุผลที่ผมเลือกโค้ดแทนเครื่องมือ no-code ก็มาจากปรัชญาการออกแบบนี้เอง "ให้ลอจิกอยู่ในโค้ด ให้การให้เหตุผลอยู่ใน AI และให้การเชื่อมต่ออยู่ในสถาปัตยกรรม (Logic in code, reasoning in AI, connections in architecture)."
เครื่องมือ no-code นั้นสะดวก แต่มีข้อจำกัดที่ชัดเจนเมื่อต้องทำลอจิกซับซ้อน ผมจึงควบคุม workflow ที่สำคัญด้วยโค้ดแบบ type-safe (TypeScript) และมอบหมายเฉพาะการวิเคราะห์เชิงอัจฉริยะให้ LLM ทำ ทำให้สามารถสร้างลอจิกที่ประณีตอย่าง self-reflection หรือการตรวจสอบหลายขั้นตอนได้
คุณสมบัติหลัก
การออกแบบแบบ Type-First & DI: เขียนด้วย TypeScript และทุกขั้นตอนตั้งแต่การ crawl, วิเคราะห์, ไปจนถึงการ generate ล้วนอยู่บนพื้นฐานของ Provider interface จึงสลับเปลี่ยนได้เหมือนถอดเปลี่ยนชิ้นส่วน
Bring Your Own Scraper: ไม่ถูกล็อกอินกับไลบรารีใดไลบรารีหนึ่ง จะเป็น Puppeteer, Cheerio หรือ parser ที่ใช้ AI ก็สามารถ inject แบบ asynchronous เข้ามาใช้ได้ตามต้องการ
Production Ready: พร้อมใช้งานจริงในระบบ production โดยมี retry logic, chain options และ test coverage 100%
ลิงก์
- GitHub (Core): https://github.com/kimhongyeon/llm-newsletter-kit-core
- ตัวอย่างผลลัพธ์จริง (Research Radar): https://heripo.com/research-radar-newsletter-example.html
- โค้ด implementation อ้างอิง: https://github.com/kimhongyeon/heripo-research-radar
ขอบคุณครับ ยินดีรับฟีดแบ็กเสมอ!
ยังไม่มีความคิดเห็น