mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
c341ee7ed2
* 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
160 lines
7.1 KiB
Markdown
160 lines
7.1 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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_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/**](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/**](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/**](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/**](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**](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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```python
|
|
# 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:
|
|
|
|
```bash
|
|
devui /path/to/my/agents/folder
|
|
```
|
|
|
|
## API Usage
|
|
|
|
DevUI exposes OpenAI-compatible endpoints:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
curl http://localhost:8080/v1/entities
|
|
```
|
|
|
|
## Learn More
|
|
|
|
- [DevUI Documentation](../../../packages/devui/README.md)
|
|
- [Agent Framework Documentation](https://docs.microsoft.com/agent-framework)
|
|
- [Sample Guidelines](../../SAMPLE_GUIDELINES.md)
|
|
|
|
## Troubleshooting
|
|
|
|
**Missing API keys**: Check your `.env` files or environment variables.
|
|
|
|
**Import errors**: Make sure you've installed the devui package:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
devui --port 8888
|
|
```
|