Tutorial: Menggunakan sesi penerjemah kode di AutoGen dengan Azure Container Apps
AutoGen adalah kerangka kerja untuk mengembangkan aplikasi model bahasa besar (LLM) menggunakan beberapa agen yang saling berkonversi untuk menyelesaikan tugas. Agen yang dibangun dengan AutoGen dapat beroperasi dalam berbagai mode yang menggunakan kombinasi LLM, input manusia, dan alat. Salah satu jenis alat penting untuk agen AutoGen adalah pelaksana kode. Mereka memungkinkan agen untuk melakukan tugas yang kompleks dengan menulis dan mengeksekusi kode. Dengan mengintegrasikan sesi dinamis Azure Container Apps dengan AutoGen, Anda memberi agen penerjemah kode untuk digunakan untuk melakukan komputasi yang berguna dan mengambil tindakan.
Dalam tutorial ini, Anda mempelajari cara menjalankan agen AI yang ditulis di AutoGen dalam 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 upgrade
Hapus 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 -y
Masuk ke Azure:
az login
Atur 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-pool
Ganti
<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_LOCATION
Buat 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_NAME
Buat penyebaran model GPT 3.5 Turbo bernama
gpt-35-turbo
di 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.git
Ubah ke direktori yang berisi aplikasi sampel:
cd container-apps-dynamic-sessions-samples/autogen-python-webapi
Mengonfigurasikan aplikasi
Buat lingkungan virtual Python dan aktifkan:
python3.11 -m venv .venv source .venv/bin/activate
Ubah 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/activate
dengan.venv\Scripts\activate
.Instal paket Python yang diperlukan:
python -m pip install -r requirements.txt
Untuk 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 tsv
Ambil kunci Azure OpenAI API:
az cognitiveservices account keys list \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query key1 \ --output tsv
Ambil 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 tsv
Buat
.env
file di akar direktori aplikasi sampel (lokasi yang sama denganmain.py
). Tambahkan konten berikut ke file:OAI_CONFIG_LIST=[{"model": "gpt-4", "api_key": "<AZURE_OPENAI_KEY>", "api_type": "azure", "base_url": "<AZURE_OPENAI_ENDPOINT>", "api_version": "2023-12-01-preview"}] POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>
Ganti
<AZURE_OPENAI_ENDPOINT>
dengan titik akhir akun Azure OpenAI,<AZURE_OPENAI_KEY>
dengan kunci AZURE OpenAI API, dan<SESSION_POOL_MANAGEMENT_ENDPOINT>
dengan titik akhir manajemen kumpulan sesi.
Aplikasi ini menggunakan
DefaultAzureCredential
untuk mengautentikasi dengan layanan Azure. Di komputer lokal Anda, komputer tersebut menggunakan kredensial masuk Azure CLI Anda saat ini. Anda harus memberi diri Anda 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 tsv
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 tsv
Tetapkan peran Pelaksana Sesi Azure ContainerApps ke 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 ACASessionsExecutor dan menyediakannya ke agen autogen:
aca_sessions_executor = ACASessionsExecutor(aca_pool_management_endpoint)
code_executor_agent = ConversableAgent(
name="CodeExecutor",
llm_config=False,
code_execution_config={"executor": aca_sessions_executor},
human_input_mode="NEVER",
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", "").strip().upper()
)
Ketika perlu melakukan penghitungan dan tugas, agen menggunakan penerjemah kode di ACASessionsExecutor untuk menjalankan kode. Kode dijalankan dalam sesi di kumpulan sesi. Secara default, pengidentifikasi sesi acak dihasilkan saat Anda membuat instans alat. Jika agen menggunakan alat yang sama untuk menjalankan beberapa cuplikan kode Python, agen menggunakan sesi yang sama. Untuk memastikan setiap pengguna akhir memiliki sesi unik, gunakan agen dan alat terpisah untuk setiap pengguna.
ACASessionsExecutor diimplementasikan dalam aca_sessions_executor.py.
Jalankan aplikasi sampel:
fastapi dev main.py
Buka browser dan navigasikan ke
http://localhost:8000/docs
. Anda melihat antarmuka pengguna Swagger untuk aplikasi sampel./chat
Perluas titik akhir dan pilih Cobalah.Masukkan
What time is it right now?
dimessage
bidang 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+C
di 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-api
Bangun 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 'OAI_CONFIG_LIST=[{"model": "gpt-4", "api_key": "<AZURE_OPENAI_KEY>", "api_type": "azure", "base_url": "<AZURE_OPENAI_ENDPOINT>", "api_version": "2023-12-01-preview"}]' 'POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>' \ --source .
Ganti
<AZURE_OPENAI_ENDPOINT>
dengan titik akhir akun Azure OpenAI,<AZURE_OPENAI_KEY>
dengan kunci 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-assigned
Agar aplikasi mengakses 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 tsv
Ambil ID sumber daya kumpulan sesi:
az containerapp sessionpool show \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query id \ --output tsv
Tetapkan identitas terkelola
Azure ContainerApps Session Executor
Contributor
dan 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 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 tsv
Buka browser untuk
https://<FQDN>/docs
menguji 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