google / google/adk-python

Feature Proposal: Native Support for Multi-Agent Group Chat (GroupChat / Dialogue Orchestration) API

Abierto
#6,214 2 comentarios 0 reacciones 2 asignados Reclamado por @DeanChensj Ver en GitHub
core needs review
Lenguaje dominante
Python
Estrellas
21.5k
Forks
4k
Merge medio
1 d 14 h
PR fusionados (30 d)
37

Descripción

### Problem Description
Currently, the Google Agent Development Kit (ADK) 2.x provides powerful APIs for single-agent execution (`LlmAgent`/`Agent`) and graph-based execution (`Workflow`/`JoinNode`). However, it lacks a native API for **conversational-based multi-agent group chats (GroupChat / Dialogue Orchestration)**, similar to AutoGen's `GroupChat` and `GroupChatManager`.

When building collaborative applications (like digital employee platforms) where multiple agents need to work in a shared conversation space:
1. **Dialogue-driven collaboration** (e.g., dynamic multi-turn brainstorming, negotiation, or handoffs) is difficult to express cleanly using rigid Directed Acyclic Graphs (`Workflow`).
2. Developers are forced to either:
- Build a custom database-backed state-machine on top of ADK's `Runner` or `LlmAgent` to orchestrate who speaks next and format the message stream (which is how we currently work around it).
- Write complex custom Python async code to manually handle turn-taking, which lacks standard API support.

### Proposed Feature / Behavior
We propose adding native support for a Group Chat / Dialogue Orchestrator API in ADK. This could include:
1. **`GroupChat` Container**: A class that manages a shared conversation history and a collection of participant agents.
2. **`GroupChatManager` (or `DialogueOrchestrator`)**: An agent that decides the next speaker based on:
- Dynamic LLM-based selection (e.g., choosing the next speaker based on chat history).
- Preset transition rules (e.g., a state machine or allowed transition graph).
- Standard routines (e.g., round-robin, random, manual human input).
3. **Structured Event Emission**: Streaming events that include metadata about the active speaker (e.g. `agent_id`, `node_id`) so that frontends can easily route streaming tokens to correct UI elements without interleaving.

### User & Platform Impact
- **Developer Experience**: Significantly reduces boilerplate code when building multi-agent discussion groups, brainstorming channels, or collaborative task-solvers.
- **Flexibility**: Complements ADK's graph-based `Workflow` engine by offering a conversational alternative, allowing developers to choose the right paradigm (structural DAG vs. dynamic dialogue) for the task at hand.
- **Enterprise Readiness**: Makes it easier to build user-friendly UI/UX around multi-agent collaboration (such as enterprise digital employee group chats) with clear speaker attribution and trace streaming.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.