This template can be used for both Azure AI Studio and Azure Machine Learning.
It can be used for both AZURE and LOCAL execution.
It supports all types of flow - python Class flows, Function flows and YAML flows.
It supports Github, Azure DevOps and Jenkins CI/CD orchestration.
It supports pure python based Evaluation as well using promptflow-evals package.
It should be used for INNER-LOOP Experimentation and Evaluation.
It should be used for OUTER-LOOP Deployment and Inferencing.
NOTE: A new FAQ section is added to help Engineers, Data Scientist and developers find answers to general questions on configuring and using this template.
คำถามที่พบบ่อยที่นี่
Large Language Model Operations หรือ LLMOps ได้กลายเป็นรากฐานสำคัญของวิศวกรรมที่มีประสิทธิภาพและ LLM กระตุ้นให้เกิดการพัฒนาและปรับใช้แอปพลิเคชัน เนื่องจากความต้องการแอปพลิเคชันที่เกิดจาก LLM ยังคงเพิ่มสูงขึ้น องค์กรต่างๆ พบว่าตัวเองต้องการกระบวนการที่เหนียวแน่นและคล่องตัวในการจัดการวงจรชีวิตแบบครบวงจร
การเพิ่มขึ้นของ AI และโมเดลภาษาขนาดใหญ่ (LLM) ได้เปลี่ยนแปลงอุตสาหกรรมต่างๆ ทำให้สามารถพัฒนาแอปพลิเคชันที่เป็นนวัตกรรมใหม่ด้วยความสามารถในการทำความเข้าใจและการสร้างข้อความที่เหมือนมนุษย์ การปฏิวัติครั้งนี้ได้เปิดโอกาสใหม่ๆ ในด้านต่างๆ เช่น การบริการลูกค้า การสร้างเนื้อหา และการวิเคราะห์ข้อมูล
ในขณะที่ LLM พัฒนาอย่างรวดเร็ว ความสำคัญของ Prompt Engineering ก็ชัดเจนมากขึ้น พร้อมท์วิศวกรรมมีบทบาทสำคัญในการควบคุมศักยภาพของ LLM อย่างเต็มประสิทธิภาพโดยการสร้างการแจ้งเตือนที่มีประสิทธิภาพซึ่งรองรับสถานการณ์ทางธุรกิจที่เฉพาะเจาะจง กระบวนการนี้ช่วยให้นักพัฒนาสามารถสร้างโซลูชัน AI ที่ปรับแต่งโดยเฉพาะ ทำให้ AI เข้าถึงได้มากขึ้นและมีประโยชน์ต่อผู้ชมในวงกว้าง
เป็นกรอบการทดลองและประเมินผลสำหรับ Prompt Flow ไม่ใช่ไปป์ไลน์ CI/CD สำหรับ Prompt Flow แม้ว่าจะรองรับก็ตาม มีชุดคุณสมบัติมากมายสำหรับการทดลอง การประเมิน การปรับใช้ และการตรวจสอบ Prompt Flow เป็นโซลูชันแบบ end-to-end ที่สมบูรณ์แบบสำหรับการดำเนินการพร้อมท์โฟลว์
เทมเพลตรองรับทั้ง Azure AI Studio และ Azure Machine Learning เทมเพลตสามารถใช้ได้กับทั้ง Azure AI Studio และ Azure Machine Learning ทั้งนี้ขึ้นอยู่กับการกำหนดค่า โดยมอบประสบการณ์การโยกย้ายที่ราบรื่นสำหรับการทดลอง การประเมิน และการปรับใช้ Prompt Flow ข้ามบริการต่างๆ
เทมเพลตนี้รองรับโฟลว์ประเภทต่างๆ ทำให้คุณสามารถกำหนดและดำเนินการเวิร์กโฟลว์ตามความต้องการเฉพาะของคุณได้ โฟลว์หลักสองประเภทที่รองรับคือ:
การไหลที่ยืดหยุ่น
กระแสกราฟอะไซคลิกกำกับ (DAG)
หนึ่งในคุณสมบัติที่ทรงพลังของโปรเจ็กต์นี้คือความสามารถในการตรวจจับประเภทโฟลว์โดยอัตโนมัติและดำเนินการโฟลว์ตามนั้น ซึ่งจะทำให้คุณสามารถทดลองกับโฟลว์ประเภทต่างๆ และเลือกประเภทการไหลที่ตรงกับความต้องการของคุณมากที่สุด
เทมเพลตนี้รองรับ:
การจัดการโฟลว์ตามภาษาขนาดใหญ่ ตั้งแต่การทดลองในท้องถิ่นไปจนถึงการใช้งานจริงนั้นยังห่างไกลจากความตรงไปตรงมาและไม่ใช่งานที่มีขนาดเดียวสำหรับทุกคน
แต่ละโฟลว์มีวงจรชีวิตที่เป็นเอกลักษณ์ ตั้งแต่การทดลองเบื้องต้นไปจนถึงการใช้งาน และแต่ละขั้นตอนนำเสนอชุดความท้าทายของตัวเอง
องค์กรมักจะจัดการกับโฟลว์หลายรายการพร้อมกัน โดยแต่ละโฟลว์มีวัตถุประสงค์ ข้อกำหนด และความซับซ้อน สิ่งนี้อาจล้นหลามอย่างรวดเร็วหากไม่มีเครื่องมือการจัดการที่เหมาะสม
โดยเกี่ยวข้องกับการจัดการโฟลว์หลายรายการ วงจรชีวิตที่เป็นเอกลักษณ์ การทดลองกับการกำหนดค่าต่างๆ และการรับรองการปรับใช้ที่ราบรื่น
นั่นคือที่มาของ LLMOps ที่มี Prompt Flow LLMOps ที่มี Prompt Flow คือ "เทมเพลตและคำแนะนำ LLMOps" ที่จะช่วยคุณสร้างแอปที่ใช้ LLM โดยใช้ Prompt Flow มันมีคุณสมบัติดังต่อไปนี้:
การโฮสต์โค้ดแบบรวมศูนย์: repo นี้รองรับโค้ดการโฮสต์สำหรับหลายโฟลว์ตามโฟลว์พร้อมท์ โดยให้พื้นที่เก็บข้อมูลเดียวสำหรับโฟลว์ทั้งหมดของคุณ คิดว่าแพลตฟอร์มนี้เป็นที่เก็บข้อมูลเดียวซึ่งมีโค้ดโฟลว์พร้อมท์ทั้งหมดของคุณอยู่ มันเหมือนกับไลบรารีสำหรับโฟลว์ของคุณ ทำให้ง่ายต่อการค้นหา เข้าถึง และทำงานร่วมกันในโครงการต่างๆ
การจัดการวงจรชีวิต: แต่ละโฟลว์มีวงจรชีวิตของตัวเอง ช่วยให้เปลี่ยนจากการทดลองในท้องถิ่นไปสู่การใช้งานจริงได้อย่างราบรื่น
การทดลองตัวแปรและไฮเปอร์พารามิเตอร์: ทดลองกับตัวแปรและไฮเปอร์พารามิเตอร์หลายตัว เพื่อประเมินตัวแปรโฟลว์ได้อย่างง่ายดาย ตัวแปรและไฮเปอร์พารามิเตอร์เป็นเหมือนส่วนผสมในสูตรอาหาร แพลตฟอร์มนี้ช่วยให้คุณทดสอบด้วยการผสมผสานตัวแปรต่างๆ ในหลายโหนดในโฟลว์
การปรับใช้ A/B: ปรับใช้การปรับใช้ A/B ได้อย่างราบรื่น ทำให้คุณสามารถเปรียบเทียบเวอร์ชันโฟลว์ต่างๆ ได้อย่างง่ายดาย เช่นเดียวกับในการทดสอบ A/B แบบดั้งเดิมสำหรับเว็บไซต์ แพลตฟอร์มนี้อำนวยความสะดวกในการใช้งาน A/B เพื่อให้เกิดโฟลว์ที่รวดเร็ว ซึ่งหมายความว่าคุณสามารถเปรียบเทียบโฟลว์เวอร์ชันต่างๆ ในการตั้งค่าโลกแห่งความเป็นจริงได้อย่างง่ายดาย เพื่อพิจารณาว่าเวอร์ชันใดทำงานได้ดีที่สุด
ความสัมพันธ์ของชุดข้อมูล/โฟลว์แบบกลุ่มต่อกลุ่ม: รองรับชุดข้อมูลหลายชุดสำหรับแต่ละโฟลว์มาตรฐานและการประเมินผล เพื่อให้มั่นใจถึงความคล่องตัวในการทดสอบโฟลว์และการประเมินผล แพลตฟอร์มดังกล่าวได้รับการออกแบบเพื่อรองรับชุดข้อมูลหลายชุดสำหรับแต่ละโฟลว์
เป้าหมายการปรับใช้หลายรายการ: repo รองรับการปรับใช้โฟลว์ไปยัง Kubernetes และการประมวลผล Azure Managed ที่ขับเคลื่อนผ่านการกำหนดค่า ทำให้มั่นใจได้ว่าโฟลว์ของคุณสามารถปรับขนาดได้ตามต้องการ
การรายงานที่ครอบคลุม: สร้างรายงานโดยละเอียดสำหรับการกำหนดค่าตัวแปรแต่ละรายการ ช่วยให้คุณตัดสินใจได้อย่างมีข้อมูล จัดเตรียมการรวบรวมตัวชี้วัดโดยละเอียดสำหรับการรันและการทดสอบจำนวนมากของตัวแปรทั้งหมด ช่วยให้ตัดสินใจโดยอาศัยข้อมูลในรูปแบบ CSV และไฟล์ HTML
เสนอ BYOF (นำมาซึ่งกระแสของคุณเอง) แพลตฟอร์มที่สมบูรณ์ สำหรับการพัฒนากรณีการใช้งานหลายกรณีที่เกี่ยวข้องกับแอปพลิเคชันที่ใช้ LLM
เสนอการพัฒนาตาม การกำหนดค่า ไม่จำเป็นต้องเขียนโค้ด Boiler Plate มากมาย
ให้การดำเนินการทั้ง การทดลองและการประเมินผลทันที ทั้งภายในเครื่องและบนคลาวด์
จัดเตรียม สมุดบันทึกสำหรับการประเมินพร้อมท์ในพื้นที่ จัดเตรียมไลบรารีฟังก์ชันสำหรับการทดลองในท้องถิ่น
การทดสอบปลายทางภายในไปป์ไลน์หลังจากการปรับใช้เพื่อตรวจสอบความพร้อมใช้งานและความพร้อม
จัดเตรียมตัวเลือก Human-in-loop เพื่อตรวจสอบความถูกต้องของตัววัดพร้อมท์ก่อนการใช้งาน
LLMOps พร้อม Prompt Flow มอบความสามารถสำหรับทั้งแอปที่ใช้ LLM แบบธรรมดาและแบบซับซ้อน มันปรับแต่งได้อย่างสมบูรณ์ตามความต้องการของแอปพลิเคชัน
กรณีการใช้งานแต่ละกรณี (ชุดมาตรฐานของ Prompt Flow และขั้นตอนการประเมิน) ควรเป็นไปตามโครงสร้างโฟลเดอร์ดังที่แสดงไว้ที่นี่:
นอกจากนี้ยังมีไฟล์ experiment.yaml
ที่กำหนดค่ากรณีการใช้งาน (ดูรายละเอียดเพิ่มเติมในคำอธิบายไฟล์และข้อกำหนด) นอกจากนี้ยังมีไฟล์ Sample-request.json ที่มีข้อมูลการทดสอบสำหรับการทดสอบตำแหน่งข้อมูลหลังจากการปรับใช้
โฟลเดอร์ '.azure-pipelines' มีไปป์ไลน์ Azure DevOps ทั่วไปสำหรับแพลตฟอร์ม และการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นจะส่งผลกระทบต่อการดำเนินการของโฟลว์ทั้งหมด
โฟลเดอร์ '.github' มีเวิร์กโฟลว์ Github สำหรับแพลตฟอร์มตลอดจนกรณีการใช้งาน สิ่งนี้แตกต่างจาก Azure DevOps เล็กน้อยเนื่องจากเวิร์กโฟลว์ Github ทั้งหมดควรอยู่ในโฟลเดอร์เดียวนี้เพื่อดำเนินการ
โฟลเดอร์ '.jenkins' มีไปป์ไลน์ที่ประกาศของ Jenkins สำหรับแพลตฟอร์ม รวมถึงกรณีการใช้งานและงานแต่ละงาน
โฟลเดอร์ 'เอกสาร' มีเอกสารประกอบสำหรับคำแนะนำทีละขั้นตอนสำหรับการกำหนดค่าที่เกี่ยวข้องกับ Azure DevOps, Github Workflow และ Jenkins
โฟลเดอร์ 'llmops' มีโค้ดทั้งหมดที่เกี่ยวข้องกับการดำเนินการโฟลว์ การประเมิน และการปรับใช้
โฟลเดอร์ 'dataops' มีโค้ดทั้งหมดที่เกี่ยวข้องกับการปรับใช้ไปป์ไลน์ข้อมูล
โฟลเดอร์ 'local_execution' มีสคริปต์หลามสำหรับดำเนินการทั้งขั้นตอนมาตรฐานและขั้นตอนการประเมินผลในเครื่อง
โครงการประกอบด้วย 6 ตัวอย่างที่แสดงให้เห็นถึงสถานการณ์ที่แตกต่างกัน:
ตำแหน่ง: ./web_classification ความสำคัญ: สาธิตการสรุปเนื้อหาเว็บไซต์ด้วยรูปแบบที่หลากหลาย โดยแสดงตัวเลือกความยืดหยุ่นและการปรับแต่งที่มีอยู่ในเทมเพลต
ตำแหน่ง: ./named_entity_recognition ความสำคัญ: จัดแสดงการแยกเอนทิตีที่มีชื่อออกจากข้อความ ซึ่งมีประโยชน์สำหรับงานประมวลผลภาษาธรรมชาติต่างๆ และการดึงข้อมูล
ตำแหน่ง: ./math_coding ความสำคัญ: แสดงความสามารถในการคำนวณทางคณิตศาสตร์และสร้างตัวอย่างโค้ด โดยเน้นถึงความอเนกประสงค์ของเทมเพลตในการจัดการงานด้านการคำนวณ
ตำแหน่ง: ./chat_with_pdf ความสำคัญ: สาธิตอินเทอร์เฟซการสนทนาสำหรับการโต้ตอบกับเอกสาร PDF โดยใช้ประโยชน์จากพลังของการสร้างเสริมการดึงข้อมูล (RAG) เพื่อให้คำตอบที่แม่นยำและเกี่ยวข้อง
ตำแหน่ง: ./function_flows ความสำคัญ: สาธิตการสร้างส่วนย่อยของโค้ดตามการแจ้งของผู้ใช้ ซึ่งแสดงให้เห็นถึงศักยภาพในการทำงานการสร้างโค้ดโดยอัตโนมัติ
ตำแหน่ง: ./class_flows ความสำคัญ: แสดงแอปพลิเคชันแชทที่สร้างขึ้นโดยใช้โฟลว์ตามคลาส แสดงให้เห็นโครงสร้างและการจัดระเบียบของอินเทอร์เฟซการสนทนาที่ซับซ้อนมากขึ้น
repo ช่วยในการปรับใช้กับ Kubernetes, Kubernetes ARC, Azure Web Apps และการประมวลผล AzureML Managed พร้อมกับ การปรับใช้ A/B สำหรับการคำนวณ AzureML Managed
การดำเนินการไปป์ไลน์ประกอบด้วยหลายขั้นตอนและงานในแต่ละขั้นตอน:
Repo สร้างรายงานหลายฉบับ (แสดงตัวอย่างการรันการทดสอบและเมทริก):
เมื่อต้องการควบคุมความสามารถของ การดำเนินการในเครื่อง ให้ทำตามขั้นตอนการติดตั้งเหล่านี้:
git clone https://github.com/microsoft/llmops-promptflow-template.git
aoai
เพิ่มบรรทัด aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
ด้วยค่าที่อัปเดตสำหรับ api_key และ api_base หากใช้การเชื่อมต่อเพิ่มเติมที่มีชื่อต่างกันในโฟลว์ของคุณ ควรเพิ่มการเชื่อมต่อเหล่านั้นตามนั้น ในปัจจุบัน ไหลด้วย AzureOpenAI ในฐานะผู้ให้บริการซึ่งได้รับการสนับสนุน experiment_name=
connection_name_1={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
connection_name_2={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
นำหรือเขียนโฟลว์ของคุณลงในเทมเพลตตามเอกสารประกอบที่นี่
เขียนสคริปต์หลามคล้ายกับตัวอย่างที่ให้ไว้ในโฟลเดอร์ local_execution
DataOps ผสมผสานแง่มุมต่างๆ ของ DevOps ระเบียบวิธีแบบคล่องตัว และหลักปฏิบัติในการจัดการข้อมูล เพื่อปรับปรุงกระบวนการรวบรวม ประมวลผล และวิเคราะห์ข้อมูล DataOps ช่วยสร้างวินัยในการสร้างชุดข้อมูล (การฝึกอบรม การทดลอง การประเมินผล ฯลฯ) ที่จำเป็นสำหรับการพัฒนาแอป LLM
ไปป์ไลน์ข้อมูลจะถูกแยกออกจากขั้นตอนทางวิศวกรรมที่รวดเร็ว ไปป์ไลน์ข้อมูลจะสร้างชุดข้อมูลและชุดข้อมูลจะถูกลงทะเบียนเป็นสินทรัพย์ข้อมูลใน Azure ML สำหรับโฟลว์ที่จะใช้ แนวทางนี้ช่วยในการปรับขนาดและแก้ไขปัญหาส่วนต่างๆ ของระบบอย่างเป็นอิสระ
สำหรับรายละเอียดเกี่ยวกับวิธีเริ่มต้นใช้งาน DataOps โปรดปฏิบัติตามเอกสารนี้ - วิธีกำหนดค่า DataOps
โครงการนี้ยินดีรับการสนับสนุนและข้อเสนอแนะ การบริจาคส่วนใหญ่กำหนดให้คุณยอมรับข้อตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA) โดยประกาศว่าคุณมีสิทธิ์ที่จะให้สิทธิ์แก่เราในการใช้การบริจาคของคุณจริงๆ สำหรับรายละเอียด โปรดไปที่ https://cla.opensource.microsoft.com
เมื่อคุณส่งคำขอดึง บอท CLA จะกำหนดโดยอัตโนมัติว่าคุณจำเป็นต้องจัดเตรียม CLA และตกแต่ง PR อย่างเหมาะสมหรือไม่ (เช่น การตรวจสอบสถานะ ความคิดเห็น) เพียงทำตามคำแนะนำที่ได้รับจากบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวกับ repos ทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม
โครงการนี้อาจมีเครื่องหมายการค้าหรือโลโก้สำหรับโครงการ ผลิตภัณฑ์ หรือบริการ การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft โดยได้รับอนุญาตจะอยู่ภายใต้และต้องปฏิบัติตามแนวทางเครื่องหมายการค้าและแบรนด์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ในเวอร์ชันแก้ไขของโครงการนี้จะต้องไม่ทำให้เกิดความสับสนหรือบ่งบอกถึงการสนับสนุนของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของบุคคลที่สามจะต้องเป็นไปตามนโยบายของบุคคลที่สามเหล่านั้น
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม
ลิขสิทธิ์ (c) Microsoft Corporation สงวนลิขสิทธิ์.
ได้รับอนุญาตภายใต้ใบอนุญาต MIT