Microsoft AutoGen
python-v0.7.5 open-sourcefrom autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(
model="gpt-5",
reasoning_effort="high",
)
from autogen_agentchat.agents import CodeExecutorAgent
def my_approval(code: str) -> bool:
print(f"Approve this code?\n{code}")
return input("[y/n]: ").strip().lower() == "y"
agent = CodeExecutorAgent(
name="safe_executor",
code_executor=executor,
approval_func=my_approval,
)
from autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(
model="gpt-4o",
parallel_tool_call=False,
)
from autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(
model="gpt-4o",
include_name_in_message=False,
)
from autogen_agentchat.teams import RoundRobinGroupChat, SelectorGroupChat
inner_team = RoundRobinGroupChat([agent_a, agent_b])
outer_team = SelectorGroupChat([inner_team, agent_c], model_client=client)
result = await graph_flow.run(task="Analyze this dataset.")
print(result.stop_reason) # termination message now lives here, not in result.messages
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.tools import AgentTool
sub_agent = AssistantAgent(name="sub", model_client=model_client)
tool = AgentTool(agent=sub_agent)
main_agent = AssistantAgent(name="main", model_client=model_client, tools=[tool])
async for event in main_agent.run_stream(task="Summarize the report"):
print(event)
from autogen_agentchat.agents import AssistantAgent
agent = AssistantAgent(
name="analyst",
model_client=model_client,
tools=[search_tool, calculator_tool],
max_tool_iterations=5,
)
result = await agent.run(task="Find and compute the average price of the top 10 items.")
print(result.messages[-1].content)
from autogen_core.tools import BaseStreamTool
from typing import AsyncGenerator
class MyStreamTool(BaseStreamTool):
async def run_stream(
self, args: dict, cancellation_token=None
) -> AsyncGenerator[str, None]:
for chunk in do_work(args["input"]):
yield chunk
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import MaxMessageTermination
from autogen_agentchat.teams import DiGraphBuilder, GraphFlow
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def main():
model_client = OpenAIChatCompletionClient(model="gpt-4.1-nano")
agent_a = AssistantAgent("A", model_client=model_client, system_message="You are a helpful assistant.")
agent_b = AssistantAgent("B", model_client=model_client, system_message="Translate input to Chinese.")
agent_c = AssistantAgent("C", model_client=model_client, system_message="Translate input to Japanese.")
builder = DiGraphBuilder()
builder.add_node(agent_a).add_node(agent_b).add_node(agent_c)
builder.add_edge(agent_a, agent_b).add_edge(agent_a, agent_c)
graph = builder.build()
team = GraphFlow(
participants=[agent_a, agent_b, agent_c],
graph=graph,
termination_condition=MaxMessageTermination(5),
)
async for event in team.run_stream(task="Write a short story about a cat."):
print(event)
asyncio.run(main())
tool = AzureAISearchTool.create_full_text_search(
name="my_search",
endpoint="https://<your-service>.search.windows.net",
index_name="<index>",
api_key="<key>",
query_type="semantic"
)
from autogen_agentchat.teams import SelectorGroupChat
from autogen_core.model_context import BufferedChatCompletionContext
team = SelectorGroupChat(
participants=[agent1, agent2, agent3],
model_client=model_client,
model_context=BufferedChatCompletionContext(buffer_size=10)
)
from autogen_agentchat.teams import DiGraphBuilder, GraphFlow
builder = DiGraphBuilder()
builder.add_node(writer).add_node(editor1).add_node(editor2).add_node(final_reviewer)
builder.add_edge(writer, editor1)
builder.add_edge(writer, editor2)
builder.add_edge(editor1, final_reviewer)
builder.add_edge(editor2, final_reviewer)
graph = builder.build()
flow = GraphFlow(
participants=builder.get_participants(),
graph=graph,
)
await Console(flow.run_stream(task="Write a short biography of Steve Jobs."))
async with McpWorkbench(server_params) as mcp:
agent = AssistantAgent(
"github_assistant",
model_client=model_client,
workbench=mcp,
reflect_on_tool_use=True,
model_client_stream=True,
)
await Console(agent.run_stream(task="Is there a repository named Autogen"))
async with McpWorkbench(StdioServerParams(command="npx", args=["@playwright/mcp@latest", "--headless"])) as mcp:
agent = AssistantAgent("web_browsing_assistant", model_client=model_client, workbench=mcp)
team = RoundRobinGroupChat([agent], termination_condition=TextMessageTermination(source="web_browsing_assistant"))
await Console(team.run_stream(task="Find out how many contributors for the microsoft/autogen repository"))
writer_tool = AgentTool(agent=writer)
assistant = AssistantAgent(
name="assistant",
model_client=model_client,
tools=[writer_tool],
system_message="You are a helpful assistant.",
)
from autogen_agentchat.agents import CodeExecutorAgent
executor_agent = CodeExecutorAgent(
name="coder",
code_executor=executor,
max_retries_on_error=3,
)
from autogen_agentchat.agents import CodeExecutorAgent
# model_client enables code generation; executor runs the result
agent = CodeExecutorAgent(
name="coder",
code_executor=executor,
model_client=model_client,
)
result = await agent.run(task="Write and run a Python script that prints the first 10 Fibonacci numbers.")
from autogen_agentchat.teams import SelectorGroupChat
team = SelectorGroupChat(
participants=[agent1, agent2],
model_client=model_client,
emit_team_events=True, # set False to hide SelectorSpeakerEvent etc.
)
async for msg in team.run_stream(task="Analyze this dataset."):
print(msg)
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.messages import TextMessage
from autogen_agentchat.ui import Console
from autogen_core import CancellationToken
from autogen_core.tools import FunctionTool
from autogen_ext.models.openai import OpenAIChatCompletionClient
from pydantic import BaseModel
from typing import Literal
class AgentResponse(BaseModel):
thoughts: str
response: Literal["happy", "sad", "neutral"]
def sentiment_analysis(text: str) -> str:
return "happy" if "happy" in text else "sad" if "sad" in text else "neutral"
tool = FunctionTool(sentiment_analysis, description="Sentiment Analysis", strict=True)
model_client = OpenAIChatCompletionClient(model="gpt-4o-mini")
agent = AssistantAgent(
name="assistant",
model_client=model_client,
tools=[tool],
system_message="Use the tool to analyze sentiment.",
output_content_type=AgentResponse,
)
await Console(agent.on_messages_stream(
[TextMessage(content="I am happy today!", source="user")], CancellationToken()
))
{
"provider": "autogen_agentchat.agents.AssistantAgent",
"config": {
"name": "my_agent",
"stream_model_client": true,
"model_client": { ... }
}
}
from autogen_ext.models.llama_cpp import LlamaCppChatCompletionClient
from autogen_core.models import UserMessage
import asyncio
async def main():
client = LlamaCppChatCompletionClient(
repo_id="unsloth/phi-4-GGUF", filename="phi-4-Q2_K_L.gguf",
n_gpu_layers=-1, seed=1337, n_ctx=5000
)
result = await client.create([UserMessage(content="Summarize this report", source="user")])
print(result)
asyncio.run(main())
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.experimental.task_centric_memory import MemoryController
from autogen_ext.experimental.task_centric_memory.utils import Teachability
client = OpenAIChatCompletionClient(model="gpt-4o-2024-08-06")
memory_controller = MemoryController(reset=False, client=client)
teachability = Teachability(memory_controller=memory_controller)
agent = AssistantAgent(
name="teachable_agent",
model_client=client,
memory=[teachability],
)
from autogen_ext.models.ollama import OllamaChatCompletionClient
from autogen_core.models import UserMessage
ollama_client = OllamaChatCompletionClient(model="llama3")
result = await ollama_client.create([UserMessage(content="Summarize this CVE.", source="user")])
print(result)
from autogen_ext.models.ollama import OllamaChatCompletionClient
from autogen_core.models import UserMessage
from pydantic import BaseModel
class ThreatActor(BaseModel):
name: str
country: str
ollama_client = OllamaChatCompletionClient(model="llama3", response_format=ThreatActor)
result = await ollama_client.create([UserMessage(content="Identify the threat actor in this report.", source="user")])
print(result)
from autogen_core.tools import FunctionTool
def lookup_weather(city: str) -> str:
return f"Sunny in {city}"
tool = FunctionTool(lookup_weather, name="lookup_weather", strict=True)
from autogen_ext.tools.mcp import StdioServerParams, mcp_server_tools
fetch_mcp_server = StdioServerParams(command="uvx", args=["mcp-server-fetch"])
tools = await mcp_server_tools(fetch_mcp_server)
agent = AssistantAgent(name="fetcher", model_client=model_client, tools=tools, reflect_on_tool_use=True)
from autogen_ext.tools.http import HttpTool
base64_tool = HttpTool(
name="base64_decode",
description="base64 decode a value",
scheme="https",
host="httpbin.org",
port=443,
path="/base64/{value}",
method="GET",
json_schema={"type": "object", "properties": {"value": {"type": "string"}}, "required": ["value"]},
)
assistant = AssistantAgent("base64_assistant", model_client=model, tools=[base64_tool])
from autogen_ext.models.openai import OpenAIChatCompletionClient
model_client = OpenAIChatCompletionClient(
model="gemini-1.5-flash-8b",
# api_key="GEMINI_API_KEY",
)
from autogen_core.models import UserMessage, ModelFamily
from autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(
model="deepseek-r1:1.5b",
api_key="placeholder",
base_url="http://localhost:11434/v1",
model_info={"function_calling": False, "json_output": False, "vision": False, "family": ModelFamily.R1},
)
result = await client.create(messages=[UserMessage(content="Is this log line indicative of a brute-force attack?", source="user")])
print("Reasoning:", result.thought)
print("Answer:", result.content)
from functools import partial
from autogen_core.tools import FunctionTool
def query_logs(environment: str, severity: str, keyword: str) -> str:
return f"Querying {environment} logs for {severity} events matching '{keyword}'"
prod_logs = partial(query_logs, "production", "ERROR")
tool = FunctionTool(prod_logs, description="Query production ERROR logs by keyword.")
print(tool.schema) # schema only exposes 'keyword'
config = group_chat.dump_component()
with open("team_config.json", "w") as f:
f.write(config.model_dump_json(indent=4))
state = await group_chat.save_state()
with open("team_state.json", "w") as f:
f.write(json.dumps(state, indent=4))
# Later, restore the team:
with open("team_config.json", "r") as f:
config = json.load(f)
group_chat = Team.load_component(config)
with open("team_state.json", "r") as f:
state = json.load(f)
await group_chat.load_state(state)
from autogen_ext.models.azure import AzureAIChatCompletionClient
from azure.core.credentials import AzureKeyCredential
client = AzureAIChatCompletionClient(
model="Phi-4",
endpoint="https://models.inference.ai.azure.com",
credential=AzureKeyCredential(os.environ["GITHUB_TOKEN"]),
model_info={"json_output": False, "function_calling": False, "vision": False, "family": "unknown"},
)
result = await client.create([UserMessage(content="Summarize this CVE.", source="user")])
from autogen_ext.models.cache import ChatCompletionCache
from autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(model="gpt-4o")
cached_client = ChatCompletionCache(client)
result = await cached_client.create([UserMessage(content="What is the capital of France?", source="user")])
print(result.content, result.cached) # False on first call, True on subsequent identical calls
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.models.cache import ChatCompletionCache, CHAT_CACHE_VALUE_TYPE
from autogen_ext.cache_store.diskcache import DiskCacheStore
from autogen_core.models import UserMessage
from diskcache import Cache
import asyncio
async def main():
openai_client = OpenAIChatCompletionClient(model="gpt-4o")
cache_store = DiskCacheStore[CHAT_CACHE_VALUE_TYPE](Cache("/tmp/autogen-cache"))
cache_client = ChatCompletionCache(openai_client, cache_store)
response = await cache_client.create([UserMessage(content="Summarise zero-trust networking.", source="user")])
print(response) # live response
response = await cache_client.create([UserMessage(content="Summarise zero-trust networking.", source="user")])
print(response) # served from disk cache
asyncio.run(main())
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.graphrag import GlobalSearchTool
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
import asyncio
async def main():
global_tool = GlobalSearchTool.from_settings(settings_path="./settings.yaml")
agent = AssistantAgent(
name="search_assistant",
tools=[global_tool],
model_client=OpenAIChatCompletionClient(model="gpt-4o-mini"),
system_message="Use global_search for broad questions about the dataset.",
)
await Console(agent.run_stream(task="What are the main themes across all community reports?"))
asyncio.run(main())
from autogen.agentchat.contrib.capabilities.transform_messages import TransformMessages
from autogen.agentchat.contrib.capabilities.transforms import MessageHistoryLimiter
from autogen import GroupChat, GroupChatManager
transforms = TransformMessages(transforms=[MessageHistoryLimiter(max_messages=10)])
groupchat = GroupChat(
agents=[agent1, agent2, agent3],
messages=[],
speaker_selection_method="auto",
select_speaker_transform_messages=transforms,
)
manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)
agent = ConversableAgent(
name="assistant",
silent=True,
llm_config={"config_list": config_list},
)
result = await initiator.a_initiate_chats(chat_queue)
from autogen.coding import DockerCommandLineExecutor
executor = DockerCommandLineExecutor(bind_dir="/host/workspace")
pip install pyautogen[cosmosdb]
retrieve_user_proxy = RetrieveUserProxyAgent(
name="retrieve_proxy",
retrieve_config={
"docs_path": "./docs",
"context_max_tokens": 2000,
}
)
{
"model": "gpt-4",
"api_type": "azure",
"api_key": "<your-key>",
"base_url": "<your-azure-endpoint>",
"extra_body": {
"dataSources": [
{
"type": "AzureCognitiveSearch",
"parameters": {
"endpoint": "<search-endpoint>",
"key": "<search-key>",
"indexName": "<index-name>"
}
}
]
}
}
user_proxy.initiate_chat(assistant, message="Summarise this doc", max_turns=5)
import autogen
def my_summary(recipient, messages, sender, config):
return messages[-1]['content'][:200]
autogen.initiate_chats([
{"sender": agent_a, "recipient": agent_b, "message": "Start task", "summary_method": my_summary},
{"sender": agent_b, "recipient": agent_c, "message": "Continue", "summary_method": my_summary},
])
from autogen import filter_config
config_list = [
{"model": "gpt-4", "api_key": "..."},
{"model": "gpt-3.5-turbo", "api_key": "..."}
]
filtered = filter_config(config_list, {"model": ["gpt-4"]})
from autogen import ConversableAgent
class MyCustomClient:
def create(self, params):
# call your own model endpoint here
...
def message_retrieval(self, response):
...
def cost(self, response):
...
@staticmethod
def get_usage(response):
...
agent = ConversableAgent(
name='my_agent',
llm_config={'model': 'my-model', 'model_client_cls': 'MyCustomClient'},
)
agent.register_model_client(model_client_cls=MyCustomClient)
from autogen.agentchat.contrib.society_of_mind_agent import SocietyOfMindAgent
from autogen import GroupChat, GroupChatManager, AssistantAgent, UserProxyAgent
inner_agents = [AssistantAgent('a1', llm_config=llm_config), AssistantAgent('a2', llm_config=llm_config)]
groupchat = GroupChat(agents=inner_agents, messages=[], max_round=6)
manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)
society_agent = SocietyOfMindAgent('society', chat_manager=manager, llm_config=llm_config)
user = UserProxyAgent('user', human_input_mode='NEVER')
user.initiate_chat(society_agent, message='Solve this step by step: ...')
human_proxy.initiate_chat(assistant)
from autogen.agentchat.contrib.gpt_assistant_agent import GPTAssistantAgent
agent = GPTAssistantAgent(
name="analyst",
llm_config={"config_list": config_list},
verbose=True
)
from autogen.agentchat.contrib.qdrant_retrieve_user_proxy_agent import QdrantRetrieveUserProxyAgent
ragent = QdrantRetrieveUserProxyAgent(
name="qdrant_rag",
retrieve_config={
"docs_path": "./docs",
"collection_name": "my_collection",
},
) Summary
Microsoft AutoGen is an open-source Python framework, free to use, for building multi-agent AI applications that act autonomously or alongside humans; it is used as a library imported into your own code, through layers ranging from a no-code Studio UI down to AgentChat for conversational agents and Core for event-driven, distributed multi-agent systems. It suits developers building agentic workflows, MCP or tool-calling integrations, and researchers studying multi-agent collaboration, rather than end users. Its own README positions Microsoft Agent Framework as its enterprise-ready successor, since AutoGen itself is now in maintenance mode, receiving no new features and managed by the community. With 611 contributors and a 2020 first commit it has a long history, but recent activity is limited to 36 commits in the past year, and anyone evaluating it should plan around eventual migration rather than long-term investment.
What Microsoft AutoGen answers
Which model providers can I actually call without writing my own client?
built-in extensions cover OpenAI, Anthropic, Gemini, and Qwen vision-language models, with per-provider options like extended reasoning or adjustable reasoning effort
Does model-generated code run safely on its own?
code execution happens in a Docker container by default, with a user-defined approval step available before anything runs
What does this need in order to run at all?
Python 3.10 or later, installed as separate packages for the conversational layer and any extensions like the OpenAI client
Can agents remember things across a conversation?
agent memory can be backed by Redis or Mem0, storing plain, JSON, or Markdown content instead of holding state only in-process
How much runway does adopting this give me?
none intended going forward — it is in maintenance mode with a named successor and a migration guide, so new work is expected to move off it
Can I see what an agent is doing inside a larger workflow?
tool and sub-agent activity streams as events and is traced through OpenTelemetry, so calls like agent creation and tool execution are observable rather than opaque
Examples
Command line
No option matches that search.
| option | found in | since | description |
|---|
No option matches that search.
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Release history
- python-v0.7.5
AutoGen 0.7.5 adds Anthropic thinking mode, linear memory for RedisMemory, and reasoning_effort for GPT-5 models.
└──▷ GET THIS VERSION$ git clone --branch python-v0.7.5 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.7.5
└──▷ USE ITControl reasoning depth when calling GPT-5 models to balance latency and answer quality.from autogen_ext.models.openai import OpenAIChatCompletionClient client = OpenAIChatCompletionClient( model="gpt-5", reasoning_effort="high", )- ›Adds thinking mode support for the Anthropic client, enabling extended reasoning with Claude models.
- ›Supports linear memory storage in RedisMemory, giving practitioners an alternative memory retrieval strategy.
- ›Adds
reasoning_effortparameter support for OpenAI GPT-5 models. - ›Adds security warnings and defaults to
DockerCommandLineCodeExecutorfor safer code execution.
- python-v0.7.3
AutoGen 0.7.3 adds GPT-5 model info and extended Pydantic anyOf/oneOf typing support.
└──▷ GET THIS VERSION$ git clone --branch python-v0.7.3 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.7.3
- ›Adds model info entry for GPT-5, enabling it to be referenced in AutoGen model configurations.
- ›Extends Pydantic model capability to support
anyOf/oneOfitem typing for richer schema definitions.
- python-v0.7.2
AutoGen 0.7.2 adds code-execution approval gates, parallel tool call control, JSON/Markdown Redis memory, and safer MagenticOne defaults.
└──▷ GET THIS VERSION$ git clone --branch python-v0.7.2 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.7.2
└──▷ USE ITGate code execution in an automated pipeline by prompting a human reviewer before any generated code runs.from autogen_agentchat.agents import CodeExecutorAgent def my_approval(code: str) -> bool: print(f"Approve this code?\n{code}") return input("[y/n]: ").strip().lower() == "y" agent = CodeExecutorAgent( name="safe_executor", code_executor=executor, approval_func=my_approval, )Disable parallel tool calls on an OpenAI client to avoid race conditions when using AgentTool or TeamTool.from autogen_ext.models.openai import OpenAIChatCompletionClient client = OpenAIChatCompletionClient( model="gpt-4o", parallel_tool_call=False, )- ›Adds
approval_funcoption toCodeExecutorAgent, enabling a user-defined callback to approve or reject code before execution. - ›Adds
parallel_tool_callconfiguration to the OpenAI model client config, letting callers control whether tools are invoked in parallel. - ›Supports JSON and MARKDOWN content types in Redis agent memory, expanding storage format flexibility.
- ›Makes
DockerCommandLineCodeExecutorthe default code executor for the MagenticOne team, improving isolation out of the box.
└──▷ BREAKING ON UPGRADE- !Assistant-related methods have been removed from
OpenAIAssistantAgent(OpenAIAgent); callers relying on those methods will break on upgrade.
- ›Adds
- python-v0.7.1
AutoGen 0.7.1 adds RedisMemory, nested Team participants, OpenAI built-in tools, and expanded MCP Workbench support.
└──▷ GET THIS VERSION$ git clone --branch python-v0.7.1 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.7.1
└──▷ USE ITSuppress thenamefield in OpenAI messages when targeting models or proxies that reject it.from autogen_ext.models.openai import OpenAIChatCompletionClient client = OpenAIChatCompletionClient( model="gpt-4o", include_name_in_message=False, )Compose multi-team workflows by nesting a specialist Team as a participant in a parent GroupChat.from autogen_agentchat.teams import RoundRobinGroupChat, SelectorGroupChat inner_team = RoundRobinGroupChat([agent_a, agent_b]) outer_team = SelectorGroupChat([inner_team, agent_c], model_client=client)
- ›Adds
RedisMemoryextension class for persistent, Redis-backed agent memory. - ›Enables nested Team instances as participants inside another Team (e.g., in a
GroupChat). - ›Expands
OpenAIAgentto support all OpenAI built-in tools. - ›Adds
include_name_in_messageparameter to make thenamefield optional in chat messages sent via the OpenAI client. - ›Expands MCP Workbench to support more MCP client features with the latest MCP version.
+2 moreshow less
- ›Adds timeout support for HTTP tools.
- ›Adds support for
"format": "json"in JSON schemas.
- ›Adds
- python-v0.6.4
AutoGen 0.6.4 adds reflection for Claude in AssistantAgent, Workbench tool-name overrides, and Qwen2.5VL support.
└──▷ GET THIS VERSION$ git clone --branch python-v0.6.4 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.6.4
└──▷ USE ITRead the termination reason fromGraphFlowwithout relying on a_StopAgentmessage in the conversation.result = await graph_flow.run(task="Analyze this dataset.") print(result.stop_reason) # termination message now lives here, not in result.messages
- ›Enables
GraphFlowto resume with a new or empty task after a termination condition without an explicit reset, matching the behavior ofRoundRobinGroupChatandSelectorGroupChat. - ›Adds tool name and description override support to
McpWorkbenchandStaticWorkbench, allowing client-side customization of server-side tool metadata. - ›Adds reflection support for Claude models in
AssistantAgent. - ›Adds Qwen2.5VL vision-language model support.
└──▷ BREAKING ON UPGRADE- !In
GraphFlow, the inner_StopAgentis removed and no longer emits a final message; code that reads a stop message from the last agent message must be updated to readTaskResult.stop_reasoninstead.
- ›Enables
- python-v0.6.2
AutoGen v0.6.2 adds streaming tools, inner tool-call loops, OTel GenAI traces, Mem0 memory, and a tool_choice parameter.
└──▷ GET THIS VERSION$ git clone --branch python-v0.6.2 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.6.2
└──▷ USE ITReceive streamed inner events from a sub-agent tool while running a top-level AssistantAgent — useful for real-time visibility into delegated work.from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.tools import AgentTool sub_agent = AssistantAgent(name="sub", model_client=model_client) tool = AgentTool(agent=sub_agent) main_agent = AssistantAgent(name="main", model_client=model_client, tools=[tool]) async for event in main_agent.run_stream(task="Summarize the report"): print(event)Limit how many back-to-back tool calls AssistantAgent may make before returning, preventing runaway loops in automated pipelines.from autogen_agentchat.agents import AssistantAgent agent = AssistantAgent( name="analyst", model_client=model_client, tools=[search_tool, calculator_tool], max_tool_iterations=5, ) result = await agent.run(task="Find and compute the average price of the top 10 items.") print(result.messages[-1].content)Create a custom streaming tool that yields intermediate results as it executes, so callers can observe progress via run_stream.from autogen_core.tools import BaseStreamTool from typing import AsyncGenerator class MyStreamTool(BaseStreamTool): async def run_stream( self, args: dict, cancellation_token=None ) -> AsyncGenerator[str, None]: for chunk in do_work(args["input"]): yield chunk- ›Adds streaming tool support via
autogen_core.tools.BaseStreamToolandautogen_core.tools.StreamWorkbench, exposing inner agent/team events throughAgentToolandTeamToolwhen used withAssistantAgent. - ›Adds
tool_choiceparameter toChatCompletionClientcreateandcreate_streammethods for explicit tool selection control. - ›Enables an inner tool-calling loop in
AssistantAgentvia the newmax_tool_iterationsconstructor parameter, looping until the model stops generating tool calls or the limit is reached. - ›Adds OpenTelemetry GenAI semantic-convention traces (
create_agent,invoke_agent,execute_tool) for agents and tools; disable withAUTOGEN_DISABLE_RUNTIME_TRACING=true. - ›Adds
output_task_messagesflag torunandrun_streamto control whether input task messages are emitted in the event stream.
+5 moreshow less
- ›Adds Mem0 memory extension (
autogen-ext) so agents can use Mem0 as a memory backend. - ›Adds activation group support to
GraphFlowfor workflows with multiple cycles. - ›Adds a
message_idfield to AgentChat messages. - ›Adds ChromaDB embedding functions support to the ChromaDB extension.
- ›Adds support for Gemini 2.5 Flash stable model.
- ›Adds streaming tool support via
- python-v0.6.1
AutoGen 0.6.1 adds function call and result listings to ToolCallSummaryMessage.
└──▷ GET THIS VERSION$ git clone --branch python-v0.6.1 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.6.1
- ›Adds list of function calls and their results to
ToolCallSummaryMessage, making tool execution summaries more detailed and inspectable.
- ›Adds list of function calls and their results to
- python-v0.6.0
AutoGen v0.6.0 adds concurrent GraphFlow agents, a new OpenAIAgent, callable edge conditions, Streamable HTTP MCP, and broader model support.
└──▷ GET THIS VERSION$ git clone --branch python-v0.6.0 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.6.0
└──▷ USE ITRun two translation agents concurrently after a writer agent using GraphFlow's fan-out pattern.import asyncio from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.conditions import MaxMessageTermination from autogen_agentchat.teams import DiGraphBuilder, GraphFlow from autogen_ext.models.openai import OpenAIChatCompletionClient async def main(): model_client = OpenAIChatCompletionClient(model="gpt-4.1-nano") agent_a = AssistantAgent("A", model_client=model_client, system_message="You are a helpful assistant.") agent_b = AssistantAgent("B", model_client=model_client, system_message="Translate input to Chinese.") agent_c = AssistantAgent("C", model_client=model_client, system_message="Translate input to Japanese.") builder = DiGraphBuilder() builder.add_node(agent_a).add_node(agent_b).add_node(agent_c) builder.add_edge(agent_a, agent_b).add_edge(agent_a, agent_c) graph = builder.build() team = GraphFlow( participants=[agent_a, agent_b, agent_c], graph=graph, termination_condition=MaxMessageTermination(5), ) async for event in team.run_stream(task="Write a short story about a cat."): print(event) asyncio.run(main())- ›Enables concurrent agent execution in
GraphFlowvia fan-out-fan-in patterns —select_speakernow returnsList[str] | str. - ›Adds callable (lambda/function) edge conditions for
GraphFlow, replacing keyword substring matching. - ›New
OpenAIAgentbacked by the OpenAI Responses API. - ›Supports Streamable HTTP transport for MCP.
- ›Adds
tool_call_summary_msg_format_fctparameter toAssistantAgentfor custom tool-call summary formatting.
+10 moreshow less
- ›Supports multiple workbenches in
AssistantAgent. - ›Adds
auto_deleteoption for temporary files inLocalCommandLineCodeExecutor. - ›Adds language filtering for code blocks parsed from
CodeExecutorAgentresponses. - ›Enables default usage statistics collection for streaming responses in
OpenAIChatCompletionClient. - ›Adds Llama API OAI-compatible endpoint support to
OpenAIChatCompletionClient. - ›Adds Qwen3 model support to
OllamaChatCompletionClient. - ›Allows implicit AWS credential resolution in
AnthropicBedrockChatCompletionClient. - ›Adds Claude Sonnet 4 and Claude Opus 4 to supported Anthropic models.
- ›Adds
created_atfield toBaseChatMessageandBaseAgentEvent. - ›Uses structured output for the MagenticOne orchestrator.
└──▷ BREAKING ON UPGRADE- !The return type of
BaseGroupChatManager.select_speakerchanged fromstrtoList[str] | str— subclasses that override this method with a strictstrreturn type annotation may need to be updated.
- ›Enables concurrent agent execution in
- python-v0.5.7
AutoGen 0.5.7 unifies Azure AI Search methods, adds model context to SelectorGroupChat, and enriches OTEL tracing.
└──▷ GET THIS VERSION$ git clone --branch python-v0.5.7 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.5.7
└──▷ USE ITRun a semantic search over an Azure AI Search index using the new unified method instead of the removed create_keyword_search().tool = AzureAISearchTool.create_full_text_search( name="my_search", endpoint="https://<your-service>.search.windows.net", index_name="<index>", api_key="<key>", query_type="semantic" )Limit the message history sent to the selector model in a long-runningSelectorGroupChatto avoid exceeding context limits.from autogen_agentchat.teams import SelectorGroupChat from autogen_core.model_context import BufferedChatCompletionContext team = SelectorGroupChat( participants=[agent1, agent2, agent3], model_client=model_client, model_context=BufferedChatCompletionContext(buffer_size=10) )- ›Adds unified
AzureAISearchToolfactory methods: create_full_text_search() (supporting"simple","full", and"semantic"query types), create_vector_search(), and create_hybrid_search(). - ›Adds client-side embeddings support to
AzureAISearchTool, falling back to service embeddings when client embeddings are not provided. - ›Adds
model_contextparameter toSelectorGroupChatto customize which messages are sent to the model client when selecting the next speaker, enabling long-context speaker selection. - ›Adds new metadata and message content fields to OTEL traces emitted by
SingleThreadedAgentRuntime. - ›Adds ability to register Agent instances directly with the Agent Runtime.
└──▷ BREAKING ON UPGRADE- !The create_keyword_search() method on
AzureAISearchToolis replaced by create_full_text_search() with"simple"query type; code using create_keyword_search() must be updated.
- ›Adds unified
- python-v0.5.6
AutoGen v0.5.6 adds GraphFlow for directed-graph agent workflows, Bing grounding citations, and Bedrock/Anthropic support.
└──▷ GET THIS VERSION$ git clone --branch python-v0.5.6 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.5.6
└──▷ USE ITBuild a fan-out/fan-in pipeline where a writer feeds two parallel editors whose outputs are consolidated by a final reviewer — useful for parallel critique workflows.from autogen_agentchat.teams import DiGraphBuilder, GraphFlow builder = DiGraphBuilder() builder.add_node(writer).add_node(editor1).add_node(editor2).add_node(final_reviewer) builder.add_edge(writer, editor1) builder.add_edge(writer, editor2) builder.add_edge(editor1, final_reviewer) builder.add_edge(editor2, final_reviewer) graph = builder.build() flow = GraphFlow( participants=builder.get_participants(), graph=graph, ) await Console(flow.run_stream(task="Write a short biography of Steve Jobs."))- ›Adds
GraphFlowteam class andDiGraphBuilderto AgentChat, enabling directed-graph agent workflows including fan-out, fan-in, and concurrent agent execution. - ›Adds Bing grounding citation URL support to the Azure AI Agent integration.
- ›Adds Amazon Bedrock chat completion support for Anthropic models via a new provider in
autogen_ext.
- ›Adds
- python-v0.5.5
AutoGen v0.5.5 adds Workbench abstraction for stateful MCP servers and a new FunctionalTermination condition for teams.
└──▷ GET THIS VERSION$ git clone --branch python-v0.5.5 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.5.5
└──▷ USE ITUse a stateful MCP server (GitHub) with a shared session so all tools stay authenticated under one login context.async with McpWorkbench(server_params) as mcp: agent = AssistantAgent( "github_assistant", model_client=model_client, workbench=mcp, reflect_on_tool_use=True, model_client_stream=True, ) await Console(agent.run_stream(task="Is there a repository named Autogen"))Drive a headless browser via Playwright MCP inside a multi-agent team, sharing browser state across all tool calls.async with McpWorkbench(StdioServerParams(command="npx", args=["@playwright/mcp@latest", "--headless"])) as mcp: agent = AssistantAgent("web_browsing_assistant", model_client=model_client, workbench=mcp) team = RoundRobinGroupChat([agent], termination_condition=TextMessageTermination(source="web_browsing_assistant")) await Console(team.run_stream(task="Find out how many contributors for the microsoft/autogen repository"))- ›Adds
McpWorkbench— a new Workbench abstraction that lets agents share a single MCP server session across all tools, enabling stateful servers (e.g., login sessions, browser state) that tool adapters could not support. - ›Enables
AssistantAgentto accept aworkbench=parameter, wiring it directly to a shared-session tool collection. - ›Adds
FunctionalTerminationtermination condition, letting teams define stop logic via an arbitrary function expression instead of only built-in conditions. - ›Adds new sample demonstrating autogen-core + FastAPI for a handoff multi-agent pattern with streaming and a UI.
- ›Adds
- python-v0.5.4
AutoGen v0.5.4 adds AgentTool/TeamTool nesting, Azure AI Agent adapter, Docker Jupyter executor, and Canvas shared memory.
└──▷ GET THIS VERSION$ git clone --branch python-v0.5.4 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.5.4
└──▷ USE ITDelegate sub-tasks to a specialist agent by wrapping it as a tool — useful when an orchestrator should call a writer, coder, or researcher on demand.writer_tool = AgentTool(agent=writer) assistant = AssistantAgent( name="assistant", model_client=model_client, tools=[writer_tool], system_message="You are a helpful assistant.", )Let a CodeExecutorAgent automatically retry and self-debug when generated code fails, reducing manual intervention in automated pipelines.from autogen_agentchat.agents import CodeExecutorAgent executor_agent = CodeExecutorAgent( name="coder", code_executor=executor, max_retries_on_error=3, )- ›Adds
AgentToolandTeamToolto wrap agents and teams as callable tools for other agents, enabling nested agent hierarchies. - ›Introduces
AzureAIAgentadapter with support for file search, code interpreter, and Azure AI Agent service integration. - ›Adds
DockerJupyterCodeExecutorfor sandboxed Jupyter code execution inside Docker containers. - ›Introduces experimental
CanvasMemory— a shared whiteboard memory letting multiple agents collaboratively read/write a common artifact. - ›Adds
autogen-contextpluscommunity extension for advanced model context management with automatic summarization and truncation.
+4 moreshow less
- ›
SelectorGroupChatnow supports streaming-only models (e.g., QwQ) via newmodel_client_streaming=Trueparameter, and can emit inner selector reasoning withemit_team_events=True. - ›
CodeExecutorAgentgainsmax_retries_on_errorparameter for automatic self-debugging retry loops on code execution failures. - ›Adds
multiple_system_messagesfield toModelInfoto generalize continuous system-message merging across model providers. - ›Docker code executor now supports exposing GPUs to the container.
- ›Adds
- python-v0.5.3
AutoGen 0.5.3 adds code generation to CodeExecutorAgent, serializable AssistantAgent, MCP shared sessions, and team event controls.
└──▷ GET THIS VERSION$ git clone --branch python-v0.5.3 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.5.3
└──▷ USE ITGenerate and immediately execute LLM-produced code in one agent turn — useful for data-analysis or automation tasks where you want a single agent to both write and run code.from autogen_agentchat.agents import CodeExecutorAgent # model_client enables code generation; executor runs the result agent = CodeExecutorAgent( name="coder", code_executor=executor, model_client=model_client, ) result = await agent.run(task="Write and run a Python script that prints the first 10 Fibonacci numbers.")Suppress internal team-coordination events from the stream when you only want final agent messages, or enable them for debugging selector decisions.from autogen_agentchat.teams import SelectorGroupChat team = SelectorGroupChat( participants=[agent1, agent2], model_client=model_client, emit_team_events=True, # set False to hide SelectorSpeakerEvent etc. ) async for msg in team.run_stream(task="Analyze this dataset."): print(msg)- ›Enables
CodeExecutorAgentto generate and execute code in the same invocation via new code generation support. - ›Adds
autogen_core.utilsmodule with JSON schema utilities, enablingAssistantAgentto be serialized whenoutput_content_typeis set. - ›Introduces optional
emit_team_eventsparameter on teams to control whether events likeSelectorSpeakerEventare emitted throughrun_stream. - ›Allows
mcp_server_toolsfactory to reuse a shared MCP session, enabling patterns like a persistent Playwright MCP server connection. - ›Adds message type printing to the Console output.
- ›Enables
- python-v0.5.2
AutoGen v0.5.2 adds Gemini 2.5 Pro support and exposes more Task-Centric Memory parameters and TypedDict classes.
└──▷ GET THIS VERSION$ git clone --branch python-v0.5.2 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.5.2
- ›Adds Gemini 2.5 Pro Preview as a supported model.
- ›Exposes additional Task-Centric Memory (TCM) configuration parameters for finer control over memory behavior.
- ›Exposes TCM TypedDict classes so applications can directly reference and type-check Task-Centric Memory structures.
- ›Adds PowerShell path detection to the code executor for Windows environments.
- python-v0.5.1
AutoGen v0.5.1 adds structured output, Azure AI Search tool, token-limited context, and richer model client capabilities.
└──▷ GET THIS VERSION$ git clone --branch python-v0.5.1 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.5.1
└──▷ USE ITHave anAssistantAgentproduce structured Pydantic output after a tool call — ideal for downstream programmatic consumption.from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.messages import TextMessage from autogen_agentchat.ui import Console from autogen_core import CancellationToken from autogen_core.tools import FunctionTool from autogen_ext.models.openai import OpenAIChatCompletionClient from pydantic import BaseModel from typing import Literal class AgentResponse(BaseModel): thoughts: str response: Literal["happy", "sad", "neutral"] def sentiment_analysis(text: str) -> str: return "happy" if "happy" in text else "sad" if "sad" in text else "neutral" tool = FunctionTool(sentiment_analysis, description="Sentiment Analysis", strict=True) model_client = OpenAIChatCompletionClient(model="gpt-4o-mini") agent = AssistantAgent( name="assistant", model_client=model_client, tools=[tool], system_message="Use the tool to analyze sentiment.", output_content_type=AgentResponse, ) await Console(agent.on_messages_stream( [TextMessage(content="I am happy today!", source="user")], CancellationToken() ))- ›Introduces
StructuredMessage[T]generic message type, enabling custom application-defined message types in AgentChat. - ›Adds
output_content_typeparameter toAssistantAgentso agents can emit structured Pydantic model responses viaStructuredMessage. - ›New
AzureAISearchToolintegration lets agents perform semantic/keyword search against Azure AI Search indexes. - ›Adds
candidate_funcparameter toSelectorGroupChatfor filtering the pool of agent candidates before selection. - ›Adds async support for
selector_funcandcandidate_funcinSelectorGroupChat.
+7 moreshow less
- ›Adds cancellation support to the Docker code executor.
- ›Introduces
TokenLimitedChatCompletionContextto cap token usage in long-running agent contexts. - ›Adds
thoughtfield support toAzureAIChatCompletionClientandOllamaChatCompletionClientfor reasoning/chain-of-thought tokens. - ›Adds
reasoningfield toModelClientStreamingChunkEventto distinguish thought tokens from response tokens. - ›Introduces modular Transformer Pipeline for model clients (e.g. Gemini/Anthropic content transforms).
- ›Extends model family resolution to support non-prefixed model names such as Mistral.
- ›Changes
CodeExecutordefault working directory to a temporary directory.
└──▷ BREAKING ON UPGRADE- !Custom agents subclassing
BaseChatAgentand customTerminationConditionsubclasses must update method signatures: replaceAgentEventwithBaseAgentEventandChatMessagewithBaseChatMessagein type hints. - !The
CodeExecutordefault directory is now a temporary directory instead of the previous default, which may affect executors that relied on the old default path for output artifacts.
- ›Introduces
- autogenstudio-v0.4.2
AutoGen Studio 0.4.2 adds component validation, LLM observability, token streaming, session comparison, Anthropic support, and experimental GitHub auth.
└──▷ GET THIS VERSION$ git clone --branch autogenstudio-v0.4.2 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout autogenstudio-v0.4.2
└──▷ HOW TO FIND ITEnable LLM call observability to inspect every LLMCallEvent during agent runs — useful for debugging prompt/response chains.📍In AutoGen Studio, click the cog icon (Settings) in the lower-left corner and enable the LLM Call Observability option.Stream tokens in real time for an agent to get immediate feedback during long LLM responses.{ "provider": "autogen_agentchat.agents.AssistantAgent", "config": { "name": "my_agent", "stream_model_client": true, "model_client": { ... } } }- ›Adds Component Validation API: all component schemas (teams, agents, models, tools, termination conditions) are automatically validated on save in the team builder, surfacing configuration errors early.
- ›Adds a Test button for model clients in the team builder UI to verify model configuration by running a live LLM query and displaying results.
- ›Adds LLM Call Observability: view all LLMCallEvents in AutoGen Studio via the Settings panel (cog icon, lower left).
- ›Adds token streaming in the AGS UI for agents where
stream_model_clientis set totrue, displaying tokens as they are generated. - ›Adds side-by-side Session Comparison in the playground: select multiple sessions and interact with them simultaneously to compare agent outputs.
+4 moreshow less
- ›Adds Anthropic model support in AutoGen Studio.
- ›Improves Gallery editing UI so teams, agents, models, tools, and termination conditions can be modified independently without requiring raw JSON review; Gallery is now persisted in a database rather than local storage.
- ›Adds experimental GitHub authentication support: pass an authentication configuration YAML file to enable user-scoped login and per-user session isolation.
- ›Adds experimental local Python code execution tool in AutoGen Studio.
└──▷ BREAKING ON UPGRADE- !The Gallery is now persisted in a database rather than local storage, which may require migration of existing locally stored Gallery data.
- python-v0.4.9
AutoGen v0.4.9 adds Anthropic & LlamaCpp model clients, task-centric memory, PowerShell execution, and pause/resume for agent teams.
└──▷ GET THIS VERSION$ git clone --branch python-v0.4.9 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.4.9
└──▷ USE ITRun a local GGUF model or pull directly from Hugging Face for offline/private inference.from autogen_ext.models.llama_cpp import LlamaCppChatCompletionClient from autogen_core.models import UserMessage import asyncio async def main(): client = LlamaCppChatCompletionClient( repo_id="unsloth/phi-4-GGUF", filename="phi-4-Q2_K_L.gguf", n_gpu_layers=-1, seed=1337, n_ctx=5000 ) result = await client.create([UserMessage(content="Summarize this report", source="user")]) print(result) asyncio.run(main())Give an AssistantAgent persistent memory so it learns corrections and guidance across conversations.from autogen_agentchat.agents import AssistantAgent from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.experimental.task_centric_memory import MemoryController from autogen_ext.experimental.task_centric_memory.utils import Teachability client = OpenAIChatCompletionClient(model="gpt-4o-2024-08-06") memory_controller = MemoryController(reset=False, client=client) teachability = Teachability(memory_controller=memory_controller) agent = AssistantAgent( name="teachable_agent", model_client=client, memory=[teachability], )- ›Adds
AnthropicChatCompletionClientfor native Anthropic model support, following the same interface asOpenAIChatCompletionClient. - ›Adds
LlamaCppChatCompletionClientfor running local GGUF models or Hugging Face models via the llama-cpp SDK. - ›Introduces experimental Task-Centric Memory (
MemoryController, Teachability) enabling agents to learn from user teaching, self-improve, and persist knowledge beyond context-window limits. - ›Adds
LLMStreamStartEventandLLMStreamEndEventtracing events for LLM streaming. - ›Adds
ToolCallEventlogged from all built-in tools for richer tracing.
+6 moreshow less
- ›Supports tracing via context provider.
- ›Adds PowerShell support to
LocalCommandLineCodeExecutor. - ›Adds Pause and Resume capability for AgentChat Teams and Agents.
- ›Adds optional base path configuration to
FileSurfer. - ›Adds support for external agent runtime in AgentChat.
- ›Introduces Gitty, an experimental sample application that auto-replies to GitHub issues.
└──▷ BREAKING ON UPGRADE- !Team state now uses the agent name as the key instead of the agent ID, and the
team_idfield is removed from serialized state; states saved with the old format may not be compatible with the new format.
- ›Adds
- python-v0.4.8
AutoGen v0.4.8 adds an Ollama chat client, ThoughtEvent streaming, new termination conditions, and a metadata field for AgentChat messages.
└──▷ GET THIS VERSION$ git clone --branch python-v0.4.8 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.4.8
└──▷ USE ITRun inference against a local Ollama model instead of a cloud API — useful for air-gapped environments or cost control.from autogen_ext.models.ollama import OllamaChatCompletionClient from autogen_core.models import UserMessage ollama_client = OllamaChatCompletionClient(model="llama3") result = await ollama_client.create([UserMessage(content="Summarize this CVE.", source="user")]) print(result)
Get structured, schema-validated output from a local Ollama model — ideal for parsing threat intel or tool results into typed objects.from autogen_ext.models.ollama import OllamaChatCompletionClient from autogen_core.models import UserMessage from pydantic import BaseModel class ThreatActor(BaseModel): name: str country: str ollama_client = OllamaChatCompletionClient(model="llama3", response_format=ThreatActor) result = await ollama_client.create([UserMessage(content="Identify the threat actor in this report.", source="user")]) print(result)- ›New
OllamaChatCompletionClientenables local LLM inference via Ollama, with support for structured output and component-config loading. - ›New
thoughtfield inCreateResultsurfaces chain-of-thought text from tool calls;AssistantAgentemits it as aThoughtEventin the message stream (currently supported byOpenAIChatCompletionClient). - ›New
metadatafield on AgentChat message base types lets applications attach custom key/value content to messages. - ›New
TextMessageTerminationConditiontermination condition for halting single-agent teams based on text message content. - ›New
FunctionCallTerminationtermination condition for stopping a team when a specific function call is made.
+4 moreshow less
- ›Adds
ChromaDBVectorMemoryto the extensions package for vector-backed agent memory. - ›Adds native Anthropic model client support via extensions.
- ›
FileSurferandCodeExecAgentare now declarative (support component config). - ›Unhandled exceptions inside AgentChat agents (e.g.,
AssistantAgent) now propagate as fatal errors instead of silently stopping the team.
└──▷ BREAKING ON UPGRADE- !The
namefield is now required inFunctionExecutionResult; existing code constructingFunctionExecutionResultwithoutnamewill raise an error.
- ›New
- python-v0.4.7
AutoGen v0.4.7 adds strict tool mode, volume mounts for Docker executor, gRPC subscription APIs, and serializable CodeExecutors.
└──▷ GET THIS VERSION$ git clone --branch python-v0.4.7 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.4.7
└──▷ USE ITUse strict mode on a FunctionTool to ensure compatibility with structured output mode when the model requires both simultaneously.from autogen_core.tools import FunctionTool def lookup_weather(city: str) -> str: return f"Sunny in {city}" tool = FunctionTool(lookup_weather, name="lookup_weather", strict=True)- ›Adds
strictmode toBaseTool,ToolSchema, andFunctionTool, enabling tool calls to be used alongside structured output mode. - ›Adds
DockerCommandLineCodeExecutorsupport for additional volume mounts and exposed host ports. - ›Adds remove and get subscription APIs to
GrpcWorkerAgentRuntimefor Python. - ›Makes
CodeExecutorcomponents serializable, enabling persistence and transport of executor configuration.
└──▷ BREAKING ON UPGRADE- !
ModelInfo's required fields (vision,function_calling,json_output,family) are now enforced — model clients created without all required fields inmodel_infowill fail.
- ›Adds
- python-v0.4.6
AutoGen 0.4.6 adds MCP and HTTP built-in tools, Gemini auto-config, and MagenticOne text-only model support.
└──▷ GET THIS VERSION$ git clone --branch python-v0.4.6 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.4.6
└──▷ USE ITGive an agent access to the full MCP ecosystem (e.g., web fetch) in a few lines — no custom tool wrappers needed.from autogen_ext.tools.mcp import StdioServerParams, mcp_server_tools fetch_mcp_server = StdioServerParams(command="uvx", args=["mcp-server-fetch"]) tools = await mcp_server_tools(fetch_mcp_server) agent = AssistantAgent(name="fetcher", model_client=model_client, tools=tools, reflect_on_tool_use=True)
Expose any REST API to an agent declaratively — no wrapper function, just a schema and endpoint config.from autogen_ext.tools.http import HttpTool base64_tool = HttpTool( name="base64_decode", description="base64 decode a value", scheme="https", host="httpbin.org", port=443, path="/base64/{value}", method="GET", json_schema={"type": "object", "properties": {"value": {"type": "string"}}, "required": ["value"]}, ) assistant = AssistantAgent("base64_assistant", model_client=model, tools=[base64_tool])Use Gemini models without boilerplate — nomodel_infoorbase_urlrequired.from autogen_ext.models.openai import OpenAIChatCompletionClient model_client = OpenAIChatCompletionClient( model="gemini-1.5-flash-8b", # api_key="GEMINI_API_KEY", )- ›Adds
mcp_server_toolsandStdioServerParamsinautogen_ext.tools.mcpto connect agents to any Model Context Protocol (MCP) server (file system, Git, web fetch, etc.). - ›Adds
HttpToolinautogen_ext.tools.httpfor agents to call remote HTTP/REST API endpoints with a declarative JSON schema. - ›Enables Gemini models in
OpenAIChatCompletionClientwithout requiring manualmodel_infoorbase_urlarguments. - ›Adds text-only model support to MagenticOne (M1), allowing it to run without screenshot/vision capability.
- ›Allows the
m1CLI to read configuration from a YAML file.
+6 moreshow less
- ›Improves
SelectorGroupChatcompatibility with smaller models (e.g., LLaMA 13B) and hosted models that do not support thenamefield in Chat Completion messages. - ›Adds the Claude model family to
ModelFamily. - ›Adds the o3-mini model to the o3 family in
ModelFamily. - ›Adds a tool-failure indicator field to
FunctionExecutionResult. - ›Adds a Memory component base to
autogen-ext. - ›Introduces a new FastAPI sample demonstrating real-time agent chat with WebSocket human-in-the-loop integration.
- ›Adds
- python-v0.4.5
AutoGen 0.4.5 adds token streaming for agents/teams, R1 reasoning output, partial-function tools, and a new CodeExecutorAgent sources parameter.
└──▷ GET THIS VERSION$ git clone --branch python-v0.4.5 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout python-v0.4.5
└──▷ USE ITInspect chain-of-thought reasoning from a DeepSeek-R1 model to audit how conclusions are reached.from autogen_core.models import UserMessage, ModelFamily from autogen_ext.models.openai import OpenAIChatCompletionClient client = OpenAIChatCompletionClient( model="deepseek-r1:1.5b", api_key="placeholder", base_url="http://localhost:11434/v1", model_info={"function_calling": False, "json_output": False, "vision": False, "family": ModelFamily.R1}, ) result = await client.create(messages=[UserMessage(content="Is this log line indicative of a brute-force attack?", source="user")]) print("Reasoning:", result.thought) print("Answer:", result.content)Bind fixed parameters (e.g., a tenant or region) upfront so an agent only needs to supply the remaining arguments.from functools import partial from autogen_core.tools import FunctionTool def query_logs(environment: str, severity: str, keyword: str) -> str: return f"Querying {environment} logs for {severity} events matching '{keyword}'" prod_logs = partial(query_logs, "production", "ERROR") tool = FunctionTool(prod_logs, description="Query production ERROR logs by keyword.") print(tool.schema) # schema only exposes 'keyword'- ›Adds
model_client_stream=TrueonAssistantAgentand the newModelClientStreamingChunkEventmessage type to stream model tokens in real time throughrun_streamor Console. - ›Supports R1-style reasoning output via a new
CreateResult.thoughtfield, populated when using models in theModelFamily.R1family (e.g., DeepSeek-R1). - ›Enables
FunctionToolto wrapfunctools.partialfunctions, automatically excluding pre-bound parameters from the generated tool schema. - ›Adds an optional
sourcesparameter toCodeExecutorAgentto control which message sources it extracts code from. - ›Adds o3 to the built-in model info registry.
- ›Adds
- v0.4.4
AutoGen v0.4.4 adds serializable agent/team configs, Azure AI model client, rich CLI output, and zero-config in-memory LLM caching.
└──▷ GET THIS VERSION$ git clone --branch v0.4.4 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.4.4
└──▷ USE ITPersist a multi-agent team across sessions by serializing its config and state to disk, then reloading both later.config = group_chat.dump_component() with open("team_config.json", "w") as f: f.write(config.model_dump_json(indent=4)) state = await group_chat.save_state() with open("team_state.json", "w") as f: f.write(json.dumps(state, indent=4)) # Later, restore the team: with open("team_config.json", "r") as f: config = json.load(f) group_chat = Team.load_component(config) with open("team_state.json", "r") as f: state = json.load(f) await group_chat.load_state(state)Use GitHub-hosted Phi-4 via the new Azure AI client without switching to the OpenAI client.from autogen_ext.models.azure import AzureAIChatCompletionClient from azure.core.credentials import AzureKeyCredential client = AzureAIChatCompletionClient( model="Phi-4", endpoint="https://models.inference.ai.azure.com", credential=AzureKeyCredential(os.environ["GITHUB_TOKEN"]), model_info={"json_output": False, "function_calling": False, "vision": False, "family": "unknown"}, ) result = await client.create([UserMessage(content="Summarize this CVE.", source="user")])Wrap any model client with zero-config in-memory caching to avoid redundant LLM calls during repeated queries.from autogen_ext.models.cache import ChatCompletionCache from autogen_ext.models.openai import OpenAIChatCompletionClient client = OpenAIChatCompletionClient(model="gpt-4o") cached_client = ChatCompletionCache(client) result = await cached_client.create([UserMessage(content="What is the capital of France?", source="user")]) print(result.content, result.cached) # False on first call, True on subsequent identical calls
- ›Adds dump_component() and load_component() to serialize/deserialize agent and team configurations to/from JSON, enabling persistent sessions across server-client interactions.
- ›Introduces
AzureAIChatCompletionClientinautogen_ext.models.azurefor Azure- and GitHub-hosted models including Phi-4, Mistral, and Cohere. - ›Adds
--richflag to them1CLI for pretty-printed, colorized console output via the Rich library. - ›Adds a default in-memory store to
ChatCompletionCache, enabling model call caching without configuring an external cache service. - ›Adds
descriptionfield support in dump_component() output for richer component metadata.
- v0.4.3
AutoGen v0.4.3 adds model response caching, GraphRAG tools, Semantic Kernel adapters, Jupyter execution, and agent memory.
└──▷ GET THIS VERSION$ git clone --branch v0.4.3 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.4.3
└──▷ USE ITCache OpenAI completions to disk so repeated identical prompts are served instantly without additional API calls.from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.models.cache import ChatCompletionCache, CHAT_CACHE_VALUE_TYPE from autogen_ext.cache_store.diskcache import DiskCacheStore from autogen_core.models import UserMessage from diskcache import Cache import asyncio async def main(): openai_client = OpenAIChatCompletionClient(model="gpt-4o") cache_store = DiskCacheStore[CHAT_CACHE_VALUE_TYPE](Cache("/tmp/autogen-cache")) cache_client = ChatCompletionCache(openai_client, cache_store) response = await cache_client.create([UserMessage(content="Summarise zero-trust networking.", source="user")]) print(response) # live response response = await cache_client.create([UserMessage(content="Summarise zero-trust networking.", source="user")]) print(response) # served from disk cache asyncio.run(main())Give an agent global GraphRAG search capability to answer broad, dataset-wide questions from an indexed knowledge graph.from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.tools.graphrag import GlobalSearchTool from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.ui import Console import asyncio async def main(): global_tool = GlobalSearchTool.from_settings(settings_path="./settings.yaml") agent = AssistantAgent( name="search_assistant", tools=[global_tool], model_client=OpenAIChatCompletionClient(model="gpt-4o-mini"), system_message="Use global_search for broad questions about the dataset.", ) await Console(agent.run_stream(task="What are the main themes across all community reports?")) asyncio.run(main())- ›Adds
ChatCompletionCacheto wrap anyChatCompletionClientand transparently cache model completions, withDiskCacheStoreandRedisStorebackends via a newCacheStoreinterface. - ›Adds
LocalSearchToolandGlobalSearchToolfor GraphRAG integration, enabling agents to call local and global graph-based retrieval as first-class tools. - ›Adds
SKChatCompletionAdapterto adapt any Semantic Kernel AI Connector into an AutoGenChatCompletionClient. - ›Adds
KernelFunctionFromTooladapter to expose AutoGen tools as Kernel functions inside a Semantic Kernel workflow. - ›Adds
JupyterCodeExecutorfor local Jupyter-based code execution, restoring functionality from the 0.2 lineage.
+3 moreshow less
- ›Introduces a core Memory interface for agent memory and RAG;
AssistantAgentnow accepts amemoryparameter to enrich context from a memory store. - ›Expands declarative config support to termination conditions and base chat agents, moving toward full team-of-agents configuration from a single file.
- ›Adds
sourcesfield toTextMentionTerminationfor filtering by message source.
- ›Adds
- v0.4.1
AutoGen v0.4.1 enables subclassing BaseComponent for custom serializable component configs.
└──▷ GET THIS VERSION$ git clone --branch v0.4.1 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.4.1
- ›Supports subclassing
BaseComponentto create custom component configs with serialization support.
└──▷ BREAKING ON UPGRADE- !Console output usage statistics are now disabled by default.
- ›Supports subclassing
- v0.4.0
AutoGen v0.4.0 stable: agent activate/deactivate, o1-2024-12-17 model support, and new m1 CLI package.
└──▷ GET THIS VERSION$ git clone --branch v0.4.0 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.4.0
- ›Adds
m1CLI package for interacting with AutoGen agents from the command line. - ›Supports activating and deactivating individual agents at runtime.
- ›Adds support for the
o1-2024-12-17model inautogen-ext[openai].
└──▷ BREAKING ON UPGRADE- !The Azure auth provider has been moved to a separate module; existing imports will break.
- !The intervention handler signature now requires a
message_contextargument; existing intervention handler implementations will break. - !Deprecated items removed for the v0.4.0 release; any code relying on previously deprecated APIs will break.
- ›Adds
- v0.2.40
AutoGen v0.2.40 adds a warning when no eligible speaker is found in group chats.
└──▷ GET THIS VERSION$ git clone --branch v0.2.40 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.40
- ›Adds a warning message when no eligible speaker is available in a group chat (
NoEligibleSpeaker), surfacing silent failures that previously went unnoticed.
- ›Adds a warning message when no eligible speaker is available in a group chat (
- v0.2.37
AutoGen v0.2.37 adds Kubernetes code execution, Gemini function calling, and AutoBuild function calling support.
└──▷ GET THIS VERSION$ git clone --branch v0.2.37 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.37
- ›Adds a Kubernetes code executor, enabling sandboxed code execution inside K8s pods.
- ›Adds function calling support for Gemini models (Part 2), expanding tool-use capabilities to Google's Gemini backend.
- ›Enables function calling in AutoBuild, allowing automatically constructed agent teams to invoke tools.
- ›Adds LangChain integration example, demonstrating interoperability between LangChain and AutoGen agents.
- ›Adds Couchbase as a supported vector database backend with an example notebook.
+1 moreshow less
- ›Adds Zep memory integration with documentation and notebook.
└──▷ BREAKING ON UPGRADE- !The Text Cache default is changed to None (previously a non-None default); setups relying on the old default cache behavior will no longer cache by default after upgrading.
- v0.2.36
AutoGen v0.2.36 adds Mem0 long-term memory, Amazon Bedrock, Cerebras, Ollama (with tool calling), Couchbase VectorDB, and Portkey integrations.
└──▷ GET THIS VERSION$ git clone --branch v0.2.36 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.36
└──▷ USE ITApply a MessageTransform to the GroupChat speaker-selection nested chat to control context sent to the selector LLM.from autogen.agentchat.contrib.capabilities.transform_messages import TransformMessages from autogen.agentchat.contrib.capabilities.transforms import MessageHistoryLimiter from autogen import GroupChat, GroupChatManager transforms = TransformMessages(transforms=[MessageHistoryLimiter(max_messages=10)]) groupchat = GroupChat( agents=[agent1, agent2, agent3], messages=[], speaker_selection_method="auto", select_speaker_transform_messages=transforms, ) manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)- ›Adds Mem0 integration for long-term memory support in AI agents.
- ›Adds Amazon Bedrock client for model access via AWS.
- ›Adds Cerebras integration as a new LLM provider.
- ›Adds Ollama client with tool-calling support.
- ›Adds Couchbase VectorDB support for retrieval-augmented generation workflows.
+11 moreshow less
- ›Adds Portkey integration for LLM observability and routing.
- ›Enables MessageTransforms on GroupChat's Select Speaker nested chat when using
speaker_selection_method='auto'. - ›Adds a MessageTransform that injects an agent's name into message content.
- ›Adds GraphRAG interfaces for graph-based retrieval-augmented generation.
- ›Adds Human Input Mode support in AutoGen Studio.
- ›Updates WebSurfer with Selenium, Playwright, and support for many additional file types.
- ›Adds async user hook support.
- ›Adds kwargs passthrough to the Docker container running the Jupyter Server.
- ›Adds session cookie forwarding from HTTP session to the WebSocket used by JupyterCodeExecutor.
- ›Adds API call throttling capability.
- ›AutoGen is now published on PyPI as
autogen-agentchatstarting with this version.
- v0.2.35
AutoGen v0.2.35 adds Mistral v1.0.1 support, .NET Anthropic cache control, and decouples RetrieveChat from RetrieveAssistantAgent.
└──▷ GET THIS VERSION$ git clone --branch v0.2.35 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.35
- ›Updates Mistral client class to support the new Mistral v1.0.1 package.
- ›Adds cache control support to the .NET Anthropic client.
- ›Removes dependency on
RetrieveAssistantAgentforRetrieveChat, enabling more flexible retrieval-augmented chat setups.
└──▷ BREAKING ON UPGRADE- !
TransformChatHistoryandCompressibleAgentare removed; any code referencing these classes will break on upgrade.
- v0.2.34
AutoGen v0.2.34 adds async nested chats, a global silent param, Azure AI Inference integration, and last_speaker tracking in GroupChat.
└──▷ GET THIS VERSION$ git clone --branch v0.2.34 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.34
└──▷ USE ITSilence all agent output globally when running an automated pipeline where console chatter is unwanted.agent = ConversableAgent( name="assistant", silent=True, llm_config={"config_list": config_list}, )Run nested chats asynchronously to avoid blocking the event loop in async applications.result = await initiator.a_initiate_chats(chat_queue)
- ›Adds
silentglobal parameter toConversableAgentto suppress output across all agents from a single setting. - ›Supports async nested chats, enabling non-blocking multi-agent conversation flows.
- ›Adds
last_speakerattribute toGroupChatManagerfor tracking which agent spoke last in a group chat. - ›Introduces
AutoGen.AzureAIInferencepackage (.NET) for Azure AI Inference model support. - ›Adds
DotnetInteractiveKernelBuilderto theAutoGen.DotnetInteractivepackage (.NET).
+4 moreshow less
- ›Adds
DotnetInteractiveStdioConnectortoAutoGen.DotnetInteractive(.NET) for stdio-based kernel connectivity. - ›Adds a runtime factory (
[CAP]) for more flexible agent runtime instantiation. - ›Adds support for
gpt-4o-2024-08-06model in the model catalogue. - ›Enhances tool calling support for Cohere models.
- ›Adds
- v0.2.33
AutoGen v0.2.33 adds Qdrant and MongoDB Atlas vector stores, Gemini via VertexAI, and Anthropic Bedrock support for RAG and LLM backends.
└──▷ GET THIS VERSION$ git clone --branch v0.2.33 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.33
- ›Adds Qdrant as a supported VectorDB backend for RetrieveChat RAG pipelines.
- ›Adds MongoDB Atlas vector search as a VectorDB backend for AutoGen RAG.
- ›Adds Gemini support via Google VertexAI as an LLM provider.
- ›Adds Anthropic Bedrock as a supported LLM backend.
- ›Adds
gpt-4o-minito the built-in model list.
+1 moreshow less
- ›Updates human-input-mode prompt to include the responding agent's name, improving multi-agent conversation clarity.
- v0.2.32
AutoGen v0.2.32 adds Groq and Cohere client support, expanding non-OpenAI model integrations.
└──▷ GET THIS VERSION$ git clone --branch v0.2.32 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.32
- ›Adds Groq client support, enabling AutoGen agents to use Groq-hosted models as a drop-in LLM backend.
- ›Adds Cohere client support, enabling AutoGen agents to use Cohere models as a drop-in LLM backend.
- ›Adds tool/function-call support for
AnthropicClientandAnthropicAgentin the .NET SDK.
- v0.2.30
AutoGen v0.2.30 adds native Anthropic, Mistral, and Together.AI LLM clients with a uniform multi-provider interface.
└──▷ GET THIS VERSION$ git clone --branch v0.2.30 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.30
- ›Adds
AnthropicClientwith support forclaude-3-5-sonnet-20240620, enabling Anthropic models to participate alongside OpenAI GPT models in group chats. - ›Adds
MistralClientfor native Mistral AI model support without OpenAI compatibility shims. - ›Adds
Together.AI Clientfor access to the Together.AI model catalog. - ›Adds a uniform interface for calling different LLMs, normalizing the integration surface across OpenAI and non-OpenAI providers.
- ›Adds client class utilities and a function to indicate whether to hide tools per client (
client_utils), supporting provider-specific tool-visibility control.
+1 moreshow less
- ›Adds async
a_initiate_chatsupdate enabling asynchronous multi-chat orchestration.
- ›Adds
- v0.2.29
AutoGen v0.2.29 adds LlamaIndex agent integration, AgentOps logging, Gemini improvements, and AAD auth for Azure clients.
└──▷ GET THIS VERSION$ git clone --branch v0.2.29 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.29
- ›Adds LlamaIndex agent integration, enabling LlamaIndex agents to participate in AutoGen group chats.
- ›Adds AgentOps runtime logging integration for observability across AutoGen agent sessions.
- ›Adds support for passing custom pricing in
config_list, allowing cost tracking for non-standard or self-hosted models. - ›Adds tag-based model filtering in
config_listas an alternative to filtering by model name. - ›Adds AAD (Azure Active Directory) auth support to the Azure client.
+4 moreshow less
- ›Adds Google Gemini support to
AutoGen.Net(v0.0.15), including Gemini samples on theAutoGen.Netwebsite. - ›Adds image input support for Anthropic models in
AutoGen.Net. - ›Adds AOT (Ahead-of-Time) compatibility check for
AutoGen.NetCore. - ›Allows a function to remove termination strings in group chat, giving finer control over conversation endings.
- v0.2.28
AutoGen v0.2.28 adds resumable group chat, LLMLingua text compression, silent mode, and Anthropic/Ollama/.NET integrations.
└──▷ GET THIS VERSION$ git clone --branch v0.2.28 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.28
└──▷ USE ITBind a host directory into a Docker code executor so generated files persist on the host after execution.from autogen.coding import DockerCommandLineExecutor executor = DockerCommandLineExecutor(bind_dir="/host/workspace")
- ›Adds
bind_dirargument toDockerCommandLineExecutorto bind a host directory into the container at execution time. - ›Adds ability to use a separate Python environment in the local code executor (
LocalCommandLineCodeExecutor). - ›Adds
silentoption to nested chats and group chat to suppress message output. - ›Adds ability to ignore the select-speaker prompt for
GroupChat, giving finer control over speaker-selection behaviour. - ›Adds support for ignoring specific messages when applying
TransformMessagestransformations.
+18 moreshow less
- ›Adds
FileLoggeras a custom runtime logger, enabling structured event logging to a file. - ›Adds a warning when a duplicate function is registered with an agent.
- ›Supports resuming a
GroupChatfrom a previous state — enabling interruptible, long-running multi-agent conversations. - ›Adds
roleparameter to reflection-with-LLM, allowing custom role assignment during reflective reasoning. - ›Adds GPT-4o token-count support to token-count utilities.
- ›Enables function calling with
GPTAssistantAgent, including full guide and notebook example. - ›Adds experimental
AgentEvalintegration for agent evaluation workflows. - ›Adds PGVector support for custom connection objects in the RAG retrieval backend.
- ›Introduces
AnthropicClientandAnthropicClientAgentfor Anthropic model support (Python). - ›Adds Gemini safety settings and generation config parameters to the Gemini client.
- ›Adds Ollama integration for the .NET AutoGen library (
AutoGen.Ollama). - ›Introduces
ChatCompletionAgentto theAutoGen.SemanticKernel.NET package. - ›Adds
KernelPluginMiddlewaretoAutoGen.SemanticKernel.NET package. - ›Introduces
ToolCallAggregateMessagetype in the .NET library. - ›Rewrites AutoGen Studio database layer to use SQLModel ORM.
- ›Improves AutoGen Agents support in the CAP (Connected Agents Platform) integration.
- ›Adds support for raw-data in
ImageMessagein the .NET library. - ›Adds third-party OpenAI API endpoint connection support with example in the .NET library.
- ›Adds
- v0.2.27
AutoGen v0.2.27 adds .NET support, OpenAI Assistant v2, message history init, event logging, HTML/CSS/JS code execution, and Azure Cosmos DB caching.
└──▷ GET THIS VERSION$ git clone --branch v0.2.27 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.27
- ›Adds message history initialization to
ConversableAgent, allowing agents to be seeded with prior conversation context. - ›Adds an event logging API with expanded tracing support via the new event logging feature.
- ›Adds HTML, CSS, and JavaScript language support to
LocalCommandLineCodeExecutor, enabling front-end code execution. - ›Adds a new caching backend using Azure Cosmos DB.
- ›Supports the OpenAI Assistant v2 API.
+4 moreshow less
- ›Introduces
AutoGen.NET(AutoGen for .NET), a new language runtime for building agents in C#. - ›Re-queries the speaker name when multiple speaker names are returned during Group Chat speaker selection, improving robustness.
- ›Makes the port number optional in JupyterConnectionInfo().
- ›Adds
min_tokenssupport to the token limiter.
- ›Adds message history initialization to
- v0.2.26
AutoGen v0.2.26 adds PGVector support for RAG, selective carryover in
initiate_chats, andsk-proj-OpenAI API key format.└──▷ GET THIS VERSION$ git clone --branch v0.2.26 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.26
- ›Adds
vector_dbas a settable parameter in retrieval-augmented chat contrib, enabling customizable vector database backends including PGVector. - ›Enhances
initiate_chatsto support selective carryover of context between chats. - ›Supports OpenAI
sk-proj-API key format. - ›New integration example with promptflow in
samples/apps/promptflow-autogen.
- ›Adds
- v0.2.25
AutoGen v0.2.25 adds Gemini model support and custom Bing Search base URL for the browser agent.
└──▷ GET THIS VERSION$ git clone --branch v0.2.25 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.25
- ›Adds support for a custom base URL for Bing Search in the browser agent, enabling use of proxy or regional endpoints.
- ›Adds Google Gemini as a supported model provider for AutoGen agents.
- v0.2.24
AutoGen v0.2.24 adds Anthropic Claude function calling, a customizable vectordb module, and CosmosDB support.
└──▷ GET THIS VERSION$ git clone --branch v0.2.24 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.24
└──▷ TRY ITInstall AutoGen with CosmosDB support to use it as a vector store for RAG.$ pip install pyautogen[cosmosdb]- ›Adds
extra_requireforcosmosdbinsetup.py, enabling optional CosmosDB installation as a vector store backend. - ›Adds a
vectordbmodule with a customizable vector database interface for RAG pipelines. - ›Adds function call support for Anthropic Claude via the latest Anthropic API.
- ›Adds
llm_configsupport inAgentOptimizer, allowing LLM configuration to be passed directly to the optimizer. - ›Adds
'py'as a recognized language tag inConversableAgentcode execution, enabling Python code blocks to be detected and run.
+2 moreshow less
- ›Adds source attribution to the default RAG prompt answer, surfacing where retrieved content originated.
- ›Standardizes printing of
MessageTransformsfor more consistent and readable usage and cost output.
- ›Adds
- v0.2.22
AutoGen v0.2.22 adds TransformMessages capability, Anthropic Claude support, GroupChat speaker customization, and an in-memory cache class.
└──▷ GET THIS VERSION$ git clone --branch v0.2.22 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.22
└──▷ USE ITCap the number of tokens passed to the retriever in RetrieveUserProxyAgent to control cost and latency.retrieve_user_proxy = RetrieveUserProxyAgent( name="retrieve_proxy", retrieve_config={ "docs_path": "./docs", "context_max_tokens": 2000, } )- ›Adds
TransformMessagescapability as a generalized replacement for previous long-context handling — prior long-context capabilities are now deprecated. - ›Adds support for Anthropic Claude models, including system message support in Claude-based workflows.
- ›Adds an in-memory cache class (Add in memory cache class) for LLM response caching without disk I/O.
- ›Adds
context_max_tokenssupport inRetrieveUserProxyAgentviaretrieve_config, giving fine-grained control over retrieval context size. - ›Adds ability to specify the
rolefield for select-speaker messages in GroupChat, enabling Mistral and other non-OpenAI models to function correctly in group chat speaker selection.
+5 moreshow less
- ›Adds customization of the speaker-select message and prompt in
GroupChat. - ›Expands speaker name matching during speaker selection in
GroupChatto handle a broader range of model response formats. - ›Adds string-based UDF (user-defined function) support.
- ›Adds an HTML parser for RAG pipelines.
- ›Adds AutoDefense research integration: a multi-agent defense mechanism against LLM jailbreak attacks using AutoGen.
- ›Adds
- v0.2.21
AutoGen v0.2.21 adds AgentOptimizer, Vision Capability, IOStream/WebSocket support, Mistral native tool calls, and user-defined functions in the local CLI executor.
└──▷ GET THIS VERSION$ git clone --branch v0.2.21 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.21
- ›Adds
AgentOptimizer, a research-backed agent that iteratively improves tool sets used by agents during multi-turn conversations. - ›Adds user-defined functions support to the local CLI executor, bringing 'skills'
-styleextensibility (previously only in AutoGen Studio) to the code execution API. - ›Adds
VisionCapabilityforConversableAgent, enabling agents to process and reason about images via GPT-4V-style multimodal inputs. - ›Introduces the IOStream protocol with WebSocket support, allowing agent conversations to stream I/O over WebSocket connections.
- ›Adds native tool call support for the Mistral AI API custom model, enabling function/tool calling without OpenAI compatibility shims.
+2 moreshow less
- ›Adds
WebArenabenchmarking tool undersamples/tools/webarenafor running and evaluating agents against the WebArena benchmark. - ›Adds ability to retrieve the list of actors from the directory service via the CAP (actor platform) layer.
- ›Adds
- v0.2.20
AutoGen v0.2.20 adds image generation, Azure AI Search support, streaming replies, and a composable actor platform.
└──▷ GET THIS VERSION$ git clone --branch v0.2.20 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.20
└──▷ USE ITEnable Azure AI Search in AutoGen Studio by addingextra_bodyto your LLM config.{ "model": "gpt-4", "api_type": "azure", "api_key": "<your-key>", "base_url": "<your-azure-endpoint>", "extra_body": { "dataSources": [ { "type": "AzureCognitiveSearch", "parameters": { "endpoint": "<search-endpoint>", "key": "<search-key>", "indexName": "<index-name>" } } ] } }- ›Adds
extra_bodyfield to LLMConfig dataclass to enable Azure AI Search support in AutoGen Studio. - ›New
ImageGenerationCapabilitycontrib feature (2.0) lets agents generate images as part of conversations. - ›New Composable Actor Platform (CAP) sample app enables distributed, actor-based AutoGen agent deployments.
- ›AutoGen Studio gains upload/download of Skills and Workflows, streaming agent replies, and agent message summarization.
- ›Nested chat now supports different senders, enabling more flexible multi-agent conversation topologies.
+1 moreshow less
- ›Separates OpenAI Assistants API config items from the general
llm_configinGPTAssistantAgent.
- ›Adds
- v0.2.18
AutoGen v0.2.18 adds callable messages, a fine-tuning tool for conversable agents, and a Docker-based command-line code executor.
└──▷ GET THIS VERSION$ git clone --branch v0.2.18 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.18
- ›Adds
LocalCommandLineCodeExecutorsupport for accepting apathobject forwork_dir, in addition to strings. - ›Implements a Docker-based
CommandLineCodeExecutorfor sandboxed, containerized code execution. - ›Supports callable messages, allowing user-defined message functions to control what agents send to one another.
- ›Adds a fine-tuning tool (
samples/tools/finetuning) for training custom models on conversable agents.
└──▷ BREAKING ON UPGRADE- !
CompressibleAgentnow requires amodelfield inllm_config; configurations omitting it will break.
- ›Adds
- v0.2.17
AutoGen v0.2.17 adds customizable speaker selection for group chats and tightens nested chat registration.
└──▷ GET THIS VERSION$ git clone --branch v0.2.17 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.17
- ›Allows users to pass a customized speaker selection method into group chat, enabling fully programmable agent turn-ordering beyond the built-in strategies.
- ›Removes the default trigger value for
register_nested_chats, requiring callers to supply an explicit trigger and making nested chat configuration unambiguous. - ›Raises errors when incompatible arguments are used together with a code executor, surfacing misconfiguration at startup instead of silently misbehaving.
- ›Adjusts message processing order to ensure proper combination of agent capabilities across multi-agent pipelines.
└──▷ BREAKING ON UPGRADE- !The class
LocalCommandlineCodeExecutorhas been renamed toLocalCommandLineCodeExecutor; any code importing or referencing the old name will break. - !
register_nested_chatsno longer has a default trigger value; callers that relied on the default must now pass an explicit trigger argument or the call will fail.
- v0.2.16
AutoGen v0.2.16 adds
register_nested_chats, a Docker-based Jupyter executor, and expanded hook and function-removal APIs.└──▷ GET THIS VERSION$ git clone --branch v0.2.16 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.16
- ›Adds
register_nested_chatsmethod to simplify composing nested chats, letting agents use other multi-agent conversations as inner monologue before replying. - ›Adds support for removing function calls in
ConversableAgent. - ›Hook methods updated to accept a
senderargument, enabling per-sender logic in hook callbacks. - ›Introduces a Docker-based Jupyter executor for sandboxed, container-isolated code execution.
- ›FSM-based group chat with user-specified agent transitions now documented via an official blog post.
- ›Adds
- v0.2.15
AutoGen v0.2.15 adds async multi-chat, group chat introductions, per-chat max-turn limits, and a message-processing hook.
└──▷ GET THIS VERSION$ git clone --branch v0.2.15 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.15
└──▷ USE ITCap a conversation at a fixed number of turns to prevent runaway agent loops in CI or cost-sensitive pipelines.user_proxy.initiate_chat(assistant, message="Summarise this doc", max_turns=5)
- ›Adds
max_turnsparameter toinitiate_chatandinitiate_chatsto limit the maximum number of turns in a conversation. - ›Adds async version of multiple sequential chats, enabling non-blocking orchestration of dependent multi-agent pipelines.
- ›Adds group chat introductions: participants can now send introductions at the start of a group chat so agents know each other's roles.
- ›Adds message processing hook to
ConversableAgentallowing messages to be transformed before sending — enabling custom frontend display and other pre-send logic. - ›Adds
jupyter-kernel-gatewaysupport for the IPython code executor.
+3 moreshow less
- ›Allows None for the
senderfield inConversableAgent.generate_reply, broadening reply generation to sender-agnostic contexts. - ›Releases AutoGenBench v0.0.2.
- ›Adds
azure_deploymentparameter handling inGPTAssistantAgentto maintain compatibility withOpenAIWrapperand Azure OpenAI.
- ›Adds
- v0.2.14
AutoGen v0.2.14 adds callable summary methods, runtime logging, Azure assistant API support, and GroupChat agent lookup.
└──▷ GET THIS VERSION$ git clone --branch v0.2.14 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.14
└──▷ USE ITPass a custom callable assummary_methodininitiate_chatsto control how each chat's result is summarised before the next one starts.import autogen def my_summary(recipient, messages, sender, config): return messages[-1]['content'][:200] autogen.initiate_chats([ {"sender": agent_a, "recipient": agent_b, "message": "Start task", "summary_method": my_summary}, {"sender": agent_b, "recipient": agent_c, "message": "Continue", "summary_method": my_summary}, ])- ›Adds
autogen.initiate_chatstop-level function to start sequential chats initiated by different agents. - ›Adds callable
summary_methodsupport toinitiate_chats, allowing custom summarization logic to be passed as a Python callable. - ›Adds
nested_agentsproperty andagent_by_namelookup toGroupChat, enabling retrieval of nested agents and name-based agent resolution. - ›Adds runtime logging capability to
ConversableAgent-basedconversations for recording and auditing agent interactions. - ›Adds Azure assistant API support to
GPTAssistantAgent.
+2 moreshow less
- ›Adds
is_termination_msgvalidation toGPTAssistantAgent, respecting termination conditions and human input mode. - ›Adds OpenAI API key format validation and
llm_configvalidation onConversableAgentconstruction.
- ›Adds
- v0.2.13
AutoGen v0.2.13 adds a long-context handling agent capability and a new extensible code execution interface with stateful executors.
└──▷ GET THIS VERSION$ git clone --branch v0.2.13 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.13
- ›Adds a new extensible agent capability for long context handling, enabling agents to operate over inputs that exceed standard context windows.
- ›Introduces a new extensible code execution interface with support for stateful executors, allowing code state to persist across execution steps.
- v0.2.12
AutoGen v0.2.12 adds SocietyOfMind function-calling support, exposes
filter_config, and introduces multiple sequential chats and a Discord bot.└──▷ GET THIS VERSION$ git clone --branch v0.2.12 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.12
└──▷ USE ITFilter a list of LLM configs by model or other criteria before passing them to an agent.from autogen import filter_config config_list = [ {"model": "gpt-4", "api_key": "..."}, {"model": "gpt-3.5-turbo", "api_key": "..."} ] filtered = filter_config(config_list, {"model": ["gpt-4"]})- ›Exposes
filter_configfunction as a public API for filtering LLM config lists. - ›Adds
max_tokensfield to AutoGen Studio's LLMConfig, enabling token-limit control in Studio-configured models. - ›Enables
SocietyOfMindagents to participate in function calling and tool use workflows. - ›Introduces multiple sequential chats interface, allowing a sequence of chats to be programmed with results carried forward between them.
- ›Introduces AutoAnny, a Discord bot built with AutoGen demonstrating real-time agent interactions on Discord.
- ›Exposes
- v0.2.11
AutoGen v0.2.11 adds FSM-based group chat, sequential multi-chat chaining, and AutoGen Studio workflow export and skill editing.
└──▷ GET THIS VERSION$ git clone --branch v0.2.11 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.11
- ›Adds
initiate_chatsinterface onConversableAgentfor programming a sequence of dependent chats that carry previous chat results forward. - ›Adds FSM (finite state machine) based group chat via graph group chat support, enabling fine-grained control of speaker order transitions in group chat.
- ›AutoGen Studio gains workflow export, skill editing, and CSV support.
- ›Enables timeout for code execution on Windows using
ThreadPoolExecutor. - ›Every agent in a group chat now receives the termination message, not just the initiating agent.
└──▷ BREAKING ON UPGRADE- !Default code execution is now disabled on
society_of_mindandweb_surferagents.
- ›Adds
- v0.2.10
AutoGen v0.2.10 adds a Custom Model Client API, SocietyOfMindAgent, and tool-overwrite support for GPTAssistantAgent.
└──▷ GET THIS VERSION$ git clone --branch v0.2.10 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.10
└──▷ USE ITWrap a custom inference backend so AutoGen agents can call it like any built-in model client.from autogen import ConversableAgent class MyCustomClient: def create(self, params): # call your own model endpoint here ... def message_retrieval(self, response): ... def cost(self, response): ... @staticmethod def get_usage(response): ... agent = ConversableAgent( name='my_agent', llm_config={'model': 'my-model', 'model_client_cls': 'MyCustomClient'}, ) agent.register_model_client(model_client_cls=MyCustomClient)Compose a more capable single agent from a multi-agent GroupChat using SocietyOfMindAgent.from autogen.agentchat.contrib.society_of_mind_agent import SocietyOfMindAgent from autogen import GroupChat, GroupChatManager, AssistantAgent, UserProxyAgent inner_agents = [AssistantAgent('a1', llm_config=llm_config), AssistantAgent('a2', llm_config=llm_config)] groupchat = GroupChat(agents=inner_agents, messages=[], max_round=6) manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config) society_agent = SocietyOfMindAgent('society', chat_manager=manager, llm_config=llm_config) user = UserProxyAgent('user', human_input_mode='NEVER') user.initiate_chat(society_agent, message='Solve this step by step: ...')- ›Adds
GPTAssistantAgentoverwrite-tools functionality, letting callers replace the agent's registered tools at runtime. - ›Adds Custom Model Client support, allowing developers to plug in arbitrary inference backends by implementing a defined client interface.
- ›Adds
SocietyOfMindAgent, a new agent class that exposes a single-agent interface while running a full GroupChat as an internal monologue. - ›Expands
token_count_utilswith support for new models.
└──▷ BREAKING ON UPGRADE- !The default value of
code_execution_configinConversableAgentis changed from None to False; any code that relied on the old None default to control code execution will behave differently after upgrade.
- ›Adds
- v0.2.9
AutoGen v0.2.9 adds GroupChat to AutoGen Studio, launches AutoGenBench, and enables agent-driven history cleaning in group chat.
└──▷ GET THIS VERSION$ git clone --branch v0.2.9 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.9
- ›Adds GroupChat support to the AutoGen Studio UI, enabling multi-agent group chat workflows without writing code.
- ›Introduces AutoGenBench, a new benchmarking tool for measuring and evaluating AutoGen agent performance.
- ›Adds (experimental) manual history cleaning in group chat, allowing agents (via user proxy) to send history cleaning commands mid-session.
- ›Adds a new notebook example for a SQL agent operating in the Spider environment.
- v0.2.8
AutoGen v0.2.8 adds Redis caching, a web surfer agent, and human-input
initiate_chatwith no message required.└──▷ GET THIS VERSION$ git clone --branch v0.2.8 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.8
└──▷ USE ITKick off a multi-agent conversation that prompts a human for the opening message instead of hard-coding one.human_proxy.initiate_chat(assistant)
- ›Adds Redis cache support (alongside existing diskcache) for agent chat and LLM client inference via
initiate_chatand client-level caching APIs. - ›Allows
initiate_chatto be called without passing a message, enabling the agent conversation to begin with human input instead. - ›Adds a new web surfer agent capable of searching and browsing the web autonomously.
- ›Adds a dev container for AutoGen Studio to streamline development environment setup.
└──▷ BREAKING ON UPGRADE- !
use_dockernow defaults to True; setups that previously relied on the False default will begin attempting to run code in Docker containers. - !
last_n_messagesnow defaults to'auto'; setups that relied on the previous numeric default may see different conversation-context truncation behavior.
- ›Adds Redis cache support (alongside existing diskcache) for agent chat and LLM client inference via
- v0.2.7
AutoGen v0.2.7 adds Python 3.12 support, tag-based LLM config filtering, agent usage summaries, and AzureOpenAI endpoint compatibility.
└──▷ GET THIS VERSION$ git clone --branch v0.2.7 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.7
- ›Adds tag support to
OAI_CONFIG_LISTentries, enablingfilter_funcor config selection to filter LLM configurations by tag. - ›Switches to the
AzureOpenAIclient automatically whenapi_type == 'azure'is set in the config, replacing the legacy Azure path. - ›Adds usage summary tracking for agents, surfacing token and call statistics per agent.
- ›Supports function call style API in the function decorator, enabling compatibility with Azure OpenAI and Gemini function-calling conventions.
- ›Adds Python 3.12 support.
+1 moreshow less
- ›Enables running sync reply functions inside async chats, broadening mixed sync/async agent composition.
└──▷ BREAKING ON UPGRADE- !In the next release (not this one), the default value of
use_dockerincode_execution_configwill change to True; set it to False or None explicitly now to avoid docker being enabled automatically on upgrade.
- ›Adds tag support to
- v0.2.6
AutoGen v0.2.6 adds streaming tool call support.
└──▷ GET THIS VERSION$ git clone --branch v0.2.6 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.6
- ›Adds support for streaming tool calls, enabling real-time output as tool invocations execute.
- v0.2.5
AutoGen v0.2.5 adds streamed function call support and makes
contrib/capabilitydirectly importable.└──▷ GET THIS VERSION$ git clone --branch v0.2.5 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.5
- ›Makes
contrib/capabilityimportable as a package by adding__init__.py, enabling direct imports fromautogen.agentchat.contrib.capability. - ›Adds support for streamed function calls, allowing agents to handle function-call responses delivered via streaming APIs.
- ›Makes
- v0.2.4
AutoGen v0.2.4 adds teachability for any agent, OpenAI tool-call support, and AutoBuild agent-library construction.
└──▷ GET THIS VERSION$ git clone --branch v0.2.4 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.4
- ›Adds OpenAI tool-call support to conversable agents, enabling agents to invoke tool calls returned by the API.
- ›Introduces a generic extensibility mechanism that lets any conversable agent become teachable — not just built-in agent types — as demonstrated by the new
GPTAssistantAgentteachability example. - ›Extends AutoBuild to support building agents from an agent library and auto-generating agent descriptions for group chat.
└──▷ BREAKING ON UPGRADE- !GPT-4 is no longer the default model; callers that relied on the implicit default will now receive an error — the model must be set explicitly whenever an LLM is used.
- v0.2.3
AutoGen v0.2.3 adds a function-calling decorator, AgentOptimizer, and renames AutoGen Assistant to AutoGen Studio.
└──▷ GET THIS VERSION$ git clone --branch v0.2.3 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.3
- ›Adds
allow_repeat_speakerparameter support for a list of agents in group chat, enabling fine-grained control over which agents may repeat turns. - ›Adds
AgentOptimizer, a new class providing an agentic approach to iteratively train and improve LLM agent function sets. - ›Adds a decorator for function calling, making it easier to define and register callable functions for agents.
- ›Improves
config_list_from_jsonutility for loading model configuration lists, with an explicit error thrown whenOAI_CONFIG_LISTis missing. - ›Renames the AutoGen Assistant sample app to AutoGen Studio, with feature upgrades including multiline string support in chat input.
+5 moreshow less
- ›Adds Guidance + AutoGen integration example for constrained generation combined with multi-step reasoning.
- ›Adds a sample notebook for using AutoGen inside Microsoft Fabric.
- ›Adds poetry setup support for dependency management.
- ›Updates
get_max_token_limitwith latest models and token limits. - ›Allows specifying a Docker image to use with Testbed via user configuration.
- ›Adds
- v0.2.2
AutoGen v0.2.2 adds async group chat, agent description field, and broader GroupChat message sourcing
└──▷ GET THIS VERSION$ git clone --branch v0.2.2 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.2
- ›Adds a
descriptionfield to agents, distinct fromsystem_message, to improve speaker selection quality in group chat scenarios. - ›Enables
GroupChatto receive messages from agents that are not participants in the chat. - ›Supports async group chat and async generation, enabling non-blocking multi-agent workflows.
- ›Raises an explicit error when a function/tool-use
llm_configis passed toGroupChatManager, preventing misconfiguration. - ›Changes the default model and config loading process in
AgentBuilder.
+1 moreshow less
- ›Adds a new example notebook demonstrating video transcript translation with Whisper inside AutoGen.
└──▷ BREAKING ON UPGRADE- !Fixes a breaking change introduced by
openai>=1.1.0in function call handling — users on v0.2.0 or v0.2.1 must upgrade.
- ›Adds a
- v0.2.1
AutoGen v0.2.1 adds AutoBuild, Function Inception, async human input, and verbose GPT assistant logging.
└──▷ GET THIS VERSION$ git clone --branch v0.2.1 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.1
└──▷ USE ITEnable verbose logging on a GPT assistant agent to surface detailed execution output during debugging.from autogen.agentchat.contrib.gpt_assistant_agent import GPTAssistantAgent agent = GPTAssistantAgent( name="analyst", llm_config={"config_list": config_list}, verbose=True )- ›Adds a
verboseflag to the GPT assistant agent to print more detailed logs during execution. - ›Enables agents to register async human input handlers, supporting non-blocking input flows.
- ›Introduces Function Inception: agents can now define, update, or remove functions dynamically during a conversation after agent creation.
- ›Adds AutoBuild for automatically constructing multi-agent systems from a task description.
- ›Adds cost calculation and cost summary to the client-based inference layer, restoring a v0.1 capability.
+6 moreshow less
- ›Raises a
content_filtererror when responses are blocked by the content filter, restoring v0.1 behaviour in the new client. - ›Adds
is_termination_msghandling toGroupChat, enabling termination conditions in multi-agent group conversations. - ›Message
contentfield in agents now supports bothstrand List, generalizing the data structure to accommodate GPT-4V message format. - ›Adds the GAIA benchmark to the Testbed for evaluating general AI assistants.
- ›Testbed can now read authentication credentials from the
OPENAI_API_KEYenvironment variable in addition toOAI_CONFIG_LIST. - ›Adds a warning message in retrieve chat when
docs_pathis not explicitly set.
└──▷ BREAKING ON UPGRADE- !The
openaidependency is capped at<1.3as a temporary fix for the breaking change introduced by openai 1.3.
- ›Adds a
- v0.2.0
AutoGen v0.2.0 adds GPTAssistantAgent, TeachableAgent, CompressibleAgent, AgentEval, multimodal (GPT-4V) support, and streaming to its multi-agent framework.
└──▷ GET THIS VERSION$ git clone --branch v0.2.0 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.2.0
- ›Adds
GPTAssistantAgentleveraging the OpenAI Assistant API for conversational capabilities and state management. - ›Adds
TeachableAgentfor persistent user teachings across chat sessions using a memo store. - ›Adds experimental
CompressibleAgentfor managing long conversations that exceed context limits. - ›Introduces the
AgentEvalframework for assessing task utility in LLM-powered applications. - ›Adds support for customized vector databases and embedding functions in RetrieveChat RAG pipelines.
+10 moreshow less
- ›Adds support for custom text splitters in RetrieveChat.
- ›Adds function-call filtering in group chat to control which agents receive function-call messages.
- ›Adds experimental streaming support for agent responses.
- ›Adds enhanced async function execution and improved handling of human input.
- ›Adds Large Multimodal Model (GPT-4V) support to AgentChat.
- ›Adds a Langchain tool bridge enabling agents to use Langchain tools directly.
- ›Adds rich text format support in RetrieveChat and PDF file parsing via
retrieve_utils.py. - ›Adds richer speaker selector options and robustness improvements to GroupChat.
- ›Adds
config_listinstantiation from a.envfile inopenai_utils.py. - ›Deploys a sample web application (
autogen-assistant) for end-to-end demonstration of AutoGen agents.
└──▷ BREAKING ON UPGRADE- !AutoGen v0.2.0 switches from
openaiv0.x toopenaiv1.x; existing code using the old client API will break and requires following the migration guide at https://microsoft.github.io/autogen/docs/Installation/#migration-guide-to-v02.
- ›Adds
- v0.1.14
AutoGen v0.1.14 adds multimodal LLaVA support, Qdrant vector store, thread-safe code execution, and token count utilities.
└──▷ GET THIS VERSION$ git clone --branch v0.1.14 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.14
└──▷ USE ITUse Qdrant as the vector store backend for a retrieval-augmented agent in place of the default ChromaDB.from autogen.agentchat.contrib.qdrant_retrieve_user_proxy_agent import QdrantRetrieveUserProxyAgent ragent = QdrantRetrieveUserProxyAgent( name="qdrant_rag", retrieve_config={ "docs_path": "./docs", "collection_name": "my_collection", }, )- ›Adds
QdrantRetrieveUserProxyAgentincontrib/for Qdrant vector store support in retrieval-augmented chats. - ›Adds
token_count_utilfor counting tokens in agent conversations. - ›Enables multimodal agent interactions via a new LLaVA example notebook at
notebook/agentchat_lmm_llava.ipynb. - ›Supports running agent chats in a different thread or process using thread-safe timeout for code execution.
- ›Supports the new version of chromadb in retrieve chat.
- ›Adds
- v0.1.13
AutoGen v0.1.13 adds TeachableAgent for persistent long-term memory across chat sessions via vector database.
└──▷ GET THIS VERSION$ git clone --branch v0.1.13 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.13
- ›Adds
TeachableAgentclass that persists user-taught facts, preferences, and skills across chat boundaries using a vector database, saving memos to disk at chat end and loading them at the next chat start. - ›Retrieves individual memos into context as needed rather than loading the full memory store, preserving context-window space while enabling long-term recall.
- ›Adds
- v0.1.12
AutoGen v0.1.12 adds custom text splitter support for RAG agents and function call filtering in group chat.
└──▷ GET THIS VERSION$ git clone --branch v0.1.12 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.12
- ›Adds function call filtering in group chat, reducing failures when agents invoke tools during multi-agent conversations.
- ›Adds support for custom text splitters in RAG agents, enabling user-defined chunking logic for retrieval workflows.
- v0.1.11
AutoGen v0.1.11 adds a Langchain tool bridge, enabling agents to use Langchain tools directly.
└──▷ GET THIS VERSION$ git clone --branch v0.1.11 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.11
- ›Adds a Langchain tool bridge so AutoGen agents can use Langchain tools natively, demonstrated in
agentchat_langchain.ipynb. - ›Improves logging in
oai.completionto displaytoken_countduring model calls. - ›Adds compatibility for custom models that do not return all fields in the response.
- ›Adds a Langchain tool bridge so AutoGen agents can use Langchain tools natively, demonstrated in
- v0.1.10
AutoGen v0.1.10 lets you plug in customized vector databases and embedding functions.
└──▷ GET THIS VERSION$ git clone --branch v0.1.10 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.10
- ›Adds support for plugging in customized vector database backends and custom embedding functions.
- v0.1.7
AutoGen v0.1.7 adds .env file support for instantiating config_list in openai_utils.
└──▷ GET THIS VERSION$ git clone --branch v0.1.7 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.7
- ›Adds
.envfile support toopenai_utils.pyfor instantiatingconfig_list, enabling credential loading from environment files without hardcoding values.
- ›Adds
- v0.1.5
AutoGen v0.1.5 adds PDF file parsing support to RetrieveChat's retrieve_utils.
└──▷ GET THIS VERSION$ git clone --branch v0.1.5 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.5
- ›Adds PDF file parsing to
retrieve_utils.py, enabling RetrieveChat to extract and index text from PDF documents.
- ›Adds PDF file parsing to
- v0.1.4
AutoGen v0.1.4 adds configurable retry timing for rate-limit handling.
└──▷ GET THIS VERSION$ git clone --branch v0.1.4 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.4
- ›Adds configurable retry wait time to handle API rate-limit errors in multi-agent workflows.
- v0.1.2
AutoGen v0.1.2 adds single-line code detection and new RetrieveChat controls including
customized_answer_prefixandno_update_context.└──▷ GET THIS VERSION$ git clone --branch v0.1.2 https://github.com/microsoft/autogen.git # already have the repo? check out this version: $ git checkout v0.1.2
- ›Adds
customized_answer_prefixparameter to RetrieveChat to trigger Update Context when the specified prefix is absent from the answer, enabling custom trigger-word control. - ›Adds
no_update_contextparameter to RetrieveChat to suppress Update Context entirely. - ›Extends
extract_codeto detect single-line code blocks. - ›RetrieveChat now upserts to ChromaDB in batches of 40,000 records, improving stability for large corpora.
- ›Adds