Agent mit Toolregistrierung in Oracle AI Data Platform Workbench

Oracle AI Data Platform Workbench unterstützt die flexible Agent-Erstellung und interne Toolorchestrierung. Dieses Thema enthält ein Beispiel für einen empfohlenen Ansatz zum Definieren, Registrieren und Verwenden von Tools in einem Agent.

1. Tools über die Konfiguration beschreiben

Jedes Tool ist ein Python-Dictionary:

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. Tools in einer Registry/Konfiguration registrieren

Alle Benutzertools werden in einer Registry für die Agent-Suche erfasst:

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

3. Framework-Wrapping: Agent-konsumierbare Toolobjekte erstellen

Die Agent-Konstruktion erfordert die Konvertierung dieser Dicts in ausführbare Toolobjekte (StructuredTool oder ähnliches):

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. Arbeitsspeicher und Checkpointer verwenden

Agents in AI Data Platform Workbench benötigen häufig Speicher, um den Zwischenstatus zu persistieren, die Wiederaufnahme zu ermöglichen und ein Recovery nach Ausfällen oder über Workflows mit langer Ausführungszeit zu ermöglichen. Der typische Mechanismus ist ein checkpointer-Objekt, das den Agent-Status speichert und wiederherstellt.

# 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
Verwendungsmuster:
  • Übergeben Sie den "checkpointer" an Agent-Code/Klasse bei der Konstruktion oder als globale/Kontextvariable.
  • Speichern Sie den Status nach jedem kritischen Agent-Ereignis, wie Toolausgabe, Prompt-Schritt oder LLM-Generierung.
  • Status bei Agent-Neustart wiederherstellen, falls verfügbar.
Typische Quellen des Checkpointers:
  • In AI Data Platform Workbench-Democode kann ein `checkpointer` über Workflowkonfiguration oder globale Elemente injiziert werden, z.B. `checkpointer = globals().get("checkpointer", None)`
  • Bei komplexen Anwendungsfällen kann der Checkpointer externen Speicher, Datenbanken oder Cloud-Status umschließen, um ein robustes Fehler-Recovery zu ermöglichen.
# Inside agent code
checkpointer = globals().get("checkpointer", None)
if checkpointer:
    checkpointer.save({"step": "after_tool", "context": context_vars})
    # ...
    restored_state = checkpointer.load()