page_type | bahasa | produk | urlfragment | nama | keterangan | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
mencicipi |
|
| Azure-earch-openai-demo-csharp | Data ChatGPT + Enterprise (CSHARP) | Aplikasi sampel CSHARP yang mengobrol dengan data Anda menggunakan OpenAi dan AI Search. |
Sampel ini menunjukkan beberapa pendekatan untuk membuat pengalaman seperti chatgpt atas data Anda sendiri menggunakan pola pembuatan augmented pengambilan. Ini menggunakan layanan Azure OpenAi untuk mengakses model chatgpt ( gpt-4o-mini
), dan pencarian AIure AI untuk pengindeksan data dan pengambilan.
Repo mencakup data sampel sehingga siap untuk mencoba ujung ke ujung. Dalam aplikasi sampel ini, kami menggunakan perusahaan fiktif bernama Contoso Electronics, dan pengalaman itu memungkinkan karyawannya untuk mengajukan pertanyaan tentang manfaat, kebijakan internal, serta deskripsi dan peran pekerjaan.
Untuk detail lebih lanjut tentang bagaimana aplikasi ini dibangun, lihat:
Kami ingin mendengar dari Anda! Apakah Anda tertarik untuk membangun atau saat ini membangun aplikasi cerdas? Luangkan beberapa menit untuk menyelesaikan survei ini.
Ambil survei
Untuk menggunakan dan menjalankan contoh ini, Anda akan membutuhkan
Microsoft.Authorization/roleAssignments/write
Izin, seperti administrator atau pemilik akses pengguna. Peringatan
Secara default sampel ini akan membuat aplikasi wadah Azure, dan sumber daya pencarian AIure AI yang memiliki biaya bulanan, serta sumber daya intelijen dokumen AIure AI yang memiliki biaya per halaman dokumen. Anda dapat mengalihkannya ke versi gratis dari masing -masing jika Anda ingin menghindari biaya ini dengan mengubah file parameter di bawah folder infra (meskipun ada beberapa batasan yang perlu dipertimbangkan; misalnya, Anda dapat memiliki hingga 1 sumber pencarian AI AIure gratis per langganan, dan sumber daya intelijen dokumen AIRe AZURE gratis hanya menganalisis 2 halaman pertama dari setiap dokumen.)
Harga bervariasi per wilayah dan penggunaan, jadi tidak mungkin untuk memprediksi biaya yang tepat untuk penggunaan Anda. Namun, Anda dapat mencoba kalkulator harga Azure untuk sumber daya di bawah ini:
Untuk mengurangi biaya, Anda dapat beralih ke SKU gratis untuk berbagai layanan, tetapi SKU tersebut memiliki keterbatasan. Lihat panduan ini tentang penyebaran dengan biaya minimal untuk lebih jelasnya.
azd down
.
Anda memiliki beberapa opsi untuk menyiapkan proyek ini. Cara termudah untuk memulai adalah github codespaces, karena akan mengatur semua alat untuk Anda, tetapi Anda juga dapat mengaturnya secara lokal jika diinginkan.
Anda dapat menjalankan repo ini secara virtual dengan menggunakan github codespaces, yang akan membuka kode vs berbasis web di browser Anda:
Opsi terkait adalah VS Code Remote Containers, yang akan membuka proyek dalam kode VS lokal Anda menggunakan Extension Dev Containers:
Instal prasyarat berikut:
Pengembang Azure CLI
.Net 8
Git
PowerShell 7+ (PWSH) - Untuk pengguna Windows saja.
Penting : Pastikan Anda dapat menjalankan
pwsh.exe
dari perintah PowerShell. Jika ini gagal, Anda mungkin perlu meningkatkan PowerShell.
Buruh pelabuhan
PENTING : Pastikan Docker berjalan sebelum menjalankan perintah penyediaan / penyebaran
azd
.
Kemudian, jalankan perintah berikut untuk mendapatkan proyek di lingkungan lokal Anda:
azd auth login
azd init -t azure-search-openai-demo-csharp
azd env new azure-search-openai-demo-csharp
Stream Langsung: Disarankan dari awal di Codespaces Stream Live: Disarankan dari awal di Windows 11
PENTING : Pastikan Docker berjalan sebelum menjalankan perintah penyediaan / penyebaran
azd
.
Jalankan perintah berikut, jika Anda tidak memiliki layanan Azure yang sudah ada sebelumnya dan ingin memulai dari penyebaran yang baru.
Jalankan azd up
- Ini akan menyediakan sumber daya Azure dan menggunakan sampel ini ke sumber daya tersebut, termasuk membangun indeks pencarian berdasarkan file yang ditemukan di folder ./data
.
Catatan : Aplikasi ini menggunakan model
gpt-4o-mini
. Saat memilih wilayah mana yang akan digunakan, pastikan mereka tersedia di wilayah itu (yaitu Eastus). Untuk informasi lebih lanjut, lihat dokumentasi layanan Azure Openai.
Setelah aplikasi berhasil digunakan, Anda akan melihat URL dicetak ke konsol. Klik URL itu untuk berinteraksi dengan aplikasi di browser Anda.
Ini akan terlihat seperti berikut:
[! Catatan]: Mungkin perlu beberapa menit untuk aplikasi yang akan sepenuhnya digunakan. Setelah aplikasi digunakan, juga akan memakan waktu beberapa menit untuk memproses dokumen yang akan ditambahkan ke dalam database vektor.
Jika Anda memiliki sumber daya yang ada di Azure yang ingin Anda gunakan, Anda dapat mengonfigurasi azd
untuk menggunakannya dengan mengatur variabel lingkungan azd
berikut:
azd env set AZURE_OPENAI_SERVICE {Name of existing OpenAI service}
azd env set AZURE_OPENAI_RESOURCE_GROUP {Name of existing resource group that OpenAI service is provisioned to}
azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT {Name of existing ChatGPT deployment}
. Hanya diperlukan jika penyebaran chatgpt Anda bukanlah 'obrolan' default.azd env set AZURE_OPENAI_EMBEDDING_DEPLOYMENT {Name of existing embedding model deployment}
. Hanya diperlukan jika penyebaran model embedding Anda bukanlah embedding
default.azd up
Catatan
Anda juga dapat menggunakan akun pencarian dan penyimpanan yang ada. Lihat ./infra/main.parameters.json
untuk daftar variabel lingkungan untuk diteruskan ke azd env set
untuk mengkonfigurasi sumber daya yang ada.
Penting
Pastikan Docker berjalan sebelum menjalankan perintah azd
Provisioning / Deployment.
azd up
Catatan
Pastikan Anda memiliki file bisep yang didukung AZD di repositori Anda dan tambahkan file alur kerja tindakan github awal yang dapat dipicu secara manual (untuk penyebaran awal) atau pada perubahan kode (secara otomatis meletakkan kembali dengan perubahan yang ada pada grup yang sesuai.
"resourceGroupName" : {
"value" : " ${AZURE_RESOURCE_GROUP} "
}
"tags" : {
"value" : " ${AZURE_TAGS} "
}
param resourceGroupName string = ''
param tags string = ''
var baseTags = { 'azd-env-name' : environmentName }
var updatedTags = union ( empty ( tags ) ? {} : base64ToJson ( tags ), baseTags )
Make sure to use " updatedTags " when assigning " tags " to resource group created in your bicep file and update the other resources to use " baseTags " instead of " tags ". For example -
``` json
resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
name : ! empty ( resourceGroupName ) ? resourceGroupName : '${ abbrs . resourcesResourceGroups }${ environmentName }'
location : location
tags : updatedTags
}
Penting
Pastikan Docker berjalan sebelum menjalankan perintah azd
Provisioning / Deployment.
Jalankan azd auth login
Setelah aplikasi digunakan, atur variabel lingkungan AZURE_KEY_VAULT_ENDPOINT
. Anda dapat menemukan nilainya di file .azure/-environment-name/.env atau portal Azure.
Jalankan perintah .NET CLI berikut untuk memulai server API minimal ASP.NET Core (host klien):
dotnet run --project ./app/backend/MinimalApi.csproj --urls=http://localhost:7181/
Arahkan ke http: // localhost: 7181, dan uji aplikasi.
Sampel ini mencakup klien .net Maui, mengemas pengalaman sebagai aplikasi yang dapat berjalan di desktop Windows/MacOS atau di perangkat Android dan iOS. Klien Maui di sini diimplementasikan menggunakan Blazor Hybrid, membiarkannya berbagi sebagian besar kode dengan frontend situs web.
Buka Aplikasi/App-maui.sln untuk membuka solusi yang mencakup klien Maui
Edit aplikasi/maui-blazor/mauiprogram.cs , memperbarui client.BaseAddress
dengan URL untuk backend.
Jika berjalan di Azure, gunakan URL untuk backend layanan dari langkah -langkah di atas. Jika berjalan secara lokal, gunakan http: // localhost: 7181.
Atur Mauiblazor sebagai proyek startup dan jalankan aplikasi
Jalankan yang berikut jika Anda ingin memberi orang lain akses ke lingkungan yang digunakan dan yang sudah ada.
azd init -t azure-search-openai-demo-csharp
azd env refresh -e {environment name}
- Perhatikan bahwa mereka akan memerlukan nama lingkungan AZD, ID berlangganan, dan lokasi untuk menjalankan perintah ini - Anda dapat menemukan nilai -nilai tersebut di ./azure/{env name}/.env
Ini akan mengisi file .ENV lingkungan AZD mereka dengan semua pengaturan yang diperlukan untuk menjalankan aplikasi secara lokal.pwsh ./scripts/roles.ps1
- Ini akan menetapkan semua peran yang diperlukan untuk pengguna sehingga mereka dapat menjalankan aplikasi secara lokal. Jika mereka tidak memiliki izin yang diperlukan untuk membuat peran dalam langganan, maka Anda mungkin perlu menjalankan skrip ini untuk mereka. Pastikan untuk mengatur variabel lingkungan AZURE_PRINCIPAL_ID
dalam file azd .env atau di shell aktif ke id azure mereka, yang bisa mereka dapatkan dengan az account show
. Jalankan azd down
azd
. URL dicetak ketika azd
selesai (sebagai "titik akhir"), atau Anda dapat menemukannya di portal Azure.Sekali di aplikasi web:
Untuk mengaktifkan wawasan aplikasi dan penelusuran setiap permintaan, bersama dengan pencatatan kesalahan, atur variabel AZURE_USE_APPLICATION_INSIGHTS
ke true sebelum menjalankan azd up
azd env set AZURE_USE_APPLICATION_INSIGHTS true
azd up
Untuk melihat data kinerja, buka sumber daya Application Insights di grup sumber daya Anda, klik blade "Selidiki -> Kinerja" dan navigasikan ke permintaan HTTP apa pun untuk melihat data waktu. Untuk memeriksa kinerja permintaan obrolan, gunakan tombol "bor ke sampel" untuk melihat jejak ujung ke ujung dari semua panggilan API yang dibuat untuk permintaan obrolan:
Untuk melihat kesalahan pengecualian dan server, navigasikan ke blade "selidiki -> kegagalan" dan gunakan alat penyaringan untuk menemukan pengecualian tertentu. Anda dapat melihat jejak tumpukan Python di sisi kanan.
Secara default, aplikasi Azure Container yang digunakan tidak akan memiliki otentikasi atau pembatasan akses yang diaktifkan, yang berarti siapa pun dengan akses jaringan yang dapat dirutekan ke aplikasi wadah dapat mengobrol dengan data yang Anda diindeks. Anda dapat memerlukan otentikasi ke Azure Active Directory Anda dengan mengikuti tutorial Otentikasi Tambah Aplikasi Container dan mengaturnya terhadap aplikasi kontainer yang digunakan.
Untuk kemudian membatasi akses ke seperangkat pengguna atau grup tertentu, Anda dapat mengikuti langkah -langkah dari membatasi aplikasi Azure Ad ke satu set pengguna dengan mengubah "penugasan yang diperlukan?" Opsi di bawah aplikasi perusahaan, dan kemudian menetapkan akses pengguna/grup. Pengguna yang tidak diberikan akses eksplisit akan menerima pesan kesalahan -aAdsts50105: Administrator Anda telah mengonfigurasi aplikasi <pesp_name> untuk memblokir pengguna kecuali mereka secara khusus diberikan ('ditetapkan') akses ke aplikasi.-
Dengan GPT-4o-mini
, dimungkinkan untuk mendukung generasi augmented retrival yang diperkaya dengan memberikan teks dan gambar sebagai konten sumber. Untuk mengaktifkan Dukungan Visi, Anda perlu mengaktifkan USE_VISION
dan menggunakan model GPT-4o
atau GPT-4o-mini
saat penyediaan.
Catatan
Anda perlu mengindeks ulang materi pendukung dan menggunakan kembali aplikasi setelah mengaktifkan dukungan GPT-4O jika Anda telah menggunakan aplikasi sebelumnya. Ini karena memungkinkan dukungan GPT-4O membutuhkan bidang baru untuk ditambahkan ke indeks pencarian.
Untuk mengaktifkan dukungan GPT-4V dengan layanan Azure Openai, jalankan perintah berikut:
azd env set USE_VISION true
azd env set USE_AOAI true
azd env set AZURE_OPENAI_CHATGPT_MODEL_NAME gpt-4o-mini
azd env set AZURE_OPENAI_RESOURCE_LOCATION eastus # Please check the gpt model availability for more details.
azd up
Untuk mengaktifkan dukungan visi dengan OpenAi, jalankan perintah berikut:
azd env set USE_VISION true
azd env set USE_AOAI false
azd env set OPENAI_CHATGPT_DEPLOYMENT gpt-4o
azd up
Untuk membersihkan sumber daya yang sebelumnya digunakan, jalankan perintah berikut:
azd down --purge
azd env set AZD_PREPDOCS_RAN false # This is to ensure that the documents are re-indexed with the new fields.
Selain tips di bawah ini, Anda dapat menemukan dokumentasi yang luas di folder Docs.
Sampel ini dirancang untuk menjadi titik awal untuk aplikasi produksi Anda sendiri, tetapi Anda harus melakukan tinjauan menyeluruh tentang keamanan dan kinerja sebelum digunakan untuk produksi. Berikut beberapa hal yang perlu dipertimbangkan:
Kapasitas OpenAI : TPM default (token per menit) diatur ke 30k. Itu setara dengan sekitar 30 percakapan per menit (dengan asumsi 1k per pesan/respons pengguna). Anda dapat meningkatkan kapasitas dengan mengubah Parameter chatGptDeploymentCapacity
dan embeddingDeploymentCapacity
di infra/main.bicep
ke kapasitas maksimum akun Anda. Anda juga dapat melihat tab kuota di Azure Openai Studio untuk memahami berapa banyak kapasitas yang Anda miliki.
Azure Storage : Akun penyimpanan default menggunakan SKU Standard_LRS
. Untuk meningkatkan ketahanan Anda, kami sarankan menggunakan Standard_ZRS
untuk penyebaran produksi, yang dapat Anda tentukan menggunakan properti sku
di bawah modul storage
di infra/main.bicep
.
Azure AI Search : Jika Anda melihat kesalahan tentang kapasitas layanan pencarian yang dilampaui, Anda mungkin merasa terbantu untuk meningkatkan jumlah replika dengan mengubah replicaCount
di infra/core/search/search-services.bicep
.
Azure Container Apps : Secara default, aplikasi ini menyebarkan kontainer dengan 0,5 core cpu dan memori 1GB. Replika minimum adalah 1 dan maksimum 10. Untuk aplikasi ini, Anda dapat menetapkan nilai-nilai seperti containerCpuCoreCount
, containerMaxReplicas
, containerMemory
, containerMinReplicas
dalam file infra/core/host/container-app.bicep
agar sesuai dengan kebutuhan Anda. Anda dapat menggunakan aturan penskalaan otomatis atau aturan penskalaan yang dijadwalkan, dan meningkatkan maksimum/minimum berdasarkan beban.
Otentikasi : Secara default, aplikasi yang digunakan dapat diakses secara publik. Kami merekomendasikan membatasi akses ke pengguna yang diautentikasi. Lihat Mengaktifkan otentikasi di atas untuk cara mengaktifkan otentikasi.
Jaringan : Kami sarankan menggunakan jaringan virtual. Jika aplikasi hanya untuk penggunaan perusahaan internal, gunakan zona DNS pribadi. Juga pertimbangkan untuk menggunakan Azure API Management (APIM) untuk firewall dan bentuk perlindungan lainnya. Untuk detail lebih lanjut, baca arsitektur referensi zona pendaratan Azure Openai.
LoadTesting : Kami sarankan menjalankan loadtest untuk jumlah pengguna yang Anda harapkan.
Azure.AI.OpenAI
Nuget PaketCatatan
Dokumen PDF yang digunakan dalam demo ini berisi informasi yang dihasilkan menggunakan model bahasa (layanan Azure OpenAI). Informasi yang terkandung dalam dokumen -dokumen ini hanya untuk tujuan demonstrasi dan tidak mencerminkan pendapat atau keyakinan Microsoft. Microsoft tidak membuat representasi atau jaminan dalam bentuk apa pun, tersurat maupun tersirat, tentang kelengkapan, akurasi, keandalan, kesesuaian atau ketersediaan sehubungan dengan informasi yang terkandung dalam dokumen ini. Semua hak dilindungi undang -undang untuk Microsoft.
PERTANYAAN : Mengapa kita perlu memecah PDF menjadi potongan -potongan saat pencarian AZure AI mendukung mencari dokumen besar?
Jawaban : Chunking memungkinkan kami untuk membatasi jumlah informasi yang kami kirim ke OpenAi karena batas token. Dengan memecah konten, ini memungkinkan kita untuk dengan mudah menemukan potongan teks potensial yang dapat kita suntikkan ke Openai. Metode chunking yang kami gunakan memanfaatkan jendela teks geser sehingga kalimat yang mengakhiri satu potongan akan dimulai berikutnya. Ini memungkinkan kita untuk mengurangi kemungkinan kehilangan konteks teks.