Menskalakan azure OpenAI untuk obrolan JavaScript menggunakan RAG dengan Azure Container Apps

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

Artikel ini mengharuskan Anda untuk menyebarkan 2 sampel terpisah:

  • Aplikasi obrolan

    • Jika Anda belum menyebarkan aplikasi obrolan, tunggu hingga sampel load balancer disebarkan.

    • Jika Anda telah menyebarkan aplikasi obrolan sekali, Anda akan mengubah variabel lingkungan untuk mendukung titik akhir kustom untuk load balancer dan menyebarkannya kembali.

    • Aplikasi obrolan tersedia dalam bahasa berikut:

  • Aplikasi load balancer

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 memperlihatkan arsitektur aplikasi obrolan dengan sumber daya Azure OpenAI disorot.

Untuk menggunakan aplikasi obrolan tanpa mencapai batas tersebut, gunakan solusi seimbang beban dengan Azure Container Apps. Solusi ini dengan mulus mengekspos satu titik akhir dari Azure Container Apps ke server aplikasi obrolan Anda.

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

Aplikasi Azure Container berada di depan sekumpulan sumber daya Azure OpenAI. Aplikasi Kontainer memecahkan dua skenario: normal dan dibatasi. Selama skenario normal di mana token dan kuota model tersedia, sumber daya Azure OpenAI mengembalikan 200 kembali melalui Aplikasi Kontainer dan App Server.

Diagram yang menampilkan 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 yang dibatasi seperti karena batas kuota, aplikasi Azure Container dapat mencoba kembali sumber daya Azure OpenAI yang berbeda segera untuk memenuhi permintaan aplikasi obrolan asli.

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

Prasyarat

Buka aplikasi Kontainer aplikasi penyeimbang lokal aplikasi sampel

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 Codespace hingga 60 jam gratis setiap bulan dengan 2 instans inti. Untuk informasi selengkapnya, lihat GitHub Codespaces bulanan yang disertakan penyimpanan dan jam inti.

Menyebarkan load balancer Azure Container Apps

  1. Untuk menyebarkan load balancer ke Azure, masuk ke Azure Developer CLI (AZD).

    azd auth login
    
  2. Selesaikan instruksi masuk.

  3. Sebarkan aplikasi load balancer.

    azd up
    

    Anda harus memilih langganan dan wilayah untuk penyebaran. Ini tidak harus menjadi langganan dan wilayah yang sama dengan aplikasi obrolan.

  4. Tunggu hingga penerapan selesai sebelum melanjutkan.

  5. Dapatkan URL di akhir penyebaran bernama Titik Akhir. Ini adalah yang CONTAINER_APP_URL digunakan di bagian berikutnya.

Menyebarkan ulang aplikasi Obrolan dengan titik akhir load balancer

Ini selesai pada sampel aplikasi obrolan.

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

    Bahasa Codespaces Visual Studio Code
    .NET Buka di GitHub Codespaces Buka di Kontainer Dev
    JavaScript Buka di GitHub Codespaces Buka di Kontainer Dev
    Python Buka di GitHub Codespaces Buka 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 OpenAI.

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

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

    azd up
    

Anda sekarang dapat menggunakan aplikasi obrolan dengan keyakinan bahwa aplikasi tersebut dibuat untuk menskalakan di banyak pengguna tanpa kehabisan kuota.

Mengalirkan log untuk melihat hasil load balancer

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

  2. Dari daftar sumber daya dalam grup, pilih sumber daya Aplikasi Kontainer.

  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 memperlihatkan log streaming Aplikasi Kontainer Azure dengan dua baris log bersinar tinggi yang menunjukkan komentar log.

  6. Saat Anda menggunakan aplikasi obrolan, ketika load balancer menerima status bahwa permintaan telah melebihi kuota, load balancer secara otomatis berputar ke sumber daya lain.

Mengonfigurasi token per menit kuota (TPM)

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

  • Anda mendapatkan kesalahan kapasitas penyebaran: menurunkan nilai tersebut.
  • Merencanakan kapasitas yang lebih tinggi, tingkatkan nilainya.
  1. Gunakan perintah berikut untuk mengubah nilai.

    azd env set OPENAI_CAPACITY 50
    
  2. Sebarkan ulang load balancer.

    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 tersebut.

Bersihkan sumber daya penyeimbang unggahan

Jalankan perintah Azure Developer CLI berikut untuk menghapus sumber daya Azure dan menghapus kode sumber:

azd down --purge --force

Sakelar menyediakan:

  • purge: Sumber daya yang dihapus segera dihapus menyeluruh. Ini memungkinkan Anda untuk menggunakan kembali TPM Azure OpenAI.
  • force: Penghapusan terjadi secara diam-diam, tanpa memerlukan persetujuan pengguna.

Membersihkan GitHub Codespaces

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 penetapan akun GitHub Anda, lihat GitHub Codespaces bulanan yang disertakan penyimpanan dan jam inti.

  1. Masuk ke dasbor GitHub Codespaces (https://github.com/codespaces).

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

    Cuplikan layar semua Codespace yang sedang berjalan termasuk status dan templatnya.

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

    Cuplikan layar menu konteks untuk satu codespace dengan opsi hapus disorot.

Dapatkan bantuan

Jika Anda mengalami masalah saat menyebarkan load balancer Azure API Management, catat masalah Anda ke Masalah repositori.

Kode Sampel

Sampel yang digunakan dalam artikel ini meliputi:

Langkah selanjutnya