219 lines
6.4 KiB
Markdown
219 lines
6.4 KiB
Markdown
|
|
# DELEGATE TO BOT
|
||
|
|
|
||
|
|
Delegates a task or message to another bot in a multi-agent system. This enables agent-to-agent communication using the A2A (Agent-to-Agent) protocol.
|
||
|
|
|
||
|
|
## Syntax
|
||
|
|
|
||
|
|
```basic
|
||
|
|
DELEGATE "message" TO BOT "botname"
|
||
|
|
DELEGATE "message" TO BOT "botname" TIMEOUT seconds
|
||
|
|
result = DELEGATE "message" TO BOT "botname"
|
||
|
|
```
|
||
|
|
|
||
|
|
## Parameters
|
||
|
|
|
||
|
|
| Parameter | Type | Description |
|
||
|
|
|-----------|------|-------------|
|
||
|
|
| `message` | String | The task or message to send to the target bot |
|
||
|
|
| `botname` | String | Name of the target bot to delegate to |
|
||
|
|
| `seconds` | Number | Optional timeout in seconds (default: 30) |
|
||
|
|
|
||
|
|
## Description
|
||
|
|
|
||
|
|
`DELEGATE TO BOT` sends a message or task to another bot and optionally waits for a response. This is the core keyword for multi-agent orchestration, enabling:
|
||
|
|
|
||
|
|
- **Task specialization** - Route tasks to specialized bots
|
||
|
|
- **Agent collaboration** - Multiple bots working together
|
||
|
|
- **Workload distribution** - Spread tasks across agents
|
||
|
|
- **Expert consultation** - Query domain-specific bots
|
||
|
|
|
||
|
|
The delegation uses the A2A (Agent-to-Agent) protocol which handles:
|
||
|
|
- Message routing between agents
|
||
|
|
- Correlation IDs for request/response matching
|
||
|
|
- Timeout handling
|
||
|
|
- Error propagation
|
||
|
|
|
||
|
|
## Examples
|
||
|
|
|
||
|
|
### Basic Delegation
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Delegate a translation task to a specialized bot
|
||
|
|
DELEGATE "Translate 'Hello World' to Portuguese" TO BOT "translator-bot"
|
||
|
|
TALK "Translation request sent!"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Get Response from Delegated Bot
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Ask the finance bot for a calculation
|
||
|
|
result = DELEGATE "Calculate ROI for investment of $10000 with 12% annual return over 5 years" TO BOT "finance-bot"
|
||
|
|
TALK "The finance expert says: " + result
|
||
|
|
```
|
||
|
|
|
||
|
|
### Delegation with Timeout
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Long-running task with extended timeout
|
||
|
|
result = DELEGATE "Analyze this quarterly report and provide insights" TO BOT "analyst-bot" TIMEOUT 120
|
||
|
|
TALK result
|
||
|
|
```
|
||
|
|
|
||
|
|
### Multi-Bot Workflow
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Customer support escalation workflow
|
||
|
|
issue = "Customer reports billing discrepancy"
|
||
|
|
|
||
|
|
' First, check with billing bot
|
||
|
|
billingInfo = DELEGATE "Check account status for customer " + customerid TO BOT "billing-bot" TIMEOUT 30
|
||
|
|
|
||
|
|
IF INSTR(billingInfo, "discrepancy") > 0 THEN
|
||
|
|
' Escalate to senior support
|
||
|
|
resolution = DELEGATE "Priority: " + issue + " Details: " + billingInfo TO BOT "senior-support-bot" TIMEOUT 60
|
||
|
|
TALK "A senior agent is handling your case: " + resolution
|
||
|
|
ELSE
|
||
|
|
TALK "Your account looks fine: " + billingInfo
|
||
|
|
END IF
|
||
|
|
```
|
||
|
|
|
||
|
|
### Parallel Expert Consultation
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Get opinions from multiple specialized bots
|
||
|
|
question = "What's the best approach for this investment portfolio?"
|
||
|
|
|
||
|
|
' Delegate to multiple experts
|
||
|
|
stockAnalysis = DELEGATE question TO BOT "stock-analyst"
|
||
|
|
bondAnalysis = DELEGATE question TO BOT "bond-analyst"
|
||
|
|
riskAssessment = DELEGATE question TO BOT "risk-assessor"
|
||
|
|
|
||
|
|
' Combine insights
|
||
|
|
BEGIN TALK
|
||
|
|
**Investment Analysis Summary**
|
||
|
|
|
||
|
|
📈 **Stock Analysis:** {stockAnalysis}
|
||
|
|
|
||
|
|
📊 **Bond Analysis:** {bondAnalysis}
|
||
|
|
|
||
|
|
⚠️ **Risk Assessment:** {riskAssessment}
|
||
|
|
END TALK
|
||
|
|
```
|
||
|
|
|
||
|
|
### Conditional Routing
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Route to appropriate specialist based on query type
|
||
|
|
HEAR userquery
|
||
|
|
|
||
|
|
' Use LLM to classify the query
|
||
|
|
category = LLM "Classify this query into one of: billing, technical, sales, general. Query: " + userquery
|
||
|
|
|
||
|
|
SWITCH category
|
||
|
|
CASE "billing"
|
||
|
|
response = DELEGATE userquery TO BOT "billing-bot"
|
||
|
|
CASE "technical"
|
||
|
|
response = DELEGATE userquery TO BOT "tech-support-bot"
|
||
|
|
CASE "sales"
|
||
|
|
response = DELEGATE userquery TO BOT "sales-bot"
|
||
|
|
CASE ELSE
|
||
|
|
response = DELEGATE userquery TO BOT "general-assistant"
|
||
|
|
END SWITCH
|
||
|
|
|
||
|
|
TALK response
|
||
|
|
```
|
||
|
|
|
||
|
|
### Chain of Delegation
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Research assistant that coordinates multiple bots
|
||
|
|
topic = "renewable energy trends 2025"
|
||
|
|
|
||
|
|
' Step 1: Gather data
|
||
|
|
rawData = DELEGATE "Search for recent data on " + topic TO BOT "research-bot" TIMEOUT 60
|
||
|
|
|
||
|
|
' Step 2: Analyze data
|
||
|
|
analysis = DELEGATE "Analyze this data and identify key trends: " + rawData TO BOT "analyst-bot" TIMEOUT 45
|
||
|
|
|
||
|
|
' Step 3: Generate report
|
||
|
|
report = DELEGATE "Create an executive summary from this analysis: " + analysis TO BOT "writer-bot" TIMEOUT 30
|
||
|
|
|
||
|
|
TALK report
|
||
|
|
```
|
||
|
|
|
||
|
|
## A2A Protocol Details
|
||
|
|
|
||
|
|
When you use `DELEGATE TO BOT`, the system creates an A2A message with:
|
||
|
|
|
||
|
|
| Field | Description |
|
||
|
|
|-------|-------------|
|
||
|
|
| `from_agent` | The current bot's identifier |
|
||
|
|
| `to_agent` | The target bot name |
|
||
|
|
| `message_type` | `Delegate` for task delegation |
|
||
|
|
| `payload` | The message content |
|
||
|
|
| `correlation_id` | Unique ID to match response |
|
||
|
|
| `timestamp` | When the message was sent |
|
||
|
|
|
||
|
|
## Error Handling
|
||
|
|
|
||
|
|
```basic
|
||
|
|
' Handle delegation failures gracefully
|
||
|
|
ON ERROR RESUME NEXT
|
||
|
|
|
||
|
|
result = DELEGATE "Process payment" TO BOT "payment-bot" TIMEOUT 30
|
||
|
|
|
||
|
|
IF ERROR THEN
|
||
|
|
TALK "I'm having trouble reaching our payment system. Please try again in a moment."
|
||
|
|
' Log the error
|
||
|
|
PRINT "Delegation failed: " + ERROR_MESSAGE
|
||
|
|
ELSE
|
||
|
|
TALK result
|
||
|
|
END IF
|
||
|
|
```
|
||
|
|
|
||
|
|
## Related Keywords
|
||
|
|
|
||
|
|
| Keyword | Description |
|
||
|
|
|---------|-------------|
|
||
|
|
| [`ADD BOT`](./keyword-add-bot.md) | Add a bot to the current session |
|
||
|
|
| [`BROADCAST TO BOTS`](./keyword-broadcast-to-bots.md) | Send message to all bots |
|
||
|
|
| [`TRANSFER CONVERSATION`](./keyword-transfer-conversation.md) | Hand off conversation to another bot |
|
||
|
|
|
||
|
|
## Config.csv Options
|
||
|
|
|
||
|
|
```csv
|
||
|
|
name,value
|
||
|
|
a2a-enabled,true
|
||
|
|
a2a-timeout,30
|
||
|
|
a2a-max-hops,5
|
||
|
|
a2a-retry-count,3
|
||
|
|
```
|
||
|
|
|
||
|
|
| Option | Default | Description |
|
||
|
|
|--------|---------|-------------|
|
||
|
|
| `a2a-enabled` | `true` | Enable agent-to-agent communication |
|
||
|
|
| `a2a-timeout` | `30` | Default timeout in seconds |
|
||
|
|
| `a2a-max-hops` | `5` | Maximum delegation chain depth |
|
||
|
|
| `a2a-retry-count` | `3` | Number of retry attempts on failure |
|
||
|
|
|
||
|
|
## Best Practices
|
||
|
|
|
||
|
|
1. **Set appropriate timeouts** - Long tasks need longer timeouts
|
||
|
|
2. **Handle failures gracefully** - Always have a fallback
|
||
|
|
3. **Avoid circular delegation** - Bot A → Bot B → Bot A
|
||
|
|
4. **Keep delegation chains short** - Max 3-4 hops recommended
|
||
|
|
5. **Log delegations** - Helps with debugging multi-agent flows
|
||
|
|
6. **Use descriptive bot names** - `billing-bot` not `bot2`
|
||
|
|
|
||
|
|
## Limitations
|
||
|
|
|
||
|
|
- Maximum message size: 1MB
|
||
|
|
- Maximum timeout: 300 seconds (5 minutes)
|
||
|
|
- Maximum concurrent delegations: 10 per session
|
||
|
|
- Target bot must be registered and active
|
||
|
|
|
||
|
|
## See Also
|
||
|
|
|
||
|
|
- [Multi-Agent Orchestration](../chapter-11-features/multi-agent-orchestration.md) - Complete multi-agent guide
|
||
|
|
- [A2A Protocol](../chapter-11-features/a2a-protocol.md) - Technical protocol details
|
||
|
|
- [Bot Configuration](../chapter-08-config/parameters.md) - Bot setup
|