Bagikan melalui


Langkah 6: Menghosting Agen Anda

Setelah membangun agen, Anda perlu menghostingnya sehingga pengguna dan agen lain dapat berinteraksi dengannya.

Opsi Hosting

Option Deskripsi Terbaik untuk
Protokol A2A Mengekspos agen melalui protokol Agen-ke-Agen Sistem multi-agen
Titik AkhirOpenAI-Compatible Mengekspos agen melalui API Penyelesaian Obrolan atau Respons Klien yang kompatibel dengan OpenAI
Azure Functions (Durable) Jalankan agen sebagai Fungsi Azure Durabel Tugas tanpa server dan berjalan lama
Protokol AG-UI Membangun aplikasi agen AI berbasis web Antarmuka Web

Hosting di ASP.NET Core

Kerangka Kerja Agen menyediakan pustaka hosting yang memungkinkan Anda mengintegrasikan agen AI ke dalam aplikasi ASP.NET Core. Pustaka ini menyederhanakan pendaftaran, konfigurasi, dan pengeksposan agen melalui berbagai protokol.

Seperti yang dijelaskan dalam Gambaran Umum Agen, AIAgent adalah konsep mendasar dari Kerangka Kerja Agen. Ini mendefinisikan "pembungkus LLM" yang memproses input pengguna, membuat keputusan, memanggil alat, dan melakukan pekerjaan tambahan untuk menjalankan tindakan dan menghasilkan respons. Mengekspos agen AI dari aplikasi ASP.NET Core Anda tidaklah sepele. Pustaka hosting menyelesaikan ini dengan mendaftarkan agen AI dalam kontainer injeksi dependensi, memungkinkan Anda untuk menyelesaikan dan menggunakannya di layanan aplikasi Anda. Mereka juga memungkinkan Anda mengelola dependensi agen, seperti alat dan penyimpanan sesi, dari kontainer yang sama. Agen dapat dihosting bersama infrastruktur aplikasi Anda, terlepas dari protokol yang mereka gunakan. Demikian pula, alur kerja dapat dihosting dan memanfaatkan infrastruktur umum aplikasi Anda.

Perpustakaan Inti Hosting

Library Microsoft.Agents.AI.Hosting adalah dasar untuk menghosting agen AI di ASP.NET Core. Ini menyediakan ekstensi bagi IHostApplicationBuilder untuk mendaftar dan mengonfigurasi agen dan alur kerja AI. Dalam ASP.NET Core, IHostApplicationBuilder adalah jenis mendasar yang mewakili penyusun untuk aplikasi dan layanan yang dihosting, mengelola konfigurasi, pengelogan, masa pakai, dan banyak lagi.

Sebelum mengonfigurasi agen atau alur kerja, daftarkan IChatClient dalam kontainer injeksi dependensi. Dalam contoh di bawah ini, itu terdaftar sebagai singleton bertanda kunci dengan nama chat-model:

// endpoint is of 'https://<your-own-foundry-endpoint>.openai.azure.com/' format
// deploymentName is 'gpt-4o-mini' for example

IChatClient chatClient = new AzureOpenAIClient(
        new Uri(endpoint),
        new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .AsIChatClient();
builder.Services.AddSingleton(chatClient);

AddAIAgent

Daftarkan agen AI dengan injeksi dependensi:

var pirateAgent = builder.AddAIAgent(
    "pirate",
    instructions: "You are a pirate. Speak like a pirate",
    description: "An agent that speaks like a pirate.",
    chatClientServiceKey: "chat-model");

Metode AddAIAgent() mengembalikan sebuah IHostedAgentBuilder, yang menyediakan metode-metode ekstensi untuk mengonfigurasi agen. Misalnya, Anda dapat menambahkan alat ke agen:

var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
    .WithAITool(new MyTool()); // MyTool is a custom type derived from AITool

Anda juga dapat mengonfigurasi penyimpanan sesi (penyimpanan untuk data percakapan):

var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
    .WithInMemorySessionStore();

Tambahkan Alur Kerja

Daftarkan alur kerja yang mengoordinasikan beberapa agen. Alur kerja pada dasarnya adalah "grafik" di mana setiap simpul adalah AIAgent, dan agen berkomunikasi satu sama lain.

Dalam contoh ini, dua agen bekerja secara berurutan. Input pengguna pertama kali dikirim ke agent-1, yang menghasilkan respons dan mengirimkannya ke agent-2. Alur kerja kemudian menghasilkan respons akhir. Ada juga BuildConcurrent metode yang membuat alur kerja agen serentak.

builder.AddAIAgent("agent-1", instructions: "you are agent 1!");
builder.AddAIAgent("agent-2", instructions: "you are agent 2!");

var workflow = builder.AddWorkflow("my-workflow", (sp, key) =>
{
    var agent1 = sp.GetRequiredKeyedService<AIAgent>("agent-1");
    var agent2 = sp.GetRequiredKeyedService<AIAgent>("agent-2");
    return AgentWorkflowBuilder.BuildSequential(key, [agent1, agent2]);
});

Mengekspos Alur Kerja sebagai Agen AI

Untuk menggunakan integrasi protokol (seperti A2A atau OpenAI) dengan alur kerja, konversikan menjadi agen mandiri. Saat ini, alur kerja tidak menyediakan kemampuan integrasi serupa sendiri, sehingga langkah konversi ini diperlukan:

var workflowAsAgent = builder
    .AddWorkflow("science-workflow", (sp, key) => { ... })
    .AddAsAIAgent();  // Now the workflow can be used as an agent

Detail Implementasi

Pustaka hosting bertindak sebagai adaptor protokol yang menjembatani protokol komunikasi eksternal dan implementasi internal AIAgent Agent Framework. Saat Anda menggunakan pustaka integrasi hosting, pustaka mengambil AIAgent yang terdaftar dari injeksi dependensi, membungkusnya dengan middleware khusus protokol untuk menerjemahkan permintaan masuk dan respons keluar, dan memanggil AIAgent untuk memproses permintaan. Arsitektur ini menjaga protokol implementasi agen Anda tetap agnostik.

Misalnya, menggunakan pustaka hosting ASP.NET Core dengan adaptor protokol A2A:

// Register the agent
var pirateAgent = builder.AddAIAgent("pirate",
    instructions: "You are a pirate. Speak like a pirate",
    description: "An agent that speaks like a pirate.");

// Expose via a protocol (e.g. A2A)
builder.Services.AddA2AServer();
var app = builder.Build();
app.MapA2AServer();
app.Run();

Petunjuk / Saran

Lihat sampel Durable Azure Functions untuk contoh hosting tanpa server.

Instal paket hosting Azure Functions:

pip install agent-framework-azurefunctions --pre

Membuat agen:

from agent_framework.azure import AgentFunctionApp, AzureOpenAIChatClient
from azure.identity import AzureCliCredential


# 1. Instantiate the agent with the chosen deployment and instructions.
def _create_agent() -> Any:
    """Create the Joker agent."""

    return AzureOpenAIChatClient(credential=AzureCliCredential()).as_agent(
        name="Joker",
        instructions="You are good at telling jokes.",
    )

Daftarkan agen dengan AgentFunctionApp:

# 2. Register the agent with AgentFunctionApp so Azure Functions exposes the required triggers.
app = AgentFunctionApp(agents=[_create_agent()], enable_health_check=True, max_poll_retries=50)

Jalankan secara lokal dengan Azure Functions Core Tools:

func start

Kemudian panggil:

curl -X POST http://localhost:7071/api/agents/Joker/run \
  -H "Content-Type: text/plain" \
  -d "Tell me a short joke about cloud computing."

Petunjuk / Saran

Lihat sampel lengkap untuk file lengkap yang dapat dijalankan, dan sampel hosting Azure Functions untuk pola lainnya.

Langkah selanjutnya

Gambaran Umum Agen

Masuk lebih dalam:

Lihat juga