Skip to content

Releases: microsoft/autogen

python-v0.7.5

Choose a tag to compare

@ekzhu ekzhu released this 30 Sep 06:18
83afbf5

What's Changed

New Contributors

Full Changelog: python-v0.7.4...python-v0.7.5

python-v0.7.4

Choose a tag to compare

@ekzhu ekzhu released this 19 Aug 18:50
00d6e78

What's Changed

New Contributors

Full Changelog: python-v0.7.3...python-v0.7.4

python-v0.7.3

Choose a tag to compare

@ekzhu ekzhu released this 19 Aug 08:07
2f3981d

What's Changed

New Contributors

Full Changelog: python-v0.7.2...python-v0.7.3

python-v0.7.2

Choose a tag to compare

@ekzhu ekzhu released this 07 Aug 00:29
c145ace

What's Changed

Full Changelog: python-v0.7.1...python-v0.7.2

python-v0.7.1

Choose a tag to compare

@ekzhu ekzhu released this 28 Jul 08:43
1ca7419

What's New

OpenAIAgent supports all built-in tools

Support nested Team as a participant in a Team

Introduce RedisMemory

Upgrade to latest MCP version

Upgrade to latest GraphRAG version

include_name_in_message flag to make the use of name field optional in chat messages sent via the Open AI client.

  • Add include_name_in_message parameter to make name field optional in OpenAI messages by @Copilot in #6845

All Changes

New Contributors

Full Changelog: python-v0.6.4...python-v0.7.1

python-v0.6.4

Choose a tag to compare

@ekzhu ekzhu released this 09 Jul 17:52
9f2c5aa

What's New

More helps from copilot-swe-agent for this release.

Improvements to GraphFlow

Now it behaves the same way as RoundRobinGroupChat, SelectorGroupChat and others after termination condition hits -- it retains its execution state and can be resumed with a new task or empty task. Only when the graph finishes execution i.e., no more next available agent to choose from, the execution state will be reset.

Also, the inner StopAgent has been removed and there will be no last message coming from the StopAgent. Instead, the stop_reason field in the TaskResult will carry the stop message.

  • Fix GraphFlow to support multiple task execution without explicit reset by copilot-swe-agent in #6747
  • Fix GraphFlowManager termination to prevent _StopAgent from polluting conversation context by copilot-swe-agent in #6752

Improvements to Workbench implementations

McpWorkbench and StaticWorkbench now supports overriding tool names and descriptions. This allows client-side optimization of the server-side tools, for better adaptability.

  • Add tool name and description override functionality to Workbench implementations by copilot-swe-agent in #6690

All Changes

New Contributors

Full Changelog: python-v0.6.2...python-v0.6.4

python-v0.6.2

Choose a tag to compare

@ekzhu ekzhu released this 01 Jul 00:09
556033b

What's New

Streaming Tools

This release introduces streaming tools and updates AgentTool and TeamTool to support run_json_stream. The new interface exposes the inner events of tools when calling run_stream of agents and teams. AssistantAgent is also updated to use run_json_stream when the tool supports streaming. So, when using AgentTool or TeamTool with AssistantAgent, you can receive the inner agent's or team's events through the main agent.

To create new streaming tools, subclass autogen_core.tools.BaseStreamTool and implement run_stream. To create new streaming workbench, subclass autogen_core.tools.StreamWorkbench and implement call_tool_stream.

tool_choice parameter for ChatCompletionClient and subclasses

Introduces a new parameter tool_choice to the ChatCompletionClients create and create_stream methods.

This is also the first PR by Copilot (@copliot-swe-agent)!

  • Add tool_choice parameter to ChatCompletionClient create and create_stream methods by copilot-swe-agent in #6697

AssistantAgent's inner tool calling loop

Now you can enable AssistantAgent with an inner tool calling loop by setting the max_tool_iterations parameter through its constructor. The new implementation calls the model and executes tools until (1) the model stops generating tool calls, or (2) max_tool_iterations has been reached. This change simplies the usage of AssistantAgent.

OpenTelemetry GenAI Traces

This releases added new traces create_agent, invoke_agent, execute_tool from the GenAI Semantic Convention.

You can also disable agent runtime traces by setting the environment variable AUTOGEN_DISABLE_RUNTIME_TRACING=true.

output_task_messages flag for run and run_stream

You can use the new flag to customize whether the input task messages get emitted as part of run_stream of agents and teams.

Mem0 Extension

Added Mem0 memory extension so you can use it as memory for AutoGen agents.

Improvement to GraphFlow

uv update

We have removed the uv version limit so you can use the latest version to develop AutoGen.

Other Python Related Changes

New Contributors

Full Changelog: python-v0.6.1...python-v0.6.2

python-v0.6.1

Choose a tag to compare

@ekzhu ekzhu released this 05 Jun 05:58
348bcb1

Bug Fixes

Others

Full Changelog: python-v0.6.0...python-v0.6.1

python-v0.6.0

Choose a tag to compare

@ekzhu ekzhu released this 05 Jun 00:37
16e1943

What's New

Change to BaseGroupChatManager.select_speaker and support for concurrent agents in GraphFlow

We made a type hint change to the select_speaker method of BaseGroupChatManager to allow for a list of agent names as a return value. This makes it possible to support concurrent agents in GraphFlow, such as in a fan-out-fan-in pattern.
 

# Original signature:
async def select_speaker(self, thread: Sequence[BaseAgentEvent | BaseChatMessage]) -> str:
  ...

# New signature:
async def select_speaker(self, thread: Sequence[BaseAgentEvent | BaseChatMessage]) -> List[str] | str:
  ...

Now you can run GraphFlow with concurrent agents as follows:

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():
    # Initialize agents with OpenAI model clients.
    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.")

    # Create a directed graph with fan-out flow A -> (B, C).
    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()

    # Create a GraphFlow team with the directed graph.
    team = GraphFlow(
        participants=[agent_a, agent_b, agent_c],
        graph=graph,
        termination_condition=MaxMessageTermination(5),
    )

    # Run the team and print the events.
    async for event in team.run_stream(task="Write a short story about a cat."):
        print(event)


asyncio.run(main())

Agent B and C will run concurrently in separate coroutines.

Callable conditions for GraphFlow edges

Now you can use lambda functions or other callables to specify edge conditions in GraphFlow. This addresses the issue of the keyword substring-based conditions cannot cover all possibilities and leading to "cannot find next agent" bug.

NOTE: callable conditions are currently experimental, and it cannot be serialized with the graph.

New Agent: OpenAIAgent

MCP Improvement

AssistantAgent Improvement

Code Executors Improvement

OpenAIChatCompletionClient Improvement

OllamaChatCompletionClient Improvement

AnthropicBedrockChatCompletionClient Improvement

MagenticOneGroupChat Improvement

Other Changes

New Contributors

Full Changelog: python-v0.5.7...python-v0.6.0

python-v0.5.7

Choose a tag to compare

@ekzhu ekzhu released this 14 May 05:02
87cf4f0

What's New

AzureAISearchTool Improvements

The Azure AI Search Tool API now features unified methods:

  • create_full_text_search() (supporting "simple", "full", and "semantic" query types)
  • create_vector_search() and
  • create_hybrid_search()
    We also added support for client-side embeddings, while defaults to service embeddings when client embeddings aren't provided.

If you have been using create_keyword_search(), update your code to use create_full_text_search() with "simple" query type.

SelectorGroupChat Improvements

To support long context for the model-based selector in SelectorGroupChat, you can pass in a model context object through the new model_context parameter to customize the messages sent to the model client when selecting the next speaker.

OTEL Tracing Improvements

We added new metadata and message content fields to the OTEL traces emitted by the SingleThreadedAgentRuntime.

Agent Runtime Improvements

Other Python Related Changes

New Contributors

Full Changelog: python-v0.5.6...python-v0.5.7