Bagikan melalui


Agen Tahan Lama

Ekstensi tugas tahan lama untuk Microsoft Agent Framework memungkinkan Anda membangun agen AI stateful dan orkestrasi deterministik multi-agen di lingkungan tanpa server di Azure.

Azure Functions adalah layanan komputasi tanpa server yang memungkinkan Anda menjalankan kode sesuai permintaan tanpa mengelola infrastruktur. Ekstensi tugas tahan lama pada Microsoft Agent Framework dibangun di atas fondasi ini untuk menyediakan pengelolaan keadaan yang tahan lama, yang berarti riwayat percakapan dan status eksekusi agen Anda dipertahankan dengan andal dan dapat bertahan dari kegagalan, restart, serta operasi yang berjalan panjang.

Ekstensi ini mengelola status utas agen dan koordinasi orkestrasi, memungkinkan Anda untuk fokus pada logika agen Anda alih-alih masalah infrastruktur untuk keandalan.

Fitur Utama

Ekstensi tugas tahan lama menyediakan fitur utama berikut:

  • Hosting tanpa server: Menyebarkan dan menghosting agen di Azure Functions dengan titik akhir HTTP yang dihasilkan secara otomatis untuk interaksi agen
  • Stateful agent threads: Pertahankan thread persisten dengan riwayat percakapan yang dapat bertahan melalui beberapa interaksi
  • Orkestrasi deterministik: Mengoordinasikan beberapa agen dengan andal dengan alur kerja toleran terhadap kesalahan yang dapat berjalan selama hari atau minggu, mendukung pola berurutan, paralel, dan human-in-the-loop
  • Pengamatan dan penelusuran kesalahan: Memvisualisasikan percakapan agen, alur orkestrasi, dan riwayat eksekusi melalui dasbor Durable Task Scheduler bawaan

Memulai Langkah Awal

Dalam proyek .NET Azure Functions, tambahkan paket NuGet yang diperlukan.

dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
dotnet add package Microsoft.Agents.AI.Hosting.AzureFunctions --prerelease

Nota

Selain paket ini, pastikan proyek Anda menggunakan paket Microsoft.Azure.Functions.Worker versi 2.2.0 atau yang lebih baru.

Dalam proyek Python Azure Functions, instal paket Python yang diperlukan.

pip install azure-identity
pip install agent-framework-azurefunctions --pre

Hosting Tanpa Server

Dengan ekstensi tugas yang tahan lama, Anda dapat menyebarkan dan menghosting agen Microsoft Agent Framework di Azure Functions dengan titik akhir HTTP bawaan dan pemanggilan berbasis orkestrasi. Azure Functions menyediakan harga bayar per pemanggilan berbasis peristiwa dengan penskalaan otomatis dan manajemen infrastruktur minimal.

Saat Anda mengonfigurasi agen yang tahan lama, ekstensi tugas tahan lama secara otomatis membuat titik akhir HTTP untuk agen Anda dan mengelola semua infrastruktur yang mendasar untuk menyimpan status percakapan, menangani permintaan bersamaan, dan mengoordinasikan alur kerja multi-agen.

using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Hosting.AzureFunctions;
using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.Extensions.Hosting;

var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT") ?? "gpt-4o-mini";

// Create an AI agent following the standard Microsoft Agent Framework pattern
AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .CreateAIAgent(
        instructions: "You are good at telling jokes.",
        name: "Joker");

// Configure the function app to host the agent with durable thread management
// This automatically creates HTTP endpoints and manages state persistence
using IHost app = FunctionsApplication
    .CreateBuilder(args)
    .ConfigureFunctionsWebApplication()
    .ConfigureDurableAgents(options =>
        options.AddAIAgent(agent)
    )
    .Build();
app.Run();
import os
from agent_framework.azure import AzureOpenAIChatClient, AgentFunctionApp
from azure.identity import DefaultAzureCredential

endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
deployment_name = os.getenv("AZURE_OPENAI_DEPLOYMENT_NAME", "gpt-4o-mini")

# Create an AI agent following the standard Microsoft Agent Framework pattern
agent = AzureOpenAIChatClient(
    endpoint=endpoint,
    deployment_name=deployment_name,
    credential=DefaultAzureCredential()
).create_agent(
    instructions="You are good at telling jokes.",
    name="Joker"
)

# Configure the function app to host the agent with durable thread management
# This automatically creates HTTP endpoints and manages state persistence
app = AgentFunctionApp(agents=[agent])

Kapan Menggunakan Durable Agents

Pilih agen tahan lama saat Anda membutuhkan:

  • Kontrol kode penuh: Menyebarkan dan mengelola lingkungan komputasi Anda sendiri sambil mempertahankan manfaat tanpa server
  • Orkestrasi kompleks: Mengoordinasikan beberapa agen dengan alur kerja deterministik dan andal yang dapat berjalan selama ber hari atau minggu
  • Orkestrasi berbasis peristiwa: Integrasikan dengan pemicu Azure Functions (HTTP, timer, antrean, dll.) dan pengikatan untuk alur kerja agen berbasis peristiwa
  • Status percakapan otomatis: Riwayat percakapan agen dikelola dan dipertahankan secara otomatis tanpa memerlukan penanganan status eksplisit dalam kode Anda

Pendekatan hosting tanpa server ini berbeda dari hosting agen berbasis layanan terkelola (seperti Azure AI Foundry Agent Service), yang menyediakan infrastruktur yang dikelola sepenuhnya tanpa mengharuskan Anda untuk menyebarkan atau mengelola aplikasi Azure Functions. Agen tahan lama sangat ideal ketika Anda membutuhkan fleksibilitas penyebaran code-first yang dikombinasikan dengan keandalan manajemen status yang tahan lama.

Saat dihosting dalam paket hosting Konsumsi Azure Functions Flex , agen dapat menskalakan ke ribuan instans atau ke nol instans saat tidak digunakan, memungkinkan Anda membayar hanya untuk komputasi yang Anda butuhkan.

Utas Agen Stateful dengan Riwayat Percakapan

Agen mempertahankan benang persisten yang bertahan selama beberapa interaksi. Setiap utas diidentifikasi oleh ID utas unik dan menyimpan riwayat percakapan lengkap dalam penyimpanan tahan lama yang dikelola oleh Durable Task Scheduler.

Pola ini memungkinkan kelangsungan percakapan di mana keadaan agen dipertahankan melalui terjadinya crash dan restart proses, sehingga mampu mempertahankan riwayat percakapan secara penuh di seluruh utas pengguna. Penyimpanan persisten memastikan bahwa meskipun instans Azure Functions Anda dimulai ulang atau diskalakan ke instans yang berbeda, percakapan dapat berlanjut dengan mulus dari titik terakhir.

Contoh berikut menunjukkan beberapa permintaan HTTP ke utas yang sama, memperlihatkan bagaimana konteks percakapan berlanjut:

# First interaction - start a new thread
curl -X POST https://your-function-app.azurewebsites.net/api/agents/Joker/run \
  -H "Content-Type: text/plain" \
  -d "Tell me a joke about pirates"

# Response includes thread ID in x-ms-thread-id header and joke as plain text
# HTTP/1.1 200 OK
# Content-Type: text/plain
# x-ms-thread-id: @dafx-joker@263fa373-fa01-4705-abf2-5a114c2bb87d
#
# Why don't pirates shower before they walk the plank? Because they'll just wash up on shore later!

# Second interaction - continue the same thread with context
curl -X POST "https://your-function-app.azurewebsites.net/api/agents/Joker/run?thread_id=@dafx-joker@263fa373-fa01-4705-abf2-5a114c2bb87d" \
  -H "Content-Type: text/plain" \
  -d "Tell me another one about the same topic"

# Agent remembers the pirate context from the first message and responds with plain text
# What's a pirate's favorite letter? You'd think it's R, but it's actually the C!

Status agen dipertahankan dalam penyimpanan tahan lama, memungkinkan eksekusi terdistribusi di beberapa instans. Instans apa pun dapat melanjutkan eksekusi agen setelah gangguan atau kegagalan, memastikan operasi berkelanjutan.

Langkah Selanjutnya

Pelajari tentang kemampuan lanjutan dari ekstensi tugas durable:

Untuk tutorial langkah demi langkah tentang membangun dan menjalankan agen yang tahan lama: