Implementation:Microsoft Autogen Studio Default Gallery
| Knowledge Sources | python/packages/autogen-studio/frontend/src/components/views/gallery/default_gallery.json |
|---|---|
| Domains | Configuration, Component Library, Preset Definitions |
| Last Updated | 2026-02-11 |
Overview
The Default Gallery JSON file provides a comprehensive collection of pre-configured AutoGen components including agents, models, tools, workbenches, terminations, and teams that serve as templates and examples for users.
Description
This JSON configuration file defines the default component gallery shipped with AutoGen Studio. The gallery contains:
Gallery Metadata:
- ID: "gallery_default"
- Name: "Default Component Gallery"
- Author: "AutoGen Team"
- Version: "1.0.0"
- Category: "conversation"
- Description: Basic components for human-in-loop conversations
Component Collections:
Agents (4):
- AssistantAgent with calculator tool - Basic AI assistant with arithmetic capabilities
- Web Surfer Agent - Headless browser agent for web scraping and navigation (uses gpt-4o-mini)
- Verification Assistant - Agent specialized in verifying and summarizing information
- UserProxyAgent - Human user proxy for interactive feedback
Models (4):
- OpenAI GPT-4o Mini - Fast, cost-effective model for most tasks
- Mistral-7B Local - Local model via LMStudio/Ollama
- Anthropic Claude-3-7 - Advanced reasoning model (claude-3-7-sonnet-20250219)
- Azure OpenAI GPT-4o-mini - Enterprise Azure-hosted variant
Tools (6):
- Calculator Tool - Basic arithmetic operations (+, -, *, /)
- Image Generation Tool - DALL-E 3 image generation (requires OpenAI API)
- Fetch Webpage Tool - Convert webpages to markdown (requires requests, beautifulsoup4)
- Bing Search Tool - Web search via Bing API (requires BING_SEARCH_KEY)
- Google Search Tool - Web search via Google Custom Search (requires GOOGLE_API_KEY, GOOGLE_CSE_ID)
- Python Code Execution Tool - Local code execution via LocalCommandLineCodeExecutor
Terminations (3):
- TextMentionTermination - Terminate on "TERMINATE" keyword
- MaxMessageTermination - Terminate after 10 messages
- OR Termination - Combination of text mention OR max message (flexible termination)
Teams (4):
- RoundRobin Team - Single AssistantAgent with calculator in round-robin pattern
- Selector Team - Two agents (assistant + critic) with model-based selection
- Web Agent Team (Operator) - Three-agent team with web surfer, verification assistant, and user proxy
- Deep Research Team - Three-agent research team with research assistant (Google search + fetch webpage tools), verifier, and summary agent using GPT-4o
Workbenches (3):
- Basic Tools Workbench - Static workbench with calculator and fetch webpage tools
- Web Content Fetch Workbench - MCP workbench using mcp-server-fetch for web content
- HTTP Streamable MCP Workbench - Example MCP workbench for HTTP-based MCP servers
The gallery demonstrates various component composition patterns, tool integration strategies, and team orchestration approaches. Many tools require external API keys (OpenAI, Bing, Google) documented in their descriptions.
Usage
This file is loaded by AutoGen Studio at startup to populate the default gallery. Users can import components from this gallery into their projects or use them as templates for creating custom components.
Data Structure Reference
Source Location: /tmp/kapso_repo_2mr4n2g4/python/packages/autogen-studio/frontend/src/components/views/gallery/default_gallery.json
Schema Structure:
interface DefaultGallery {
id: string;
name: string;
url: string | null;
metadata: {
author: string;
version: string;
description: string;
tags: string[];
license: string;
homepage: string | null;
category: string;
last_synced: string | null;
};
components: {
agents: Component<AgentConfig>[];
models: Component<ModelConfig>[];
tools: Component<ToolConfig>[];
terminations: Component<TerminationConfig>[];
teams: Component<TeamConfig>[];
workbenches: Component<WorkbenchConfig>[];
};
}
Root Object:
{
"id": "gallery_default",
"name": "Default Component Gallery",
"url": null,
"metadata": {
"author": "AutoGen Team",
"version": "1.0.0",
"description": "A default gallery containing basic components for human-in-loop conversations",
"tags": ["human-in-loop", "assistant", "web agents"],
"license": "MIT",
"homepage": null,
"category": "conversation",
"last_synced": null
},
"components": {
"agents": [ /* 4 agent configs */ ],
"models": [ /* 4 model configs */ ],
"tools": [ /* 6 tool configs */ ],
"terminations": [ /* 3 termination configs */ ],
"teams": [ /* 4 team configs */ ],
"workbenches": [ /* 3 workbench configs */ ]
}
}
Component Inventory
Agents
| Label | Provider | Description | Key Features |
|---|---|---|---|
| AssistantAgent | autogen_agentchat.agents.AssistantAgent | AI assistant with tool abilities | Calculator tool, gpt-4o-mini, unbounded context |
| Web Surfer Agent | autogen_ext.agents.web_surfer.MultimodalWebSurfer | Web browsing agent | Headless browser, Bing start page, vision capable |
| Verification Assistant | autogen_agentchat.agents.AssistantAgent | Information verifier and summarizer | Verification-focused system message, no tools |
| UserProxyAgent | autogen_agentchat.agents.UserProxyAgent | Human user representation | Simple name and description only |
Models
| Label | Provider | Model | Description |
|---|---|---|---|
| OpenAI GPT-4o Mini | autogen_ext.models.openai.OpenAIChatCompletionClient | gpt-4o-mini | Fast and cost-effective OpenAI model |
| Mistral-7B Local | autogen_ext.models.openai.OpenAIChatCompletionClient | TheBloke/Mistral-7B-Instruct-v0.2-GGUF | Local model via LMStudio/Ollama |
| Anthropic Claude-3-7 | autogen_ext.models.anthropic.AnthropicChatCompletionClient | claude-3-7-sonnet-20250219 | Anthropic's latest reasoning model |
| AzureOpenAI GPT-4o-mini | autogen_ext.models.openai.AzureOpenAIChatCompletionClient | gpt-4o-mini | Azure-hosted enterprise variant |
Tools
| Label | Provider | Description | Dependencies |
|---|---|---|---|
| Calculator Tool | autogen_core.tools.FunctionTool | Basic arithmetic (+, -, *, /) | None |
| Image Generation Tool | autogen_core.tools.FunctionTool | DALL-E 3 image generation | OpenAI, PIL, base64 |
| Fetch Webpage Tool | autogen_core.tools.FunctionTool | Convert webpage to markdown | requests, beautifulsoup4, html2text |
| Bing Search Tool | autogen_core.tools.FunctionTool | Bing Web Search API | BING_SEARCH_KEY env var |
| Google Search Tool | autogen_core.tools.FunctionTool | Google Custom Search API | GOOGLE_API_KEY, GOOGLE_CSE_ID env vars |
| Python Code Execution Tool | autogen_ext.tools.code_execution.PythonCodeExecutionTool | Execute Python code locally | LocalCommandLineCodeExecutor |
Teams
| Label | Type | Agents | Description |
|---|---|---|---|
| RoundRobin Team | RoundRobinGroupChat | 1 assistant | Single agent with calculator tool |
| Selector Team | SelectorGroupChat | 2 (assistant + critic) | Model-based speaker selection with critique loop |
| Web Agent Team (Operator) | SelectorGroupChat | 3 (web surfer + verifier + user proxy) | Web research with human oversight |
| Deep Research Team | SelectorGroupChat | 3 (researcher + verifier + summarizer) | Multi-agent research with Google search |
Terminations
| Label | Provider | Configuration | Description |
|---|---|---|---|
| TextMentionTermination | autogen_agentchat.conditions.TextMentionTermination | text: "TERMINATE" | Terminate on keyword |
| MaxMessageTermination | autogen_agentchat.conditions.MaxMessageTermination | max_messages: 10 | Terminate after N messages |
| OR Termination | autogen_agentchat.base.OrTerminationCondition | conditions: [TextMention, MaxMessage] | Terminate on either condition |
Workbenches
| Label | Provider | Description | Configuration |
|---|---|---|---|
| Basic Tools Workbench | autogen_core.tools.StaticWorkbench | Calculator and webpage fetcher | 2 function tools |
| Web Content Fetch Workbench | autogen_ext.tools.mcp.McpWorkbench | MCP server for web content | StdioServerParams: uvx mcp-server-fetch |
| HTTP Streamable MCP Workbench | autogen_ext.tools.mcp.McpWorkbench | HTTP-based MCP server example | StreamableHttpServerParams with auth |
Usage Examples
Loading the Gallery
import defaultGalleryData from "./views/gallery/default_gallery.json";
import type { Gallery } from "./types/datamodel";
const defaultGallery: Gallery = {
id: 1,
config: defaultGalleryData,
created_at: new Date().toISOString()
};
// Access components
const assistantAgent = defaultGallery.config.components.agents[0];
const calculatorTool = defaultGallery.config.components.tools[0];
const roundRobinTeam = defaultGallery.config.components.teams[0];
Extracting Specific Components
// Find the Web Surfer agent
const webSurfer = defaultGalleryData.components.agents.find(
agent => agent.label === "Web Surfer Agent"
);
// Find OpenAI models
const openAIModels = defaultGalleryData.components.models.filter(
model => model.provider.includes("OpenAIChatCompletionClient")
);
// Find tools requiring API keys
const apiTools = defaultGalleryData.components.tools.filter(
tool => tool.description?.includes("requires") &&
tool.description?.includes("env variable")
);
Using Team Templates
// Extract the Deep Research Team template
const researchTeam = defaultGalleryData.components.teams.find(
team => team.label === "Deep Research Team"
);
if (researchTeam && isSelectorTeam(researchTeam)) {
console.log(`Team has ${researchTeam.config.participants.length} participants`);
console.log(`Selector prompt: ${researchTeam.config.selector_prompt}`);
// Extract the research assistant with tools
const researcher = researchTeam.config.participants[0];
if (isAssistantAgent(researcher)) {
const workbench = researcher.config.workbench?.[0];
if (workbench && isAnyStaticWorkbench(workbench)) {
console.log(`Researcher has ${workbench.config.tools.length} tools`);
}
}
}
Customizing Components
import { cloneDeep } from "lodash";
// Clone and customize the calculator tool
const customCalculator = cloneDeep(
defaultGalleryData.components.tools.find(t => t.label === "Calculator Tool")
);
if (customCalculator && isFunctionTool(customCalculator)) {
customCalculator.label = "Advanced Calculator";
customCalculator.description = "Calculator with additional operations";
customCalculator.config.source_code = `
def calculator(a: float, b: float, operator: str) -> str:
# Add power and modulo operations
if operator == "**":
return str(a ** b)
elif operator == "%":
return str(a % b)
# ... existing operations
`;
}
Building a Custom Team from Gallery Components
import type { Component, TeamConfig } from "./types/datamodel";
// Select components from gallery
const assistant = defaultGalleryData.components.agents[0]; // AssistantAgent
const webSurfer = defaultGalleryData.components.agents[1]; // Web Surfer
const termination = defaultGalleryData.components.terminations[2]; // OR termination
const model = defaultGalleryData.components.models[0]; // GPT-4o Mini
// Build custom team
const customTeam: Component<TeamConfig> = {
provider: "autogen_agentchat.teams.SelectorGroupChat",
component_type: "team",
version: 1,
label: "Custom Research Team",
config: {
participants: [assistant, webSurfer],
model_client: model,
termination_condition: termination,
selector_prompt: "Select the best agent for the current task...",
allow_repeated_speaker: true,
max_selector_attempts: 3,
emit_team_events: false,
model_client_streaming: false
}
};
Component Details
Calculator Tool Source Code
def calculator(a: float, b: float, operator: str) -> str:
try:
if operator == "+":
return str(a + b)
elif operator == "-":
return str(a - b)
elif operator == "*":
return str(a * b)
elif operator == "/":
if b == 0:
return "Error: Division by zero"
return str(a / b)
else:
return "Error: Invalid operator. Please use +, -, *, or /"
except Exception as e:
return f"Error: {str(e)}"
Deep Research Team Selector Prompt
You are coordinating a research team by selecting the team member to speak/act next.
The following team member roles are available: {roles}.
The research_assistant performs searches and analyzes information.
The verifier evaluates progress and ensures completeness.
The summary_agent provides a detailed markdown summary of the research as a report to the user.
Given the current context, select the most appropriate next speaker.
Base your selection on:
1. Current stage of research
2. Last speaker's findings or suggestions
3. Need for verification vs need for new information
You should ONLY select the summary_agent role if the research is complete and it is time to generate a report.
Read the following conversation. Then select the next role from {participants} to play.
ONLY RETURN THE ROLE.
{history}
Related Pages
- Studio Gallery Detail - UI component for viewing and editing galleries
- Studio Component Templates - TypeScript template system
- Studio Datamodel Types - Type definitions for gallery structure
- Studio Team Builder - Uses gallery components in team construction
- Studio API Client - Gallery synchronization and management