autogen_agentchat.tools#

class AgentTool(agent: BaseChatAgent, return_value_as_last_message: bool = False)[source]#

Bases: TaskRunnerTool, Component[AgentToolConfig]

Tool that can be used to run a task using an agent.

The tool returns the result of the task execution as a TaskResult object.

Parameters:
  • agent (BaseChatAgent) – The agent to be used for running the task.

  • return_value_as_last_message (bool) – Whether to use the last message content of the task result as the return value of the tool in return_value_as_string(). If set to True, the last message content will be returned as a string. If set to False, the tool will return all messages in the task result as a string concatenated together, with each message prefixed by its source (e.g., “writer: …”, “assistant: …”).

Example

import asyncio

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.tools import AgentTool
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient


async def main() -> None:
    model_client = OpenAIChatCompletionClient(model="gpt-4")
    writer = AssistantAgent(
        name="writer",
        description="A writer agent for generating text.",
        model_client=model_client,
        system_message="Write well.",
    )
    writer_tool = AgentTool(agent=writer)
    assistant = AssistantAgent(
        name="assistant",
        model_client=model_client,
        tools=[writer_tool],
        system_message="You are a helpful assistant.",
    )
    await Console(assistant.run_stream(task="Write a poem about the sea."))


asyncio.run(main())
component_config_schema#

alias of AgentToolConfig

component_provider_override: ClassVar[str | None] = 'autogen_agentchat.tools.AgentTool'#

Override the provider string for the component. This should be used to prevent internal module names being a part of the module name.

_to_config() AgentToolConfig[source]#

Dump the configuration that would be requite to create a new instance of a component matching the configuration of this instance.

Returns:

T – The configuration of the component.

classmethod _from_config(config: AgentToolConfig) Self[source]#

Create a new instance of the component from a configuration object.

Parameters:

config (T) – The configuration object.

Returns:

Self – The new instance of the component.

class TeamTool(team: BaseGroupChat, name: str, description: str, return_value_as_last_message: bool = False)[source]#

Bases: TaskRunnerTool, Component[TeamToolConfig]

Tool that can be used to run a task.

The tool returns the result of the task execution as a TaskResult object.

Parameters:
  • team (BaseGroupChat) – The team to be used for running the task.

  • name (str) – The name of the tool.

  • description (str) – The description of the tool.

  • return_value_as_last_message (bool) – Whether to use the last message content of the task result as the return value of the tool in return_value_as_string(). If set to True, the last message content will be returned as a string. If set to False, the tool will return all messages in the task result as a string concatenated together, with each message prefixed by its source (e.g., “writer: …”, “assistant: …”).

Example

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import SourceMatchTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.tools import TeamTool
from autogen_agentchat.ui import Console
from autogen_ext.models.ollama import OllamaChatCompletionClient


async def main() -> None:
    model_client = OllamaChatCompletionClient(model="llama3.2")

    writer = AssistantAgent(name="writer", model_client=model_client, system_message="You are a helpful assistant.")
    reviewer = AssistantAgent(
        name="reviewer", model_client=model_client, system_message="You are a critical reviewer."
    )
    summarizer = AssistantAgent(
        name="summarizer",
        model_client=model_client,
        system_message="You combine the review and produce a revised response.",
    )
    team = RoundRobinGroupChat(
        [writer, reviewer, summarizer], termination_condition=SourceMatchTermination(sources=["summarizer"])
    )

    # Create a TeamTool that uses the team to run tasks, returning the last message as the result.
    tool = TeamTool(
        team=team, name="writing_team", description="A tool for writing tasks.", return_value_as_last_message=True
    )

    main_agent = AssistantAgent(
        name="main_agent",
        model_client=model_client,
        system_message="You are a helpful assistant that can use the writing tool.",
        tools=[tool],
    )
    # For handling each events manually.
    # async for message in main_agent.run_stream(
    #     task="Write a short story about a robot learning to love.",
    # ):
    #     print(message)
    # Use Console to display the messages in a more readable format.
    await Console(
        main_agent.run_stream(
            task="Write a short story about a robot learning to love.",
        )
    )


if __name__ == "__main__":
    import asyncio

    asyncio.run(main())
component_config_schema#

alias of TeamToolConfig

component_provider_override: ClassVar[str | None] = 'autogen_agentchat.tools.TeamTool'#

Override the provider string for the component. This should be used to prevent internal module names being a part of the module name.

_to_config() TeamToolConfig[source]#

Dump the configuration that would be requite to create a new instance of a component matching the configuration of this instance.

Returns:

T – The configuration of the component.

classmethod _from_config(config: TeamToolConfig) Self[source]#

Create a new instance of the component from a configuration object.

Parameters:

config (T) – The configuration object.

Returns:

Self – The new instance of the component.