Oracle AI Data Platform Workbenchでのツール登録によるエージェント

Oracle AI Data Platform Workbenchは、柔軟なエージェント構築と内部ツールのオーケストレーションをサポートします。このトピックでは、エージェント内でツールを定義、登録および使用するための推奨方法の例を示します。

1. 構成によるツールの説明

各ツールは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. レジストリ/構成へのツールの登録

すべてのユーザー・ツールは、エージェント検索用のレジストリに収集されます。

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

3. フレームワーク・ラッピング: エージェントが使用可能なツール・オブジェクトの作成

エージェントの構築では、次のディクトを実行可能なツール・オブジェクト(StructuredToolなど)に変換する必要があります。

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. メモリーとチェックポインタの使用

AI Data Platform Workbenchのエージェントは、多くの場合、中間状態を維持し、再開を可能にし、障害後または長時間実行されるワークフローにわたってリカバリできるようにするためのメモリーを必要とします。一般的なメカニズムは、エージェントの状態を保存およびリストアするcheckpointerオブジェクトです。

# 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
用途パターン:
  • コンストラクション時またはグローバル/コンテキスト変数として、'checkpointer'をエージェント・コード/クラスに渡します。
  • ツール出力、プロンプト・ステップ、LLM生成など、すべてのクリティカル・エージェント・イベントの後の状態を保存します。
  • エージェントの再起動時に状態をリストアします(使用可能な場合)。
チェックポインタの一般的なソース:
  • AI Data Platform Workbenchのデモ・コードでは、`checkpointer`はワークフロー構成またはグローバルを介して注入できます。たとえば、`checkpointer = globals().get("checkpointer"、 None)`
  • 複雑なユースケースでは、チェックポインタが外部ストレージ、データベース、またはクラウドの状態をラップして、堅牢な障害回復を実現できます。
# Inside agent code
checkpointer = globals().get("checkpointer", None)
if checkpointer:
    checkpointer.save({"step": "after_tool", "context": context_vars})
    # ...
    restored_state = checkpointer.load()