既存のエージェントを最新バージョンに移行する¶
バージョン 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.toml、uv.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が初期化を担っているため簡素化されています。- クラスから、
_llm、self.config、およびConfigの手動での使用を削除します。 Base migration guideに記載されているように、custompy_adaptorからllm=get_llm(...)を渡します。
NAT¶
- NATは他のフレームワークに比べて構造的な変更が少なくて済みます。
MyAgent(NatAgent)は引き続きNatAgentをサブクラス化しますが、__init__は*args/**kwargsをsuper()に転送し、デフォルトのworkflow_pathを指定します。 custompy_adaptorでは、MyAgentを構築する際にmodel=を省略します。LLMはworkflow.yamlで定義されています。
移行後¶
dr task run agent:install(またはテンプレートのインストールタスク)、dr task run agent:testの順に実行します。dr run devまたはtask devでローカルスタックを起動して、アプリを操作し、エージェントのカスタマイズの説明に従ってtask agent:cliを実行します。- まず、本番以外の環境にデプロイします。 DataRobot UIでトレースとMCPの動作を確認します。
移行後の継続的な開発タスクについては、エージェントのカスタマイズおよびエージェントのコンポーネントを参照してください。