Ai-Sentry เป็นเลเยอร์ Generative AI Facade แบบเสียบได้ที่ใช้ Python + DAPR แบบโปร่งใส ออกแบบมาเพื่อรองรับคุณสมบัติต่อไปนี้สำหรับองค์กรขนาดใหญ่ที่พัฒนาและใช้งานโซลูชัน Generative AI:
เรียกเก็บเงินกลับจากการใช้โทเค็นกับผู้บริโภค openAI ที่แตกต่างกัน
การบันทึกแบบอะซิงโครนัสคำขอ/การตอบสนองพร้อมความสามารถในการสลับการแยก PII ของข้อมูล การบันทึกระดับนี้มีประโยชน์สำหรับหลายๆ อย่าง เช่น การปฏิบัติตามกฎหมาย ตลอดจนการประเมินและการเล่นซ้ำคำขอ/การตอบสนองต่อโมเดลที่ใหม่กว่า เพื่อช่วยคุณจัดการกับการอัพเกรดโมเดลโดยไม่ส่งผลกระทบต่อผู้ใช้ที่มีอยู่ของคุณ
ปรับสมดุลโหลดอย่างชาญฉลาดยิ่งขึ้นโดยคำนึงถึงเมตริกโหลดส่วนหัวการตอบสนองของ Azure openAI และการรวมแบ็กเอนด์หลายตัวที่มีความสามารถในโมเดลเดียวกัน
รองรับการตอบสนองแบบสตรีมมิ่งและแบบไม่สตรีมมิ่ง (รวมถึงการบันทึกสิ่งเหล่านี้ด้วย)
ความสามารถในการขยายของอะแดปเตอร์แบบกำหนดเองเพื่อช่วยคุณจัดการกับการเลิกใช้ SDK / API จากฝั่งไคลเอ็นต์ ดังนั้นคุณจึงสามารถให้ความเข้ากันได้แบบย้อนหลังได้หากจำเป็น
AI-Sentry ไม่ได้ออกแบบมาเพื่อแทนที่โซลูชัน API Gateway ที่มีอยู่ เช่น Azure APIM แต่ได้รับการออกแบบมาให้อยู่ระหว่าง API Gateway และตำแหน่งข้อมูล openAI ซึ่งให้การควบคุมขั้นสูงสุดสำหรับโซลูชัน openAI ของคุณ
เราพยายามดำเนินการประมวลผลอย่างหนักนอกไปป์ไลน์การเรียก HTTP โดยตรงเพื่อลดเวลาแฝงให้กับผู้บริโภค และอาศัย DAPR side car และรูปแบบ Pub / Sub เพื่อทำงานแบบอะซิงโครนัส
เนื่องจาก AI-Sentry ใช้ DAPR ตัวเลือกเทคโนโลยีสำหรับการคงอยู่ของบันทึก และตัวกลางข้อความสามารถสับเปลี่ยนได้ผ่านส่วนประกอบดั้งเดิมของ DAPR ตัวอย่างของเราใช้ REDIS และ Event Hubs เป็นตัวกลางส่งข้อความสำหรับ PUB/SUB และ CosmosDB เป็นที่จัดเก็บ Log Peristence
จำเป็นต้องมีตัวแปรสภาพแวดล้อมต่อไปนี้ วิธีป้อนข้อมูลเหล่านั้นขึ้นอยู่กับคุณ เช่น ความลับของ Kubernetes, configmaps ฯลฯ
ชื่อ | ค่า | ส่วนประกอบ |
---|---|---|
AI-SENTRY-ปลายทาง-กำหนดค่า | ตัวอย่างค่า JSON อยู่ที่นี่ สิ่งนี้ใช้เพื่อแมปจุดสิ้นสุด / การปรับใช้ openai - ดังนั้นเมื่อเราทำโหลดบาลานซ์ เราจะเข้าถึงกลุ่มของโมเดล openAI เดียวกันจากพูล ตรวจสอบให้แน่ใจว่าได้รวม /openai ไว้ในการกำหนดค่า URL ปลายทางของคุณ คุณสามารถใช้ประโยชน์จากสคริปต์ต่อไปนี้เพื่อช่วยคุณสร้างสตริงที่ Escape JSON ของ JSON นี้ | แอพซุ้ม |
AI-SENTRY-LANGUAGE-KEY | คีย์ API ทั่วไปของ Congnitive Services ของคุณ | พนักงาน CosmosDB |
AI-SENTRY-ภาษา-จุดสิ้นสุด | การวิเคราะห์ข้อความภาษาของคุณหรือ URL จุดสิ้นสุดบริการทั่วไป | พนักงาน CosmosDB |
ไม่ว่าคุณจะเผชิญหน้ากับ AI-Sentry เช่น Azure APIM หรือเทคโนโลยีเกตเวย์ API อื่นๆ คุณจะต้องจัดหาส่วนหัว HTTP ที่จำเป็น
ชื่อส่วนหัว HTTP | ค่าส่วนหัว HTTP |
---|---|
AI-ยาม-ผู้บริโภค | ซึ่งอาจเป็นสตริงใดก็ได้ - ใช้เพื่อเป็นตัวแทนของผู้บริโภคหรือผลิตภัณฑ์ที่ใช้แบ็กเอนด์ ai แบบกำเนิด เราใช้สิ่งนี้เพื่อวัตถุประสงค์ในการบันทึก |
ai-sentry-log-level | สิ่งนี้จะสลับระดับการบันทึกสำหรับผู้ใช้จริง ค่าที่ยอมรับคือ: COMPLETE, PII_STRIPPING_ENABLED หรือ DISABLED |
ai-sentry-แบ็กเอนด์พูล | ระบุชื่อของพูลจากการกำหนดค่า AI-SENTRY-ENDPOINT-CONFIG เช่น พูล1 |
AI-ยาม-อะแดปเตอร์ | ระบุรายชื่ออะแดปเตอร์ที่คุณต้องการเรียกใช้ก่อนที่จะส่งคำขอไปยังตำแหน่งข้อมูล Openai ตัวอย่าง: ["SampleApiRequestTransformer","adapter2..."] |
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า AI-Sentry ในสภาพแวดล้อมของคุณ โปรดปฏิบัติตามส่วนรายละเอียดต่อไปนี้
การตั้งค่า CosmosDB dbs/table
การตั้งค่า AI-Sentry บน AKS
สคีมาการบันทึก CosmosDB
สรุป Schema การบันทึก
การตั้งค่าข้อมูลระบุตัวตนของภาระงาน - หากคุณต้องการตรวจสอบสิทธิ์แบ็กเอนด์ของ openai ผ่าน JWT แทนคีย์ api
โชคดีที่เพื่อนร่วมงานของเรา Graeme Foster ได้เผยแพร่เวอร์ชัน dotnet พร้อมชุดฟีเจอร์ที่คล้ายกัน โปรดไปลองดู: https://github.com/microsoft/aicentral
โครงการนี้ยินดีรับการสนับสนุนและข้อเสนอแนะ การบริจาคส่วนใหญ่กำหนดให้คุณยอมรับข้อตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA) โดยประกาศว่าคุณมีสิทธิ์ที่จะให้สิทธิ์แก่เราในการใช้การบริจาคของคุณจริงๆ สำหรับรายละเอียด โปรดไปที่ https://cla.opensource.microsoft.com
เมื่อคุณส่งคำขอดึง บอท CLA จะกำหนดโดยอัตโนมัติว่าคุณจำเป็นต้องจัดเตรียม CLA และตกแต่ง PR อย่างเหมาะสมหรือไม่ (เช่น การตรวจสอบสถานะ ความคิดเห็น) เพียงทำตามคำแนะนำที่ได้รับจากบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวกับ repos ทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม
โครงการนี้อาจมีเครื่องหมายการค้าหรือโลโก้สำหรับโครงการ ผลิตภัณฑ์ หรือบริการ การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft โดยได้รับอนุญาตจะอยู่ภายใต้และต้องปฏิบัติตามแนวทางเครื่องหมายการค้าและแบรนด์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ในเวอร์ชันแก้ไขของโครงการนี้จะต้องไม่ทำให้เกิดความสับสนหรือบ่งบอกถึงการสนับสนุนของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของบุคคลที่สามจะต้องเป็นไปตามนโยบายของบุคคลที่สามเหล่านั้น