• ในช่วงต้นปี 2023 LinkedIn เริ่มเปิดตัวพอร์ตโฟลิโอผลิตภัณฑ์ที่ใช้ความสามารถของ GenAI
  • ผลิตภัณฑ์ GenAI ระยะแรกเริ่มจากรูปแบบง่าย ๆ แบบ "ป้อนพรอมต์ แล้วได้สตริงผลลัพธ์" ก่อนจะพัฒนาไปเป็นประสบการณ์เอเจนต์เชิงสนทนาที่รองรับ contextual memory
  • แนวทางนี้ถูกนำมาใช้ผ่านการสร้างเทคโนโลยีสแตกสำหรับแอปพลิเคชัน GenAI เพื่อรักษาสมดุลระหว่าง time-to-market และ leverage ในระยะยาว

Genesis and Evolution

  • จำเป็นต้องสร้างเฟรมเวิร์กที่ให้กลไกมาตรฐานสำหรับงานที่ใช้ร่วมกัน
  • เนื่องจากสแตกออนไลน์เซิร์ฟวิ่งส่วนใหญ่ของ LinkedIn เขียนด้วย Java ในช่วงแรกจึงเริ่มจาก Java midtier แบบใช้ร่วมกัน
  • เมื่อ use case เพิ่มขึ้น midtier นี้กลายเป็นคอขวดทั้งด้านการพัฒนาและการปฏิบัติการ จึงแยกออกเป็นบริการ Java midtier หลายตัวตามแต่ละ use case
  • วิศวกร AI นิยมใช้ Python สำหรับเวิร์กโฟลว์ออฟไลน์ที่อิง LLM, prompt engineering และการประเมินผล
  • ในระยะสั้นตัดสินใจคงสแตกออนไลน์และออฟไลน์ที่แยกส่วนไว้ แต่ในระยะยาวเลือกใช้ Python กับการออนไลน์เซิร์ฟวิ่งด้วย
  • สร้างเฟรมเวิร์ก Python สำหรับออนไลน์เซิร์ฟวิ่งบนพื้นฐานของโปรเจ็กต์โอเพนซอร์ส LangChain
  • เริ่มโครงการเพื่อเปิดใช้การรองรับ Python สำหรับ dependency ด้านโครงสร้างพื้นฐานหลัก โดยเน้น Python เป็นหลัก
  • ปัจจุบันเฟรมเวิร์กแอปพลิเคชัน GenAI เป็น thin wrapper ที่สร้างอยู่บน LangChain

การจัดการพรอมต์

  • prompt engineering เป็นกลไกหลักในการ "เขียนโปรแกรม" ให้กับ LLM
  • ในช่วงแรกใช้การแทรกสตริงด้วยตนเองในโค้ด แต่มีแนวโน้มเกิดข้อผิดพลาดและไม่สามารถขยายได้
  • นำคอมโพเนนต์ Prompt Source of Truth มาใช้ และทำให้การใช้ภาษาเทมเพลต Jinja เป็นมาตรฐาน
  • เขียนไลบรารี prompt resolution ใหม่จาก Java เป็น Python
  • เมื่อมี UI แบบสนทนาเกิดขึ้น จึงต้องมีโครงสร้างเพิ่มเติมสำหรับบทบาทของมนุษย์และ AI ในบทสนทนา
  • สุดท้ายแนวทางก็ลงตัวที่ OpenAI Chat Completions API

การทำงานอัตโนมัติผ่านสกิล

  • ขยาย skill abstraction ไปสู่แอปพลิเคชัน GenAI และใช้เป็นกลไกสำหรับทำงานอัตโนมัติ
  • ระยะแรกสร้างด้วยโค้ดแบบกำหนดเองที่ห่อ API ภายในและภายนอกของ LinkedIn โดยใช้ JSON schema ที่เป็นมิตรกับ LLM
  • พบปัญหาอย่างการทำสกิลซ้ำซ้อน การเปลี่ยนแปลงของ downstream skill และการที่นักพัฒนาต้องระบุสกิลด้วยตนเอง
  • จึงนำแนวคิด Skill Inversion มาใช้ เพื่อให้ฝั่ง downstream เป็นผู้กำหนดสกิลและเปิดให้แอปที่เรียกใช้นำไปใช้
  • มีการทำให้กระบวนการเข้าถึง พัฒนา และปฏิบัติการของสกิลง่ายขึ้นผ่านบริการ skill registry แบบรวมศูนย์, build plugin และเครื่องมือ LangChain แบบไดนามิก
  • ขณะนี้กำลังพัฒนาสแตกต่อไปโดยค่อย ๆ สร้าง skill abstraction สำหรับทุก API เพื่อให้ LLM โต้ตอบได้อย่างราบรื่น

การรับรู้บริบทและการปรับให้เหมาะกับแต่ละบุคคล

  • เนื่องจาก LLM เป็น stateless โดยพื้นฐาน จึงทำให้การรับรู้บริบทและการปรับให้เหมาะกับแต่ละบุคคลทำได้ยาก
  • ในช่วงแรกใช้ Couchbase หรือ Espresso DB เป็นสตอเรจ และแต่ละทีมรับผิดชอบการตั้งค่า DB รวมถึงการเขียน/อ่านข้อมูลเอง
  • เนื่องจาก context window ของ LLM มีข้อจำกัด จึงต้องมีความสามารถด้าน semantic search โดยใช้ embedding และการสรุป
  • สร้างโครงสร้างพื้นฐานด้าน conversational memory โดยใช้ประโยชน์จากสแตก messaging ของ LinkedIn
  • นำแนวคิด Experiential Memory ซึ่งต่อยอดจากประสบการณ์ปฏิสัมพันธ์ระหว่างผู้ใช้กับแอปพลิเคชันมาใช้
  • ผสานสิ่งนี้เข้ากับเฟรมเวิร์กแอปพลิเคชัน GenAI เพื่อให้นักพัฒนาใช้งานได้อย่างราบรื่น

การอนุมานโมเดลและการปรับจูนละเอียด

  • ในช่วงแรกใช้เฉพาะ LLM ที่ให้บริการผ่าน Azure OpenAI Service
  • LLM อย่าง Llama ที่ผ่านการปรับจูนละเอียดสำหรับงานเฉพาะของ LinkedIn แสดงคุณภาพที่ใกล้เคียงหรือดีกว่าโมเดลเชิงพาณิชย์
  • กำลังพยายามทำให้ประสบการณ์ของนักพัฒนาแอปโปร่งใสเหมือนกันทั้งสำหรับโมเดลภายนอกและภายใน
  • เลเยอร์อนุมานเปิดเผย OpenAI Chat Completions API ให้กับ LLM ทั้งหมด
  • สามารถสลับระหว่างโมเดล on-premises และโมเดลภายนอกได้อย่างง่ายดายผ่าน configuration hook ของเฟรมเวิร์กแอปพลิเคชัน

การย้ายระบบ

  • สิ่งสำคัญคือการย้ายจากโซลูชันแบบปรับแต่งเฉพาะเดิมไปสู่โซลูชันมาตรฐานอย่างรวดเร็ว
  • ทีมขนาดเล็กแบบ lean ที่ประกอบด้วยวิศวกรซึ่งมีความรู้เชิงลึกทั้งในสแตก Java และสแตกใหม่เป็นผู้ดูแลการย้ายระบบ
  • ใช้แนวทางแบบค่อยเป็นค่อยไป โดยย้ายแต่ละคอมโพเนนต์ทีละตัว
  • เริ่มจากแอปที่เรียบง่ายและขนาดเล็ก ก่อนขยับไปสู่แอปที่ซับซ้อนและขนาดใหญ่
  • จับคู่วิศวกรอาวุโสกับนักพัฒนา Python หน้าใหม่ เพื่อให้เรียนรู้ Python จากงานจริง

ความคิดส่งท้าย

  • เทคโนโลยีสแตกใหม่สำหรับแอปพลิเคชัน GenAI นี้รองรับการพัฒนาแบบ AI-first และวางรากฐานที่แข็งแรงสำหรับการสร้างแอป GenAI อย่างมีประสิทธิภาพและมีความรับผิดชอบ
  • จะมีบทบาทสำคัญต่อการบรรลุวิสัยทัศน์ในการมอบโอกาสทางเศรษฐกิจให้กับทุกคนในกำลังแรงงานทั่วโลก
  • ยังมีความท้าทายอีกมากที่ต้องแก้ไข
  • เมื่อแนวหน้าของประสบการณ์ผลิตภัณฑ์กำลังขยับจาก conversational assistant ไปสู่ AI agent ความต้องการใหม่ทั้งด้านความสามารถและการปฏิบัติการก็เพิ่มขึ้นอย่างรวดเร็ว และจะมีการเปิดเผยรายละเอียดเพิ่มเติมในภายหลัง

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

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