Agente com Registro de Ferramenta no Oracle AI Data Platform Workbench
O Oracle AI Data Platform Workbench oferece suporte à construção flexível de agentes e à orquestração interna de ferramentas. Este tópico fornece um exemplo de abordagem recomendada para definir, registrar e usar ferramentas em um agente.
1. Descrever as ferramentas por meio da configuração
Cada ferramenta é um dicionário 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 ferramentas em um registro/configuração
Todas as ferramentas do usuário são coletadas em um registro para pesquisa de agente:
tool_conf = {
"blog_idea_tool": my_tool,
"social_post_tool": another_tool,
# ... more tools
}
3. Encapsulamento de framework: Criar objetos de ferramenta consumíveis pelo agente
A construção do agente requer a conversão desses ditados em objetos de ferramenta executáveis (StructuredTool ou similar):
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. Memória e Usando uma Ponteiro de Verificação
Os agentes no AI Data Platform Workbench geralmente precisam de memória para persistir no estado intermediário, permitir a retomabilidade e permitir a recuperação após falhas ou em fluxos de trabalho de longa execução. O mecanismo típico é um objeto checkpointer, que salva e restaura o estado do 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- Informe o 'checkpointer' para o código/classe do agente na construção ou como uma variável global/de contexto.
- Salve o estado após cada evento crítico do agente, como saída da ferramenta, etapa do prompt ou geração de LLM.
- Estado de restauração na reinicialização do agente, se disponível.
- No código de demonstração do AI Data Platform Workbench, um `checkpointer` pode ser injetado via configuração do fluxo de trabalho ou globals, por exemplo, `checkpointer = globals().get("checkpointer", None)`
- Para casos de uso complexos, o ponteiro de verificação pode envolver armazenamento externo, bancos de dados ou estado de nuvem para permitir a recuperação robusta de falhas.
# Inside agent code
checkpointer = globals().get("checkpointer", None)
if checkpointer:
checkpointer.save({"step": "after_tool", "context": context_vars})
# ...
restored_state = checkpointer.load()