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
- Selesaikan langkah-langkah di bagian 1 dari mulai cepat Visual Studio Code.
- Selesaikan langkah-langkah di bagian 1 dari mulai cepat Visual Studio Code.
- Selesaikan langkah-langkah di bagian 1 dari mulai cepat Visual Studio Code.
- Selesaikan langkah-langkah di bagian 1 dari mulai cepat Visual Studio Code.
- Selesaikan langkah-langkah di bagian 1 dari mulai cepat Visual Studio Code.
- Selesaikan langkah-langkah di bagian 1 dari mulai cepat Visual Studio Code.
- Dapatkan akses ke Azure OpenAI di langganan Azure Anda. Jika Anda belum diberikan akses, lengkapi formulir ini untuk meminta akses.
- Instal alat .NET Core CLI.
- 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.
Masuk dengan langganan Azure Anda di portal Azure.
Pilih Buat sumber daya dan cari Azure OpenAI. Saat Anda menemukan layanan, pilih Buat.
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 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.
Pilih Berikutnya waktu terakhir untuk pindah ke tahap akhir dalam proses: Tinjau + kirim.
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.
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:
Masuk ke Azure OpenAI Studio.
Pilih langganan dan sumber daya Azure OpenAI yang Anda buat, dan pilih Gunakan sumber daya.
Di bawah Manajemen pilih Penyebaran.
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.
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
Di Visual Studio Code, buka proyek kode lokal yang Anda buat saat menyelesaikan artikel sebelumnya.
Dalam file local.settings.json di folder akar proyek, perbarui pengaturan ke
AzureWebJobsStorage
UseDevelopmentStorage=true
. Anda dapat melewati langkah ini jikaAzureWebJobsStorage
pengaturan di local.settings.json diatur ke string koneksi untuk akun Azure Storage yang sudah ada, bukanUseDevelopmentStorage=true
.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.
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.
Di file kelas yang sudah ada
HttpExample
, tambahkan pernyataan iniusing
:using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion;
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."); } }
pom.xml
Perbarui file proyek untuk menambahkan referensi ini keproperties
koleksi:<azure-functions-java-library-openai>0.3.0-preview</azure-functions-java-library-openai>
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>
Dalam file proyek yang
Function.java
ada, tambahkan pernyataan iniimport
:import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletion; import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletionResponse;
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(); }
Di Visual Studio Code, Tekan F1 dan di jenis
Azure Functions: Create Function...
palet perintah , pilih pemicu HTTP, ketik namawhois
fungsi , dan tekan Enter.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() } } });
Di Visual Studio Code, Tekan F1 dan di jenis
Azure Functions: Create Function...
palet perintah , pilih pemicu HTTP, ketik namawhois
fungsi , dan tekan Enter.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() } } });
Dalam file proyek yang
function_app.py
ada, tambahkan pernyataan iniimport
:import json
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)
Di Visual Studio Code, Tekan F1 dan di jenis
Azure Functions: Create Function...
palet perintah , pilih pemicu HTTP, ketik namawhois
fungsi , pilih Anonim, dan tekan Enter.Buka file kode baru
whois/function.json
dan ganti kontennya dengan kode ini, yang menambahkan definisi untukTextCompletionResponse
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%" } ] }
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
Di Visual Studio Code, Tekan F1 dan di jenis
Azurite: Start
palet perintah dan tekan Enter untuk memulai emulator penyimpanan Azurite.Tekan F5 untuk memulai proyek aplikasi fungsi dan Core Tools dalam mode debug.
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, sepertiAbraham%20Lincoln
.Respons yang Anda lihat adalah respons penyelesaian teks dari model Azure OpenAI Anda.
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:
Di Visual Studio Code, tekan F1 untuk membuka palet perintah. Di palet perintah, cari dan pilih
Azure: Open in portal
.Pilih aplikasi fungsi Anda dan tekan Enter. Halaman aplikasi fungsi terbuka di portal Azure.
Di tab Ringkasan, pilih tautan bernama di samping Grup sumber daya.
Di halaman Grup sumber daya, tinjau daftar sumber daya yang disertakan, dan pastikan sumber daya tersebut adalah sumber daya yang ingin Anda hapus.
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.