{"record":{"id":"983b88c8bb2d31d1","repo":"microsoft/semantic-kernel","slug":"all-members-must-have-a-description","errorCode":null,"errorMessage":"All members must have a description.","messagePattern":"All members must have a description\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/agents/orchestration/group_chat.py","lineNumber":400,"sourceCode":"\n        Args:\n            members (list[Agent | OrchestrationBase]): A list of agents or orchestrations that are part of the\n                handoff group. This first agent in the list will be the one that receives the first message.\n            manager (GroupChatManager): The group chat manager that manages the flow of the group chat.\n            name (str | None): The name of the orchestration.\n            description (str | None): The description of the orchestration.\n            input_transform (Callable | None): A function that transforms the external input message.\n            output_transform (Callable | None): A function that transforms the internal output message.\n            agent_response_callback (Callable | None): A function that is called when a full response is produced\n                by the agents.\n            streaming_agent_response_callback (Callable | None): A function that is called when a streaming response\n                is produced by the agents.\n        \"\"\"\n        self._manager = manager\n\n        for member in members:\n            if member.description is None:\n                raise ValueError(\"All members must have a description.\")\n\n        super().__init__(\n            members=members,\n            name=name,\n            description=description,\n            input_transform=input_transform,\n            output_transform=output_transform,\n            agent_response_callback=agent_response_callback,\n            streaming_agent_response_callback=streaming_agent_response_callback,\n        )\n\n    @override\n    async def _start(\n        self,\n        task: DefaultTypeAlias,\n        runtime: CoreRuntime,\n        internal_topic_type: str,\n        cancellation_token: CancellationToken,","sourceCodeStart":382,"sourceCodeEnd":418,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/agents/orchestration/group_chat.py#L382-L418","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"# before\nagent_a = ChatCompletionAgent(service=svc, name=\"writer\")  # no description -> error\norchestration = GroupChatOrchestration(members=[agent_a], manager=manager)\n# after\nagent_a = ChatCompletionAgent(\n    service=svc, name=\"writer\",\n    description=\"A writer that drafts prose and articles.\",\n)\norchestration = GroupChatOrchestration(members=[agent_a], manager=manager)","handlingStrategy":"validation","validationCode":"# Ensure every member has a description before constructing the orchestration:\nfor m in members:\n    if not getattr(m, \"description\", None):\n        raise ValueError(f\"Member '{m.name}' is missing a description required by group chat.\")","typeGuard":"def all_members_described(members) -> bool:\n    return all(getattr(m, \"description\", None) for m in members)","tryCatchPattern":"from semantic_kernel.agents.orchestration import GroupChatOrchestration\ntry:\n    orchestration = GroupChatOrchestration(members=members, manager=manager)\nexcept ValueError as ex:\n    if \"description\" in str(ex):\n        members = [ensure_description(m) for m in members]\n        orchestration = GroupChatOrchestration(members=members, manager=manager)","preventionTips":["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."],"tags":["orchestration","group-chat","validation","configuration"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}