Bagikan melalui


Menskala Azure OpenAI untuk chatbot JavaScript menggunakan RAG dengan Azure Container Apps

Pelajari cara menambahkan penyeimbangan beban ke aplikasi Anda untuk memperluas aplikasi obrolan di luar batas token Layanan Azure OpenAI dan kuota model. Pendekatan ini menggunakan Azure Container Apps untuk membuat tiga titik akhir Azure OpenAI dan kontainer utama untuk mengarahkan lalu lintas masuk ke salah satu dari tiga titik akhir.

Artikel ini mengharuskan Anda untuk menyebarkan dua sampel terpisah:

  • Aplikasi obrolan

    • Jika Anda belum menginstal aplikasi obrolan, tunggu hingga contoh load balancer diinstal.

    • Jika Anda sudah menyebarkan aplikasi obrolan sekali, ubah variabel lingkungan untuk mendukung titik akhir kustom untuk load balancer dan sebarkan ulang lagi.

    • Aplikasi obrolan tersedia dalam bahasa berikut:

  • Aplikasi load balancer

Catatan

Artikel ini menggunakan satu atau beberapa templat aplikasi AI sebagai dasar untuk contoh dan panduan dalam artikel. Templat aplikasi AI memberi Anda implementasi referensi yang terawat dengan baik yang mudah disebarkan. Ini membantu memastikan titik awal berkualitas tinggi untuk aplikasi AI Anda.

Arsitektur untuk penyeimbangan beban Azure OpenAI dengan Azure Container Apps

Karena sumber daya Azure OpenAI memiliki batas token dan kuota model tertentu, aplikasi obrolan yang menggunakan satu sumber daya Azure OpenAI rentan mengalami kegagalan percakapan karena batas tersebut.

Diagram yang memperlihatkan arsitektur aplikasi obrolan dengan sumber daya Azure OpenAI disorot.

Untuk menggunakan aplikasi obrolan tanpa mencapai batas tersebut, gunakan solusi load balancing dengan Aplikasi Kontainer. Solusi ini dengan mulus mengekspos satu titik akhir dari Container Apps ke server aplikasi obrolan Anda.

Diagram yang memperlihatkan arsitektur aplikasi obrolan dengan Azure Container Apps di depan tiga sumber daya Azure OpenAI.

Aplikasi kontainer berada di depan sekumpulan sumber daya Azure OpenAI. Aplikasi kontainer memecahkan dua skenario: normal dan dibatasi kinerja. Selama skenario normal di mana token dan kuota model tersedia, sumber daya Azure OpenAI mengembalikan 200 kembali melalui aplikasi kontainer dan server aplikasi.

Diagram yang memperlihatkan skenario normal. Skenario normal menunjukkan tiga grup titik akhir Azure OpenAI dengan grup pertama dari dua titik akhir yang berhasil mendapatkan lalu lintas.

Saat sumber daya berada dalam skenario dibatasi karena pembatasan kuota, aplikasi kontainer dapat segera mencoba sumber daya Azure OpenAI yang berbeda untuk memenuhi permintaan aplikasi obrolan asli.

Diagram yang menunjukkan skenario pembatasan dengan kode respons 429 yang gagal dan header respons menunjukkan berapa detik klien harus menunggu untuk mencoba kembali.

Prasyarat

Buka aplikasi sampel Load Balancer Container Apps

GitHub Codespaces menjalankan kontainer pengembangan yang dikelola oleh GitHub dengan Visual Studio Code untuk Web sebagai antarmuka pengguna. Untuk lingkungan pengembangan yang paling mudah, gunakan GitHub Codespaces sehingga Anda memiliki alat dan dependensi pengembang yang benar yang telah diinstal sebelumnya untuk menyelesaikan artikel ini.

Buka di GitHub Codespaces.

Penting

Semua akun GitHub dapat menggunakan GitHub Codespaces hingga 60 jam gratis setiap bulan dengan dua instans inti. Untuk informasi selengkapnya, lihat penyimpanan dan waktu inti yang disertakan bulanan untuk GitHub Codespaces.

Mendistribusikan penyeimbang beban Azure Container Apps

  1. Masuk ke Azure Developer CLI untuk menyediakan autentikasi ke langkah-langkah provisi dan penyebaran:

    azd auth login --use-device-code
    
  2. Atur variabel lingkungan untuk menggunakan autentikasi Azure CLI ke langkah setelah penyediaan.

    azd config set auth.useAzCliAuth "true"
    
  3. Sebarkan aplikasi load balancer:

    azd up
    

    Pilih langganan dan wilayah untuk penyebaran. Mereka tidak harus memiliki langganan dan region yang sama dengan aplikasi percakapan.

  4. Tunggu hingga penyebaran selesai sebelum Anda melanjutkan.

Ambil titik akhir penyebaran

  1. Gunakan perintah berikut untuk menampilkan titik akhir yang disebarkan untuk aplikasi kontainer:

    azd env get-values
    
  2. Salin nilai CONTAINER_APP_URL. Anda akan menggunakannya di bagian berikutnya.

Menyebarkan ulang aplikasi obrolan dengan titik akhir penyeimbang beban

Contoh-contoh ini diselesaikan pada sampel aplikasi obrolan.

  1. Buka kontainer pengembangan sampel aplikasi obrolan dengan menggunakan salah satu pilihan berikut.

    Bahasa GitHub Codespaces Visual Studio Code
    .NET Open in GitHub CodespacesBuka di GitHub Codespaces Buka di Kontainer DevBuka di Kontainer Dev
    JavaScript Open in GitHub CodespacesBuka di GitHub Codespaces Buka di Kontainer DevBuka di Kontainer Dev
    Phyton Open in GitHub CodespacesBuka di GitHub Codespaces Buka di Kontainer DevBuka di Kontainer Dev
  2. Masuk ke Azure Developer CLI (AZD):

    azd auth login
    

    Selesaikan instruksi masuk.

  3. Buat lingkungan AZD dengan nama seperti chat-app:

    azd env new <name>
    
  4. Tambahkan variabel lingkungan berikut, yang memberi tahu backend aplikasi obrolan untuk menggunakan URL kustom untuk permintaan Azure OpenAI:

    azd env set OPENAI_HOST azure_custom
    
  5. Tambahkan variabel lingkungan berikut. Ganti <CONTAINER_APP_URL> untuk URL dari bagian sebelumnya. Tindakan ini memberi tahu backend aplikasi obrolan berapa nilai URL kustom untuk permintaan Azure OpenAI.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Sebarkan aplikasi obrolan:

    azd up
    

Gunakan aplikasi obrolan dengan keyakinan bahwa aplikasi tersebut dapat menampung banyak pengguna tanpa menghabiskan kuota.

Mentransmisikan log untuk melihat hasil dari penyeimbang beban

  1. Dalam Azure portal, cari grup sumber daya Anda.

  2. Dari daftar sumber daya dalam grup, pilih sumber daya Azure Container Apps.

  3. Pilih Pemantauan>Aliran log untuk melihat log.

  4. Gunakan aplikasi obrolan untuk menghasilkan lalu lintas di log.

  5. Cari log, yang mereferensikan sumber daya Azure OpenAI. Masing-masing dari tiga sumber daya memiliki identitas numeriknya dalam komentar log yang dimulai dengan Proxying to https://openai3, di mana 3 menunjukkan sumber daya Azure OpenAI ketiga.

    Cuplikan layar yang memperlihatkan log streaming Azure Container Apps dengan dua baris log disorot untuk menunjukkan komentar log.

Ketika load balancer menerima status bahwa permintaan melebihi kuota, load balancer secara otomatis berputar ke sumber daya lain.

Mengonfigurasi kuota TPM

Secara default, masing-masing instans Azure OpenAI di load balancer disebarkan dengan kapasitas 30.000 token per menit (TPM). Anda dapat menggunakan aplikasi obrolan dengan keyakinan bahwa aplikasi tersebut dapat mengakomodasi banyak pengguna tanpa batasan kuota. Ubah nilai ini ketika:

  • Anda mengalami kesalahan kapasitas penyebaran: Turunkan nilainya.
  • Anda memerlukan kapasitas yang lebih tinggi: Naikkan nilai.
  1. Gunakan perintah berikut untuk mengubah nilai:

    azd env set OPENAI_CAPACITY 50
    
  2. Konfigurasikan ulang penyeimbang beban.

    azd up
    

Membersihkan sumber daya

Setelah selesai dengan aplikasi obrolan dan load balancer, bersihkan sumber daya. Sumber daya Azure yang dibuat dalam artikel ini ditagihkan ke langganan Azure Anda. Jika Anda tidak mengharapkan untuk membutuhkan sumber daya ini di masa mendatang, hapus sumber daya tersebut untuk menghindari dikenakan lebih banyak biaya.

Membersihkan sumber daya aplikasi obrolan

Kembali ke artikel aplikasi obrolan untuk membersihkan sumber daya:

Bersihkan sumber daya penyeimbang unggahan

Hapus sumber daya Azure dan hapus kode sumber:

azd down --purge --force

Sakelar menyediakan:

  • purge: Sumber daya yang dihapus akan segera dibersihkan secara menyeluruh sehingga Anda dapat menggunakan kembali token Layanan Azure OpenAI dalam hitungan menit.
  • force: Penghapusan terjadi secara diam-diam, tanpa memerlukan persetujuan pengguna.

Membersihkan GitHub Codespaces dan Visual Studio Code

Menghapus lingkungan GitHub Codespaces memastikan bahwa Anda dapat memaksimalkan jumlah pemberian izin per jam inti gratis yang Anda dapatkan untuk akun Anda.

Penting

Untuk informasi selengkapnya tentang hak-hak akun GitHub Anda, lihat penyimpanan bulanan GitHub Codespaces dan jam inti yang disertakan.

  1. Masuk ke dasbor GitHub Codespaces.

  2. Temukan codespace anda yang sedang berjalan yang bersumber dari azure-samples/openai-aca-lb repositori GitHub.

    Cuplikan layar yang memperlihatkan semua codespace yang sedang berjalan, termasuk status dan templatnya.

  3. Buka menu konteks untuk codespace, lalu pilih Hapus.

    Cuplikan layar yang memperlihatkan menu konteks untuk satu ruang kode dengan opsi Hapus disorot.

Dapatkan bantuan

Jika Anda mengalami masalah saat menerapkan load balancer Azure Container Apps, tambahkan masalah Anda ke halaman web Issues repositori.

Contoh Kode

Sampel yang digunakan dalam artikel ini meliputi:

Langkah selanjutnya

  • Gunakan Azure Load Testing untuk memuat pengujian aplikasi obrolan Anda dengan Azure Load Testing Service.