Menskalakan Azure OpenAI untuk JavaScript dengan Azure API Management

Pelajari cara menambahkan penyeimbangan beban tingkat perusahaan ke aplikasi Anda untuk memperluas aplikasi obrolan di luar batas token Azure OpenAI dan kuota model. Pendekatan ini menggunakan Azure API Management untuk mengarahkan lalu lintas secara cerdas antara tiga sumber daya Azure OpenAI.

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.
  • Load balancer dengan Azure API Management

Arsitektur untuk penyeimbangan beban Azure OpenAI dengan Azure API Management

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 API Management. Solusi ini dengan mulus mengekspos satu titik akhir dari Azure API Management ke server aplikasi obrolan Anda.

Diagram memperlihatkan arsitektur aplikasi obrolan dengan Azure API Management di depan tiga sumber daya Azure OpenAI.

Sumber daya Azure API Management, sebagai lapisan API, berada di depan sekumpulan sumber daya Azure OpenAI. Lapisan API berlaku untuk dua skenario: normal dan dibatasi. Selama skenario normal di mana token dan kuota model tersedia, sumber daya Azure OpenAI mengembalikan 200 kembali melalui lapisan API dan server aplikasi backend.

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.

Ketika sumber daya dibatasi karena batas kuota, lapisan API 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 sampel penyeimbang lokal Azure API Management

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 API Management

  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. Ini mungkin memakan waktu hingga 30 menit.

Mendapatkan titik akhir load balancer

Jalankan perintah bash berikut untuk melihat variabel lingkungan dari penyebaran. Anda memerlukan informasi ini nanti.

azd env get-values | grep APIM_GATEWAY_URL

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, yang memberi tahu backend aplikasi Obrolan berapa nilai URL kustom untuk permintaan OpenAI.

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

    azd up
    

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.

Membersihkan sumber daya load balancer

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-apim-lb repositori GitHub.

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

  3. Buka menu konteks untuk item 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