Skip to content

Config

any_agent.config.AgentConfig

Bases: BaseModel

Source code in src/any_agent/config.py
class AgentConfig(BaseModel):
    model_config = ConfigDict(extra="forbid")

    model_id: str
    """Select the underlying model used by the agent.

    If you are using the default model_type (LiteLLM), you can refer to [LiteLLM Provider Docs](https://docs.litellm.ai/docs/providers) for the list of providers and how to access them.
    """

    api_base: str | None = None
    api_key: str | None = None

    description: str | None = None
    """Description of the agent."""

    name: str = "any_agent"
    """The name of the agent.

    Defaults to `any_agent`.
    """

    instructions: str | None = None
    """Specify the instructions for the agent (often also referred to as a `system_prompt`)."""

    tools: Sequence[Tool] = Field(default_factory=list)
    """List of tools to be used by the agent.

    See more info at [Tools](../agents/tools.md).
    """

    agent_type: Callable[..., Any] | None = None
    """Control the type of agent class that is used by the framework, and is unique to the framework used.

    Check the individual `Frameworks` pages for more info on the defaults.
    """

    agent_args: MutableMapping[str, Any] | None = None
    """Pass arguments to the instance used by the underlying framework.

    For example, you can pass `output_type` when using the OpenAI Agents SDK:

    ```py
    from pydantic import BaseModel

    class CalendarEvent(BaseModel):
        name: str
        date: str
        participants: list[str]

    agent = AnyAgent.create(
        AgentConfig(
            model_id="gpt-4.1-mini",
            instructions="Extract calendar events from text",
            agent_args={
                "output_type": CalendarEvent
            }
        )
    )
    ```
    """

    model_type: Callable[..., Any] | None = None
    """Control the type of model class that is used by the agent framework, and is unique to the agent framework being used.

    For each framework, we leverage their support for LiteLLM and use it as default model_type, allowing you to use the same model_id syntax across these frameworks.
    """

    model_args: MutableMapping[str, Any] | None = None
    """Pass arguments to the model instance like `temperature`, `top_k`, as well as any other provider-specific parameters.

    Refer to LiteLLM Completion API Docs for more info.
    """

    output_type: type[BaseModel] | None = None
    """Control the output schema from calling `run`. By default, the agent will return a type str.

    Using this parameter you can define a Pydantic model that will be returned by the agent run methods.
    """

agent_args = None class-attribute instance-attribute

Pass arguments to the instance used by the underlying framework.

For example, you can pass output_type when using the OpenAI Agents SDK:

from pydantic import BaseModel

class CalendarEvent(BaseModel):
    name: str
    date: str
    participants: list[str]

agent = AnyAgent.create(
    AgentConfig(
        model_id="gpt-4.1-mini",
        instructions="Extract calendar events from text",
        agent_args={
            "output_type": CalendarEvent
        }
    )
)

agent_type = None class-attribute instance-attribute

Control the type of agent class that is used by the framework, and is unique to the framework used.

Check the individual Frameworks pages for more info on the defaults.

description = None class-attribute instance-attribute

Description of the agent.

instructions = None class-attribute instance-attribute

Specify the instructions for the agent (often also referred to as a system_prompt).

model_args = None class-attribute instance-attribute

Pass arguments to the model instance like temperature, top_k, as well as any other provider-specific parameters.

Refer to LiteLLM Completion API Docs for more info.

model_id instance-attribute

Select the underlying model used by the agent.

If you are using the default model_type (LiteLLM), you can refer to LiteLLM Provider Docs for the list of providers and how to access them.

model_type = None class-attribute instance-attribute

Control the type of model class that is used by the agent framework, and is unique to the agent framework being used.

For each framework, we leverage their support for LiteLLM and use it as default model_type, allowing you to use the same model_id syntax across these frameworks.

name = 'any_agent' class-attribute instance-attribute

The name of the agent.

Defaults to any_agent.

output_type = None class-attribute instance-attribute

Control the output schema from calling run. By default, the agent will return a type str.

Using this parameter you can define a Pydantic model that will be returned by the agent run methods.

tools = Field(default_factory=list) class-attribute instance-attribute

List of tools to be used by the agent.

See more info at Tools.

any_agent.config.MCPStdio

Bases: BaseModel

Source code in src/any_agent/config.py
class MCPStdio(BaseModel):
    command: str
    """The executable to run to start the server.

    For example, `docker`, `uvx`, `npx`.
    """

    args: Sequence[str]
    """Command line args to pass to the command executable.

    For example, `["run", "-i", "--rm", "mcp/fetch"]`.
    """

    env: dict[str, str] | None = None
    """The environment variables to set for the server."""

    tools: Sequence[str] | None = None
    """List of tool names to use from the MCP Server.

    Use it to limit the tools accessible by the agent.
    For example, if you use [`mcp/filesystem`](https://hub.docker.com/r/mcp/filesystem),
    you can pass `tools=["read_file", "list_directory"]` to limit the agent to read-only operations.

    If none is specified, the default behavior is that the agent will have access to all tools under that MCP server.
    """

    client_session_timeout_seconds: float | None = 5
    """the read timeout passed to the MCP ClientSession."""

    model_config = ConfigDict(frozen=True, extra="forbid")

args instance-attribute

Command line args to pass to the command executable.

For example, ["run", "-i", "--rm", "mcp/fetch"].

client_session_timeout_seconds = 5 class-attribute instance-attribute

the read timeout passed to the MCP ClientSession.

command instance-attribute

The executable to run to start the server.

For example, docker, uvx, npx.

env = None class-attribute instance-attribute

The environment variables to set for the server.

tools = None class-attribute instance-attribute

List of tool names to use from the MCP Server.

Use it to limit the tools accessible by the agent. For example, if you use mcp/filesystem, you can pass tools=["read_file", "list_directory"] to limit the agent to read-only operations.

If none is specified, the default behavior is that the agent will have access to all tools under that MCP server.

any_agent.config.MCPSse

Bases: BaseModel

Source code in src/any_agent/config.py
class MCPSse(BaseModel):
    url: str
    """The URL of the server."""

    headers: Mapping[str, str] | None = None
    """The headers to send to the server."""

    tools: Sequence[str] | None = None
    """List of tool names to use from the MCP Server.

    Use it to limit the tools accessible by the agent.
    For example, if you use [`mcp/filesystem`](https://hub.docker.com/r/mcp/filesystem),
    you can pass `tools=["read_file", "list_directory"]` to limit the agent to read-only operations.
    """

    client_session_timeout_seconds: float | None = 5
    """the read timeout passed to the MCP ClientSession."""

    model_config = ConfigDict(frozen=True)

client_session_timeout_seconds = 5 class-attribute instance-attribute

the read timeout passed to the MCP ClientSession.

headers = None class-attribute instance-attribute

The headers to send to the server.

tools = None class-attribute instance-attribute

List of tool names to use from the MCP Server.

Use it to limit the tools accessible by the agent. For example, if you use mcp/filesystem, you can pass tools=["read_file", "list_directory"] to limit the agent to read-only operations.

url instance-attribute

The URL of the server.

any_agent.serving.A2AServingConfig

Bases: BaseModel

Configuration for serving an agent using the Agent2Agent Protocol (A2A).

Example

config = A2AServingConfig( port=8080, endpoint="/my-agent", skills=[ AgentSkill( id="search", name="web_search", description="Search the web for information" ) ], task_timeout_minutes=15 )

Source code in src/any_agent/serving/config_a2a.py
class A2AServingConfig(BaseModel):
    """Configuration for serving an agent using the Agent2Agent Protocol (A2A).

    Example:
        config = A2AServingConfig(
            port=8080,
            endpoint="/my-agent",
            skills=[
                AgentSkill(
                    id="search",
                    name="web_search",
                    description="Search the web for information"
                )
            ],
            task_timeout_minutes=15
        )

    """

    model_config = ConfigDict(extra="forbid")

    host: str = "localhost"
    """Will be passed as argument to `uvicorn.run`."""

    port: int = 5000
    """Will be passed as argument to `uvicorn.run`."""

    endpoint: str = "/"
    """Will be pass as argument to `Starlette().add_route`"""

    log_level: str = "warning"
    """Will be passed as argument to the `uvicorn` server."""

    skills: list[AgentSkill] | None = None
    """List of skills to be used by the agent.

    If not provided, the skills will be inferred from the tools.
    """

    version: str = "0.1.0"

    task_timeout_minutes: int = 10
    """Task timeout in minutes. Tasks will be cleaned up after this period of inactivity."""

    history_formatter: HistoryFormatter = default_history_formatter
    """Function to format conversation history and current query into a single prompt.
    Takes (messages, current_query) and returns formatted string."""

    task_cleanup_interval_minutes: int = 5
    """Interval in minutes between task cleanup runs."""

endpoint = '/' class-attribute instance-attribute

Will be pass as argument to Starlette().add_route

history_formatter = default_history_formatter class-attribute instance-attribute

Function to format conversation history and current query into a single prompt. Takes (messages, current_query) and returns formatted string.

host = 'localhost' class-attribute instance-attribute

Will be passed as argument to uvicorn.run.

log_level = 'warning' class-attribute instance-attribute

Will be passed as argument to the uvicorn server.

port = 5000 class-attribute instance-attribute

Will be passed as argument to uvicorn.run.

skills = None class-attribute instance-attribute

List of skills to be used by the agent.

If not provided, the skills will be inferred from the tools.

task_cleanup_interval_minutes = 5 class-attribute instance-attribute

Interval in minutes between task cleanup runs.

task_timeout_minutes = 10 class-attribute instance-attribute

Task timeout in minutes. Tasks will be cleaned up after this period of inactivity.

any_agent.serving.MCPServingConfig

Bases: BaseModel

Configuration for serving an agent using the Model Context Protocol (MCP).

Example

config = MCPServingConfig( port=8080, endpoint="/my-agent", )

Source code in src/any_agent/serving/config_mcp.py
class MCPServingConfig(BaseModel):
    """Configuration for serving an agent using the Model Context Protocol (MCP).

    Example:
        config = MCPServingConfig(
            port=8080,
            endpoint="/my-agent",
        )

    """

    model_config = ConfigDict(extra="forbid")

    host: str = "localhost"
    """Will be passed as argument to `uvicorn.run`."""

    port: int = 5000
    """Will be passed as argument to `uvicorn.run`."""

    endpoint: str = "/"
    """Will be pass as argument to `Starlette().add_route`"""

    log_level: str = "warning"
    """Will be passed as argument to the `uvicorn` server."""

    version: str = "0.1.0"

endpoint = '/' class-attribute instance-attribute

Will be pass as argument to Starlette().add_route

host = 'localhost' class-attribute instance-attribute

Will be passed as argument to uvicorn.run.

log_level = 'warning' class-attribute instance-attribute

Will be passed as argument to the uvicorn server.

port = 5000 class-attribute instance-attribute

Will be passed as argument to uvicorn.run.

any_agent.config.AgentFramework

Bases: StrEnum

Source code in src/any_agent/config.py
class AgentFramework(StrEnum):
    GOOGLE = auto()
    LANGCHAIN = auto()
    LLAMA_INDEX = auto()
    OPENAI = auto()
    AGNO = auto()
    SMOLAGENTS = auto()
    TINYAGENT = auto()

    @classmethod
    def from_string(cls, value: str | Self) -> Self:
        if isinstance(value, cls):
            return value

        formatted_value = value.strip().upper()
        if formatted_value not in cls.__members__:
            error_message = (
                f"Unsupported agent framework: '{value}'. "
                f"Valid frameworks are: {list(cls.__members__.keys())}"
            )
            raise ValueError(error_message)

        return cls[formatted_value]