jsonquotefixer: แพ็กเกจ Python สำหรับจัดระเบียบเอาต์พุต JSON ที่มีโครงสร้างผิดจาก LLM ให้เรียบร้อย
(github.com/abzb1)สวัสดีครับ!
เวลาใช้งานโมเดล AI หลายครั้งก็มักจำเป็นต้องใช้ เอาต์พุต JSON แบบมีโครงสร้าง
ตัวผมเองก็เจอสถานการณ์ที่ต้องใช้เอาต์พุต JSON บ่อยมากระหว่างทำหลายโปรเจกต์ และทุกครั้งก็มักเจอความไม่สะดวกแบบเดิมซ้ำ ๆ
ปัญหาหลัก ๆ ของเอาต์พุตแบบมีโครงสร้างจาก LLM มีอยู่ 3 อย่างครับ
-
การจัดการโค้ดบล็อก(````json … ``` )
LLM ส่วนใหญ่มักคืนค่า JSON มาในรูปโค้ดบล็อกที่ครอบด้วย backticks สามตัวและคีย์เวิร์ดjson
แม้จะจัดการได้ด้วย regex ง่าย ๆ แต่พอต้องทำซ้ำทุกครั้งก็ชวนให้รำคาญ ถ้าจัดการได้ในระดับแพ็กเกจด้วยคำสั่งบรรทัดเดียวจะสะดวกกว่ามาก -
ปัญหาเครื่องหมายอัญประกาศซ้อนกัน
ใน JSON สตริงต้องครอบด้วยเครื่องหมายอัญประกาศคู่(") แต่ถ้าภายในสตริงมีเครื่องหมายคำพูดอีกชั้น ก็จำเป็นต้อง escape เป็น\"
LLM มักพลาดการแยกความต่างนี้และคืนค่า JSON ที่ไม่ถูกต้อง จึงจำเป็นต้องมีฟังก์ชันที่ช่วยแก้ไขปัญหานี้ให้อัตโนมัติ -
เครื่องหมายอัญประกาศอัจฉริยะ (smart quotes / Unicode quotes)
ประโยคที่ LLM สร้างมักมีเครื่องหมายอัญประกาศแบบ“ ”ปะปนอยู่
ซึ่งไม่ตรงตามมาตรฐาน JSON จึงควรสามารถแปลงทั้งหมดให้เป็นเครื่องหมายอัญประกาศคู่ปกติ(") ได้
พอลองค้นดูก็พบว่ามีโปรเจกต์ ai-json-fixer ที่พัฒนาด้วย Node.js อยู่แล้ว แต่ใน ecosystem ของ Python ยังไม่มีเครื่องมือที่เหมาะนัก
ก็เลยทำขึ้นมาเองเลยครับ! (ร่วมกับอาจารย์ GPT ฮ่าๆ)
ติดตั้งและใช้งานได้ง่าย ๆ ด้วย pip
pip install jsonquotefixer
ลองใช้กันดู แล้วช่วยวิจารณ์กันหนัก ๆ ได้เลยครับ ฮ่าๆ
2 ความคิดเห็น
น่าจะดีถ้ามีตัวอย่างบน GitHub ในรูปแบบ ipynb เพื่อให้ดูได้ชัดเจน
เวลาเชิงลำดับคือ n (ความยาวของลำดับ)!