microsoft/semantic-kernel · error · ValueError

All members must have a description.

Error message

All members must have a description.

What it means

Raised as a ValueError in GroupChatOrchestration.__init__ when any member agent has description == None. The group-chat manager uses each member's description to decide which agent should act next, so a missing description makes the manager unable to route. This is a constructor-time validation that fails fast.

Source

Thrown at python/semantic_kernel/agents/orchestration/group_chat.py:400

        Args:
            members (list[Agent | OrchestrationBase]): A list of agents or orchestrations that are part of the
                handoff group. This first agent in the list will be the one that receives the first message.
            manager (GroupChatManager): The group chat manager that manages the flow of the group chat.
            name (str | None): The name of the orchestration.
            description (str | None): The description of the orchestration.
            input_transform (Callable | None): A function that transforms the external input message.
            output_transform (Callable | None): A function that transforms the internal output message.
            agent_response_callback (Callable | None): A function that is called when a full response is produced
                by the agents.
            streaming_agent_response_callback (Callable | None): A function that is called when a streaming response
                is produced by the agents.
        """
        self._manager = manager

        for member in members:
            if member.description is None:
                raise ValueError("All members must have a description.")

        super().__init__(
            members=members,
            name=name,
            description=description,
            input_transform=input_transform,
            output_transform=output_transform,
            agent_response_callback=agent_response_callback,
            streaming_agent_response_callback=streaming_agent_response_callback,
        )

    @override
    async def _start(
        self,
        task: DefaultTypeAlias,
        runtime: CoreRuntime,
        internal_topic_type: str,
        cancellation_token: CancellationToken,

View on GitHub (pinned to c028a0c7dc)

Solutions

  1. Set a meaningful description on every member agent passed to GroupChatOrchestration.
  2. Provide a concise description of each agent's role/specialty so the manager can route effectively.
  3. Validate all members have descriptions before constructing the orchestration.

Example fix

# before
agent_a = ChatCompletionAgent(service=svc, name="writer")  # no description -> error
orchestration = GroupChatOrchestration(members=[agent_a], manager=manager)
# after
agent_a = ChatCompletionAgent(
    service=svc, name="writer",
    description="A writer that drafts prose and articles.",
)
orchestration = GroupChatOrchestration(members=[agent_a], manager=manager)
Defensive patterns

Strategy: validation

Validate before calling

# Ensure every member has a description before constructing the orchestration:
for m in members:
    if not getattr(m, "description", None):
        raise ValueError(f"Member '{m.name}' is missing a description required by group chat.")

Type guard

def all_members_described(members) -> bool:
    return all(getattr(m, "description", None) for m in members)

Try / catch

from semantic_kernel.agents.orchestration import GroupChatOrchestration
try:
    orchestration = GroupChatOrchestration(members=members, manager=manager)
except ValueError as ex:
    if "description" in str(ex):
        members = [ensure_description(m) for m in members]
        orchestration = GroupChatOrchestration(members=members, manager=manager)

Prevention

When it happens

Trigger: Constructing GroupChatOrchestration(members=[...], manager=...) where one or more member Agent objects were created without a description argument. The loop `for member in members: if member.description is None: raise` triggers immediately.

Common situations: Creating ChatCompletionAgent / OpenAIResponsesAgent without passing description=...; copying agents and dropping the description; reusing agents built for a different orchestration that did not require descriptions; forgetting that group chat requires descriptions unlike sequential/concurrent.

Related errors


AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13). Data as JSON: /api/errors/983b88c8bb2d31d1. Report an issue: GitHub.