Passo 6: Aloje o seu agente

Depois de construir o seu agente, precisa de o hospedar para que os utilizadores e outros agentes possam interagir com ele.

Opções de Alojamento

Opção Description Melhor Para
Protocolo A2A Expor agentes através do protocolo Agent-to-Agent Sistemas multiagentes
Endpoints Compatíveis com OpenAI Expor agentes por meio de APIs de Conclusões de Chat ou Respostas Clientes compatíveis com OpenAI
Extensão Resistente Tornar agentes e fluxos de trabalho duráveis no Funções do Azure ou computação auto-hospedada Cargas de trabalho fiáveis e de longa duração
AG-UI Protocolo Construir aplicações de agentes de IA baseadas na web Frontends Web

Alojamento no ASP.NET Core

O Agent Framework fornece bibliotecas de alojamento que permitem integrar agentes de IA nas ASP.NET aplicações Core. Estas bibliotecas simplificam o registo, configuração e exposição de agentes através de vários protocolos.

Como descrito na Visão Geral dos Agentes, AIAgent é o conceito fundamental do Quadro do Agente. Define um "wrapper LLM" que processa as entradas do utilizador, toma decisões, chama ferramentas e realiza trabalho adicional para executar ações e gerar respostas. Expor agentes de IA da sua aplicação ASP.NET Core não é trivial. As bibliotecas de alojamento resolvem isto registando agentes de IA num contentor de injeção de dependências, permitindo-lhe resolvê-los e usá-los nos seus serviços de aplicação. Também permitem gerir dependências de agentes, como ferramentas e armazenamento de sessões, a partir do mesmo contentor. Os agentes podem ser alojados juntamente com a infraestrutura da sua aplicação, independentemente dos protocolos que utilizam. De forma semelhante, os fluxos de trabalho podem ser alojados e tirar partido da infraestrutura comum da sua aplicação.

Biblioteca Principal de Alojamento

A Microsoft.Agents.AI.Hosting biblioteca é a base para alojar agentes de IA no ASP.NET Core. Fornece extensões para IHostApplicationBuilder registar e configurar agentes e fluxos de trabalho de IA. No contexto do ASP.NET Core, IHostApplicationBuilder é o tipo fundamental que representa o construtor para aplicações e serviços alojados, gerindo configuração, registos, ciclo de vida e muito mais.

Antes de configurar agentes ou fluxos de trabalho, regista um IChatClient no contentor de injeção de dependências. Nos exemplos abaixo, está registado como um singleton chaveado sob o nome 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);

Advertência

DefaultAzureCredential é conveniente para o desenvolvimento, mas requer uma consideração cuidadosa na produção. Em produção, considere usar uma credencial específica (por exemplo, ManagedIdentityCredential) para evitar problemas de latência, sondagens não intencionais de credenciais e potenciais riscos de segurança provenientes de mecanismos de recurso.

Adicionar Agente de IA

Registar um agente de IA com injeção de dependência:

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");

O AddAIAgent() método devolve um IHostedAgentBuilder, que fornece métodos de extensão para configurar o agente. Por exemplo, pode adicionar ferramentas ao 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

Também pode configurar o armazenamento de sessões (armazenamento para dados de conversa):

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

AddWorkflow

Registar fluxos de trabalho que coordenam múltiplos agentes. Um fluxo de trabalho é essencialmente um "grafo" onde cada nó é um AIAgent, e os agentes comunicam entre si.

Neste exemplo, dois agentes funcionam sequencialmente. A entrada do utilizador é enviada primeiro para agent-1, que produz uma resposta e envia-a para agent-2. O fluxo de trabalho depois gera a resposta final. Existe também um BuildConcurrent método que cria um fluxo de trabalho de agente concorrente.

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]);
});

Expor Workflow como AIAgent

Para usar integrações de protocolos (como A2A ou OpenAI) com um fluxo de trabalho, converta-o num agente autónomo. Atualmente, os fluxos de trabalho não oferecem capacidades de integração semelhantes por si só, pelo que este passo de conversão é necessário:

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

Detalhes da Implementação

As bibliotecas de alojamento atuam como adaptadores de protocolo que ligam protocolos de comunicação externos e a implementação interna AIAgent do Agent Framework. Quando usa uma biblioteca de integração de alojamento, a biblioteca obtém o registo AIAgent da injeção de dependências, envolve-o com middleware específico do protocolo para traduzir pedidos recebidos e respostas de saída, e invoca o AIAgent para processar pedidos. Esta arquitetura mantém a implementação do seu agente independente do protocolo.

Por exemplo, usando a biblioteca de alojamento ASP.NET Core com o adaptador de protocolo 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();

Sugestão

Consulte os exemplos Agentes Duráveis para exemplos Funções do Azure e auto-hospedados.

Instale o pacote de alojamento Funções do Azure:

pip install agent-framework-azurefunctions --pre

Crie um agente:

from typing import Any

from agent_framework import Agent
from agent_framework.azure import AgentFunctionApp
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
from dotenv import load_dotenv

load_dotenv()


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

Registe o agente com AgentFunctionApp:

model=os.environ["FOUNDRY_MODEL"],
credential=AzureCliCredential(),

Execute localmente com as Ferramentas Core do Funções do Azure:

func start

Depois invoca:

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

Sugestão

Veja o exemplo completo para o ficheiro executável completo e as Funções Azure que alojam amostras para mais padrões.

Próximos passos

Vai mais fundo:

Consulte também