Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Semantic Kernel adalah kerangka kerja AI sumber terbuka yang dibuat oleh microsoft untuk pengembang .NET, Python, dan Java yang bekerja dengan Model Bahasa Besar (LLM). Saat Anda membangun agen AI dengan Semantic Kernel, LLM menginterpretasikan input pengguna dan menghasilkan respons. Agen AI sering kesulitan ketika perlu melakukan penalaran matematika dan simbolis untuk menghasilkan respons. Dengan mengintegrasikan sesi dinamis Azure Container Apps dengan Semantic Kernel, Anda memberi agen penerjemah kode untuk digunakan untuk melakukan tugas khusus.
Dalam tutorial ini, Anda mempelajari cara menjalankan agen AI Kernel Semantik di API web. API menerima input pengguna dan mengembalikan respons yang dihasilkan oleh agen AI. Agen menggunakan penerjemah kode dalam sesi dinamis untuk melakukan penghitungan.
Prasyarat
- Akun Azure dengan langganan aktif.
- Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis.
- Instal Azure CLI.
- Git.
- Python 3.10 atau yang lebih baru.
Membuat sumber daya Azure
Aplikasi sampel dalam mulai cepat ini menggunakan LLM dari Azure OpenAI. Ini juga menggunakan sesi Azure Container Apps untuk menjalankan kode yang dihasilkan oleh LLM.
Perbarui Azure CLI ke versi terbaru.
az upgradeHapus ekstensi Azure Container Apps jika sudah diinstal dan instal versi pratinjau ekstensi Azure Container Apps yang berisi perintah untuk sesi:
az extension remove --name containerapp az extension add \ --name containerapp \ --allow-preview true -yMasuk ke Azure:
az loginAtur variabel yang digunakan dalam mulai cepat ini:
RESOURCE_GROUP_NAME=aca-sessions-tutorial AZURE_OPENAI_LOCATION=swedencentral AZURE_OPENAI_NAME=<UNIQUE_OPEN_AI_NAME> SESSION_POOL_LOCATION=eastasia SESSION_POOL_NAME=code-interpreter-poolGanti
<UNIQUE_OPEN_AI_NAME>dengan nama unik untuk membuat akun Azure OpenAI Anda.Membuat grup sumber daya:
az group create --name $RESOURCE_GROUP_NAME --location $SESSION_POOL_LOCATIONBuat akun Azure OpenAI:
az cognitiveservices account create \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $AZURE_OPENAI_LOCATION \ --kind OpenAI \ --sku s0 \ --custom-domain $AZURE_OPENAI_NAMEBuat penyebaran model GPT 3.5 Turbo bernama
gpt-35-turbodi akun Azure OpenAI:az cognitiveservices account deployment create \ --resource-group $RESOURCE_GROUP_NAME \ --name $AZURE_OPENAI_NAME \ --deployment-name gpt-35-turbo \ --model-name gpt-35-turbo \ --model-version "1106" \ --model-format OpenAI \ --sku-capacity "100" \ --sku-name "Standard"Buat kumpulan sesi penerjemah kode:
az containerapp sessionpool create \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $SESSION_POOL_LOCATION \ --max-sessions 100 \ --container-type PythonLTS \ --cooldown-period 300
Menjalankan sampel aplikasi secara lokal
Sebelum menyebarkan aplikasi ke Azure Container Apps, Anda dapat menjalankannya secara lokal untuk mengujinya.
Mengkloning aplikasi
Kloning repositori sampel sesi Azure Container Apps.
git clone https://github.com/Azure-Samples/container-apps-dynamic-sessions-samples.gitUbah ke direktori yang berisi aplikasi sampel:
cd container-apps-dynamic-sessions-samples/semantic-kernel-python-webapi
Mengonfigurasikan aplikasi
Buat lingkungan virtual Python dan aktifkan:
python3.11 -m venv .venv source .venv/bin/activateUbah versi Python dalam perintah jika Anda menggunakan versi yang berbeda. Disarankan untuk menggunakan Python 3.10 atau yang lebih baru.
Catatan
Jika Anda menggunakan Windows, ganti
.venv/bin/activatedengan.venv\Scripts\activate.Instal paket Python yang diperlukan:
python -m pip install -r requirements.txtUntuk menjalankan aplikasi, Anda perlu mengonfigurasi variabel lingkungan.
Ambil titik akhir akun Azure OpenAI:
az cognitiveservices account show \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.endpoint \ --output tsvAmbil titik akhir manajemen kumpulan sesi Azure Container Apps:
az containerapp sessionpool show \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.poolManagementEndpoint \ --output tsvBuat
.envfile di akar direktori aplikasi sampel (lokasi yang sama denganmain.py). Tambahkan konten berikut ke file:AZURE_OPENAI_ENDPOINT=<AZURE_OPENAI_ENDPOINT> POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>Ganti
<AZURE_OPENAI_ENDPOINT>dengan titik akhir akun Azure OpenAI dan<SESSION_POOL_MANAGEMENT_ENDPOINT>dengan titik akhir manajemen kumpulan sesi.
Aplikasi ini menggunakan
DefaultAzureCredentialuntuk mengautentikasi dengan layanan Azure. Di komputer lokal Anda, komputer tersebut menggunakan kredensial masuk Azure CLI Anda saat ini. Anda harus memberi diri Anda peran Pengguna OpenAI Cognitive Services di akun Azure OpenAI agar aplikasi dapat mengakses titik akhir model, dan peran Pelaksana Sesi Azure ContainerApps pada kumpulan sesi agar aplikasi dapat mengakses kumpulan sesi.Ambil nama pengguna Azure CLI Anda:
az account show --query user.name --output tsvJalankan perintah berikut untuk mengambil ID sumber daya akun Azure OpenAI:
az cognitiveservices account show --name $AZURE_OPENAI_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsvTetapkan peran Pengguna OpenAI Cognitive Services ke pengguna Azure CLI Anda di akun Azure OpenAI:
az role assignment create --role "Cognitive Services OpenAI User" --assignee <CLI_USERNAME> --scope <AZURE_OPENAI_RESOURCE_ID>Ganti
<CLI_USERNAME>dengan nama pengguna Azure CLI Anda dan<AZURE_OPENAI_RESOURCE_ID>dengan ID sumber daya akun Azure OpenAI.Jalankan perintah berikut untuk mengambil ID sumber daya kumpulan sesi:
az containerapp sessionpool show --name $SESSION_POOL_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsvTetapkan peran Pelaksana Sesi Azure ContainerApps menggunakan ID-nya untuk pengguna Azure CLI Anda di kumpulan sesi:
az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee <CLI_USERNAME> \ --scope <SESSION_POOL_RESOURCE_ID>Ganti
<CLI_USERNAME>dengan nama pengguna Azure CLI Anda dan<SESSION_POOL_RESOURCE_ID>dengan ID sumber daya kumpulan sesi.
Menjalankan aplikasi
Sebelum menjalankan aplikasi sampel, buka main.py di editor dan tinjau kode. Aplikasi ini menggunakan FastAPI untuk membuat API web yang menerima pesan pengguna dalam string kueri.
Baris kode berikut membuat instans SessionsPythonTool dan memberikannya kepada agen Kernel Semantik:
sessions_tool = SessionsPythonTool(
pool_management_endpoint,
auth_callback=auth_callback_factory("https://dynamicsessions.io/.default"),
)
kernel.add_plugin(sessions_tool, "SessionsTool")
Ketika perlu melakukan perhitungan, kernel menggunakan penerjemah kode di SessionsPythonTool untuk menjalankan kode. Kode dijalankan dalam sesi di kumpulan sesi. Secara default, pengidentifikasi sesi acak dihasilkan saat Anda membuat instans alat. Jika kernel menggunakan alat untuk menjalankan beberapa cuplikan kode Python, ia menggunakan sesi yang sama. Untuk memastikan setiap pengguna akhir memiliki sesi yang unik, gunakan kernel dan alat terpisah untuk setiap pengguna.
SessionsPythonTool tersedia dalam versi atau yang 0.9.8b1 lebih baru semantic-kernel dari paket.
Jalankan aplikasi sampel:
fastapi dev main.pyBuka browser dan navigasikan ke
http://localhost:8000/docs. Anda melihat antarmuka pengguna Swagger untuk aplikasi sampel./chatPerluas titik akhir dan pilih Cobalah.Masukkan
What time is it right now?dimessagebidang dan pilih Jalankan.Agen merespons dengan waktu saat ini. Di terminal, Anda melihat log yang menunjukkan kode Python yang dihasilkan agen untuk mendapatkan waktu saat ini dan menjalankannya dalam sesi penerjemah kode.
Untuk menghentikan aplikasi, masukkan
Ctrl+Cdi terminal.
Opsional: Menyebarkan aplikasi sampel ke Azure Container Apps
Untuk menyebarkan aplikasi FastAPI ke Azure Container Apps, Anda perlu membuat gambar kontainer dan mendorongnya ke registri kontainer. Kemudian Anda dapat menyebarkan gambar ke Azure Container Apps. Perintah az containerapp up menggabungkan langkah-langkah ini ke dalam satu perintah.
Anda kemudian perlu mengonfigurasi identitas terkelola untuk aplikasi dan menetapkan peran yang tepat untuk mengakses Azure OpenAI dan kumpulan sesi.
Atur variabel untuk lingkungan Dan nama aplikasi Container Apps:
ENVIRONMENT_NAME=aca-sessions-tutorial-env CONTAINER_APP_NAME=chat-apiBangun dan sebarkan aplikasi ke Azure Container Apps:
az containerapp up \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $SESSION_POOL_LOCATION \ --environment $ENVIRONMENT_NAME \ --env-vars "AZURE_OPENAI_ENDPOINT=<OPEN_AI_ENDPOINT>" "POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>" \ --source .Ganti
<OPEN_AI_ENDPOINT>dengan titik akhir akun Azure OpenAI dan<SESSION_POOL_MANAGEMENT_ENDPOINT>dengan titik akhir manajemen kumpulan sesi.Aktifkan identitas terkelola yang ditetapkan sistem untuk aplikasi:
az containerapp identity assign \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --system-assignedAgar aplikasi dapat mengakses Azure OpenAI dan kumpulan sesi, Anda perlu menetapkan identitas terkelola peran yang tepat.
Ambil ID utama identitas terkelola:
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query identity.principalId \ --output tsvAmbil ID sumber daya kumpulan sesi:
az containerapp sessionpool show \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query id \ --output tsvTetapkan identitas terkelola
Azure ContainerApps Session ExecutorContributordan peran pada kumpulan sesi:Sebelum Anda menjalankan perintah berikut, ganti
<PRINCIPAL_ID>dan<SESSION_POOL_RESOURCE_ID>dengan nilai yang Anda ambil di langkah-langkah sebelumnya.az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee <PRINCIPAL_ID> \ --scope <SESSION_POOL_RESOURCE_ID> az role assignment create \ --role "Contributor" \ --assignee <PRINCIPAL_ID> \ --scope <SESSION_POOL_RESOURCE_ID>Ambil ID sumber daya akun Azure OpenAI:
az cognitiveservices account show \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query id \ --output tsvTetapkan peran identitas terkelola
Cognitive Services OpenAI Userdi akun Azure OpenAI:Sebelum Anda menjalankan perintah berikut, ganti
<PRINCIPAL_ID>dan<AZURE_OPENAI_RESOURCE_ID>dengan nilai yang Anda ambil di langkah-langkah sebelumnya.az role assignment create \ --role "Cognitive Services OpenAI User" \ --assignee <PRINCIPAL_ID> \ --scope <AZURE_OPENAI_RESOURCE_ID>
Ambil nama domain aplikasi yang sepenuhnya memenuhi syarat (FQDN):
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.configuration.ingress.fqdn \ --output tsvBuka browser untuk
https://<FQDN>/docsmenguji aplikasi yang disebarkan.
Membersihkan sumber daya
Setelah selesai dengan sumber daya, Anda dapat menghapusnya untuk menghindari dikenakan biaya:
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait