Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tutorial demonstra como integrar agentes de IA em fluxos de trabalho usando o Agent Framework. Você aprenderá a criar fluxos de trabalho que aproveitam o poder de agentes especializados de IA para criação, revisão e outras tarefas colaborativas de conteúdo.
O que você construirá
Você criará um fluxo de trabalho que:
- Usa o Serviço do Agente do Azure Foundry para criar agentes inteligentes
- Implementa um agente de tradução francês que traduz a entrada para o francês
- Implementa um agente de tradução espanhol que converte francês para espanhol
- Implementa um agente de tradução em inglês que converte o espanhol de volta para o inglês
- Conecta agentes em um pipeline de fluxo de trabalho sequencial
- Transmite atualizações em tempo real enquanto agentes processam solicitações.
- Demonstra a limpeza adequada de recursos para agentes do Azure Foundry
Conceitos abordados
Pré-requisitos
- SDK do .NET 8.0 ou posterior
- Um ponto de extremidade e um modelo de projeto do Azure Foundry configurado
- CLI do Azure instalada e autenticada (para autenticação de credenciais do Azure)
- Um novo aplicativo de console
Etapa 1: Instalar pacotes NuGet
Primeiro, instale os pacotes necessários para seu projeto do .NET:
dotnet add package Azure.AI.Agents.Persistent --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.AzureAI --prerelease
dotnet add package Microsoft.Agents.AI.Workflows --prerelease
Etapa 2: Configurar o cliente do Azure Foundry
Configure o cliente do Azure Foundry com variáveis de ambiente e autenticação:
using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Workflows;
using Microsoft.Extensions.AI;
public static class Program
{
private static async Task Main()
{
// Set up the Azure OpenAI client
var endpoint = Environment.GetEnvironmentVariable("AZURE_AI_PROJECT_ENDPOINT")
?? throw new InvalidOperationException("AZURE_AI_PROJECT_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_AI_MODEL_DEPLOYMENT_NAME") ?? "gpt-4o-mini";
var persistentAgentsClient = new PersistentAgentsClient(endpoint, new AzureCliCredential());
Etapa 3: Criar método de fábrica do agente
Implemente um método auxiliar para criar agentes do Azure Foundry com instruções específicas:
/// <summary>
/// Creates a translation agent for the specified target language.
/// </summary>
/// <param name="targetLanguage">The target language for translation</param>
/// <param name="persistentAgentsClient">The PersistentAgentsClient to create the agent</param>
/// <param name="model">The model to use for the agent</param>
/// <returns>A ChatClientAgent configured for the specified language</returns>
private static async Task<ChatClientAgent> GetTranslationAgentAsync(
string targetLanguage,
PersistentAgentsClient persistentAgentsClient,
string model)
{
var agentMetadata = await persistentAgentsClient.Administration.CreateAgentAsync(
model: model,
name: $"{targetLanguage} Translator",
instructions: $"You are a translation assistant that translates the provided text to {targetLanguage}.");
return await persistentAgentsClient.GetAIAgentAsync(agentMetadata.Value.Id);
}
}
Etapa 4: Criar agentes especializados do Azure Foundry
Crie três agentes de tradução usando o método auxiliar:
// Create agents
AIAgent frenchAgent = await GetTranslationAgentAsync("French", persistentAgentsClient, deploymentName);
AIAgent spanishAgent = await GetTranslationAgentAsync("Spanish", persistentAgentsClient, deploymentName);
AIAgent englishAgent = await GetTranslationAgentAsync("English", persistentAgentsClient, deploymentName);
Etapa 5: Criar o fluxo de trabalho
Conecte os agentes em um fluxo de trabalho sequencial usando o WorkflowBuilder:
// Build the workflow by adding executors and connecting them
var workflow = new WorkflowBuilder(frenchAgent)
.AddEdge(frenchAgent, spanishAgent)
.AddEdge(spanishAgent, englishAgent)
.Build();
Etapa 6: Executar com Streaming
Execute o fluxo de trabalho com streaming para observar atualizações em tempo real de todos os agentes:
// Execute the workflow
await using StreamingRun run = await InProcessExecution.RunStreamingAsync(workflow, new ChatMessage(ChatRole.User, "Hello World!"));
// Must send the turn token to trigger the agents.
// The agents are wrapped as executors. When they receive messages,
// they will cache the messages and only start processing when they receive a TurnToken.
await run.TrySendMessageAsync(new TurnToken(emitEvents: true));
await foreach (WorkflowEvent evt in run.WatchStreamAsync())
{
if (evt is AgentResponseUpdateEvent executorComplete)
{
Console.WriteLine($"{executorComplete.ExecutorId}: {executorComplete.Data}");
}
}
Etapa 7: Limpeza de recursos
Limpe corretamente os agentes do Azure Foundry após o uso:
// Cleanup the agents created for the sample.
await persistentAgentsClient.Administration.DeleteAgentAsync(frenchAgent.Id);
await persistentAgentsClient.Administration.DeleteAgentAsync(spanishAgent.Id);
await persistentAgentsClient.Administration.DeleteAgentAsync(englishAgent.Id);
}
Como funciona
-
Instalação do cliente do Azure Foundry: usa
PersistentAgentsClientcom as credenciais da CLI do Azure para autenticação - Criação de agente: cria agentes persistentes no Azure Foundry com instruções específicas para tradução
- Processamento Sequencial: o agente francês converte a entrada primeiro, depois o agente espanhol e, em seguida, o agente inglês
-
Ativar padrão de token: agentes armazenam mensagens em cache e só processam quando recebem um
TurnToken -
Atualizações de streaming:
AgentResponseUpdateEventfornece atualizações de token em tempo real à medida que os agentes geram respostas - Gerenciamento de Recursos: limpeza adequada de agentes do Azure Foundry usando a API de Administração
Conceitos Principais
- Serviço do Agente do Azure Foundry: agentes de IA baseados em nuvem com recursos avançados de raciocínio
- PersistentAgentsClient: Cliente para criar e gerenciar agentes no Azure Foundry
-
WorkflowEvent: eventos de saída (
type="output") contêm dados de saída do agente (AgentResponseUpdatepara streaming,AgentResponsepara não streaming) - TurnToken: Sinal que dispara o processamento do agente após o cache de mensagens
- Fluxo de trabalho sequencial: agentes conectados em um pipeline onde a saída flui de um para o outro
Implementação completa
Para obter a implementação completa deste fluxo de trabalho de agentes do Azure Foundry, consulte o exemplo FoundryAgent Program.cs no repositório do Agent Framework.
O que você construirá
Você criará um fluxo de trabalho que:
- Usa
AzureOpenAIResponsesClientpara criar agentes inteligentes - Implementa um agente escritor que cria conteúdo com base em prompts
- Implementa um agente revisor que fornece comentários sobre o conteúdo
- Conecta agentes em um pipeline de fluxo de trabalho sequencial
- Transmite atualizações em tempo real enquanto agentes processam solicitações.
Conceitos abordados
Pré-requisitos
- Python 3.10 ou posterior
- Agent Framework instalado:
pip install agent-framework --pre - Respostas openai do Azure configuradas com variáveis de ambiente adequadas
- Autenticação da CLI do Azure:
az login
Etapa 1: Importar dependências necessárias
Comece importando os componentes necessários para fluxos de trabalho e agentes de respostas do Azure OpenAI:
import asyncio
import os
from agent_framework import AgentResponseUpdate, WorkflowBuilder
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity import AzureCliCredential
Etapa 2: Criar um cliente de respostas openai do Azure
Crie um cliente compartilhado que você pode usar para construir vários agentes:
async def main() -> None:
client = AzureOpenAIResponsesClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
deployment_name=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=AzureCliCredential(),
)
Etapa 3: Criar agentes especializados
Crie dois agentes especializados para criação e revisão de conteúdo:
# Create a Writer agent that generates content
writer_agent = client.as_agent(
name="Writer",
instructions=(
"You are an excellent content writer. You create new content and edit contents based on the feedback."
),
)
# Create a Reviewer agent that provides feedback
reviewer_agent = client.as_agent(
name="Reviewer",
instructions=(
"You are an excellent content reviewer. "
"Provide actionable feedback to the writer about the provided content. "
"Provide the feedback in the most concise manner possible."
),
)
Etapa 4: Criar o fluxo de trabalho
Conecte os agentes em um fluxo de trabalho sequencial usando o construtor:
# Build the workflow with agents as executors
workflow = WorkflowBuilder(start_executor=writer_agent).add_edge(writer_agent, reviewer_agent).build()
Etapa 5: Executar com Streaming
Execute o fluxo de trabalho com streaming para observar atualizações em tempo real de ambos os agentes:
last_author: str | None = None
events = workflow.run("Create a slogan for a new electric SUV that is affordable and fun to drive.", stream=True)
async for event in events:
if event.type == "output" and isinstance(event.data, AgentResponseUpdate):
update = event.data
author = update.author_name
if author != last_author:
if last_author is not None:
print()
print(f"{author}: {update.text}", end="", flush=True)
last_author = author
else:
print(update.text, end="", flush=True)
Etapa 6: concluir a função principal
Encapsular tudo na função principal com a execução assíncrona adequada:
if __name__ == "__main__":
asyncio.run(main())
Como funciona
-
Configuração do cliente: usa uma
AzureOpenAIResponsesClientcom credenciais da CLI do Azure para autenticação. - Criação de Agente: cria agentes de Escritor e Revisor com base na mesma configuração do cliente.
- Processamento Sequencial: o Agente de Gravador gera conteúdo primeiro e, em seguida, passa-o para o Agente Revisor.
-
Atualizações de streaming: eventos de saída (
type="output") comAgentResponseUpdatedados fornecem atualizações de token em tempo real à medida que os agentes geram respostas.
Conceitos Principais
- AzureOpenAIResponsesClient: cliente compartilhado usado para criar agentes de fluxo de trabalho com configuração consistente.
-
WorkflowEvent: eventos de saída (
type="output") contêm dados de saída do agente (AgentResponseUpdatepara streaming,AgentResponsepara não streaming). - Fluxo de trabalho sequencial: agentes conectados em um pipeline em que a saída flui de um para o outro.
Implementação completa
Para obter a implementação de trabalho completa, consulte azure_ai_agents_streaming.py no repositório do Agent Framework.