177 lines
3.7 KiB
Markdown
177 lines
3.7 KiB
Markdown
|
|
# Tool Management Quick Reference
|
||
|
|
|
||
|
|
## 🚀 Quick Start
|
||
|
|
|
||
|
|
### Add a Tool
|
||
|
|
```basic
|
||
|
|
ADD_TOOL ".gbdialog/enrollment.bas"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Remove a Tool
|
||
|
|
```basic
|
||
|
|
REMOVE_TOOL ".gbdialog/enrollment.bas"
|
||
|
|
```
|
||
|
|
|
||
|
|
### List Active Tools
|
||
|
|
```basic
|
||
|
|
LIST_TOOLS
|
||
|
|
```
|
||
|
|
|
||
|
|
### Clear All Tools
|
||
|
|
```basic
|
||
|
|
CLEAR_TOOLS
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 Common Patterns
|
||
|
|
|
||
|
|
### Multiple Tools in One Session
|
||
|
|
```basic
|
||
|
|
ADD_TOOL ".gbdialog/enrollment.bas"
|
||
|
|
ADD_TOOL ".gbdialog/payment.bas"
|
||
|
|
ADD_TOOL ".gbdialog/support.bas"
|
||
|
|
LIST_TOOLS
|
||
|
|
```
|
||
|
|
|
||
|
|
### Progressive Loading
|
||
|
|
```basic
|
||
|
|
REM Start with basic tool
|
||
|
|
ADD_TOOL ".gbdialog/greeting.bas"
|
||
|
|
|
||
|
|
REM Add more as needed
|
||
|
|
IF user_needs_help THEN
|
||
|
|
ADD_TOOL ".gbdialog/support.bas"
|
||
|
|
END IF
|
||
|
|
```
|
||
|
|
|
||
|
|
### Tool Rotation
|
||
|
|
```basic
|
||
|
|
REM Switch tools for different phases
|
||
|
|
REMOVE_TOOL ".gbdialog/onboarding.bas"
|
||
|
|
ADD_TOOL ".gbdialog/main_menu.bas"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ⚡ Key Features
|
||
|
|
|
||
|
|
- ✅ **Multiple tools per session** - No limit on number of tools
|
||
|
|
- ✅ **Dynamic management** - Add/remove during conversation
|
||
|
|
- ✅ **Session isolation** - Each session has independent tool list
|
||
|
|
- ✅ **Persistent** - Survives across requests
|
||
|
|
- ✅ **Real database** - Fully implemented with Diesel ORM
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔍 What Happens Behind the Scenes
|
||
|
|
|
||
|
|
1. **ADD_TOOL** → Validates tool exists → Inserts into `session_tool_associations` table
|
||
|
|
2. **Prompt Processing** → Loads all tools for session → LLM can call them
|
||
|
|
3. **REMOVE_TOOL** → Deletes association → Tool no longer available
|
||
|
|
4. **CLEAR_TOOLS** → Removes all associations for session
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Database Table
|
||
|
|
|
||
|
|
```sql
|
||
|
|
CREATE TABLE session_tool_associations (
|
||
|
|
id TEXT PRIMARY KEY,
|
||
|
|
session_id TEXT NOT NULL,
|
||
|
|
tool_name TEXT NOT NULL,
|
||
|
|
added_at TEXT NOT NULL,
|
||
|
|
UNIQUE(session_id, tool_name)
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 Use Cases
|
||
|
|
|
||
|
|
### Customer Service Bot
|
||
|
|
```basic
|
||
|
|
ADD_TOOL ".gbdialog/faq.bas"
|
||
|
|
ADD_TOOL ".gbdialog/ticket_system.bas"
|
||
|
|
ADD_TOOL ".gbdialog/escalation.bas"
|
||
|
|
```
|
||
|
|
|
||
|
|
### E-commerce Bot
|
||
|
|
```basic
|
||
|
|
ADD_TOOL ".gbdialog/product_search.bas"
|
||
|
|
ADD_TOOL ".gbdialog/cart_management.bas"
|
||
|
|
ADD_TOOL ".gbdialog/checkout.bas"
|
||
|
|
ADD_TOOL ".gbdialog/order_tracking.bas"
|
||
|
|
```
|
||
|
|
|
||
|
|
### HR Bot
|
||
|
|
```basic
|
||
|
|
ADD_TOOL ".gbdialog/leave_request.bas"
|
||
|
|
ADD_TOOL ".gbdialog/payroll_info.bas"
|
||
|
|
ADD_TOOL ".gbdialog/benefits.bas"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ⚠️ Important Notes
|
||
|
|
|
||
|
|
- Tool must be compiled and in `basic_tools` table
|
||
|
|
- Tool must have `is_active = 1`
|
||
|
|
- Tool must belong to current bot (`bot_id` match)
|
||
|
|
- Path can be with or without `.gbdialog/` prefix
|
||
|
|
- Tool names auto-extracted: `enrollment.bas` → `enrollment`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🐛 Common Errors
|
||
|
|
|
||
|
|
### "Tool not available"
|
||
|
|
- **Cause**: Tool not compiled or inactive
|
||
|
|
- **Fix**: Compile the `.bas` file first
|
||
|
|
|
||
|
|
### "Database connection error"
|
||
|
|
- **Cause**: Can't acquire DB lock
|
||
|
|
- **Fix**: Check database health
|
||
|
|
|
||
|
|
### "Timeout"
|
||
|
|
- **Cause**: Operation took >10 seconds
|
||
|
|
- **Fix**: Check database performance
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 💡 Pro Tips
|
||
|
|
|
||
|
|
1. **Verify additions**: Use `LIST_TOOLS` after adding tools
|
||
|
|
2. **Clean up**: Remove unused tools to improve LLM performance
|
||
|
|
3. **Session-specific**: Tools don't carry over to other sessions
|
||
|
|
4. **Backward compatible**: Legacy `current_tool` still works
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📚 More Information
|
||
|
|
|
||
|
|
See `TOOL_MANAGEMENT.md` for comprehensive documentation including:
|
||
|
|
- Complete API reference
|
||
|
|
- Security details
|
||
|
|
- Performance optimization
|
||
|
|
- Testing strategies
|
||
|
|
- Troubleshooting guide
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔗 Related Files
|
||
|
|
|
||
|
|
- **Example Script**: `examples/tool_management_example.bas`
|
||
|
|
- **Implementation**: `src/basic/keywords/add_tool.rs`
|
||
|
|
- **Schema**: `migrations/6.0.3.sql`
|
||
|
|
- **Models**: `src/shared/models.rs`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📞 Support
|
||
|
|
|
||
|
|
For issues or questions:
|
||
|
|
1. Check the full documentation in `TOOL_MANAGEMENT.md`
|
||
|
|
2. Review the example script in `examples/`
|
||
|
|
3. Check database with: `SELECT * FROM session_tool_associations WHERE session_id = 'your-id';`
|