100 lines
3.1 KiB
Markdown
100 lines
3.1 KiB
Markdown
# Cambios realizados: Patrón Registry para Tools
|
|
|
|
## ✅ Cambios completados
|
|
|
|
### 1. **tools.py** - Limpiado ✓
|
|
**Antes:** Contenía herramientas de ejemplo (Calculator, Greeter, Weather, Time)
|
|
**Ahora:** Vacío y listo para tus herramientas personalizadas
|
|
|
|
```python
|
|
"""
|
|
Implementaciones concretas de herramientas del agente.
|
|
Define aquí tus herramientas personalizadas que extienden BaseTool
|
|
"""
|
|
|
|
from typing import Any, Dict
|
|
from .tool_registry import BaseTool
|
|
|
|
# Define aquí tus herramientas personalizadas
|
|
# Ejemplo: class MiHerramienta(BaseTool): ...
|
|
```
|
|
|
|
### 2. **__init__.py** - Actualizado ✓
|
|
**Antes:** Importaba CalculatorTool, GreeterTool
|
|
**Ahora:** Solo exporta BaseTool y ToolRegistry
|
|
|
|
```python
|
|
from .tool_registry import ToolRegistry, BaseTool
|
|
|
|
__all__ = ["ToolRegistry", "BaseTool"]
|
|
```
|
|
|
|
### 3. **tool_registry.py** - Mantiene la infraestructura ✓
|
|
Contiene:
|
|
- `BaseTool`: Clase abstracta para todas las tools
|
|
- `ToolRegistry`: Clase para registrar y gestionar tools
|
|
|
|
### 4. **Documentación - Nueva ✓**
|
|
Creado: `TOOLS_GUIDE.md` con ejemplos completos de cómo:
|
|
- Crear herramientas personalizadas
|
|
- Usar el ToolRegistry
|
|
- Integrar con el Agent
|
|
- Ejemplos de tools para gestionar agenda
|
|
|
|
## 📁 Estructura final
|
|
|
|
```
|
|
src/naliiabot/bot/tools/
|
|
├── __init__.py # Exporta ToolRegistry y BaseTool
|
|
├── tool_registry.py # Base + Registry (infraestructura)
|
|
└── tools.py # TUS HERRAMIENTAS AQUÍ (vacío, listo para usar)
|
|
```
|
|
|
|
## 🚀 Próximos pasos
|
|
|
|
1. **Define tus herramientas** en `tools.py`:
|
|
```python
|
|
class ObtenerAgendaTool(BaseTool):
|
|
@property
|
|
def name(self) -> str:
|
|
return "obtener_agenda"
|
|
# ... más detalles en TOOLS_GUIDE.md
|
|
```
|
|
|
|
2. **Registra y usa** en tu código:
|
|
```python
|
|
from src.naliiabot.bot.tools import ToolRegistry
|
|
from src.naliiabot.bot.tools.tools import ObtenerAgendaTool
|
|
|
|
registry = ToolRegistry()
|
|
registry.register(ObtenerAgendaTool())
|
|
tools = registry.get_all_tools_as_langchain()
|
|
```
|
|
|
|
3. **Lee TOOLS_GUIDE.md** para ejemplos detallados con:
|
|
- Herramientas para gestión de agenda
|
|
- Cómo validar argumentos
|
|
- Patrones recomendados
|
|
- Testing de tools
|
|
|
|
## 📚 Referencias
|
|
|
|
- [TOOLS_GUIDE.md](./TOOLS_GUIDE.md) - Guía completa con ejemplos
|
|
- [tool_registry.py](./src/naliiabot/bot/tools/tool_registry.py) - Código de la infraestructura
|
|
- [tests/test_naliia_agent_tools.py](./tests/test_naliia_agent_tools.py) - Tests de tools
|
|
|
|
## ✨ Beneficios del patrón Registry
|
|
|
|
✅ **Centralizado**: Un único lugar para todas las tools
|
|
✅ **Extensible**: Fácil agregar nuevas tools
|
|
✅ **Testeable**: Cada tool se prueba de forma independiente
|
|
✅ **Mantenible**: Cambios aislados en cada tool
|
|
✅ **Reutilizable**: Mismo registry en múltiples agentes
|
|
✅ **Validado**: Schema automático para argumentos
|
|
✅ **Documentado**: Inspección de tools disponibles
|
|
|
|
---
|
|
|
|
**Nota:** Las herramientas de ejemplo (Calculator, Greeter, Weather, Time) han sido removidas.
|
|
Ahora el proyecto está limpio y listo para que implementes las tools que necesitas.
|