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.
DevUI é um aplicativo de exemplo leve e autônomo para executar agentes e fluxos de trabalho no Microsoft Agent Framework. Ele fornece uma interface da Web para testes interativos, juntamente com um back-end de API compatível com OpenAI, permitindo que você depure, teste e itere visualmente em agentes e fluxos de trabalho que você cria antes de integrá-los em seus aplicativos.
Importante
DevUI é um aplicativo de exemplo para ajudá-lo a visualizar e depurar seus agentes e fluxos de trabalho durante o desenvolvimento. Ele não se destina a uso em produção.
Instalar os pacotes
Para um único serviço de .NET, instale o pacote DevUI. Para um Aspire AppHost que agrega vários serviços de agente, instale também a integração de hospedagem do Aspire.
dotnet add package Microsoft.Agents.AI.DevUI --prerelease
dotnet add package Aspire.Hosting.AgentFramework.DevUI --prerelease
Usar o DevUI com o Aspire
Cada serviço de agente expõe pontos de extremidade de Conversas e Respostas OpenAI. O Aspire AppHost adiciona um recurso de DevUI e conecta os serviços do agente.
var writerAgent = builder.AddProject<Projects.WriterAgent>("writer-agent", launchProfileName: "https")
.WithHttpHealthCheck("/health", endpointName: "https")
.WithReference(foundry).WaitFor(foundry);
// Add the editor agent service
var editorAgent = builder.AddProject<Projects.EditorAgent>("editor-agent")
.WithHttpHealthCheck("/health")
.WithReference(foundry).WaitFor(foundry);
// Add DevUI integration that aggregates agents from all agent services.
// Agent metadata is declared here so backends don't need a /v1/entities endpoint.
_ = builder.AddDevUI("devui")
.WithAgentService(writerAgent, agents: [new("writer")]) // the name of the agent should match the agent declaration in WriterAgent/Program.cs
.WithAgentService(editorAgent, agents: [new("editor")]) // the name of the agent should match the agent declaration in EditorAgent/Program.cs
.WaitFor(writerAgent)
.WaitFor(editorAgent);
Os agents: nomes passados devem WithAgentService corresponder aos nomes registrados por AddAIAgent(...) cada serviço.
Expor os pontos de extremidade de serviço do agente
var builder = WebApplication.CreateBuilder(args);
builder.AddServiceDefaults();
builder.AddAzureChatCompletionsClient(connectionName: "foundry",
configureSettings: settings =>
{
// WARNING: DefaultAzureCredential is convenient for development but requires careful consideration in production.
// In production, consider using a specific credential (e.g., ManagedIdentityCredential) to avoid
// latency issues, unintended credential probing, and potential security risks from fallback mechanisms.
settings.TokenCredential = new DefaultAzureCredential();
settings.EnableSensitiveTelemetryData = builder.Environment.IsDevelopment();
})
.AddChatClient("gpt41");
builder.AddAIAgent("writer", "You write short stories (300 words or less) about the specified topic.");
// Register services for OpenAI responses and conversations
builder.Services.AddOpenAIResponses();
builder.Services.AddOpenAIConversations();
var app = builder.Build();
app.UseHttpsRedirection();
// Map OpenAI API endpoints — DevUI aggregator routes requests here
O agregador DevUI combina entidades de todos os serviços configurados e roteia solicitações de Respostas e Conversas para o back-end correto.
Features
- Interface da Web: interface do usuário interativa para testar agentes e fluxos de trabalho
- Tipos de entrada flexíveis: suporte para texto, uploads de arquivo e tipos de entrada personalizados com base no primeiro executor do fluxo de trabalho
- Descoberta Baseada em Diretório: Descoberta automática de agentes e fluxos de trabalho a partir de uma estrutura de diretório
- In-Memory Registration: registrar entidades programaticamente sem a configuração do sistema de arquivos
- OpenAI-Compatible API: usar o SDK do Python openai para interagir com seus agentes
- Galeria de Exemplos: Navegue e baixe exemplos selecionados quando nenhuma entidade for descoberta
- Rastreamento: visualizar rastros OpenTelemetry para depuração e observabilidade
Tipos de entrada
O DevUI adapta sua interface de entrada com base no tipo de entidade:
- Agentes: suporte a entrada de texto e anexos de arquivo (imagens, documentos, etc.) para interações multimodais
- Fluxos de trabalho: a interface de entrada é gerada automaticamente com base no tipo de entrada do primeiro executor. O DevUI introspecta o fluxo de trabalho e reflete o esquema de entrada esperado, facilitando o teste de fluxos de trabalho com tipos de entrada estruturados ou personalizados.
Esse tratamento dinâmico de entrada permite que você teste seus agentes e fluxos de trabalho exatamente como eles receberiam entrada em seu aplicativo.
Installation
Instalar o DevUI do PyPI:
pip install agent-framework-devui --pre
Início Rápido
Opção 1: Registro programático
Inicie o DevUI com agentes registrados na memória:
from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient
from agent_framework.devui import serve
def get_weather(location: str) -> str:
"""Get weather for a location."""
return f"Weather in {location}: 72F and sunny"
# Create your agent
agent = Agent(
name="WeatherAgent",
client=OpenAIChatClient(),
tools=[get_weather]
)
# Launch DevUI
serve(entities=[agent], auto_open=True)
# Opens browser to http://localhost:8080
Opção 2: Descoberta de Diretório (CLI)
Se você tiver agentes e fluxos de trabalho organizados em uma estrutura de diretório, inicie o DevUI na linha de comando:
# Launch web UI + API server
devui ./agents --port 8080
# Web UI: http://localhost:8080
# API: http://localhost:8080/v1/*
Consulte a Descoberta de Diretórios para obter detalhes sobre a estrutura de diretório necessária.
Usando o SDK do OpenAI
O DevUI fornece uma API de respostas compatíveis com OpenAI. Você pode usar o SDK do Python openai para interagir com seus agentes:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="not-needed" # API key not required for local DevUI
)
response = client.responses.create(
metadata={"entity_id": "weather_agent"}, # Your agent/workflow name
input="What's the weather in Seattle?"
)
# Extract text from response
print(response.output[0].content[0].text)
Para obter mais detalhes sobre a API, consulte Referência de API.
Opções da CLI
devui [directory] [options]
Options:
--port, -p Port (default: 8080)
--host Host (default: 127.0.0.1)
--headless API only, no UI
--no-open Don't automatically open browser
--tracing Enable OpenTelemetry tracing
--reload Enable auto-reload
--mode developer|user (default: developer)
--auth Enable Bearer token authentication
--auth-token Custom authentication token
Note
O suporte para Go a este recurso estará disponível em breve. Consulte o repositório Agent Framework Go para obter o status mais recente.
Próximas Etapas
Vá mais fundo: