Herramientas y kits de herramientas
Dale a los agentes la capacidad de interactuar con el contexto y los servicios de tu aplicación.
El ciclo principal del agente consiste en llamar a un modelo, permitirle elegir qué herramientas ejecutar y luego finalizar cuando ya no se necesitan más herramientas para proporcionar una respuesta:

Qué es una herramienta
Las herramientas permiten a los Agentes ir más allá de generar texto al facilitar la interacción con los servicios de tu aplicación o con APIs externas.
Piensa en las herramientas como funciones especiales que tu agente de IA puede usar cuando necesita realizar tareas específicas. Le permiten ampliar las capacidades de tu Agente dándole acceso a funciones concretas que puede invocar dentro de tu código.
En el YouTubeAgent ejemplo podemos definir una herramienta para hacer que el Agente pueda recuperar la transcripción del video de YouTube, para así crear un resumen breve:
Desglosemos el código.
Introdujimos el nuevo método tools() en la clase Agent. Se espera que este método devuelva un array de objetos Tool que la IA podrá usar si es necesario.
En este ejemplo devolvemos un array de solo una herramienta, llamada get_transcription.
Observa que la ToolProperty que definimos debe coincidir con la firma de la función que uses como callable. La callable recibe los argumentos $video_url y el nombre de la propiedad es exactamente "video_url".
Lo más importante son el nombre y la descripción que le das a la herramienta y a sus propiedades. Toda esta información se enviará al LLM en lenguaje natural. Cuanto más explícito y claro seas, más probable será que el LLM entienda cuándo, si y por qué conviene usar la herramienta.
Una vez que el Agente decide usar una herramienta, se ejecuta la función callable. Aquí podemos implementar la lógica para recuperar la transcripción del video y devolver la información al LLM.
Neuron te ofrece estas APIs claras y sencillas y automatiza todas las interacciones subyacentes con el LLM. Una vez que entiendes el concepto, inmediatamente se abre la posibilidad de conectar prácticamente cualquier cosa que quieras al Agente. Poder ejecutar funciones locales te permite invocar cualquier API externa o componente de la aplicación.
Herramientas personalizadas
Gracias a la arquitectura modular de Neuron, las herramientas son componentes que implementan ToolInterface . Eres libre de crear clases de herramientas empaquetadas previamente para que el agente pueda realizar acciones específicas, y publicarlas como paquetes composer externos o enviar un PR a nuestro repositorio para que se integren en el framework principal.
Para crear una nueva herramienta ejecuta el siguiente comando de consola:
Puedes personalizar la estructura de la herramienta con el siguiente código:
Nombre y descripción de la herramienta: Define el nombre y la descripción de la herramienta en el constructor de la herramienta. Invierte en ingeniería de prompts para ayudar al modelo a tomar mejores decisiones.
El método properties: Implementa este método para devolver la lista de propiedades que espera la herramienta.
El __invoke método: Aquí necesitas implementar la lógica de la herramienta y devolver un resultado que será enviado de vuelta al modelo. El método mágico de PHP __invoke se usa por defecto.
Observa cómo el __invoke() método acepta los mismos argumentos definidos por la ToolProperty . En este ejemplo estoy usando un servicio externo para recuperar la transcripción del video de YouTube llamado Supadata.ai.
Puedes adjuntar la herramienta en la clase del agente como de costumbre:
GetTranscriptions es solo un ejemplo. Eventualmente puedes implementar otras herramientas para hacer que el Agente pueda recuperar otros metadatos del video y mejorar sus capacidades de análisis de video.
Finalmente puedes hablar con el agente pidiéndole el resumen de un video de YouTube.
Máximo de ejecuciones
Los agentes cuentan con un mecanismo de seguridad que rastrea el número de veces que se invoca una herramienta durante una sesión de ejecución. Si el agente supera este límite, la ejecución se interrumpe y se lanza ToolRunsExceededException . Por defecto el límite es de 10 llamadas, y se cuenta para cada herramienta de forma individual.
Puedes personalizar este valor con el método toolMaxRuns() a nivel de agente, o usar setMaxRuns() a nivel de la herramienta. Establecer el máximo de intentos en una sola herramienta tiene prioridad sobre la configuración global.
Visibilidad
Puedes condicionar la disponibilidad de las herramientas según reglas personalizadas. La clase Tool te proporciona el método visible para determinar si el agente debería siquiera saber que esta herramienta existe:
Si el visible método devuelve false, la herramienta no estará disponible durante la ejecución del agente.
Aprobación de herramientas
Neuron te ofrece compatibilidad total con el patrón human in the loop, incluida la aprobación de herramientas. Es diferente de la visibilidad porque la "aprobación" es un guardián en tiempo de ejecución. El framework intercepta la llamada a la herramienta y pausa esperando la decisión final del usuario.
Puedes integrar esta función en tu agente con nuestro ToolApproval middleware incorporado.
MiddlewareBúsqueda de herramientas
Por defecto, cada vez que se invoca al proveedor, todas las herramientas se cargan y se transmiten al LLM de backend. Un agente de producción complejo conectado a correo, calendario, drive, CRM y varios servidores MCP puede alcanzar fácilmente cientos de herramientas, cada una con su nombre, descripción, esquema de parámetros y sugerencias de uso.
La búsqueda de herramientas replantea el catálogo de herramientas como algo que el agente consulta bajo demanda en lugar de algo que lleva en cada solicitud.
MiddlewareSupervisión y depuración
Para ver el interior del ciclo de herramientas puedes conectar tu Agente al panel de supervisión Inspector para ver en tiempo real el flujo de ejecución de las llamadas a herramientas.
Propiedades de la herramienta
Neuron te permite definir el formato de los datos que quieres recibir en la función de la herramienta. Puedes anidar estos objetos unos dentro de otros para definir estructuras de datos complejas.
ToolProperty
Esta clase representa un valor escalar simple como una cadena, un entero o un booleano.
ArrayProperty
El ArrayProperty te permite requerir una lista de elementos con características específicas.
Usa el argumento items para especificar el tipo de dato de los elementos del array. En el ejemplo siguiente pedimos un array de cadenas.
Límites máximos y mínimos
ArrayProperty también te permite definir limitaciones sobre el tamaño del array esperado usando los argumentos minItems y maxItems .
ObjectProperty
De forma similar al ejemplo anterior del array, puedes definir una estructura de datos de objeto:
Entrada estructurada de la herramienta
Si el objeto que quieres tiene muchas propiedades, puedes pasar una clase PHP estructurada a ObjectProperty en lugar de definir el esquema manualmente. Neuron te proporcionará una instancia de esta clase como argumento de entrada de la función de la herramienta:
Así es como se ve la clase Colors:
Herramientas del proveedor
Algunos proveedores ofrecen la posibilidad de usar sus herramientas integradas como web_search, file_search y otras en lugar de depender de servicios externos. Incluso cuando ofrecen este servicio, introducen muchas restricciones al usar estas herramientas. La forma más flexible y fiable de añadir capacidades a tus agentes sigue siendo los sistemas Tools y Toolkit.
Puedes añadir una herramienta del proveedor como de costumbre en el array de herramientas de tu agente:
Actualmente solo OpenAIResponses, Gemini, y Anthropic admiten estas herramientas.
Toolkits
La filosofía detrás del sistema de toolkits de Neuron surgió de una observación fundamental durante el desarrollo de agentes de IA: aunque las herramientas individuales ofrecen capacidades específicas, los agentes de IA del mundo real a menudo requieren conjuntos coordinados de funcionalidades relacionadas.
En lugar de obligar a los desarrolladores a ensamblar manualmente colecciones de herramientas para casos de uso comunes, Neuron introduce los toolkits como una capa de abstracción que transforma cómo pensamos en la composición de capacidades de los agentes. Aquí tienes un ejemplo de cómo puedes añadir un toolkit a un agente:
El enfoque tradicional requiere instanciar cada herramienta individualmente. Imagina que quieres construir agentes que necesiten razonamiento matemático: las herramientas de suma, resta, multiplicación, división y exponenciación deben declararse todas por separado en la configuración de herramientas del agente. Este enfoque granular se vuelve rápidamente inmanejable cuando los agentes requieren conjuntos de funcionalidades completos.
Los toolkits representan la solución de Neuron a esta complejidad, empaquetando herramientas creadas alrededor del mismo ámbito en una sola interfaz coherente que puede adjuntarse a cualquier agente con una sola línea de código.
Aquí tienes un ejemplo de CalculatorToolkit:
El AbstractToolkit la clase base establece una interfaz coherente que todos los toolkits heredan, garantizando un comportamiento predecible en todo el framework.
Directrices
El guidelines() método cumple una función especialmente importante en el desarrollo de agentes: proporciona información contextual que ayuda al modelo de lenguaje subyacente a entender no solo qué herramientas están disponibles, sino cómo deben usarse en conjunto. En el caso de CalculatorToolkit, las directrices sugieren explícitamente que las expresiones matemáticas complejas pueden resolverse mediante operaciones paso a paso, guiando al agente hacia estrategias eficaces de resolución de problemas.
Proporcionar
El provide() método devuelve el array de herramientas incluidas en el toolkit por defecto. Cuando un toolkit se adjunta a un agente, las herramientas individuales quedan disponibles exactamente como si se hubieran añadido por separado, pero sin la sobrecarga cognitiva de gestionar múltiples declaraciones de herramientas.
Filtros
Durante el desarrollo de agentes complejos, con frecuencia me he encontrado con escenarios en los que un toolkit proporciona en su mayoría la funcionalidad correcta pero incluye herramientas que podrían llevar a comportamientos no deseados en contextos específicos, o que simplemente necesitan restringirse y configurarse individualmente.
Excluir
El exclude() método aborda este desafío con elegancia, permitiendo a los desarrolladores adjuntar toolkits completos mientras mantienen un control detallado sobre las capacidades disponibles. Esto resulta especialmente útil cuando trabajas con agentes especializados que necesitan capacidades concretas, pero quieres reducir la probabilidad de un error del agente y disminuir el consumo de tokens.
El mecanismo de exclusión opera a nivel de clase, utilizando nombres de clase completamente calificados para identificar las herramientas que deben eliminarse.
Solo
De la misma forma también puedes usar el método only() para solicitar un subconjunto de las herramientas disponibles en el toolkit.
Con
Siguiendo el mismo patrón, puede que necesites recuperar una instancia de una herramienta específica del toolkit para cambiar su configuración. Puedes hacerlo usando el with() método. Puede pasar el nombre completo de la clase para declarar qué herramienta desea recuperar, y la instancia de la herramienta se inyectará en el callback para que pueda cambiar su configuración y devolverla.
Desde la perspectiva de la extensibilidad, el sistema de toolkits abre oportunidades extraordinarias para la contribución de la comunidad y el crecimiento del ecosistema. La interfaz coherente significa que los desarrolladores externos pueden crear toolkits específicos de dominio que se integren sin problemas con la arquitectura de Neuron. Un desarrollador que construya agentes para aplicaciones financieras podría crear un FinancialToolkit que incluya herramientas para conversión de divisas, cálculo de intereses y evaluación de riesgos. Del mismo modo, un WebScrapingToolkit podría empaquetar herramientas de solicitudes HTTP, capacidades de análisis de HTML y utilidades de extracción de datos en un único componente reutilizable.
Toolkits disponibles
Neuron incluye varias herramientas y toolkits integrados que le permiten equipar rápidamente a sus agentes con muchas capacidades. Puede usar estas herramientas individualmente o adjuntar toolkits completos con una sola línea de código.
Calculadora
El CalculatorToolkit proporciona un conjunto completo de herramientas de cálculo diseñadas para hacer que sus agentes de IA realicen cálculos precisos. Puede integrarse sin problemas con toolkits complementarios que proporcionan acceso a datos —como conectores de bases de datos, procesadores CSV, clientes API o lectores de hojas de cálculo—, lo que permite a los agentes de IA realizar cálculos estadísticos sofisticados y ofrecer información completa en respuesta a consultas empresariales complejas.
suma
NeuronAI\Tools\Toolkits\Calculator\SumTool
restar
NeuronAI\Tools\Toolkits\Calculator\SubtractTool
multiplicar
NeuronAI\Tools\Toolkits\Calculator\MultiplyTool
dividir
NeuronAI\Tools\Toolkits\Calculator\DivideTool
exponencial
NeuronAI\Tools\Toolkits\Calculator\ExponentialTool
raíz cuadrada
NeuronAI\Tools\Toolkits\Calculator\SquareRootTool
raíz n-ésima
NeuronAI\Tools\Toolkits\Calculator\NthRootTool
media
NeuronAI\Tools\Toolkits\Calculator\MeanTool
mediana
NeuronAI\Tools\Toolkits\Calculator\MedianTool
moda
NeuronAI\Tools\Toolkits\Calculator\ModeTool
desviación estándar
NeuronAI\Tools\Toolkits\Calculator\StandardDeviationTool
varianza
NeuronAI\Tools\Toolkits\Calculator\VarianceTool
Calendario
Este toolkit proporciona operaciones completas de fecha y hora. Use estas herramientas para que su agente pueda trabajar con fechas, horas, formato, cálculos y conversiones de zona horaria.
current_datetime
NeuronAI\Tools\Toolkits\Calendar\CurrentDateTimeTool
get_timestamp
NeuronAI\Tools\Toolkits\Calendar\GetTimestampTool
format_date
NeuronAI\Tools\Toolkits\Calendar\FormatDateTool
date_difference
NeuronAI\Tools\Toolkits\Calendar\DateDifferenceTool
add_time
NeuronAI\Tools\Toolkits\Calendar\AddTimeTool
subtract_time
NeuronAI\Tools\Toolkits\Calendar\SubtractTimeTool
calculate_age
NeuronAI\Tools\Toolkits\Calendar\CalculateAgeTool
convert_timezone
NeuronAI\Tools\Toolkits\Calendar\ConvertTimezoneTool
get_timezone_info
NeuronAI\Tools\Toolkits\Calendar\GetTimezoneInfoTool
get_weekday
NeuronAI\Tools\Toolkits\Calendar\GetWeekdayTool
is_weekend
NeuronAI\Tools\Toolkits\Calendar\IsWeekendTool
is_leap_year
NeuronAI\Tools\Toolkits\Calendar\IsLeapYearTool
get_days_in_month
NeuronAI\Tools\Toolkits\Calendar\GetDaysInMonthTool
start_of_period
NeuronAI\Tools\Toolkits\Calendar\StartOfPeriodTool
end_of_period
NeuronAI\Tools\Toolkits\Calendar\EndOfPeriodTool
get_week_number
NeuronAI\Tools\Toolkits\Calendar\GetWeekNumberTool
compare_dates
NeuronAI\Tools\Toolkits\Calendar\CompareDatesTool
is_date_in_range
NeuronAI\Tools\Toolkits\Calendar\IsDateInRangeTool
MySQL y PostgreSQL
Estos toolkits permiten que su agente interactúe con su base de datos. Si pregunta "¿Cuántos votos obtuvieron los autores en los últimos 14 días?", el agente no adivina ni alucina una respuesta. En su lugar, reconoce que esta pregunta requiere acceso a la base de datos, identifica las tablas apropiadas involucradas y recupera datos reales de su sistema.

Todas las herramientas de los toolkits de MySQL y PostgreSQL requieren una PDO instancia como argumento del constructor. Si se encuentra en un entorno de framework o ya está usando un ORM en general, puede obtener la instancia PDO subyacente del ORM y pasarla a las herramientas. Puede aprender más sobre esta estrategia de implementación en este artículo detallado: https://inspector.dev/mysql-ai-toolkit-bringing-intelligence-to-your-database-layer-in-php/
La instancia PDO es básicamente una conexión a una base de datos específica, así que también podría pensar en crear credenciales dedicadas para su agente. Podría ser útil controlar el nivel de acceso que su agente tiene a la base de datos.
En cualquier caso, tiene herramientas separadas para leer y escribir en la base de datos. Si no está seguro del comportamiento de su agente, puede no proporcionar la herramienta de escritura.
Estos ejemplos se refieren a la MySQLToolkit pero es exactamente lo mismo usando PGSQLToolkit.
MySQLSchemaTool / PGSQLSchemaTool
Esta herramienta permite a los agentes comprender la estructura de su base de datos, lo que les permite construir consultas inteligentes sin que usted tenga que codificar manualmente las estructuras de las tablas o sus relaciones en los prompts. Esta herramienta, en esencia, le da a su agente el equivalente al conocimiento de un administrador de bases de datos sobre su esquema, permitiéndole crear consultas que respeten su modelo de datos y aprovechen los índices y relaciones existentes.
Esta herramienta también acepta un segundo argumento $tables. Básicamente puede pasar una lista de tablas que desea incluir en la información del esquema que se envía al LLM. Esto es básicamente una forma de limitar el alcance de las consultas que el agente ejecutará más adelante en la base de datos.
Al limitar el alcance del esquema, puede crear agentes especializados que se centren en áreas específicas de su aplicación. Un agente de gestión de contenido podría necesitar acceso solo a las tablas de artículos, categorías y etiquetas, mientras que un agente de administración de usuarios requiere visibilidad sobre las tablas de usuarios, roles y permisos. Este enfoque no solo mejora el rendimiento, sino que también reduce la carga cognitiva del modelo de lenguaje, lo que conduce a respuestas más precisas y enfocadas.
MySQLSelectTool / PGSQLSelectTool
Use esta herramienta para que su agente pueda ejecutar consultas SELECT en la base de datos.
MySQLWriteTool / PGSQLWriteTool
Use esta herramienta para que su agente pueda realizar operaciones de escritura en la base de datos (INSERT, UPDATE, DELETE).
Sistema de archivos
Este toolkit permite que el agente interactúe con el sistema de archivos local.
describe_directory_content
NeuronAI\Tools\Toolkits\FileSystem\DescribeDirectoryContentTool
read_file
NeuronAI\Tools\Toolkits\FileSystem\ReadFileTool
grep_file_content
NeuronAI\Tools\Toolkits\FileSystem\GrepFileContentTool
glob_path
NeuronAI\Tools\Toolkits\FileSystem\GlobPathTool
preview_file
NeuronAI\Tools\Toolkits\FileSystem\PreviewFileTool
parse_file
NeuronAI\Tools\Toolkits\FileSystem\ParseFileTool
Tavily
Este toolkit permite que su agente realice búsquedas web, extracción del contenido de páginas y rastreo.
Búsqueda web de Tavily
Hace que su agente pueda buscar en la web. Requiere acceso a APIs de Tavily.
Puede personalizar las opciones predeterminadas para obtener resultados de búsqueda pasando su preferencia en el withOptions método:
Extracción de Tavily
Extrae el contenido de una página web desde una URL. Requiere acceso a APIs de Tavily.
Rastreo de Tavily
Tavily Crawl es una herramienta de recorrido de sitios web basada en grafos que puede explorar cientos de rutas en paralelo con extracción integrada y descubrimiento inteligente.
Jina
Este toolkit permite que su agente realice búsquedas web y lea el contenido de una URL específica.
Búsqueda web de Jina
Hace que su agente pueda buscar en la web. Requiere acceso a API de Jina.
Lector de URL de Jina
Extrae el contenido de una página web desde una URL. Requiere acceso a API de Jina.
Memoria de Zep
Este toolkit conecta un agente de NeuronAI a Zep gráfo de conocimiento. Este tipo de sistema permite al agente almacenar hechos relevantes que pueden surgir durante las interacciones con el agente a lo largo del tiempo. Es una memoria a largo plazo en el sentido de que no está limitada a la conversación actual como lo hace el ChatHistory componente. Es un almacenamiento externo persistente que el agente utilizará para guardar y recuperar piezas individuales de información que pueden permitir respuestas más personalizadas.
Para saber más sobre las capacidades de este tipo de sistema, puede visitar el sitio web de Zep: https://www.getzep.com/
El user_id los argumentos le permiten separar la memoria a largo plazo en diferentes silos si desea atender a varios usuarios. Según su caso de uso, puede usar este parámetro como una "clave" para separar la memoria de las distintas entidades con las que interactúa el agente (usuarios, empresas, etc.).
AWS SES
Servicio simple de correo electrónico (SES)
Esta herramienta permite al agente enviar un mensaje de correo electrónico a uno o más destinatarios, enviar notificaciones, confirmaciones, informes o cualquier otra comunicación basada en correo electrónico. La herramienta maneja automáticamente la entrega correcta del correo y el manejo básico de errores.
Para usar esta herramienta, el SDK de AWS para PHP debe estar instalado.
La herramienta obtiene una instancia de la SesClient clase del SDK de AWS para PHP.
Supadata YouTube
Este toolkit proporciona acceso a transcripciones de videos de YouTube, metadatos, información del canal y datos de listas de reproducción a través de Supadata.ai con fines de análisis de contenido e investigación.
Transcripción de video
Permite al agente recuperar la transcripción de un video de YouTube.
Metadatos del video
Permite al agente recuperar los metadatos de un video de YouTube.
Metadatos del canal
Permite al agente recuperar metadatos de un canal de YouTube, incluidos el nombre, la descripción, el número de suscriptores y más.
Metadatos de la lista de reproducción
Permite al agente recuperar metadatos de una lista de reproducción de YouTube, incluido el título, la descripción, el número de videos y más.
Llamadas paralelas a herramientas
Si sus agentes hacen un uso intensivo de herramientas, puede habilitar la ejecución paralela si el modelo solicita múltiples llamadas a herramientas en una sola petición.
Ejecución secuencial (estándar)
El agente llama a las herramientas una a la vez, esperando que cada una termine antes de comenzar la siguiente:
Ejecución paralela (con pcntl)
El agente llama a múltiples herramientas simultáneamente, permitiéndoles ejecutarse al mismo tiempo:
Requisitos
Para usar esta función necesita instalar el spatie/fork paquete. Para más información, consulte el repositorio de GitHub: https://github.com/spatie/fork
Limitaciones
Esta implementación requiere la pcntl extensión, que está instalada por defecto en muchos sistemas Unix y Mac.
pcntl solo funciona en procesos CLI, no en un contexto web.
Si el pcntl extensión no está presente en el sistema que ejecuta el agente (por ejemplo, máquinas Windows), el trait vuelve automáticamente a la ejecución estándar de llamadas a herramientas. Esto puede ser útil si tiene una falta de coincidencia entre su entorno de desarrollo local y el entorno de producción. Puede desarrollar localmente con pcntl deshabilitado, luego desplegar en entornos de producción donde puede estar habilitado—sin modificar una sola línea de código. El agente se adapta automáticamente a cualquier entorno de ejecución en el que se encuentre.
Habilitar ejecución paralela
Establezca parallelToolCalls(true) en su agente o RAG. El framework inyectará el nodo dedicado ParallelToolNode en lugar del estándar ToolNode en el flujo de trabajo.
Manejador de errores
Ahora la cuestión es cómo manejar los errores de las herramientas. Hay un par de opciones para adaptarse a diferentes escenarios y necesidades.
El ToolNode acepta un $errorHandler argumento (código). Es un callback que recibe la excepción lanzada por la herramienta y la instancia de la herramienta que falla.
Le permite implementar una lógica personalizada en caso de error de la herramienta (excepciones generales de la herramienta, o ToolRunsExceededException). Si devuelve un valor, se devolverá al modelo como resultado de la herramienta. Por defecto, el ToolNode vuelve a lanzar los errores de ejecución.
Definición fluida:
Ampliando el agente
También puede implementar resolveToolErrorHandler() directamente para definir el callback que se ejecutará.
Última actualización