การผูกมัดทันที

Apr 08 2023
มีการเกิดขึ้นของเครื่องมือ Visual Programming ที่อำนวยความสะดวกในการผูกมัดของโมเดลภาษาขนาดใหญ่พร้อมต์ในแอปพลิเคชัน ซึ่งส่วนใหญ่เป็น UI แบบสนทนา ความเป็นมา เฟรมเวิร์กการพัฒนาแชทบอทจำนวนหนึ่งได้รวม LLM ไว้ในฟังก์ชันการทำงาน

มีการเกิดขึ้นของเครื่องมือ Visual Programming ที่อำนวยความสะดวกในการผูกมัดของโมเดลภาษาขนาดใหญ่พร้อมต์ในแอปพลิเคชัน ซึ่งส่วนใหญ่เป็น UI แบบสนทนา

พื้นหลังบางส่วน

เฟรมเวิร์กการพัฒนาแชทบอทจำนวนมากได้รวม LLM ไว้ในฟังก์ชันการทำงาน ฟังก์ชันนี้ควรเสริมประสิทธิภาพการพัฒนาแชทบอทที่มีอยู่ อย่างไรก็ตาม การใช้เฟรมเวิร์กการพัฒนาแชทบอทของ LLM เหล่านี้มีลักษณะที่คล้ายคลึงกันมาก

การใช้งานครั้งแรกนี้ตามมาด้วยคลื่นลูกที่สองของการสร้างโฟลว์การสนทนาและผู้ช่วยออกแบบการสนทนา ซึ่งเป็นผู้นำโดยCognigy และตามมาด้วย Yellow AI และ Kore AI

L LMs มีความหลากหลายสูงพร้อมความสามารถแบบปลายเปิด

Voiceflow & Botpress ได้แนะนำการทำงานที่คล้ายกับการผูกมัดแบบพรอมต์ ในขอบเขตที่สามารถส่งพรอมต์ไปยัง LLM และสามารถแยกค่าออกจากการตอบกลับที่สร้างขึ้นได้

ในบทความนี้ ฉันต้องการพิจารณาหลักการพื้นฐานเมื่อออกแบบและสร้างอินเตอร์เฟสการเขียนโปรแกรมด้วยภาพแบบเนทีฟพรอมต์พร้อมท์

Native Prompt Chaining ส่วนต่อประสานผู้ใช้

เมื่อเชื่อมโยงคำสั่ง Large Language Model ผ่าน Visual Programming UI ส่วนที่ใหญ่ที่สุดของฟังก์ชันจะเป็น GUI ซึ่งอำนวยความสะดวกในกระบวนการสร้าง

ด้านล่างนี้คือรูปภาพของ GUI สำหรับวิศวกรรมพรอมต์ และการเขียนเชนพรอมต์ที่อาจมีลักษณะเช่นนี้ การออกแบบนี้เกิดขึ้นจากการวิจัยที่ดำเนินการโดย University of Washington และ Google

แหล่งที่มา

อินเทอร์เฟซจำเป็นต้องนำเสนอรายละเอียดในหลายระดับของกระบวนการสร้าง เมื่อพิจารณาถึงกระบวนการผูกมัด จะเห็นว่าระหว่างโซ่มีการเชื่อมต่อ

เครื่องมือผูกมัดพร้อมต์หรือ LLM จะต้องรองรับการแปลงข้อมูลระหว่างขั้นตอนต่างๆ ของเชน เมื่อพิจารณาว่าในกรณีส่วนใหญ่ LLM จะส่งคืนข้อมูลที่ไม่มีโครงสร้าง จึงจำเป็นต้องมีการจัดโครงสร้างและการแปลงข้อมูลในระดับหนึ่ง

องค์ประกอบที่สองคือลักษณะที่คาดเดาไม่ได้เล็กน้อยของ LLM LLM สามารถสร้างการตอบกลับได้หลายรายการต่อพรอมต์เดียวกัน สิ่งนี้ก่อให้เกิดความท้าทายในการรวบรวมการตอบสนองที่ไม่ต้องการในห่วงโซ่พร้อมท์ ที่ซึ่งข้อมูลที่ไม่คาดคิดแพร่กระจายไปทั่วห่วงโซ่

เนื่องจากไม่มีการคอมไพล์โค้ด จึงสามารถปรับแต่งพรอมต์ในขณะรันไทม์ได้โดยไม่ต้องมีการฝึกโมเดลเฉพาะใดๆ

แอปพลิเคชัน LLM Chained สามารถดูดซับงานใหม่ ๆ ได้อย่างง่ายดาย เพียงแค่ใช้คำสั่งภาษาธรรมชาติที่เรียกว่าพรอมต์

จริงอยู่ แอปพลิเคชันในโลกแห่งความเป็นจริงจำนวนมากเกี่ยวข้องกับงานหลายขั้นตอนที่ซับซ้อนและมักจะขนานกัน ซึ่งก่อให้เกิดความท้าทายสำหรับอินสแตนซ์เดียวของห่วงโซ่

เมื่อพิจารณาจากสแต็กฟังก์ชันด้านล่าง แอปพลิเคชันการผูกมัดที่รวดเร็วซึ่งอิงตามโมเดลภาษาขนาดใหญ่ (LLM) และ AI เชิงกำเนิดควรมีองค์ประกอบหลักสามส่วน:

⏺ ปริญญามหาบัณฑิต

⏺ ตัวช่วย

⏺ การสื่อสาร

ดัดแปลงมาจากแหล่งที่มา

ปริญญามหาบัณฑิต

สำหรับเชน/โหนดจำนวนมาก สามารถใช้เอาต์พุต LLM ที่ไม่มีการแก้ไขตามที่ LLM ให้มา ในกรณีส่วนใหญ่มุมมองนี้จะแสดงต่อผู้ใช้ หรืออาจจำเป็นต้องมีการแปลงข้อมูลสำหรับเชนถัดไปในแอพ LLM (หรือที่เรียกว่า Gen App)

เอาต์พุต LLM จะกำหนดว่าเชนใดที่จะแยกออกไป ดังนั้นขอบของเชน/โหนดเหล่านี้จำเป็นต้องมีกฎและเงื่อนไข

การพิจารณาครั้งสุดท้ายคือการใช้ LLM เป็นตัวแยกประเภท LLMs สามารถนำไปใช้ในความสามารถในการสร้างหรือการคาดการณ์ AI เจเนอเรทีฟเป็นด้านที่ได้รับความนิยมและเข้าถึงได้มากที่สุดของ LLM การคาดเดานั้นยุ่งยากกว่าและต้องมีการปรับแต่งเพิ่มเติมหรืออย่างน้อยก็แม่นยำ

การใช้ประโยชน์จาก LLM เป็นตัวแยกประเภท (จึงเป็นการทำนาย)ภายในเชน ทำให้โหนดการตัดสินใจของแอปพลิเคชันเชนเชื่อมโยงมีความชาญฉลาดและยืดหยุ่น

จะมีการล่อลวงให้ตัดสินใจเขียนโค้ด/สคริปต์อย่างรวดเร็ว เสมอ เรียกอีกอย่างว่าจุดเปลี่ยนโซ่ นี่เป็นการแก้ไขด่วน แต่แนะนำความแข็งแกร่งอีกครั้งในแอปพลิเคชัน LLM Chaining

ตัวช่วย

ผู้ช่วยเหลือช่วยในการประเมินผล LLM โดยพิจารณาจากแง่มุมต่าง ๆ เช่น ความสุภาพ ความเห็นอกเห็นใจ ฯลฯ ผู้ช่วยเหลือยังสามารถจัดลำดับใหม่หรือส่งคำแนะนำอีกครั้ง

เนื่องจากความละเอียดเป็นข้อกำหนดสำหรับการใช้งานจริง การปรับแต่งแอปพลิเคชันที่เชื่อมต่อแบบพรอมต์จึงมีความสำคัญ จำเป็นต้องมีรูปแบบการเขียนสคริปต์สำหรับการประมวลผลและการแปลงข้อมูล

การเขียนสคริปต์สรุปการพัฒนาที่มอบให้กับผู้เขียนห่วงโซ่เพื่อใช้มาตรการควบคุม การแปลงข้อมูล และอื่นๆ

การสื่อสาร

การสื่อสารเกิดขึ้นในสองสามระดับ มีการป้อนข้อมูลผู้ใช้ในรูปแบบของข้อมูลการสนทนาที่ไม่มีโครงสร้าง

การดำเนินการอื่นๆ ของผู้ใช้ เช่น การขอให้ผู้ใช้เลือกคำตอบที่ดีที่สุด หรือทำให้คลุมเครือตามความเป็นไปได้บางประการ

และแน่นอนว่าระบบของบุคคลที่สาม (API) จะถูกสอบสวนสำหรับการนำองค์กรหรือการใช้งานจริงไปใช้

พิจารณาการออกแบบ PromptChainer

อิน เทอร์เฟซ PromptChainerมีวิชวลไลเซอร์มุมมองลูกโซ่ซึ่งสามารถสร้าง แก้ไข อ่าน และลบโครงสร้างลูกโซ่ที่มี node-edges หรือ “between-chain” ได้ [A]

โปรแกรมดูโหนดรองรับการใช้งาน ปรับปรุง และทดสอบแต่ละโหนดหรือเชน [B] การแก้ไขพร้อมต์สำหรับแต่ละโหนดสามารถทำได้ที่นี่

PromptChainer ยังรองรับการรัน chain end-to-end [C] พร้อมตัวเลือกในการล้างแคช ดูบันทึกการรัน ฯลฯ

แหล่งที่มา

จากการวิจัยเชิงปริมาณที่ดำเนินการโดย University of Washington และ Google Research ค้นพบว่าผู้ใช้สร้างและดีบักเชนได้อย่างไร:

[1] ผู้ใช้ต้องการสร้างเครือข่ายที่ไม่เพียงแต่ลดข้อจำกัดของ LLM เท่านั้น แต่ยังทำให้แอปพลิเคชันขยายและปรับขนาดได้ด้วย

[2] ผู้ใช้บางคนสร้างทีละขั้นตอนของห่วงโซ่ในขณะที่คนอื่นร่างตัวยึดนามธรรมสำหรับขั้นตอนทั้งหมดก่อนที่จะกรอกข้อมูลลงไป

[3] การโต้ตอบระหว่างพรอมต์ LLM และเชนหลายรายการอาจซับซ้อน โดยต้องมีการดีบักพรอมต์ทั้งแบบโลคัลและโกลบอล

เมื่อพิจารณาจากภาพด้านล่าง นี่คือคำอธิบายสำหรับแต่ละโหนดหรือเชน:

[1] กำหนดอินพุตให้กับเชน

[2,3] ใช้เอาต์พุต LLM เพื่อกรองและแยกอินพุต

[4] ใช้เอาต์พุต LLM โดยตรงเป็นเอาต์พุตโหนด

[5] ฟังก์ชัน JavaScript ที่นำไปใช้ล่วงหน้าสำหรับการแปลงข้อมูลทั่วไป

[6] ใช้เอาต์พุต LLM โดยตรงเป็นเอาต์พุตโหนด

[7] เรียกใช้ฟังก์ชันภายนอกเพื่อเชื่อมต่อบริการระดับมืออาชีพกับ LLM

[8] ฟังก์ชัน JS ที่ผู้ใช้กำหนด ในกรณีที่ตัวช่วยที่กำหนดไว้ล่วงหน้าไม่เพียงพอ

[9] ใช้เอาต์พุต LLM โดยตรงเป็นเอาต์พุตโหนด

[10] กรองหรือจัดอันดับผลงาน LLM ใหม่ตามเกณฑ์ที่มนุษย์ออกแบบขึ้น เช่น ความสุภาพ เปิดใช้งานการแก้ไขภายนอก (ผู้ใช้ปลายทาง) บนจุดข้อมูลระดับกลาง

ดัดแปลงมาจากแหล่งที่มา

สรุปแล้ว

ปัจจุบันมีคำศัพท์บางคำที่ใช้สำหรับแอปพลิเคชันที่สร้างบน Foundation Models และ Large Language Models ข้อกำหนดเหล่านี้ได้แก่ Gen Apps, Generative Apps, LLM Apps, Prompt Chaining, LLM Chaining และอื่นๆ

ก็เพียงพอแล้วที่จะกล่าวได้ว่ามีความจำเป็นต้องสร้างโมเดลขนาดใหญ่และใช้ประโยชน์จากพลังของ LLM

ความต้องการนี้จะได้รับการสนับสนุนโดยหลักการต่อไปนี้:

  1. พร้อมท์
  2. ใช้ประโยชน์จากความสามารถในการทำนายและสร้างสรรค์ของ LLM
  3. การผูกมัดของพรอมต์; ทั้งแบบคู่ขนานและแบบอนุกรม
  4. โปรแกรมแก้ไขภาพสำหรับการเขียนโปรแกรมเชน/โหนดและเอดจ์ ระหว่างโหนด/เชน
  5. การแปลงข้อมูลการตอบสนอง LLM
  6. LLM Chained Applications จะเป็นการสนทนาสำหรับทั้งอินพุตและเอาต์พุต หรือเอาต์พุตยังสามารถห่อหุ้มคอมโพเนนต์ RPA ได้อีกด้วย

ตอนนี้ฉันเป็นหัวหน้าผู้สอนศาสนา @ HumanFirst ฉันสำรวจและเขียนเกี่ยวกับทุกสิ่งที่จุดตัดของ AI และภาษา ตั้งแต่LLMs , Chatbots , Voicebots , Development Frameworks , Data-Centric Latent Spaceและอื่นๆ

https://www.linkedin.com/in/cobusgreyling
Cobus Quadrant™ ของการออกแบบ NLU Cobus Quadrant™ ของความสามารถในการออกแบบการสนทนา

PromptChainer: การผูกมัดโมเดลภาษาขนาดใหญ่พรอมต์ผ่านการเขียนโปรแกรมด้วยภาพ