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
- Set a meaningful description on every member agent passed to GroupChatOrchestration.
- Provide a concise description of each agent's role/specialty so the manager can route effectively.
- 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
- Always set a description when creating agents intended for group chat.
- Write a helper that sets a default description if none is provided.
- Validate members before constructing the orchestration.
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
- Missing agent description: {agent.Name ?? agent.Id}
- Entry agent is not defined.
- The agent {agent.Name ?? agent.Id} cannot have a handoff to
- The following agents are not defined in the orchestration: {
- Entry agent is not defined.
AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13).
Data as JSON: /api/errors/983b88c8bb2d31d1.
Report an issue: GitHub.