Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Dopo aver creato l'agente, è necessario ospitarlo in modo che gli utenti e altri agenti possano interagire con esso.
Opzioni di hosting
| Opzione | Descrzione | Ideale per |
|---|---|---|
| Protocollo A2A | Esporre gli agenti tramite il protocollo agent-to-agent | Sistemi multi-agente |
| Endpoint compatibili con OpenAI | Esporre gli agenti tramite le API di completamento della chat o risposte | Client compatibili con OpenAI |
| Funzioni di Azure (Durable) | Eseguire agenti come Funzioni di Azure Durable | Attività serverless e a esecuzione prolungata |
| Protocollo AG-UI | Creare applicazioni dell'agente di intelligenza artificiale basate sul Web | Frontend Web |
Hosting in ASP.NET Core
Agent Framework offre librerie di hosting che consentono di integrare gli agenti di intelligenza artificiale in applicazioni ASP.NET Core. Queste librerie semplificano la registrazione, la configurazione e l'esposizione degli agenti tramite vari protocolli.
Come descritto in Panoramica degli agenti, AIAgent è il concetto fondamentale di Agent Framework. Definisce un wrapper LLM che elabora gli input dell'utente, prende decisioni, chiama gli strumenti ed esegue operazioni aggiuntive per eseguire azioni e generare risposte. Rendere disponibili gli agenti AI dall'applicazione ASP.NET Core non è semplice. Le librerie di hosting risolvono questo problema registrando gli agenti di intelligenza artificiale in un contenitore di inserimento delle dipendenze, consentendo di risolverli e usarli nei servizi dell'applicazione. Consentono anche di gestire le dipendenze dell'agente, ad esempio gli strumenti e l'archiviazione delle sessioni, dallo stesso contenitore. Gli agenti possono essere ospitati insieme all'infrastruttura dell'applicazione, indipendentemente dai protocolli usati. Analogamente, i flussi di lavoro possono essere ospitati e sfruttare l'infrastruttura comune dell'applicazione.
Libreria di hosting principale
La Microsoft.Agents.AI.Hosting libreria è la base per l'hosting degli agenti di intelligenza artificiale in ASP.NET Core. Fornisce estensioni per IHostApplicationBuilder per la registrazione e configurazione di agenti e flussi di lavoro di intelligenza artificiale. In ASP.NET Core, IHostApplicationBuilder è il tipo fondamentale che rappresenta il generatore per applicazioni e servizi ospitati, gestendo configurazione, logging, ciclo di vita e altro ancora.
Prima di configurare agenti o flussi di lavoro, registrare un oggetto IChatClient nel contenitore di inserimento delle dipendenze. Negli esempi seguenti viene registrato come singleton con chiave sotto il nome 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
Registrare un agente di intelligenza artificiale con inserimento delle dipendenze:
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");
Il metodo AddAIAgent() restituisce un IHostedAgentBuilder oggetto, che fornisce i metodi di estensione per configurare l'agente. Ad esempio, è possibile aggiungere strumenti all'agente:
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
È anche possibile configurare l'archivio sessioni (archiviazione per i dati della conversazione):
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithInMemorySessionStore();
AddWorkflow
Registrare flussi di lavoro che coordinano più agenti. Un flusso di lavoro è essenzialmente un "grafico" in cui ogni nodo è un AIAgente gli agenti comunicano tra loro.
In questo esempio due agenti funzionano in sequenza. L'input dell'utente viene prima inviato a agent-1, che produce una risposta e lo invia a agent-2. Il flusso di lavoro restituisce quindi la risposta finale. Esiste anche un BuildConcurrent metodo che crea un flusso di lavoro dell'agente simultaneo.
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]);
});
Esporre il flusso di lavoro come AIAgent
Per usare le integrazioni dei protocolli (ad esempio A2A o OpenAI) con un flusso di lavoro, convertirlo in un agente autonomo. Attualmente, i flussi di lavoro non offrono funzionalità di integrazione simili autonomamente, quindi questo passaggio di conversione è obbligatorio:
var workflowAsAgent = builder
.AddWorkflow("science-workflow", (sp, key) => { ... })
.AddAsAIAgent(); // Now the workflow can be used as an agent
Dettagli implementazione
Le librerie di hosting fungono da adattatori di protocollo che consentono di collegare protocolli di comunicazione esterni e l'implementazione interna AIAgent di Agent Framework. Quando si usa una libreria di integrazione dell'hosting, la libreria recupera il registro AIAgent dall'inserimento delle dipendenze, lo avvolge con middleware specifico del protocollo per tradurre le richieste in ingresso e le risposte in uscita e invoca AIAgent per elaborare le richieste. Questa architettura mantiene l'implementazione dell'agente indipendente dal protocollo.
Ad esempio, usando la libreria di hosting ASP.NET Core con l'adattatore del protocollo 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();
Suggerimento
Vedere gli esempi di Durable Functions di Azure per esempi di hosting senza server.
Installare il pacchetto di hosting di Azure Functions:
pip install agent-framework-azurefunctions --pre
Creare un agente:
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.",
)
Registrare l'agente con 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)
Eseguire in locale con Gli strumenti di base di Funzioni di Azure:
func start
Richiamare quindi:
curl -X POST http://localhost:7071/api/agents/Joker/run \
-H "Content-Type: text/plain" \
-d "Tell me a short joke about cloud computing."
Suggerimento
Per altri modelli, vedere l'esempio completo per il file eseguibile completo e gli esempi di hosting di Funzioni di Azure .
Passaggi successivi
Approfondimento:
- Protocollo A2A : esporre e utilizzare agenti tramite A2A
- Funzioni di Azure : hosting dell'agente serverless
- Protocollo AG-UI - interfacce utente dell'agente basato sul web
- Documentazione sugli agenti ospitati di Foundry : informazioni sugli agenti ospitati in Azure AI Foundry
- Esempio di agenti ospitati Foundry (Python): eseguire un esempio di agente ospitato end-to-end con Agent Framework.