Agent avec inscription d'outils dans Oracle AI Data Platform Workbench
Oracle AI Data Platform Workbench prend en charge la construction flexible d'agents et l'orchestration interne d'outils. Cette rubrique fournit un exemple d'approche recommandée pour définir, enregistrer et utiliser des outils au sein d'un agent.
1. Décrire les outils via la configuration
Chaque outil est un dictionnaire 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. Enregistrer des outils dans un registre/config
Tous les outils utilisateur sont collectés dans un registre pour la recherche d'agent :
tool_conf = {
"blog_idea_tool": my_tool,
"social_post_tool": another_tool,
# ... more tools
}
3. Encapsulation de structure : Créer des objets d'outil consommables par l'agent
La construction de l'agent nécessite la conversion de ces tirets en objets d'outil exécutables (StructuredTool ou similaire) :
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, Mémoire et utilisation d'un pointeur de reprise
Les agents d'AI Data Platform Workbench ont souvent besoin de mémoire pour conserver l'état intermédiaire, permettre la reprise et permettre la récupération après des échecs ou sur des workflows à longue durée d'exécution. Le mécanisme standard est un objet checkpointer, qui enregistre et restaure l'état de l'agent.
# 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- Transmettez le "checkpointer" au code/classe de l'agent lors de la construction ou en tant que variable globale/contexte.
- Enregistrer l'état après chaque événement d'agent critique, comme la sortie de l'outil, l'étape d'invite ou la génération du LLM.
- Restaurer l'état au redémarrage de l'agent, le cas échéant.
- Dans le code de démonstration AI Data Platform Workbench, un "checkpointer" peut être injecté via une configuration de workflow ou des variables globales, par exemple `checkpointer = global().get("checkpointer", None)`
- Pour les cas d'utilisation complexes, le checkpointer peut encapsuler le stockage externe, les bases de données ou l'état cloud afin de permettre une récupération robuste en cas de panne.
# Inside agent code
checkpointer = globals().get("checkpointer", None)
if checkpointer:
checkpointer.save({"step": "after_tool", "context": context_vars})
# ...
restored_state = checkpointer.load()