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.
Untuk perbandingan Foundry Hosted Agents yang dikelola Microsoft, hosting mandiri, dan eksekusi tahan lama dengan Ekstensi Tahan Lama, lihat Hosting Agent Framework applications.
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.
Sebagaimana dijelaskan dalam Agents, AIAgent adalah abstraksi dasar agen dalam Agent Framework. 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 your Microsoft Foundry project endpoint
// deploymentName is 'gpt-4o-mini' for example
IChatClient chatClient = new AIProjectClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetProjectOpenAIClient()
.GetProjectResponsesClient()
.AsIChatClient(deploymentName);
builder.Services.AddSingleton(chatClient);
Warning
DefaultAzureCredential nyaman untuk pengembangan tetapi membutuhkan pertimbangan yang cermat dalam produksi. Dalam produksi, pertimbangkan untuk menggunakan kredensial tertentu (misalnya, ManagedIdentityCredential) untuk menghindari masalah latensi, pemeriksaan kredensial yang tidak diinginkan, dan potensi risiko keamanan dari mekanisme fallback.
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();
Microsoft Foundry Hosted Agents adalah opsi hosting terkelola utama. Selesaikan prasyarat Foundry Hosted Agents, termasuk ekstensi agen AI CLI Pengembang Azure dan masuk Azure CLI.
Contoh memulai penggunaan membuat agen dengan penyimpanan model sisi server dinonaktifkan dan memulai ResponsesHostServer:
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient, ResponsesHostServer
from azure.identity import DefaultAzureCredential
def main() -> None:
agent = Agent(
client=FoundryChatClient(
project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
model="gpt-6-luna",
credential=DefaultAzureCredential(),
),
instructions="You are a friendly assistant. Keep your answers brief.",
default_options={"store": False},
)
ResponsesHostServer(agent=agent, history_source="agent_server").run()
if __name__ == "__main__":
main()
Ganti titik akhir proyek yang hardcoded dan nama deployment model, lalu jalankan sampel PEP 723 secara lokal dari akar repositori Agent Framework:
uv run python/samples/01-get-started/07_hosting.py
Untuk menyebarkan proyek hosted-agent yang lengkap, inisialisasi dari azure.yaml sampel yang dikelola:
mkdir my-hosted-agent && cd my-hosted-agent
azd ai agent init -t https://github.com/microsoft-foundry/foundry-samples/blob/main/samples/python/hosted-agents/agent-framework/responses/01-basic/azure.yaml --src .
Jalankan host agen:
azd ai agent run
Di terminal lain, panggil agen lokal:
azd ai agent invoke --local "Hello!"
Tip
Lihat contoh lengkap untuk memulai dan sampel penyebaran lengkap. Untuk panduan penyebaran, lihat Foundry Hosted Agents.
Hosting dengan Protokol A2A
Port Go menyediakan hosting A2A melalui a2aprovider, yang membungkus agen dalam handler HTTP yang kompatibel dengan protokol Agent-to-Agent.
Nota
Hosting Ekstensi Tahan Lama saat ini tidak tersedia untuk Go. Untuk status Go SDK terbaru, lihat repositori Agent Framework Go.
Membuat agen:
import (
"log"
"net/http"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/a2aprovider"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
"github.com/a2aproject/a2a-go/v2/a2a"
"github.com/a2aproject/a2a-go/v2/a2asrv"
)
a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
Config: agent.Config{
},
})
Mengekspos agen melalui A2A:
url := "http://localhost:5000"
card := &a2a.AgentCard{
Name: "MyAgent",
Description: "A helpful assistant.",
Version: "1.0.0",
DefaultInputModes: []string{"text"},
DefaultOutputModes: []string{"text"},
Capabilities: a2a.AgentCapabilities{Streaming: false},
SupportedInterfaces: []*a2a.AgentInterface{
a2a.NewAgentInterface(url, a2a.TransportProtocolJSONRPC),
},
}
mux := http.NewServeMux()
requestHandler := a2asrv.NewHandler(
a2aprovider.NewExecutor(a, a2aprovider.ExecutorConfig{}),
a2asrv.WithExtendedAgentCard(card),
)
mux.Handle("/", a2asrv.NewJSONRPCHandler(requestHandler))
mux.Handle(a2asrv.WellKnownAgentCardPath, a2asrv.NewStaticAgentCardHandler(card))
log.Println("A2A server listening on :5000")
if err := http.ListenAndServe(":5000", mux); err != nil {
log.Fatal(err)
}
Tip
Lihat sampel server klien A2A lengkap untuk contoh lengkap yang dapat dijalankan.
Langkah berikutnya
Masuk lebih dalam:
- Layanan agen A2A — menggunakan agen A2A jarak jauh
- Hosting A2A — mengekspos agen dari Agent Framework melalui A2A
- Ekstensi Tahan Lama - hosting C# dan agen Python dan alur kerja yang tahan lama
- ProtokolAG-UI — UI agen berbasis web
- Gambaran umum hosting - pilih Foundry Hosted Agents, hosting mandiri, atau hosting tahan lama
- Foundry Hosted Agents - menyebarkan agen Agent Framework ke hosting terkelola
- Sampel Foundry Hosted Agents (Python) — jalankan sampel Respons dasar