Files
agent-framework/python/samples/getting_started/devui/README.md
T
Victor Dibia c341ee7ed2 Python: DevUI - Internal Refactor, Conversations API support, and per… (#1235)
* Python: DevUI - Internal Refactor, Conversations API support, and performance improvements

Comprehensive refactor of DevUI package including samples relocation,
frontend reorganization, OpenAI Conversations API support, and critical
performance and code quality improvements.

Key Changes:

Architecture & Organization
- Moved DevUI samples to python/samples/getting_started/devui/
- Consolidated with other framework samples for better discoverability
- Added .env.example files and comprehensive README
- Restructured frontend components into feature-based folders (agent, workflow, gallery, layout)
- Created new OpenAI-compliant message renderers (devui should render oai responses types primarily)

New Features
- Added _conversations.py (467 lines) - Full conversation storage abstraction, replaces the /threads endpoint to better match oai conversations api
- Implements OpenAI Conversations API for thread management, Supports in-memory and extensible storage backends

API Simplification
- Use 'model' field as entity_id (agent/workflow name) instead of extra_body
- Use standard OpenAI 'conversation' field for conversation context.

Performance & Quality Improvements
- Improved context management in MessageMapper with bounded memory (~500KB max)
- Implemented hybrid LRU + cleanup approach to prevent unbounded memory growth
- General QOL improvement - Eliminated ~150 lines of dead/duplicate code, Consolidated helper functions into _utils.py, Extracted magic numbers to module-level constants, Optimized conversation item lookups with index-based approach

Testing
- Added test_conversations.py (13 tests)
- Added test_performance_fixes.py (9 tests)
- Updated existing tests for code consolidation
- 53 tests passing

Impact: 76 files changed: +4,106 insertions, -2,373 deletions
All linting and formatting checks passing. No breaking changes - backward compatible.

Migration: Samples moved to python/samples/getting_started/devui/

* readme lint fixes

* initial support for function approval and minor ui fixes
2025-10-08 19:34:30 +00:00

7.1 KiB

DevUI Samples

This folder contains sample agents and workflows designed to work with the Agent Framework DevUI - a lightweight web interface for running and testing agents interactively.

What is DevUI?

DevUI is a sample application that provides:

  • A web interface for testing agents and workflows
  • OpenAI-compatible API endpoints
  • Directory-based entity discovery
  • In-memory entity registration
  • Sample entity gallery

Note

: DevUI is a sample app for development and testing. For production use, build your own custom interface using the Agent Framework SDK.

Quick Start

Option 1: In-Memory Mode (Simplest)

Run a single sample directly. This demonstrates how to wrap agents and workflows programmatically without needing a directory structure:

cd python/samples/getting_started/devui
python in_memory_mode.py

This opens your browser at http://localhost:8090 with pre-configured agents and a basic workflow.

Option 2: Directory Discovery

Launch DevUI to discover all samples in this folder:

cd python/samples/getting_started/devui
devui

This starts the server at http://localhost:8080 with all agents and workflows available.

Sample Structure

Each agent/workflow follows a strict structure required by DevUI's discovery system:

agent_name/
├── __init__.py      # Must export: agent = ChatAgent(...)
├── agent.py         # Agent implementation
└── .env.example     # Example environment variables

Available Samples

Agents

Sample Description Features Required Environment Variables
weather_agent_azure/ Weather agent using Azure OpenAI with API key authentication Azure OpenAI integration, function calling, mock weather tools AZURE_OPENAI_API_KEY, AZURE_OPENAI_CHAT_DEPLOYMENT_NAME, AZURE_OPENAI_ENDPOINT
foundry_agent/ Weather agent using Azure AI Agent (Foundry) with Azure CLI authentication (run az login first) Azure AI Agent integration, Azure CLI authentication, mock weather tools AZURE_AI_PROJECT_ENDPOINT, FOUNDRY_MODEL_DEPLOYMENT_NAME

Workflows

Sample Description Features Required Environment Variables
workflow_agents/ Content review workflow with agents as executors Agents as workflow nodes, conditional routing based on structured outputs, quality-based paths (Writer → Reviewer → Editor/Publisher) AZURE_OPENAI_API_KEY, AZURE_OPENAI_CHAT_DEPLOYMENT_NAME, AZURE_OPENAI_ENDPOINT
spam_workflow/ 5-step email spam detection workflow with branching logic Sequential execution, conditional branching (spam vs. legitimate), multiple executors, mock spam detection None - uses mock data
fanout_workflow/ Advanced data processing workflow with parallel execution Fan-out/fan-in patterns, complex state management, multi-stage processing (validation → transformation → quality assurance) None - uses mock data

Standalone Examples

Sample Description Features
in_memory_mode.py Demonstrates programmatic entity registration without directory structure In-memory agent and workflow registration, multiple entities served from a single file, includes basic workflow, simplest way to get started

Environment Variables

Each sample that requires API keys includes a .env.example file. To use:

  1. Copy .env.example to .env in the same directory
  2. Fill in your actual API keys
  3. DevUI automatically loads .env files from entity directories

Alternatively, set environment variables globally:

export OPENAI_API_KEY="your-key-here"
export OPENAI_CHAT_MODEL_ID="gpt-4o"

Using DevUI with Your Own Agents

To make your agent discoverable by DevUI:

  1. Create a folder for your agent
  2. Add an __init__.py that exports agent or workflow
  3. (Optional) Add a .env file for environment variables

Example:

# my_agent/__init__.py
from agent_framework import ChatAgent
from agent_framework.openai import OpenAIChatClient

agent = ChatAgent(
    name="MyAgent",
    description="My custom agent",
    chat_client=OpenAIChatClient(),
    # ... your configuration
)

Then run:

devui /path/to/my/agents/folder

API Usage

DevUI exposes OpenAI-compatible endpoints:

curl -X POST http://localhost:8080/v1/responses \
  -H "Content-Type: application/json" \
  -d '{
    "model": "agent-framework",
    "input": "What is the weather in Seattle?",
    "extra_body": {"entity_id": "agent_directory_weather-agent_<uuid>"}
  }'

List available entities:

curl http://localhost:8080/v1/entities

Learn More

Troubleshooting

Missing API keys: Check your .env files or environment variables.

Import errors: Make sure you've installed the devui package:

pip install agent-framework-devui --pre

Port conflicts: DevUI uses ports 8080 (directory mode) and 8090 (in-memory mode) by default. Close other services or specify a different port:

devui --port 8888