โซลูชันนี้สร้างประสบการณ์ส่วนหน้าเหมือน ChatGPT บนเอกสารของคุณเองโดยใช้ RAG (Retriever Augmented Generation) ใช้บริการ Azure OpenAI เพื่อเข้าถึงโมเดล GPT และ Azure AI Search สำหรับการจัดทำดัชนีและการเรียกค้นข้อมูล
แบ็กเอนด์ของโซลูชันนี้เขียนด้วยภาษา Python นอกจากนี้ยังมีตัวอย่าง JavaScript , .NET และ Java ตามตัวอย่างนี้ เรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาแอป AI โดยใช้บริการ Azure AI
ชมวิดีโอภาพรวมของแอป
ตัวอย่างนี้สาธิตวิธีการบางประการในการสร้างประสบการณ์ที่คล้ายกับ ChatGPT บนข้อมูลของคุณเองโดยใช้รูปแบบการเรียกข้อมูล Augmented Generation ใช้บริการ Azure OpenAI เพื่อเข้าถึงโมเดล GPT (gpt-35-turbo) และ Azure AI Search สำหรับการจัดทำดัชนีและการดึงข้อมูล
การซื้อคืนมีข้อมูลตัวอย่าง ดังนั้นจึงพร้อมที่จะลองตั้งแต่ต้นจนจบ ในแอปพลิเคชันตัวอย่างนี้ เราใช้บริษัทสมมติชื่อ Contoso Electronics และประสบการณ์ดังกล่าวทำให้พนักงานสามารถถามคำถามเกี่ยวกับสวัสดิการ นโยบายภายใน ตลอดจนคำอธิบายลักษณะงานและบทบาทได้
สิ่งสำคัญ: ในการปรับใช้และรันตัวอย่างนี้ คุณจะต้องมี:
Microsoft.Authorization/roleAssignments/write
เช่น ผู้ดูแลระบบการควบคุมการเข้าถึงตามบทบาท ผู้ดูแลระบบการเข้าถึงของผู้ใช้ หรือเจ้าของ หากคุณไม่มีสิทธิ์ระดับการสมัคร คุณจะต้องได้รับ RBAC สำหรับกลุ่มทรัพยากรที่มีอยู่และปรับใช้กับกลุ่มที่มีอยู่นั้นMicrosoft.Resources/deployments/write
ในระดับการสมัครใช้งานราคาจะแตกต่างกันไปตามภูมิภาคและการใช้งาน ดังนั้นจึงไม่สามารถคาดการณ์ต้นทุนที่แน่นอนสำหรับการใช้งานของคุณได้ อย่างไรก็ตาม คุณสามารถลองใช้เครื่องคำนวณราคา Azure สำหรับแหล่งข้อมูลด้านล่างนี้ได้
เพื่อลดต้นทุน คุณสามารถเปลี่ยนไปใช้ SKU ฟรีสำหรับบริการต่างๆ ได้ แต่ SKU เหล่านั้นมีข้อจำกัด ดูคู่มือนี้เกี่ยวกับการปรับใช้ด้วยต้นทุนขั้นต่ำสำหรับรายละเอียดเพิ่มเติม
azd down
คุณมีทางเลือกสองสามทางในการตั้งค่าโปรเจ็กต์นี้ วิธีที่ง่ายที่สุดในการเริ่มต้นคือ GitHub Codespaces เนื่องจากมันจะตั้งค่าเครื่องมือทั้งหมดสำหรับคุณ แต่คุณสามารถตั้งค่าในเครื่องได้หากต้องการ
คุณสามารถรัน Repo นี้แบบเสมือนจริงได้โดยใช้ GitHub Codespaces ซึ่งจะเปิด VS Code บนเว็บในเบราว์เซอร์ของคุณ:
เมื่อโค้ดสเปซเปิดขึ้น (อาจใช้เวลาหลายนาที) ให้เปิดหน้าต่างเทอร์มินัล
ตัวเลือกที่เกี่ยวข้องคือ VS Code Dev Containers ซึ่งจะเปิดโปรเจ็กต์ใน VS Code ในเครื่องของคุณโดยใช้ส่วนขยาย Dev Containers:
เริ่ม Docker Desktop (ติดตั้งหากยังไม่ได้ติดตั้ง)
เปิดโครงการ:
ในหน้าต่าง VS Code ที่เปิดขึ้น เมื่อไฟล์โปรเจ็กต์ปรากฏขึ้น (อาจใช้เวลาหลายนาที) ให้เปิดหน้าต่างเทอร์มินัล
ติดตั้งเครื่องมือที่จำเป็น:
python --version
จากคอนโซลได้ บน Ubuntu คุณอาจต้องเรียกใช้ sudo apt install python-is-python3
เพื่อเชื่อมโยง python
กับ python3
pwsh.exe
จากเทอร์มินัล PowerShell หากล้มเหลว คุณอาจต้องอัปเกรด PowerShellสร้างโฟลเดอร์ใหม่และสลับไปที่โฟลเดอร์นั้นในเทอร์มินัล
รันคำสั่งนี้เพื่อดาวน์โหลดโค้ดโปรเจ็กต์:
azd init -t azure-search-openai-demo
โปรดทราบว่าคำสั่งนี้จะเริ่มต้นพื้นที่เก็บข้อมูล git ดังนั้นคุณไม่จำเป็นต้องโคลนพื้นที่เก็บข้อมูลนี้
ขั้นตอนด้านล่างจะจัดเตรียมทรัพยากร Azure และปรับใช้โค้ดแอปพลิเคชันกับ Azure Container Apps หากต้องการปรับใช้กับ Azure App Service แทน ให้ปฏิบัติตามคู่มือการปรับใช้บริการแอป
เข้าสู่ระบบบัญชี Azure ของคุณ:
azd auth login
สำหรับผู้ใช้ GitHub Codespaces หากคำสั่งก่อนหน้านี้ล้มเหลว ให้ลอง:
azd auth login --use-device-code
สร้างสภาพแวดล้อม azd ใหม่:
azd env new
ป้อนชื่อที่จะใช้สำหรับกลุ่มทรัพยากร สิ่งนี้จะสร้างโฟลเดอร์ใหม่ในโฟลเดอร์ .azure
และตั้งเป็นสภาพแวดล้อมที่ใช้งานสำหรับการเรียก azd
ใดๆ ในอนาคต
(ทางเลือก) นี่คือจุดที่คุณสามารถปรับแต่งการปรับใช้งานโดยการตั้งค่าตัวแปรสภาพแวดล้อม เพื่อใช้ทรัพยากรที่มีอยู่ เปิดใช้งานคุณสมบัติเสริม (เช่น การรับรองความถูกต้องหรือการมองเห็น) หรือปรับใช้กับ Free Tier
Run azd up
- ซึ่งจะจัดเตรียมทรัพยากร Azure และปรับใช้ตัวอย่างนี้กับทรัพยากรเหล่านั้น รวมถึงการสร้างดัชนีการค้นหาตามไฟล์ที่พบในโฟลเดอร์ ./data
azd down
หรือลบทรัพยากรด้วยตนเองเพื่อหลีกเลี่ยงการใช้จ่ายที่ไม่จำเป็นหลังจากปรับใช้แอปพลิเคชันสำเร็จแล้ว คุณจะเห็น URL พิมพ์ไปที่คอนโซล คลิก URL นั้นเพื่อโต้ตอบกับแอปพลิเคชันในเบราว์เซอร์ของคุณ มันจะมีลักษณะดังนี้:
หมายเหตุ: อาจใช้เวลา 5-10 นาทีหลังจากที่คุณเห็นข้อความ "สำเร็จ" เพื่อให้แอปพลิเคชันใช้งานได้อย่างสมบูรณ์ หากคุณเห็นหน้าจอต้อนรับ "Python Developer" หรือหน้าข้อผิดพลาด ให้รอสักครู่แล้วรีเฟรชหน้า
หากคุณเปลี่ยนเฉพาะโค้ดแบ็กเอนด์/ฟรอนท์เอนด์ในโฟลเดอร์ app
คุณไม่จำเป็นต้องจัดเตรียมทรัพยากร Azure ใหม่ คุณก็สามารถวิ่งได้:
azd deploy
หากคุณได้เปลี่ยนแปลงไฟล์โครงสร้างพื้นฐาน (โฟลเดอร์ infra
หรือ azure.yaml
) คุณจะต้องจัดเตรียมทรัพยากร Azure อีกครั้ง คุณสามารถทำได้โดยการเรียกใช้:
azd up
หากต้องการให้ผู้อื่นเข้าถึงสภาพแวดล้อมที่ใช้งานและมีอยู่อย่างสมบูรณ์ คุณหรือพวกเขาสามารถทำตามขั้นตอนเหล่านี้:
azd init -t azure-search-openai-demo
หรือโคลนที่เก็บนี้azd env refresh -e {environment name}
โดยจะต้องมีชื่อสภาพแวดล้อม azd, ID การสมัครสมาชิก และตำแหน่งเพื่อรันคำสั่งนี้ คุณสามารถค้นหาค่าเหล่านั้นได้ในไฟล์ .azure/{env name}/.env
สิ่งนี้จะเติมไฟล์ .env
ของสภาพแวดล้อม azd พร้อมด้วยการตั้งค่าทั้งหมดที่จำเป็นในการเรียกใช้แอปในเครื่องAZURE_PRINCIPAL_ID
ในไฟล์ .env
นั้นหรือในเชลล์ที่ใช้งานอยู่เป็น Azure ID ซึ่งสามารถรับได้จาก az ad signed-in-user show
./scripts/roles.ps1
หรือ .scripts/roles.sh
เพื่อกำหนดบทบาทที่จำเป็นทั้งหมดให้กับผู้ใช้ หากพวกเขาไม่มีสิทธิ์ที่จำเป็นในการสร้างบทบาทในการสมัครสมาชิก คุณอาจต้องเรียกใช้สคริปต์นี้ให้พวกเขา เมื่อสคริปต์ทำงานแล้ว สคริปต์ควรจะสามารถเรียกใช้แอปในเครื่องได้ คุณสามารถรันได้เฉพาะในเครื่อง หลังจาก รันคำสั่ง azd up
สำเร็จแล้วเท่านั้น หากคุณยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนการทำให้ใช้งานได้ข้างต้น
azd auth login
app
./start.ps1
หรือ ./start.sh
หรือเรียกใช้ "งาน VS Code: เริ่มแอป" เพื่อเริ่มโปรเจ็กต์ในเครื่องดูเคล็ดลับเพิ่มเติมในคู่มือการพัฒนาท้องถิ่น
เมื่ออยู่ในเว็บแอป:
หากต้องการล้างทรัพยากรทั้งหมดที่สร้างโดยตัวอย่างนี้:
azd down
y
y
กลุ่มทรัพยากรและทรัพยากรทั้งหมดจะถูกลบ
นอกจากคำแนะนำด้านล่างแล้ว คุณยังดูเอกสารประกอบโดยละเอียดได้ในโฟลเดอร์เอกสาร
เมื่อคุณปรับใช้แอปสำเร็จแล้ว คุณสามารถเริ่มปรับแต่งให้ตรงกับความต้องการของคุณได้ เช่น เปลี่ยนข้อความ ปรับแต่งข้อความแจ้ง และแทนที่ข้อมูล ศึกษาคู่มือการปรับแต่งแอปตลอดจนคู่มือการนำเข้าข้อมูลสำหรับรายละเอียดเพิ่มเติม
ตามค่าเริ่มต้น แอปที่ปรับใช้จะใช้ Application Insights เพื่อติดตามคำขอแต่ละรายการ ควบคู่ไปกับการบันทึกข้อผิดพลาด
หากต้องการดูข้อมูลประสิทธิภาพ ให้ไปที่ทรัพยากร Application Insights ในกลุ่มทรัพยากรของคุณ คลิกที่เบลด "ตรวจสอบ -> ประสิทธิภาพ" และไปที่คำขอ HTTP เพื่อดูข้อมูลเวลา หากต้องการตรวจสอบประสิทธิภาพของคำขอแชท ให้ใช้ปุ่ม "เจาะลึกตัวอย่าง" เพื่อดูการติดตามการเรียก API ทั้งหมดที่ดำเนินการสำหรับคำขอแชทตั้งแต่ต้นทางถึงปลายทาง:
หากต้องการดูข้อยกเว้นและข้อผิดพลาดของเซิร์ฟเวอร์ ให้ไปที่เบลด "ตรวจสอบ -> ความล้มเหลว" และใช้เครื่องมือกรองเพื่อค้นหาข้อยกเว้นเฉพาะ คุณสามารถดูการติดตามสแต็กของ Python ได้ทางด้านขวามือ
คุณยังสามารถดูสรุปแผนภูมิบนแดชบอร์ดได้โดยการรันคำสั่งต่อไปนี้:
azd monitor
ตัวอย่างนี้ออกแบบมาเพื่อเป็นจุดเริ่มต้นสำหรับแอปพลิเคชันการใช้งานจริงของคุณ แต่คุณควรตรวจสอบความปลอดภัยและประสิทธิภาพอย่างละเอียดก่อนที่จะปรับใช้กับการใช้งานจริง อ่านคู่มือการผลิตของเราเพื่อดูรายละเอียดเพิ่มเติม
ต่อไปนี้เป็นสถานการณ์ความล้มเหลวและแนวทางแก้ไขที่พบบ่อยที่สุด:
การสมัครสมาชิก ( AZURE_SUBSCRIPTION_ID
) ไม่สามารถเข้าถึงบริการ Azure OpenAI โปรดตรวจสอบให้แน่ใจว่า AZURE_SUBSCRIPTION_ID
ตรงกับ ID ที่ระบุในกระบวนการร้องขอการเข้าถึง OpenAI
คุณกำลังพยายามสร้างทรัพยากรในภูมิภาคที่ไม่ได้เปิดใช้งานสำหรับ Azure OpenAI (เช่น East US 2 แทนที่จะเป็น East US) หรือในกรณีที่โมเดลที่คุณพยายามใช้ไม่ได้เปิดใช้งาน ดูเมทริกซ์ความพร้อมใช้งานของโมเดลนี้
คุณใช้งานเกินโควต้า ซึ่งส่วนใหญ่มักเป็นจำนวนทรัพยากรต่อภูมิภาค ดูบทความนี้เกี่ยวกับโควต้าและขีดจำกัด
คุณได้รับข้อขัดแย้ง "ชื่อทรัพยากรเดียวกันไม่ได้รับอนุญาต" อาจเป็นเพราะคุณได้เรียกใช้ตัวอย่างหลายครั้งและลบทรัพยากรที่คุณสร้างในแต่ละครั้ง แต่ลืมล้างข้อมูลออก Azure จะเก็บทรัพยากรไว้เป็นเวลา 48 ชั่วโมง เว้นแต่ว่าคุณจะล้างข้อมูลจากการลบแบบนุ่มนวล ดูบทความนี้เกี่ยวกับการล้างทรัพยากร
คุณเห็น CERTIFICATE_VERIFY_FAILED
เมื่อสคริปต์ prepdocs.py
ทำงาน โดยทั่วไปมีสาเหตุมาจากการตั้งค่าใบรับรอง SSL ที่ไม่ถูกต้องในเครื่องของคุณ ลองทำตามคำแนะนำในคำตอบของ StackOverflow นี้
หลังจากเรียกใช้ azd up
และเยี่ยมชมเว็บไซต์ คุณจะเห็นข้อความ '404 Not Found' ในเบราว์เซอร์ รอ 10 นาทีแล้วลองอีกครั้ง เนื่องจากอาจยังเริ่มทำงานอยู่ จากนั้นลองรัน azd deploy
แล้วรออีกครั้ง หากคุณยังคงพบข้อผิดพลาดกับแอปที่ปรับใช้และกำลังปรับใช้กับ App Service โปรดอ่านคำแนะนำเกี่ยวกับการดีบักการปรับใช้งาน App Service โปรดแจ้งปัญหาหากบันทึกไม่ช่วยคุณแก้ไขข้อผิดพลาด
นี่คือตัวอย่างที่สร้างขึ้นเพื่อสาธิตความสามารถของแอป Generative AI ที่ทันสมัย และวิธีที่สามารถสร้างแอปเหล่านั้นใน Azure หากต้องการความช่วยเหลือในการปรับใช้ตัวอย่างนี้ โปรดโพสต์ในปัญหา GitHub หากคุณเป็นพนักงานของ Microsoft คุณสามารถโพสต์ในช่อง Teams ของเราได้
ที่เก็บนี้ได้รับการสนับสนุนโดยผู้ดูแล ไม่ใช่ โดยฝ่ายสนับสนุนของ Microsoft ดังนั้นโปรดใช้กลไกการสนับสนุนที่อธิบายไว้ข้างต้น และเราจะพยายามอย่างเต็มที่เพื่อช่วยเหลือคุณ
หมายเหตุ: เอกสาร PDF ที่ใช้ในการสาธิตนี้มีข้อมูลที่สร้างขึ้นโดยใช้โมเดลภาษา (บริการ Azure OpenAI) ข้อมูลที่อยู่ในเอกสารเหล่านี้มีไว้เพื่อวัตถุประสงค์ในการสาธิตเท่านั้น และไม่ได้สะท้อนถึงความคิดเห็นหรือความเชื่อของ Microsoft Microsoft ไม่ให้การรับรองหรือรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัยเกี่ยวกับความครบถ้วน ความถูกต้อง ความน่าเชื่อถือ ความเหมาะสม หรือความพร้อมใช้งานที่เกี่ยวข้องกับข้อมูลที่มีอยู่ในเอกสารนี้ สงวนลิขสิทธิ์ให้กับ Microsoft