Agente con registro de herramientas en Oracle AI Data Platform Workbench

Oracle AI Data Platform Workbench admite la construcción flexible de agentes y la orquestación de herramientas internas. En este tema se proporciona un enfoque recomendado de ejemplo para definir, registrar y utilizar herramientas dentro de un agente.

1. Describir las herramientas mediante la configuración

Cada herramienta es un diccionario de Python:

my_tool = {
    "name": "blog_idea_tool",
    "description": "Generate blog ideas for a topic.",
    "class": "PromptTool",
    "conf": {...},  # tool-specific settings
    "params": [
        {"name": "topic", "type": "string", "description": "Blog topic"}
    ]
}

2. Registrar herramientas en un registro/config

Todas las herramientas de usuario se recopilan en un registro para la consulta de agentes:

tool_conf = {
    "blog_idea_tool": my_tool,
    "social_post_tool": another_tool,
    # ... more tools
}

3. Ajuste del marco: creación de objetos de herramientas consumibles por agentes

La construcción del agente requiere convertir estos dicts en objetos de herramientas ejecutables (StructuredTool o similares):

from langchain_core.tools import StructuredTool

def create_langgraph_tool(tool):
    def tool_fn(**kwargs):
        # Example implementation: you would use utils.call_tool_by_name/tool runner, etc.
        return f"Executed {tool['name']} with inputs: {kwargs}"
    return StructuredTool.from_function(
        func=tool_fn,
        name=tool['name'],
        description=tool['description'],
        args_schema=None,  # Build a pydantic schema if detailed validation required
        infer_schema=False
    )

4. Memoria y uso de un indicador de control

Los agentes de AI Data Platform Workbench suelen necesitar memoria para mantener el estado intermedio, permitir la reanudación y permitir la recuperación después de fallos o en flujos de trabajo de larga ejecución. El mecanismo típico es un objeto checkpointer, que guarda y restaura el estado del agente.

# Suppose you have a 'checkpointer' object available:
# It might be provided to your agent context directly, or created via aidp-agent-runtime utilities

# During agent run:
state = {"step": "tool_invoked", "result": tool_result}

if checkpointer:
    checkpointer.save(state)
    # To restore later:
    loaded_state = checkpointer.load()
    print(f"Restored state: {loaded_state}")

# You can persist any serializable agent context, params, or partial results
Patrón de uso:
  • Transfiera el 'checkpointer' al código/clase de agente en la construcción o como una variable global/contexto.
  • Guarde el estado después de cada evento de agente crítico, como la salida de la herramienta, el paso de petición de datos o la generación del LLM.
  • Restaurar estado al reiniciar el agente, si está disponible.
Fuentes típicas del indicador de comprobación:
  • En el código de demostración de AI Data Platform Workbench, se puede inyectar un `checkpointer` mediante la configuración del flujo de trabajo o los valores globales, por ejemplo, `checkpointer = globals().get("checkpointer", None)`
  • En los casos de uso complejos, el indicador de control puede encapsular el almacenamiento externo, las bases de datos o el estado de la nube para permitir una recuperación de fallos sólida.
# Inside agent code
checkpointer = globals().get("checkpointer", None)
if checkpointer:
    checkpointer.save({"step": "after_tool", "context": context_vars})
    # ...
    restored_state = checkpointer.load()