Skip to content

既存のエージェントを最新バージョンに移行する

バージョン 11.8.1より前にAgentic Starterのテンプレートを使用してエージェントを構築したユーザーは、新しいリリースとの互換性を維持するために、一度だけ更新を行う必要があります。 これは、テンプレートによるエージェントの構築方法およびツールがワークフローにアクセスする方法に変更があったためです。

  • LangGraph、CrewAI、およびLlamaIndexは、手動で作成したMyAgentサブクラスに依存しなくなりました。 まず、ネイティブのフレームワークオブジェクト(graph、crew、またはworkflow)を作成し、次にMyAgentを生成するdatarobot_agent_class_from_*ファクトリーでそれをラップします。
  • Base(汎用)は引き続きBaseAgentをサブクラス化し、構築とLLMの接続が簡素化されています。 custompy_adaptorは、他のテンプレートと同様にllm=get_llm(...)を渡します。
  • NAT (NVIDIA NeMo Agent Toolkit)は引き続きNatAgentをサブクラス化します。 __init__は簡素化され、custompy_adaptorではmodel=が省略されて、LLMはworkflow.yaml内で宣言型のまま維持されます。

これらのパターン全体で、LLMはアドホックなクラス状態から切り離されます。 フレームワーク固有のget_llm()ヘルパーは、custompy_adaptor内(および、DRAgentの場合はregister.py内)でモデルを解決します。 MCPおよびワークフローツールは、LangGraphAgentスタイルのサブクラスのself.mcp_toolsから読み込まれるのではなく、実行時に注入されます。

このページでは、フレームワークごとの移行手順をまとめています。 段階ごとの差分、変更前後の例、およびテストの更新内容については、テンプレートリポジトリ(docs/agent/)内のframework migration guidesを参照してください。

開始する前に

  • テンプレートの更新をマージする前に、リポジトリと.envファイルのバックアップを取ります。
  • テンプレートを更新し(最新のAgentic Starterの変更をプルするか、エージェントコンポーネントに対してdr component updateを実行します)、pyproject.tomluv.lock、および生成されたスタブがターゲットのバージョンと一致するようにします。
  • 使用非推奨の名前を引き続き使用する場合は、環境変数の名前を変更します。 デプロイ済みLLMの設定では、(TEXTGEN_DEPLOYMENT_IDではなく)LLM_DEPLOYMENT_IDが必要です。 メタデータを使用したLLMプロバイダーの設定を参照してください。
  • MyAgentのエクスポートは維持します。インフラストラクチャとテストでは、そのシンボルが必要となります。 名前は変更しないでください。

ほとんどのフレームワークに適用される変更

custompy_adaptorとLLM

custompy_adaptor内で、MyAgent(...)model=文字列を渡す代わりに、適切なモジュール内のget_llm(...)からllm=を渡すように変更します。

  • LangGraph / Base:datarobot_genai.langgraph.llm.get_llm
  • CrewAI:datarobot_genai.crewai.llm.get_llm(CrewAIには追加のパラメーターが必要になる場合があります。例:{"stream_options": None}
  • LlamaIndex:datarobot_genai.llama_index.llm.get_llm

_PLACEHOLDER_MODELS = frozenset({"unknown"})のような小さなセットでプレースホルダーのモデル名をフィルターすることで、DataRobotからのプレースホルダー model_name によって無効なモデルが強制されるのを防ぎます。

設定

新しいパターンでは設定がget_llm()とランタイム環境に委任されるため、myagent.pyからfrom agent.config import Configを削除します。 テンプレートが引き続きcustom.pyからMCP関連の設定を読み込む場合は、Configをその場所に残しておきます。

テスト

どのフレームワークにおいても、MyAgent(model=..., api_key=...)を構築したテストでは、代わりにMyAgent(llm=Mock(), ...)を使用する必要があります。 削除されたllm()メソッドまたは古い__init__シグネチャをターゲットとするテストを削除します。 必要に応じて、graph_factoryまたはその他のモジュールレベルの接続において、テストを追加します。

フレームワーク固有の移行

LangGraph

  • class MyAgent(LangGraphAgent)を次のように置き換えます。
  • モジュールレベルの prompt_template
  • LangGraph移行ガイドで説明されているように、myagent.pyからllm()__init__ボイラープレート、およびConfigインポートを削除します。

CrewAI

  • エージェント、タスク、クルー、およびkickoff_inputsをモジュールレベルに移動します。必要に応じて、モジュールスコープでget_llm()を1回呼び出します。
  • クラスをMyAgent = datarobot_agent_class_from_crew(crew, agents, tasks, kickoff_inputs)に置き換えます。
  • ツールは実行時に注入されます。古いクラスのself.toolsに依存しないでください。
  • Crew stream:モジュールスコープでは多くの場合Falseです。DRAgentは実行時にストリーミングを調整できます(テンプレートリポジトリ内の移行ガイドを参照してください)。

LlamaIndex

  • custompy_adaptorが実際のLLMを注入するまでは、エージェントに対してモジュールレベルのLiteLLM(model="placeholder")(または同等のもの)を使用します。
  • エージェント、ワークフロー、ステートツール、およびextract_response_textをモジュールレベルに移動します。 make_input_messageを削除します(ファクトリーが処理します)。
  • MyAgent = datarobot_agent_class_from_llamaindex(workflow, agents, extract_response_text)

Base(汎用)

  • MyAgentは引き続きBaseAgentをサブクラス化します。 __init__は、BaseAgentが初期化を担っているため簡素化されています。
  • クラスから、_llmself.config、およびConfigの手動での使用を削除します。 Base migration guideに記載されているように、custompy_adaptorからllm=get_llm(...)を渡します。

NAT

  • NATは他のフレームワークに比べて構造的な変更が少なくて済みます。MyAgent(NatAgent)は引き続きNatAgentをサブクラス化しますが、__init__*args / **kwargssuper()に転送し、デフォルトのworkflow_pathを指定します。
  • custompy_adaptorでは、MyAgentを構築する際にmodel=を省略します。LLMはworkflow.yamlで定義されています。

移行後

  1. dr task run agent:install(またはテンプレートのインストールタスク)、dr task run agent:testの順に実行します。
  2. dr run devまたはtask devでローカルスタックを起動して、アプリを操作し、エージェントのカスタマイズの説明に従ってtask agent:cliを実行します。
  3. まず、本番以外の環境にデプロイします。 DataRobot UIでトレースとMCPの動作を確認します。

移行後の継続的な開発タスクについては、エージェントのカスタマイズおよびエージェントのコンポーネントを参照してください。