parent
f68de40356
commit
ab11c1c4f7
@ -0,0 +1,380 @@
|
||||
# Talk Structurally, Act Hierarchically Framework
|
||||
|
||||
## Overview
|
||||
|
||||
The **Talk Structurally, Act Hierarchically** framework is a sophisticated multi-agent system that implements the research paper "Talk Structurally, Act Hierarchically: A Collaborative Framework for LLM Multi-Agent Systems" (arXiv:2502.11098). This framework addresses key challenges in multi-agent systems through structured communication protocols and hierarchical evaluation systems.
|
||||
|
||||
## Key Features
|
||||
|
||||
### 1. Structured Communication Protocol
|
||||
- **Message (M_ij)**: Specific task instructions with clear objectives
|
||||
- **Background (B_ij)**: Context and problem background for comprehensive understanding
|
||||
- **Intermediate Output (I_ij)**: Intermediate results passed between agents
|
||||
|
||||
### 2. Hierarchical Refinement System
|
||||
- **Evaluation Team**: Multiple specialized evaluators with different criteria
|
||||
- **Supervisor Coordination**: Centralized coordination of evaluation processes
|
||||
- **Summarized Feedback**: Consolidated, actionable feedback from multiple evaluators
|
||||
|
||||
### 3. Graph-based Agent Orchestration
|
||||
- **Dynamic Routing**: Flexible communication pathways based on task requirements
|
||||
- **Context Preservation**: Maintains conversation history and shared memory
|
||||
- **Iterative Refinement**: Multiple refinement loops for continuous improvement
|
||||
|
||||
## Architecture
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[User Task] --> B[Supervisor Agent]
|
||||
B --> C[Generator Agent]
|
||||
C --> D[Evaluation Team Supervisor]
|
||||
D --> E[Evaluator 1]
|
||||
D --> F[Evaluator 2]
|
||||
D --> G[Evaluator N]
|
||||
E --> H[Summarized Feedback]
|
||||
F --> H
|
||||
G --> H
|
||||
H --> I[Refiner Agent]
|
||||
I --> J{Quality Threshold Met?}
|
||||
J -->|No| C
|
||||
J -->|Yes| K[Final Result]
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
### TalkHierarchicalSwarm
|
||||
|
||||
The main orchestrator class that manages the entire workflow.
|
||||
|
||||
```python
|
||||
from swarms.structs.talk_hierarchical_swarm import TalkHierarchicalSwarm
|
||||
|
||||
swarm = TalkHierarchicalSwarm(
|
||||
name="MyTalkHierSwarm",
|
||||
supervisor=supervisor_agent,
|
||||
generators=[generator_agent],
|
||||
evaluators=[evaluator_agent1, evaluator_agent2],
|
||||
refiners=[refiner_agent],
|
||||
max_loops=3,
|
||||
enable_structured_communication=True,
|
||||
enable_hierarchical_evaluation=True
|
||||
)
|
||||
```
|
||||
|
||||
### Specialized Agents
|
||||
|
||||
#### TalkHierarchicalGenerator
|
||||
Creates initial content using structured communication protocol.
|
||||
|
||||
```python
|
||||
from swarms.agents.talk_hierarchical_agents import TalkHierarchicalGenerator
|
||||
|
||||
generator = TalkHierarchicalGenerator(
|
||||
agent_name="ContentGenerator",
|
||||
model_name="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Generate with structured communication
|
||||
result = generator.generate_with_structure(
|
||||
message="Create technical documentation",
|
||||
background="For software developers",
|
||||
intermediate_output="Previous API overview"
|
||||
)
|
||||
```
|
||||
|
||||
#### TalkHierarchicalEvaluator
|
||||
Evaluates content using specific criteria and provides structured feedback.
|
||||
|
||||
```python
|
||||
from swarms.agents.talk_hierarchical_agents import TalkHierarchicalEvaluator
|
||||
|
||||
evaluator = TalkHierarchicalEvaluator(
|
||||
agent_name="QualityEvaluator",
|
||||
evaluation_criteria=["accuracy", "clarity", "completeness"]
|
||||
)
|
||||
|
||||
# Evaluate content
|
||||
result = evaluator.evaluate_with_criterion(
|
||||
content="Content to evaluate",
|
||||
criterion="accuracy"
|
||||
)
|
||||
```
|
||||
|
||||
#### TalkHierarchicalRefiner
|
||||
Improves content based on evaluation feedback.
|
||||
|
||||
```python
|
||||
from swarms.agents.talk_hierarchical_agents import TalkHierarchicalRefiner
|
||||
|
||||
refiner = TalkHierarchicalRefiner(
|
||||
agent_name="ContentRefiner"
|
||||
)
|
||||
|
||||
# Refine content
|
||||
result = refiner.refine_with_feedback(
|
||||
original_content="Original content",
|
||||
evaluation_results=evaluation_results
|
||||
)
|
||||
```
|
||||
|
||||
#### TalkHierarchicalSupervisor
|
||||
Coordinates workflow and manages structured communication.
|
||||
|
||||
```python
|
||||
from swarms.agents.talk_hierarchical_agents import TalkHierarchicalSupervisor
|
||||
|
||||
supervisor = TalkHierarchicalSupervisor(
|
||||
agent_name="WorkflowSupervisor"
|
||||
)
|
||||
|
||||
# Coordinate workflow
|
||||
decision = supervisor.coordinate_workflow(
|
||||
task="Current task",
|
||||
current_state=workflow_state
|
||||
)
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Usage
|
||||
|
||||
```python
|
||||
from swarms.structs.talk_hierarchical_swarm import TalkHierarchicalSwarm
|
||||
|
||||
# Create the swarm
|
||||
swarm = TalkHierarchicalSwarm(
|
||||
name="DocumentationSwarm",
|
||||
max_loops=3,
|
||||
verbose=True
|
||||
)
|
||||
|
||||
# Run a task
|
||||
result = swarm.run(
|
||||
"Create comprehensive API documentation for a Python library"
|
||||
)
|
||||
|
||||
print(f"Final Result: {result['final_result']}")
|
||||
print(f"Total Loops: {result['total_loops']}")
|
||||
```
|
||||
|
||||
### Advanced Configuration
|
||||
|
||||
```python
|
||||
from swarms.agents.talk_hierarchical_agents import (
|
||||
TalkHierarchicalGenerator,
|
||||
TalkHierarchicalEvaluator,
|
||||
TalkHierarchicalRefiner,
|
||||
TalkHierarchicalSupervisor
|
||||
)
|
||||
|
||||
# Create specialized agents
|
||||
generator = TalkHierarchicalGenerator(
|
||||
agent_name="TechWriter",
|
||||
model_name="gpt-4o-mini"
|
||||
)
|
||||
|
||||
evaluator1 = TalkHierarchicalEvaluator(
|
||||
agent_name="AccuracyChecker",
|
||||
evaluation_criteria=["accuracy", "technical_correctness"]
|
||||
)
|
||||
|
||||
evaluator2 = TalkHierarchicalEvaluator(
|
||||
agent_name="ClarityChecker",
|
||||
evaluation_criteria=["clarity", "readability"]
|
||||
)
|
||||
|
||||
refiner = TalkHierarchicalRefiner(
|
||||
agent_name="ContentImprover"
|
||||
)
|
||||
|
||||
supervisor = TalkHierarchicalSupervisor(
|
||||
agent_name="ProjectManager"
|
||||
)
|
||||
|
||||
# Create swarm with custom agents
|
||||
swarm = TalkHierarchicalSwarm(
|
||||
name="CustomSwarm",
|
||||
supervisor=supervisor,
|
||||
generators=[generator],
|
||||
evaluators=[evaluator1, evaluator2],
|
||||
refiners=[refiner],
|
||||
max_loops=5,
|
||||
quality_threshold=8.5
|
||||
)
|
||||
```
|
||||
|
||||
### Structured Communication Example
|
||||
|
||||
```python
|
||||
# Send structured message
|
||||
structured_msg = swarm.send_structured_message(
|
||||
sender="Supervisor",
|
||||
recipient="Generator",
|
||||
message="Create a technical blog post about machine learning",
|
||||
background="Target audience: software engineers with basic ML knowledge",
|
||||
intermediate_output="Previous discussion covered AI fundamentals"
|
||||
)
|
||||
|
||||
print(f"Message: {structured_msg.message}")
|
||||
print(f"Background: {structured_msg.background}")
|
||||
print(f"Intermediate Output: {structured_msg.intermediate_output}")
|
||||
```
|
||||
|
||||
### Hierarchical Evaluation Example
|
||||
|
||||
```python
|
||||
# Run hierarchical evaluation
|
||||
evaluation_results = swarm.run_hierarchical_evaluation(
|
||||
content="Content to evaluate",
|
||||
evaluation_criteria=["accuracy", "completeness", "clarity", "relevance"]
|
||||
)
|
||||
|
||||
for result in evaluation_results:
|
||||
print(f"Evaluator: {result.evaluator_name}")
|
||||
print(f"Criterion: {result.criterion}")
|
||||
print(f"Score: {result.score}/10")
|
||||
print(f"Feedback: {result.feedback}")
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
||||
### TalkHierarchicalSwarm Parameters
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `name` | str | "TalkHierarchicalSwarm" | Name of the swarm |
|
||||
| `description` | str | "Talk Structurally, Act Hierarchically Framework" | Description |
|
||||
| `supervisor` | Agent | None | Main supervisor agent |
|
||||
| `generators` | List[Agent] | [] | List of generator agents |
|
||||
| `evaluators` | List[Agent] | [] | List of evaluator agents |
|
||||
| `refiners` | List[Agent] | [] | List of refiner agents |
|
||||
| `evaluation_supervisor` | Agent | None | Evaluation team supervisor |
|
||||
| `max_loops` | int | 3 | Maximum refinement loops |
|
||||
| `output_type` | OutputType | "dict-all-except-first" | Output format |
|
||||
| `supervisor_name` | str | "Supervisor" | Supervisor agent name |
|
||||
| `evaluation_supervisor_name` | str | "EvaluationSupervisor" | Evaluation supervisor name |
|
||||
| `verbose` | bool | False | Enable verbose logging |
|
||||
| `enable_structured_communication` | bool | True | Enable structured communication |
|
||||
| `enable_hierarchical_evaluation` | bool | True | Enable hierarchical evaluation |
|
||||
| `shared_memory` | bool | True | Enable shared memory |
|
||||
|
||||
### Evaluation Criteria
|
||||
|
||||
Common evaluation criteria include:
|
||||
|
||||
- **Accuracy**: Factual correctness and precision
|
||||
- **Completeness**: Coverage of required topics
|
||||
- **Clarity**: Readability and understandability
|
||||
- **Relevance**: Appropriateness to the task
|
||||
- **Coherence**: Logical flow and organization
|
||||
- **Technical Correctness**: Proper technical details
|
||||
- **Engagement**: Interest and appeal to audience
|
||||
|
||||
## Best Practices
|
||||
|
||||
### 1. Agent Configuration
|
||||
- Use specialized agents for specific roles
|
||||
- Configure evaluation criteria based on task requirements
|
||||
- Set appropriate quality thresholds for your use case
|
||||
|
||||
### 2. Communication Structure
|
||||
- Always provide clear, specific messages (M_ij)
|
||||
- Include relevant background context (B_ij)
|
||||
- Pass meaningful intermediate outputs (I_ij)
|
||||
|
||||
### 3. Evaluation Setup
|
||||
- Use multiple evaluators with different criteria
|
||||
- Ensure evaluation criteria are well-defined
|
||||
- Set appropriate confidence thresholds
|
||||
|
||||
### 4. Workflow Management
|
||||
- Monitor conversation history for debugging
|
||||
- Adjust max_loops based on task complexity
|
||||
- Use quality thresholds to prevent unnecessary iterations
|
||||
|
||||
## Performance Considerations
|
||||
|
||||
### Optimization Tips
|
||||
- Use appropriate model sizes for different agent roles
|
||||
- Implement caching for repeated evaluations
|
||||
- Monitor API usage and costs
|
||||
- Use parallel evaluation when possible
|
||||
|
||||
### Quality vs. Speed Trade-offs
|
||||
- Higher quality thresholds require more iterations
|
||||
- More evaluators provide better feedback but increase latency
|
||||
- Structured communication adds overhead but improves results
|
||||
|
||||
## Error Handling
|
||||
|
||||
The framework includes comprehensive error handling:
|
||||
|
||||
```python
|
||||
try:
|
||||
result = swarm.run(task)
|
||||
except Exception as e:
|
||||
print(f"Error in TalkHierarchical workflow: {e}")
|
||||
# Handle error appropriately
|
||||
```
|
||||
|
||||
## Integration with Other Swarms
|
||||
|
||||
The TalkHierarchical framework can be integrated with other Swarms components:
|
||||
|
||||
```python
|
||||
from swarms.structs.talk_hierarchical_swarm import TalkHierarchicalSwarm
|
||||
from swarms.structs.hiearchical_swarm import HierarchicalSwarm
|
||||
|
||||
# Use TalkHierarchical for content generation
|
||||
talk_hier = TalkHierarchicalSwarm()
|
||||
|
||||
# Use HierarchicalSwarm for task orchestration
|
||||
hierarchical = HierarchicalSwarm(
|
||||
director=talk_hier.supervisor,
|
||||
agents=[talk_hier.generators, talk_hier.evaluators, talk_hier.refiners]
|
||||
)
|
||||
```
|
||||
|
||||
## Research Background
|
||||
|
||||
This implementation is based on the research paper:
|
||||
- **Title**: "Talk Structurally, Act Hierarchically: A Collaborative Framework for LLM Multi-Agent Systems"
|
||||
- **Authors**: Zhao Wang, Moriyama Sota, Wei-Yao Wang, Briti Gangopadhyay, Shingo Takamatsu
|
||||
- **arXiv**: 2502.11098
|
||||
- **Year**: 2025
|
||||
|
||||
The framework addresses key challenges in multi-agent systems:
|
||||
- Context-poor communication leading to misunderstandings
|
||||
- Sequential evaluation causing bias and incomplete feedback
|
||||
- Lack of structured coordination between agents
|
||||
|
||||
## Citation
|
||||
|
||||
If you use this framework in your research, please cite:
|
||||
|
||||
```bibtex
|
||||
@misc{wang2025talkhier,
|
||||
title={Talk Structurally, Act Hierarchically: A Collaborative Framework for LLM Multi-Agent Systems},
|
||||
author={Zhao Wang and Sota Moriyama and Wei-Yao Wang and Briti Gangopadhyay and Shingo Takamatsu},
|
||||
year={2025},
|
||||
eprint={2502.11098},
|
||||
archivePrefix={arXiv},
|
||||
primaryClass={cs.AI}
|
||||
}
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions to improve the TalkHierarchical framework are welcome! Please:
|
||||
|
||||
1. Follow the existing code style and patterns
|
||||
2. Add comprehensive tests for new features
|
||||
3. Update documentation for any changes
|
||||
4. Ensure backward compatibility when possible
|
||||
|
||||
## Support
|
||||
|
||||
For questions and support:
|
||||
- Check the examples in `examples/multi_agent/talk_hierarchical_example.py`
|
||||
- Review the source code in `swarms/structs/talk_hierarchical_swarm.py`
|
||||
- Examine the specialized agents in `swarms/agents/talk_hierarchical_agents.py`
|
Loading…
Reference in new issue