Bagikan melalui


Mengaktifkan semantik cache untuk API LLM di Azure API Management

BERLAKU UNTUK: Semua lapisan API Management

Aktifkan caching semantik untuk respons permintaan LLM API, guna mengurangi kebutuhan bandwidth dan pemrosesan yang dibebankan pada API backend, serta menurunkan latensi yang dialami pengguna API. Dengan caching semantik, Anda dapat mengembalikan respons cache untuk prompt yang identik dan juga untuk prompt yang serupa dalam makna, bahkan jika teksnya tidak identik. Untuk latar belakang, lihat Tutorial: Menggunakan Azure Managed Redis sebagai cache semantik.

Catatan

Langkah-langkah konfigurasi dalam artikel ini menunjukkan cara mengaktifkan caching semantik untuk API yang ditambahkan ke API Management dari Azure OpenAI dalam model-model Microsoft Foundry. Anda dapat menerapkan langkah serupa untuk mengaktifkan caching semantik untuk API model bahasa besar (LLM) yang sesuai yang tersedia melalui Azure AI Model Inference API atau dengan model yang kompatibel dengan OpenAI yang disajikan melalui penyedia inferensi dari pihak ketiga.

Prasyarat

Menguji penyebaran API Obrolan

Pertama, uji penyebaran Azure OpenAI untuk memastikan CHAT Completion API atau Chat API berfungsi seperti yang diharapkan. Untuk langkah-langkahnya, lihat Mengimpor API Azure OpenAI ke Azure API Management.

Misalnya, uji Azure OpenAI Chat API dengan mengirim permintaan POST ke titik akhir API dengan perintah di isi permintaan. Respons harus mencakup penyelesaian perintah. Contoh permintaan:

POST https://my-api-management.azure-api.net/my-api/openai/deployments/chat-deployment/chat/completions?api-version=2024-02-01

dengan isi permintaan:

{"messages":[{"role":"user","content":"Hello"}]}

Ketika permintaan berhasil, respons menyertakan penyelesaian untuk pesan obrolan.

Membuat backend untuk penyematan API

Buat sumber daya backend untuk menerapkan API embedding dengan pengaturan berikut:

  • Nama - Nama pilihan Anda, seperti embeddings-backend. Anda menggunakan nama ini untuk merujuk sistem backend dalam kebijakan.

  • Jenis - Pilih URL Kustom.

  • URL Runtime - URL API embeddings untuk penyebaran di Azure OpenAI, mirip dengan: https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings (tanpa parameter kueri).

  • Info masuk otorisasi - Buka tab Identitas Terkelola .

    • Identitas klien - Pilih Identitas yang ditetapkan sistem atau masukkan ID klien identitas terkelola yang ditetapkan pengguna.
    • ID Sumber Daya - Masukkan https://cognitiveservices.azure.com/ untuk Azure OpenAI.

Menguji penyematan backend

Untuk menguji backend embedding, buat operasi API untuk Azure OpenAI API Anda:

  1. Pada tab Desain API Anda, pilih + Tambahkan operasi.
  2. Masukkan Nama Tampilan seperti Embedding dan, jika diinginkan, Nama untuk operasi.
  3. Di bagian Frontend , di URL, pilih POST dan masukkan jalur /.
  4. Pada tab Header , tambahkan header yang diperlukan dengan nama Content-Type dan nilai application/json.
  5. Pilih Simpan.

Konfigurasikan kebijakan berikut di bagian Pemrosesan masuk dari operasi API. Dalam kebijakan set-backend-service, ganti nama backend yang Anda buat.

<policies>
    <inbound>
        <set-backend-service backend-id="embeddings-backend" />
        <authentication-managed-identity resource="https://cognitiveservices.azure.com/" />
        [...]
    </inbound>
    [...]
</policies>

Pada tab Uji , uji operasi dengan menambahkan api-version parameter kueri dengan nilai seperti 2024-02-01. Berikan isi permintaan yang valid. Contohnya:

{"input":"Hello"}

Jika permintaan berhasil, respons menyertakan representasi vektor teks input. Contoh respons:

{
    "object": "list",
    "data": [{
        "object": "embedding",
        "index": 0,
        "embedding": [
            -0.021829502,
            -0.007157768,
            -0.028619017,
            [...]
        ]
    }]
}

Mengonfigurasi kebijakan caching semantik

Untuk mengaktifkan penyimpanan sementara semantik untuk API Azure OpenAI di Azure API Management, terapkan aturan kebijakan berikut: satu untuk melakukan pencarian dalam cache sebelum mengirim permintaan dan yang lain untuk menyimpan respons untuk penggunaan kembali di masa mendatang.

  • Di bagian Pemrosesan Inbound untuk API, tambahkan kebijakan azure-openai-semantic-cache-lookup. embeddings-backend-id Dalam atribut , tentukan backend Embeddings API yang Anda buat.

    Catatan

    Saat mengaktifkan cache semantik untuk API model bahasa besar lainnya, gunakan kebijakan llm-semantic-cache-lookup sebagai gantinya.

    Contoh:

    <azure-openai-semantic-cache-lookup
        score-threshold="0.15"
        embeddings-backend-id="embeddings-backend"
        embeddings-backend-auth="system-assigned"
        ignore-system-messages="true"
        max-message-count="10">
        <vary-by>@(context.Subscription.Id)</vary-by>
    </azure-openai-semantic-cache-lookup>
    <rate-limit calls="10" renewal-period="60" />
    

    Catatan

    Tambahkan kebijakan batas tarif (atau kebijakan batas tarif berdasarkan kunci ) setelah pencarian cache untuk membantu membatasi jumlah panggilan dan mencegah kelebihan beban pada layanan backend jika cache tidak tersedia.

  • Di bagian Pemrosesan keluar untuk API, tambahkan kebijakan azure-openai-semantic-cache-store.

    Catatan

    Saat mengaktifkan penyimpanan semantik untuk API model bahasa besar lainnya, gunakan kebijakan llm-semantic-cache-store.

    Contoh:

    <azure-openai-semantic-cache-store duration="60" />
    

Konfirmasi penembolokan

Untuk mengonfirmasi bahwa penembolokan semantik berfungsi sesuai harapan, lacak operasi Penyelesaian pengujian atau Penyelesaian Percakapan dengan menggunakan konsol pengujian di portal. Pastikan bahwa cache digunakan pada percobaan berikutnya dengan memeriksa jejak. Pelajari selengkapnya tentang melacak panggilan API di Azure API Management.

Sesuaikan atribut score-threshold dalam kebijakan pencarian untuk mengontrol seberapa dekat prompt masuk harus cocok dengan prompt yang di-cache untuk mengembalikan respons tersimpannya. Ambang skor yang lebih rendah berarti bahwa perintah harus memiliki kesamaan semantik yang lebih tinggi untuk mengembalikan respons cache. Perintah dengan skor di atas ambang batas tidak menggunakan respons cache.

Misalnya, jika cache digunakan, bagian Output menyertakan entri yang mirip dengan cuplikan layar berikut:

Cuplikan layar jejak permintaan di portal Azure.