Agente con registrazione degli strumenti in Oracle AI Data Platform Workbench

Oracle AI Data Platform Workbench supporta la costruzione flessibile degli agenti e l'orchestrazione interna degli strumenti. In questo argomento viene fornito un approccio consigliato di esempio per la definizione, la registrazione e l'uso di strumenti all'interno di un agente.

1. Descrivere gli strumenti tramite la configurazione

Ogni strumento è un dizionario 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. Registra strumenti in un registro/config

Tutti gli strumenti utente vengono raccolti in un registro per la ricerca degli agenti:

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

3. Wrapping della struttura: crea oggetti strumento utilizzabili dall'agente

La costruzione dell'agente richiede la conversione di questi dizionari in oggetti strumento eseguibili (StructuredTool o simili):

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
    )

l'anno 4. Memoria e utilizzo di un checkpointer

Gli agenti in AI Data Platform Workbench spesso hanno bisogno di memoria per mantenere lo stato intermedio, abilitare la ripresa e consentire il ripristino dopo errori o attraverso flussi di lavoro a lungo termine. Il meccanismo tipico è un oggetto checkpointer, che salva e ripristina lo stato dell'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
Pattern di utilizzo:
  • Passare il 'checkpointer' al codice/classe dell'agente in fase di costruzione o come variabile globale/contesto.
  • Salva lo stato dopo ogni evento agente critico, come l'output degli strumenti, il passo del prompt o la generazione di LLM.
  • Ripristina lo stato al riavvio dell'agente, se disponibile.
Fonti tipiche del checkpointer:
  • Nel codice demo di AI Data Platform Workbench, è possibile inserire un `checkpointer` tramite la configurazione del flusso di lavoro o i valori globali, ad esempio `checkpointer = globals().get("checkpointer", None)`
  • Per casi d'uso complessi, il checkpointer può avvolgere lo storage esterno, i database o lo stato del cloud per consentire un solido recupero degli errori.
# Inside agent code
checkpointer = globals().get("checkpointer", None)
if checkpointer:
    checkpointer.save({"step": "after_tool", "context": context_vars})
    # ...
    restored_state = checkpointer.load()