Herramientas (Tools)
Las herramientas son código que puede ser ejecutado por un agente para realizar acciones. Una herramienta puede ser una función simple como una calculadora, o una llamada a una API de un servicio externo como la consulta de precios de acciones o pronóstico del clima. En el contexto de agentes de IA, las herramientas están diseñadas para ser ejecutadas por agentes en respuesta a llamadas a funciones generadas por modelos.
Saptiva-Agents proporciona el módulo saptiva_agents.tools con un conjunto de herramientas integradas y utilidades para crear y ejecutar herramientas personalizadas.
Herramientas Integradas
Ejemplos de herramientas integradas:
mcp_server_toolspara usar servidores MCP como herramientas.HttpToolpara hacer solicitudes HTTP a APIs REST.LangChainToolAdapterpara usar herramientas de LangChain.
Herramientas de Función Personalizadas
Una herramienta también puede ser una función de Python simple que realiza una acción específica. Para crear una herramienta de función personalizada, solo necesitas definir una función en Python y usar la clase FunctionTool para envolverla.
La clase FunctionTool utiliza descripciones y anotaciones de tipo para informar al modelo LLM cuándo y cómo utilizar una función dada. La descripción proporciona contexto sobre el propósito de la función y los casos de uso previstos, mientras que las anotaciones de tipo informan al modelo sobre los parámetros esperados y el tipo de retorno.
Por ejemplo, una herramienta simple para obtener el precio de una acción podría verse así:
import random
from saptiva_agents.core import CancellationToken
from saptiva_agents.tools import FunctionTool
from typing_extensions import Annotated
# Retorna un precio de acción aleatorio con fines demostrativos.
async def get_stock_price(ticker: str, date: Annotated[str, "Fecha en formato YYYY/MM/DD"]) -> float:
return random.uniform(10, 200)
# Crear una herramienta de función.
stock_price_tool = FunctionTool(get_stock_price, description="Obtener el precio de la acción.")
# Ejecutar la herramienta.
cancellation_token = CancellationToken()
result = await stock_price_tool.run_json({"ticker": "AAPL", "date": "2021/01/01"}, cancellation_token)
# Imprimir el resultado.
print(stock_price_tool.return_value_as_string(result))
Herramientas de Llamada con Clientes de Modelo
En Saptiva-Agents, cada herramienta es una subclase de BaseTool, que genera automáticamente el esquema JSON de la herramienta. Los clientes de modelo utilizan este esquema para generar llamadas a herramientas.
Los clientes de modelo utilizan el esquema JSON de las herramientas para generar llamadas a herramientas.
Aquí tienes un ejemplo de cómo usar la clase FunctionTool con un SaptivaAIChatCompletionClient. Otras clases de cliente de modelo pueden utilizarse de forma similar. Consulta la sección Cliente De Modelo para más detalles.
¿Qué está ocurriendo realmente bajo el capó cuando se llama al método create? El cliente del modelo toma la lista de herramientas y genera un esquema JSON para los parámetros de cada herramienta. Luego, genera una solicitud a la API del modelo con el esquema JSON de la herramienta y los demás mensajes para obtener un resultado.
Muchos modelos, como GPT-4o de OpenAI y Llama-3.2, están entrenados para producir llamadas a herramientas en forma de cadenas JSON estructuradas que se ajustan al esquema JSON de la herramienta. Los clientes de modelo de Saptiva-Agents luego analizan la respuesta del modelo y extraen la llamada a la herramienta desde la cadena JSON.
El resultado es una lista de objetos FunctionCall, que pueden usarse para ejecutar las herramientas correspondientes.
Usamos json.loads para analizar la cadena JSON del campo arguments en un diccionario de Python. El método run_json() toma el diccionario y ejecuta la herramienta con los argumentos proporcionados.
Ahora puedes hacer otra llamada al cliente del modelo para que el modelo genere una reflexión sobre el resultado de la ejecución de la herramienta.
El resultado de la llamada a la herramienta se envuelve en un objeto FunctionExecutionResult, que contiene el resultado de la ejecución de la herramienta y el ID de la herramienta que fue llamada. El cliente del modelo puede usar esta información para generar una reflexión sobre dicho resultado.
Agente Equipado con Herramientas
Combinando el cliente del modelo y las herramientas, puedes crear un agente equipado con herramientas que puede utilizarlas para realizar acciones y reflexionar sobre los resultados de esas acciones.
Cuando maneja un mensaje de usuario, la clase ToolUseAgent primero usa el cliente del modelo para generar una lista de llamadas a funciones hacia las herramientas, luego ejecuta esas herramientas y genera una reflexión sobre los resultados de la ejecución. Esa reflexión es devuelta al usuario como la respuesta del agente.
Para ejecutar el agente, creamos el runtime y registramos el agente:
Última actualización