• ทีม Node.js ของ Red Hat กำลังทดลองแนวทางผสานรวม LLM กับ Node.js และ TypeScript/JavaScript
  • มีการเปรียบเทียบหลายเฟรมเวิร์ก โดยเน้นตรวจสอบเป็นพิเศษที่ การเรียกใช้ tool/function และวิธีการทำงานของเอเจนต์
  • วิเคราะห์ความสามารถของ Llama Stack ที่เพิ่งเปิดตัว และความเป็นไปได้ในการผสานรวมกับ Node.js

วิธีตั้งค่าและรัน Llama Stack

  • Llama Stack เป็นเฟรมเวิร์กแบบโมดูลาร์ที่เผยแพร่หลายอิมพลีเมนเทชัน โดยมีเป้าหมายเพื่อทำให้ API เป็นมาตรฐาน
  • หากใช้คอนเทนเนอร์ที่อิงกับ Ollama จะเป็นวิธีรันที่ง่ายที่สุด
  • ตัวอย่างสคริปต์รันสำหรับตั้งค่าเซิร์ฟเวอร์:
    • โมเดล: meta-llama/Llama-3.1-8B-Instruct
    • พอร์ต: 8321
    • IP ของเซิร์ฟเวอร์ Ollama: 10.1.2.38
  • ต้องรันโมเดลใน Ollama ไว้ล่วงหน้า และควรใช้งานอย่างน้อยวันละครั้งเพื่อคง keepalive
  • สามารถดูสคีมา API และทดสอบแบบอินเทอร์แอ็กทีฟได้ผ่าน document endpoint (/docs)

ตัวอย่างแอปพลิเคชัน Node.js แรก

  • ใช้ไลบรารี llama-stack-client-typescript เพื่อสื่อสารกับ Llama Stack
  • นิยามทูล 2 ตัว:
    • favorite_color_tool: ให้ข้อมูลสีตามเมือง/ประเทศ
    • favorite_hockey_tool: ให้ข้อมูลทีมฮอกกี้น้ำแข็งตามเมือง/ประเทศ
  • ทดสอบลำดับการเรียกใช้ทูลผ่านสถานการณ์ถามตอบ
  • ปัญหาเริ่มต้น: หากทูลไม่มีข้อมูลที่ต้องการ จะไม่มีข้อความชี้นำที่ชัดเจนแสดงออกมา
  • วิธีแก้: แทรกคำว่า "assistant" ในข้อความตอบกลับเพื่อให้ลำดับการทำงานลื่นไหลขึ้นอย่างเป็นธรรมชาติ

วิธีจัดการการเรียกใช้ tool ใน Llama Stack

  • เมื่อใช้ API chatCompletion() จำเป็นต้องจัดการการเรียกใช้ทูลด้วยตนเอง
  • ใช้ฟังก์ชัน handleResponse() เพื่อตรวจจับคำขอทูลและส่งผลลัพธ์กลับไปในรูปแบบข้อความอีกครั้ง
  • โดยปกติ tool_choice ถูกตั้งเป็น "auto" แต่หากมีทูลอยู่ ระบบจะมีแนวโน้มสูงที่จะพยายามใช้งานทูล
  • พบว่าต่อให้คำถามไม่เกี่ยวข้องกับทูล ระบบก็ยังพยายามใช้ทูล และเมื่อเลิกพยายามแล้วจะลงเอยด้วยการตอบว่า ‘ไม่สามารถตอบได้’

การทดลองผสานรวม MCP กับ Llama Stack

  • ผ่าน MCP(Model Context Protocol) สามารถ โฮสต์ทูลไว้บนเซิร์ฟเวอร์ภายนอก และแชร์ให้หลายเฟรมเวิร์กใช้งานร่วมกันได้
  • เซิร์ฟเวอร์ MCP ใช้ Supergateway เพื่อบริดจ์เซิร์ฟเวอร์แบบ stdio ไปเป็นรูปแบบ SSE
  • หลังลงทะเบียนเซิร์ฟเวอร์ MCP แล้ว สามารถใช้ Llama Stack agent API เพื่อเรียกใช้ทูล MCP อัตโนมัติได้
  • agent API จะ:
    • จัดการสถานะ/ข้อความให้อัตโนมัติ
    • ให้เฟรมเวิร์กจัดการลำดับการเรียกใช้ทูลภายในเอง
  • อย่างไรก็ตาม จะไม่สามารถดูล็อกการเรียกใช้ทูลได้โดยตรง และตรวจสอบได้เพียงคำตอบสุดท้ายเท่านั้น

การใช้ MCP เพื่อเข้าถึงสภาพแวดล้อมภายในเครื่อง

  • สามารถรันเซิร์ฟเวอร์ MCP ภายในเครื่องด้วยรูปแบบ stdio แล้วเชื่อมต่อเข้ากับ Llama Stack ได้
  • จำเป็นต้องมีโค้ดสำหรับแปลง JSON นิยามทูลของเซิร์ฟเวอร์ MCP ให้เป็นรูปแบบที่เข้ากันได้กับ Llama Stack
  • ผ่าน mcpClient.callTool() สามารถส่งผลลัพธ์ของทูลกลับเข้าไปในลำดับการตอบของ LLM ได้
  • ด้วยวิธีนี้ จึงสามารถสร้างสถานการณ์ใช้งานที่เข้าถึงสภาพแวดล้อมของแอปในเครื่องได้ โดยไม่ต้องพึ่งเซิร์ฟเวอร์แบบรวมศูนย์

สรุป

  • มีการฝึกปฏิบัติการผสานรวม LLM และการเรียกใช้ทูลผ่าน Llama Stack ในสภาพแวดล้อม Node.js
  • ครอบคลุมหลายแนวทาง เช่น ทูลภายในเครื่อง, MCP ระยะไกล และ MCP ภายในเครื่อง พร้อมตัวอย่างการใช้งานที่หลากหลาย
  • โดยเฉพาะสำหรับนักพัฒนา JavaScript/TypeScript บทความนี้นำเสนอตัวอย่างโค้ดและลำดับการทำงานที่นำไปใช้ได้จริง
  • เป็นจุดเริ่มต้นที่มีประโยชน์สำหรับนักพัฒนาที่ต้องการผสานรวม LLM กับ Node.js ในอนาคต

แหล่งข้อมูลเพิ่มเติม

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น