Skip to the content.

ATDF SDK

El SDK de ATDF (Agent Tool Description Format) proporciona una interfaz sencilla para integrar herramientas ATDF en agentes de IA. Este SDK facilita la carga, búsqueda y utilización de herramientas descritas en formato ATDF.

Características principales

Instalación

El SDK de ATDF está incluido en este repositorio, no requiere instalación adicional:

from sdk.atdf_sdk import ATDFTool, ATDFToolbox, load_toolbox_from_directory, find_best_tool

Uso básico

Cargar herramientas

# Cargar todas las herramientas desde un directorio
toolbox = load_toolbox_from_directory("schema/examples")

# Cargar una herramienta específica
toolbox = ATDFToolbox()
toolbox.load_tool_from_file("schema/examples/hole_maker.json")

Buscar herramientas

# Buscar herramientas por texto
herramientas = toolbox.find_tools_by_text("hacer un agujero", language="es")
for herramienta in herramientas:
    print(f"- {herramienta.tool_id}: {herramienta.description}")

Seleccionar herramienta para una tarea

# Encontrar la mejor herramienta para una tarea
tarea = "Necesito traducir un texto del inglés al español"
herramienta = find_best_tool(toolbox, tarea, language="es")

if herramienta:
    print(f"Herramienta recomendada: {herramienta.tool_id}")
    print(f"Descripción: {herramienta.description}")
    print(f"Cuando usar: {herramienta.when_to_use}")
else:
    print("No se encontró una herramienta adecuada para esta tarea.")

Acceder a los detalles de una herramienta

# Obtener una herramienta por su ID
herramienta = toolbox.get_tool("text_translator_v1")

if herramienta:
    # Acceder a propiedades básicas
    print(f"ID: {herramienta.tool_id}")
    print(f"Descripción: {herramienta.description}")
    
    # Acceder a parámetros de entrada
    print("Parámetros de entrada:")
    for input_param in herramienta.inputs:
        print(f"- {input_param['name']} ({input_param['type']}): {input_param.get('description', '')}")
    
    # Acceder a metadatos extendidos (si están disponibles)
    if herramienta.metadata:
        print(f"Versión: {herramienta.metadata.get('version', 'N/A')}")
        print(f"Autor: {herramienta.metadata.get('author', 'N/A')}")
    
    # Acceder a ejemplos (si están disponibles)
    if herramienta.examples:
        print("Ejemplos de uso:")
        for ejemplo in herramienta.examples:
            print(f"- {ejemplo.get('title', 'Sin título')}")

Características avanzadas

Generar esquema JSON para validar entradas

import json

# Obtener el esquema JSON para validar entradas
herramienta = toolbox.get_tool("hole_maker_v1")
esquema = herramienta.get_input_schema()

# Imprimir el esquema JSON con formato
print(json.dumps(esquema, indent=2))

Soporte multilingüe

# Cargar herramientas
toolbox = load_toolbox_from_directory("schema/examples")

# Obtener una herramienta
herramienta = toolbox.get_tool("hole_maker_v1")

# Verificar idiomas soportados
idiomas = herramienta.supported_languages
print(f"Idiomas disponibles: {', '.join(idiomas)}")

# Obtener descripción en diferentes idiomas
print(f"Descripción (ES): {herramienta.description}")
print(f"Descripción (EN): {herramienta.description('en')}")
print(f"Descripción (PT): {herramienta.description('pt')}")

Ejemplo completo

from sdk.atdf_sdk import load_toolbox_from_directory, find_best_tool

# Cargar todas las herramientas
toolbox = load_toolbox_from_directory("schema/examples", recursive=True)
print(f"Se cargaron {len(toolbox)} herramientas")

# Analizar una petición del usuario
peticion_usuario = "Necesito hacer un agujero en la pared para colgar un cuadro"
idioma_detectado = "es"  # En un caso real, esto se detectaría automáticamente

# Encontrar la herramienta más adecuada
herramienta = find_best_tool(toolbox, peticion_usuario, language=idioma_detectado)

if herramienta:
    print(f"\nHerramienta seleccionada: {herramienta.tool_id}")
    print(f"Descripción: {herramienta.description}")
    
    # Verificar prerrequisitos
    if herramienta.prerequisites:
        print("\nPrerrequisitos:")
        for categoria, items in herramienta.prerequisites.items():
            print(f"- {categoria}:")
            for item in items:
                print(f"  * {item}")
    
    # Mostrar ejemplos
    if herramienta.examples:
        print("\nEjemplos de uso:")
        for ejemplo in herramienta.examples:
            print(f"- {ejemplo.get('title')}: {ejemplo.get('description')}")

Contribuir

Si deseas contribuir al desarrollo del SDK de ATDF, puedes hacerlo a través de pull requests en este repositorio. Asegúrate de seguir las convenciones de código y añadir pruebas para las nuevas funcionalidades.

Licencia

Este proyecto está licenciado bajo los mismos términos que el proyecto principal ATDF.