Bagikan melalui


Tutorial: Menambahkan petunjuk penyelesaian teks Azure OpenAI ke fungsi Anda di Visual Studio Code

Artikel ini memperlihatkan kepada Anda cara menggunakan Visual Studio Code untuk menambahkan titik akhir HTTP ke aplikasi fungsi yang Anda buat di artikel mulai cepat sebelumnya. Saat dipicu, titik akhir HTTP baru ini menggunakan pengikatan input penyelesaian teks Azure OpenAI untuk mendapatkan petunjuk penyelesaian teks dari model data Anda.

Selama tutorial ini, Anda mempelajari cara menyelesaikan tugas-tugas ini:

  • Buat sumber daya di Azure OpenAI.
  • Sebarkan model di OpenAI sumber daya.
  • Atur izin akses ke sumber daya model.
  • Aktifkan aplikasi fungsi Anda untuk terhubung ke OpenAI.
  • Tambahkan pengikatan OpenAI ke fungsi yang dipicu HTTP Anda.

1. Periksa prasyarat

  • Dapatkan akses ke Azure OpenAI di langganan Azure Anda. Jika Anda belum diberikan akses, lengkapi formulir ini untuk meminta akses.
  • Emulator penyimpanan Azurite. Meskipun Anda juga dapat menggunakan akun Azure Storage yang sebenarnya, artikel ini mengasumsikan Anda menggunakan emulator ini.

2. Buat sumber daya Azure OpenAI Anda

Langkah-langkah berikut menunjukkan cara membuat model data Azure OpenAI di portal Azure.

  1. Masuk dengan langganan Azure Anda di portal Azure.

  2. Pilih Buat sumber daya dan cari Azure OpenAI. Saat Anda menemukan layanan, pilih Buat.

  3. Pada halaman Buat Azure OpenAI , berikan informasi berikut untuk bidang pada tab Dasar :

    Bidang Deskripsi
    Langganan Langganan Anda, yang telah di-onboarding untuk menggunakan Azure OpenAI.
    Grup sumber daya Grup sumber daya yang Anda buat untuk aplikasi fungsi di artikel sebelumnya. Anda dapat menemukan nama grup sumber daya ini dengan mengklik kanan aplikasi fungsi di browser Sumber Daya Azure, memilih properti, lalu mencari resourceGroup pengaturan dalam file sumber daya JSON yang dikembalikan.
    Wilayah Idealnya, lokasi yang sama dengan aplikasi fungsi.
    Nama Nama deskriptif untuk sumber daya Azure OpenAI Service Anda, seperti mySampleOpenAI.
    Tingkatan harga Tingkat harga untuk sumber daya. Saat ini, hanya tingkat Standar yang tersedia untuk Layanan Azure OpenAI. Untuk informasi selengkapnya tentang harga, kunjungi halaman harga Azure OpenAI

    Cuplikan layar yang memperlihatkan cara mengonfigurasi sumber daya Azure OpenAI di portal Azure.

  4. Pilih Berikutnya dua kali untuk menerima nilai default untuk tab Jaringan dan Tag . Layanan yang Anda buat tidak memiliki batasan jaringan apa pun, termasuk dari internet.

  5. Pilih Berikutnya waktu terakhir untuk pindah ke tahap akhir dalam proses: Tinjau + kirim.

  6. Konfirmasi pengaturan konfigurasi Anda, dan pilih Buat.

    portal Azure menampilkan pemberitahuan saat sumber daya baru tersedia. Pilih Buka sumber daya di pemberitahuan atau cari sumber daya Azure OpenAI baru Anda berdasarkan nama.

  7. Di halaman sumber daya Azure OpenAI untuk sumber daya baru Anda, pilih Klik di sini untuk melihat titik akhir di bawah Titik Akhir Penting>. Salin URL titik akhir dan kunci. Simpan nilai-nilai ini, Anda membutuhkannya nanti.

Sekarang setelah Anda memiliki kredensial untuk terhubung ke model Anda di Azure OpenAI, Anda perlu mengatur kredensial akses ini dalam pengaturan aplikasi.

3. Menyebarkan model

Sekarang Anda dapat menyebarkan model. Anda dapat memilih dari salah satu dari beberapa model yang tersedia di Azure OpenAI Studio.

Untuk menyebarkan model, ikuti langkah-langkah berikut:

  1. Masuk ke Azure OpenAI Studio.

  2. Pilih langganan dan sumber daya Azure OpenAI yang Anda buat, dan pilih Gunakan sumber daya.

  3. Di bawah Manajemen pilih Penyebaran.

  4. Pilih Buat penyebaran baru dan konfigurasikan bidang berikut:

    Bidang Deskripsi
    Nama penyebaran Pilih nama dengan hati-hati. Nama penyebaran digunakan dalam kode Anda untuk memanggil model dengan menggunakan pustaka klien dan REST API, jadi Anda harus menyimpan untuk digunakan nanti.
    Pilih model Ketersediaan model bervariasi menurut region. Untuk daftar model yang tersedia per wilayah, lihat Tabel ringkasan model dan ketersediaan wilayah.

    Penting

    Saat Anda mengakses model melalui API, Anda perlu merujuk ke nama penyebaran daripada nama model yang mendasari dalam panggilan API, yang merupakan salah satu perbedaan utama antara OpenAI dan Azure OpenAI. OpenAI hanya memerlukan nama model. Azure OpenAI selalu memerlukan nama penyebaran, bahkan saat menggunakan parameter model. Dalam dokumen kami, kami sering memiliki contoh di mana nama penyebaran diwakili sebagai identik dengan nama model untuk membantu menunjukkan model mana yang bekerja dengan titik akhir API tertentu. Pada akhirnya nama penyebaran Anda dapat mengikuti konvensi penamaan apa pun yang terbaik untuk kasus penggunaan Anda.

  5. Terima nilai default untuk pengaturan lainnya dan pilih Buat.

    Tabel penyebaran memperlihatkan entri baru yang sesuai dengan model yang baru Anda buat.

Anda sekarang memiliki semua yang Anda butuhkan untuk menambahkan penyelesaian teks berbasis Azure OpenAI ke aplikasi fungsi Anda.

4. Memperbarui pengaturan aplikasi

  1. Di Visual Studio Code, buka proyek kode lokal yang Anda buat saat menyelesaikan artikel sebelumnya.

  2. Dalam file local.settings.json di folder akar proyek, perbarui pengaturan ke AzureWebJobsStorage UseDevelopmentStorage=true. Anda dapat melewati langkah ini jika AzureWebJobsStorage pengaturan di local.settings.json diatur ke string koneksi untuk akun Azure Storage yang sudah ada, bukan UseDevelopmentStorage=true.

  3. Dalam file local.settings.json, tambahkan nilai pengaturan ini:

    • AZURE_OPENAI_ENDPOINT: diperlukan oleh ekstensi pengikatan. Atur nilai ini ke titik akhir sumber daya Azure OpenAI yang Anda buat sebelumnya.
    • AZURE_OPENAI_KEY: diperlukan oleh ekstensi pengikatan. Atur nilai ini ke kunci untuk sumber daya Azure OpenAI.
    • CHAT_MODEL_DEPLOYMENT_NAME: digunakan untuk menentukan pengikatan input. Atur nilai ini ke nama yang Anda pilih untuk penyebaran model Anda.
  4. Simpan file. Saat menyebarkan ke Azure, Anda juga harus menambahkan pengaturan ini ke aplikasi fungsi Anda.

5. Daftarkan ekstensi pengikatan

Karena Anda menggunakan pengikatan output Azure OpenAI, Anda harus menginstal ekstensi pengikatan yang sesuai sebelum menjalankan proyek.

Kecuali untuk pemicu HTTP dan timer, pengikatan diimplementasikan sebagai paket ekstensi. Untuk menambahkan paket ekstensi Azure OpenAI ke proyek Anda, jalankan perintah tambahkan paket dotnet ini di jendela Terminal:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.OpenAI --prerelease

5. Perbarui bundel ekstensi

Untuk mengakses pratinjau pengikatan Azure OpenAI, Anda harus menggunakan versi pratinjau bundel ekstensi yang berisi ekstensi ini.

extensionBundle Ganti pengaturan dalam file Anda saat ini host.json dengan JSON ini:

 "extensionBundle": {
   "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
   "version": "[4.*, 5.0.0)"
 }

Sekarang, Anda dapat menggunakan pengikatan output Azure OpenAI dalam proyek Anda.

6. Mengembalikan penyelesaian teks dari model

Kode yang whois Anda tambahkan membuat titik akhir fungsi HTTP di proyek yang sudah ada. Dalam fungsi ini, data yang diteruskan dalam parameter URL name permintaan GET digunakan untuk membuat permintaan penyelesaian secara dinamis. Prompt dinamis ini terikat ke pengikatan input penyelesaian teks, yang mengembalikan respons dari model berdasarkan perintah. Penyelesaian dari model dikembalikan dalam respons HTTP.

  1. Di file kelas yang sudah ada HttpExample , tambahkan pernyataan ini using :

    using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion;
    
  2. Dalam file yang sama, tambahkan kode ini yang menentukan titik akhir pemicu HTTP baru bernama whois:

    [Function(nameof(WhoIs))]
    public IActionResult WhoIs([HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequest req,
    [TextCompletionInput("Who is {name}?", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
    {
        if(!String.IsNullOrEmpty(response.Content))
        {
            return new OkObjectResult(response.Content);
        }
        else
        {
            return new NotFoundObjectResult("Something went wrong.");
        }
    }
    
  1. pom.xml Perbarui file proyek untuk menambahkan referensi ini ke properties koleksi:

    <azure-functions-java-library-openai>0.3.0-preview</azure-functions-java-library-openai>
    
  2. Dalam file yang sama, tambahkan dependensi ini ke dependencies koleksi:

    <dependency>
        <groupId>com.microsoft.azure.functions</groupId>
        <artifactId>azure-functions-java-library-openai</artifactId>
        <version>${azure-functions-java-library-openai}</version>
    </dependency>
    
  3. Dalam file proyek yang Function.java ada, tambahkan pernyataan ini import :

    import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletion;
    import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletionResponse;
    
  4. Dalam file yang sama, tambahkan kode ini yang menentukan titik akhir pemicu HTTP baru bernama whois:

    @FunctionName("WhoIs")
    public HttpResponseMessage whoIs(
        @HttpTrigger(
            name = "req", 
            methods = {HttpMethod.GET},
            authLevel = AuthorizationLevel.ANONYMOUS, 
            route = "whois/{name}") 
            HttpRequestMessage<Optional<String>> request,
        @BindingName("name") String name,
        @TextCompletion(prompt = "Who is {name}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
        final ExecutionContext context) {
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(response.getContent())
            .build();
    }
    
  1. Di Visual Studio Code, Tekan F1 dan di jenis Azure Functions: Create Function...palet perintah , pilih pemicu HTTP, ketik nama whoisfungsi , dan tekan Enter.

  2. Dalam file kode baru whois.js , ganti konten file dengan kode ini:

    const { app, input } = require("@azure/functions");
    
    // This OpenAI completion input requires a {name} binding value.
    const openAICompletionInput = input.generic({
        prompt: 'Who is {name}?',
        maxTokens: '100',
        type: 'textCompletion',
        model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
    })
    
    app.http('whois', {
        methods: ['GET'],
        route: 'whois/{name}',
        authLevel: 'function',
        extraInputs: [openAICompletionInput],
        handler: async (_request, context) => {
            var response = context.extraInputs.get(openAICompletionInput)
            return { body: response.content.trim() }
        }
    });
    
  1. Di Visual Studio Code, Tekan F1 dan di jenis Azure Functions: Create Function...palet perintah , pilih pemicu HTTP, ketik nama whoisfungsi , dan tekan Enter.

  2. Dalam file kode baru whois.ts , ganti konten file dengan kode ini:

    import { app, input } from "@azure/functions";
    
    // This OpenAI completion input requires a {name} binding value.
    const openAICompletionInput = input.generic({
        prompt: 'Who is {name}?',
        maxTokens: '100',
        type: 'textCompletion',
        model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
    })
    
    app.http('whois', {
        methods: ['GET'],
        route: 'whois/{name}',
        authLevel: 'function',
        extraInputs: [openAICompletionInput],
        handler: async (_request, context) => {
            var response: any = context.extraInputs.get(openAICompletionInput)
            return { body: response.content.trim() }
        }
    });
    
  1. Dalam file proyek yang function_app.py ada, tambahkan pernyataan ini import :

    import json
    
  2. Dalam file yang sama, tambahkan kode ini yang menentukan titik akhir pemicu HTTP baru bernama whois:

    @app.route(route="whois/{name}", methods=["GET"])
    @app.text_completion_input(arg_name="response", prompt="Who is {name}?", max_tokens="100", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
    def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
        response_json = json.loads(response)
        return func.HttpResponse(response_json["content"], status_code=200)
    
    
    @app.route(route="genericcompletion", methods=["POST"])
    @app.text_completion_input(arg_name="response", prompt="{Prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
    def genericcompletion(req: func.HttpRequest, response: str) -> func.HttpResponse:
        response_json = json.loads(response)
        return func.HttpResponse(response_json["content"], status_code=200)
    
  1. Di Visual Studio Code, Tekan F1 dan di jenis Azure Functions: Create Function...palet perintah , pilih pemicu HTTP, ketik nama whoisfungsi , pilih Anonim, dan tekan Enter.

  2. Buka file kode baru whois/function.json dan ganti kontennya dengan kode ini, yang menambahkan definisi untuk TextCompletionResponse pengikatan input:

    {
      "bindings": [
        {
          "authLevel": "function",
          "type": "httpTrigger",
          "direction": "in",
          "name": "Request",
          "route": "whois/{name}",
          "methods": [
            "get"
          ]
        },
        {
          "type": "http",
          "direction": "out",
          "name": "Response"
        },
        {
          "type": "textCompletion",
          "direction": "in",
          "name": "TextCompletionResponse",
          "prompt": "Who is {name}?",
          "maxTokens": "100",
          "model": "%CHAT_MODEL_DEPLOYMENT_NAME%"
        }
      ]
    }
    
  3. Ganti konten whois/run.ps1 file kode dengan kode ini, yang mengembalikan respons pengikatan input:

    using namespace System.Net
    
    param($Request, $TriggerMetadata, $TextCompletionResponse)
    
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
            StatusCode = [HttpStatusCode]::OK
            Body       = $TextCompletionResponse.Content
        })
    

7. Jalankan fungsi

  1. Di Visual Studio Code, Tekan F1 dan di jenis Azurite: Start palet perintah dan tekan Enter untuk memulai emulator penyimpanan Azurite.

  2. Tekan F5 untuk memulai proyek aplikasi fungsi dan Core Tools dalam mode debug.

  3. Dengan Core Tools berjalan, kirim permintaan GET ke whois fungsi titik akhir, dengan nama di jalur, seperti URL ini:

    http://localhost:7071/api/whois/<NAME>

    <NAME> Ganti string dengan nilai yang ingin Anda teruskan ke "Who is {name}?" perintah. <NAME> harus berupa nama yang dikodekan URL dari figur publik, seperti Abraham%20Lincoln.

    Respons yang Anda lihat adalah respons penyelesaian teks dari model Azure OpenAI Anda.

  4. Setelah respons dikembalikan, tekan Ctrl + C untuk menghentikan Core Tools.

8. Membersihkan sumber daya

Di Azure, sumber daya merujuk ke aplikasi fungsi, fungsi, akun penyimpanan, dan sebagainya. Sumber daya tersebut dikelompokkan ke dalamgrup sumber daya, dan Anda dapat menghapus semuanya dalam grup dengan menghapus grup.

Anda perlu membuat sumber daya untuk menyelesaikan mulai cepat ini. Anda dapat ditagih untuk sumber daya ini, tergantung pada status akun dan harga layanan Anda. Jika Anda tidak memerlukan sumber daya lagi, berikut cara menghapusnya:

  1. Di Visual Studio Code, tekan F1 untuk membuka palet perintah. Di palet perintah, cari dan pilih Azure: Open in portal.

  2. Pilih aplikasi fungsi Anda dan tekan Enter. Halaman aplikasi fungsi terbuka di portal Azure.

  3. Di tab Ringkasan, pilih tautan bernama di samping Grup sumber daya.

    Cuplikan layar pemilihan grup sumber daya yang akan dihapus dari halaman aplikasi fungsi.

  4. Di halaman Grup sumber daya, tinjau daftar sumber daya yang disertakan, dan pastikan sumber daya tersebut adalah sumber daya yang ingin Anda hapus.

  5. Pilih Hapus grup sumber daya, dan ikuti instruksinya.

    Penghapusan mungkin perlu waktu beberapa menit. Setelah selesai, pemberitahuan akan muncul selama beberapa detik. Anda juga dapat memilih ikon bel di bagian atas halaman untuk melihat pemberitahuan.