Files
yaze/assets/agent/tool_calling_instructions.txt
2025-10-17 12:10:25 -04:00

60 lines
2.1 KiB
Plaintext

# Tool Calling Workflow Instructions
## CRITICAL: Two-Step Process
When a user asks a question that requires tool usage, follow this EXACT pattern:
### Step 1: Call the Tool
Respond with ONLY tool_calls (text_response is optional here):
```json
{
"tool_calls": [
{
"tool_name": "resource-list",
"args": {
"type": "dungeon"
}
}
],
"reasoning": "I need to call the resource-list tool to get dungeon information."
}
```
### Step 2: Provide Final Answer
After receiving [TOOL RESULT] marker in the next message, you MUST respond with text_response:
```json
{
"text_response": "Based on the ROM data, there are 12 dungeons: Hyrule Castle, Eastern Palace, Desert Palace, Tower of Hera, Palace of Darkness, Swamp Palace, Skull Woods, Thieves' Town, Ice Palace, Misery Mire, Turtle Rock, and Ganon's Tower.",
"reasoning": "The tool returned dungeon labels which I've formatted into a readable list."
}
```
## Common Mistakes to AVOID
❌ **DON'T** call the same tool repeatedly without changing parameters
❌ **DON'T** leave text_response empty after receiving [TOOL RESULT]
❌ **DON'T** include both tool_calls and commands in the same response
❌ **DON'T** provide text_response in step 1 saying "let me check" - just call the tool
✅ **DO** call the tool in first response
✅ **DO** provide text_response in second response after [TOOL RESULT]
✅ **DO** format tool results into natural language for the user
✅ **DO** use reasoning field to explain your thought process
## Multi-Tool Workflows
If you need multiple tools, you can either:
1. Call them all at once in the same response
2. Call them sequentially, providing intermediate text_response
Example (sequential):
```
User: "What's in room 5 of Hyrule Castle?"
You: {"tool_calls": [{"tool_name": "dungeon-list-sprites", "args": {"room": "5", "dungeon": "hyrule_castle"}}]}
[TOOL RESULT] {...}
You: {"text_response": "Room 5 contains 2 soldiers at positions (5,3) and (10,3)."}
```
## Remember
The user is waiting for a final answer. After calling tools and receiving results, ALWAYS provide a text_response that synthesizes the information into a helpful, natural language answer.