
NeMo Agent Toolkit を入門編と実践運用編としてまとめてみた
はじめに
こんにちは、クラスメソッド製造ビジネステクノロジー部の森茂です。
NVIDIA の NeMo Agent Toolkit(パッケージ名 nvidia-nat、以下 NAT)、興味はあるけれど「何から触ればいいかわからない」「公式ドキュメントが NIM クラウド前提で、自分の環境で再現しづらい」と感じている方も多いのではないでしょうか。実際、NAT の公式ドキュメントは機能カタログとしてはとても充実しているのですが、初めての人が「Hello Agent から本番投入まで」を一気通貫で追いかけられる日本語の資料が、ぽっかり空いている気がしていました。
そのモヤモヤを埋めるつもりで書き始めたら、ブログ記事 1 本にはとても収まりきらない分量になってしまったので、Zenn Book の形で 2 冊に分けてまとめました。入門編は「GPU 不要で NAT を一から触れるハンズオン」、実践運用編は「動くエージェントを本番投入できる状態に昇華するための一気通貫ガイド」です。本記事はその 2 冊の歩き方ガイドで、4 本柱の選定理由など書籍の中で扱った「考え方」の部分を、ブログ記事として持ち帰れる形に切り出してまとめました。
NeMo Framework 全体の地図は別記事の NVIDIA NeMo Framework を俯瞰してみた で扱っているので、あわせて参照していただけると、NAT がエコシステム全体のどこに位置するのか掴みやすいかなと思います。
2 冊で扱った範囲
まずは 2 冊の関係を 1 枚の図で俯瞰してみます。同じ NAT を使いつつ、レイヤーを変えて 2 冊に切り分けた、という構図です。
入門編はローカル環境で「動くエージェント」を組み立てる基礎編、実践運用編は同じ NAT を題材にしつつ「運用品質を上げるための 4 本柱」を体系化したものです。
入門編 NIM + Docker ハンズオンで届けたかったもの
入門編のタイトルは「NIM + Docker ではじめる NeMo Agent Toolkit ハンズオン」です。狙いは、いちばん最初の壁を取り除くことに置きました。
NAT の公式チュートリアルは NIM の API キー前提で書かれているケースが多く、いざ手元で動かそうとすると「環境構築で半日溶けた」というやつにハマりがちです。入門編では GPU を要求しない構成にこだわり、Colima + Docker と build.nvidia.com の NIM 無料枠だけで、Hello Agent から最終アプリまで通せるようにしています。
具体的に通る道は、最短の Hello Agent からはじまり、workflow.yml の各セクションの読み解き、組み込みツールを束ねたエージェントパターン、Phoenix での観測、MCP サーバー連携、Milvus を使った RAG、Router と A2A プロトコルでのマルチエージェント、nat eval での採点、nat serve での Web API 化、最後に題材アプリ総仕上げ、という流れです。NAT の代表的な機能を、無理のない順番で 1 周できる構成になっています。
書籍リポジトリは zenn-contents/books/nemo-agent-toolkit-nim-handson、サンプルコードは nemo-agent-toolkit-book に Apache 2.0 で置いています。書籍の各章のチェックポイントごとに動くサンプルがそろっているので、写経で詰まったときの答え合わせとしても使えるかなと思っています。
DGX Spark + vLLM のローカル推論で NAT を動かしたい、という方は、書籍とは別系統の入口として NeMo Agent Toolkit を DGX Spark + vLLM のローカル構成で動かしてみた も合わせてどうぞ。書籍は NIM 無料枠ベース、こちらの記事は完全ローカル、という棲み分けです。
実践運用編で扱う運用品質 4 本柱
実践運用編のタイトルは「NeMo Agent Toolkit 実践運用編 — Guardrails × Langfuse」です。入門編で「動くエージェント」を組めた読者の、次の一歩を埋める本という位置付けにしました。
題材アプリは社内ドキュメント Q&A エージェントに切り替えています。題材を変えた狙いは「本番投入の文脈を体感しやすくするため」です。社外秘の文書を扱う、PII を含むサンプルが混ざる、という前提があると、ガードレールや観測の必要性が「説明されないとわからないもの」から「題材が要求してくるもの」になります。題材は RFC 2606 に沿って Example 株式会社(example.com)でダミー化していて、書籍 + サンプルリポをそのまま動かせます。
実践運用編で扱う「運用品質の 4 本柱」を 1 枚で示すとこうなります。
Orchestration に LangGraph を選んだ理由
最初の柱は Orchestration、つまりエージェントの「振る舞い」をどう設計するか、です。NAT は LangChain / LangGraph / CrewAI / Semantic Kernel / Google ADK / Strands / AutoGen と幅広いフレームワークを optional extras で取り込める作りになっていて、選択肢が多すぎてかえって迷いやすい領域でした。
実践運用編では実装する側を LangGraph 1 つに絞り、CrewAI / AutoGen は比較表 + コラム扱いにしています。決め手は 2 つで、ひとつは NAT の _type: langgraph 統合がきれいに整っていて、LangGraph で組んだ振る舞いをそのまま NAT の function として宣言できる点。もうひとつは、社内 Q&A のように「retrieve → check → synthesize」という状態遷移が明確にあるアプリでは、状態機械として書ける LangGraph の方が、CrewAI のロール分担モデルよりも素直に表現できる、と感じたところです。
CrewAI や AutoGen を使うべきユースケースが消えるわけではなく、複数の役割(営業 / 開発 / レビュアー)を持つロールベースのワークフローでは CrewAI の表現力が刺さる場面もあります。実践運用編の Ch 3 では、その辺りの選定基準を「どんな性質のフローならどのフレームワークが向くか」という軸で並べています。
Guardrails LLM に NemoGuard Safety Guard Multilingual v3 を選んだ理由
2 本目の柱は Guardrails です。NAT には Guardrails の公式 middleware が用意されているわけではないので、NeMo Guardrails を外付けで挟む形になります。書籍では LLMRails.check_async() を手動で呼ぶパターンと、LangChain の RunnableRails で wrap するパターンの両方を扱いました。
ここで地味に大事なのが Guardrail LLM の選定です。日本語入力に対するセーフティ判定をかける場合、Llama Guard 3 / 4 は公式に日本語サポートがなく、英語キーワード固定のパーサーで取りこぼしが出やすい問題があります。書籍ではこの課題を、NVIDIA の NemoGuard Safety Guard Multilingual v3(nvidia/llama-3.1-nemotron-safety-guard-8b-v3)を採用することで回避しました。CultureGuard という多言語ガード手法で日本語含む 9 言語に文化適応学習しており、9 言語平均で 85.32% の正解率(NVIDIA 公開値)が出ています。engine: nim を models ブロックに数行追加するだけで NeMo Guardrails に組み込めて、build.nvidia.com の NIM 無料枠(40 RPM)でも試せるので、最初の 1 歩としてはかなり親切な選択肢かなと思っています。
NeMo Guardrails のレールの 5 階層(Input / Output / Dialog / Retrieval / Execution)の構造そのものは、別記事の NeMo Guardrails で日本語 LLM に安全装備を載せてみた でも扱っています。実践運用編の Ch 8-9 はそこからもう一段、「NAT のフローに組み込む」「多言語の運用に乗せる」という観点で深掘りした内容です。
Observability で Langfuse self-hosted に Phoenix を置き換えた理由
3 本目の柱は Observability です。入門編では入門用に Arize Phoenix を採用しており、トレースを眺めるという最低限のラインを 1 ブロックの設定で達成できる手軽さが魅力でした。
ただ、本番運用を見据えるとプロンプト管理、コスト追跡、評価データセットといった「観測の周辺領域」をどこかに集約したくなってきます。実践運用編で Langfuse self-hosted に置き換えたのは、ここを 1 つのスタックで賄えるからでした。Langfuse v3 は OTLP エンドポイント(/api/public/otel)を持っていて、NAT の _type: langfuse exporter で trace を直送できます。さらに、プロンプト管理(バージョニング + A/B 比較)、コスト・トークン追跡、Datasets API でのデータセット管理が、UI と API でひとつながりになっています。
Phoenix から Langfuse への移行ガイドは付録 A にまとめてあるので、入門編で Phoenix に慣れた方も、必要な差分だけ拾って 実践運用編に進めるはずです。
Eval を Langfuse Datasets に寄せた理由
4 本目の柱は Eval Dataset、つまり「評価をどう運用に組み込むか」です。NAT には nat eval という採点 CLI が同梱されていて、入門編の Ch 13 でも扱っています。
実践運用編では、評価データセットの管理そのものを Langfuse Datasets 側に寄せました。理由は、Observability で集約した trace / prompt / cost と評価結果が同じ画面で並んで見られることが、運用の現場では効くと感じたからです。プロンプトを更新したらその場でデータセットに対して再評価して、UI 上で前 version と差分を見比べる、という回し方が自然にできるようになります。
nat eval をやめたわけではなく、CI 上でのバッチ採点や JSONL ベースの評価には引き続き有効です。住み分けとしては、CI バッチに nat eval、運用フィードバックに Langfuse Datasets、という整理を Ch 13 で書いています。NeMo の評価系ライブラリ全体の地図は LLM 評価基盤「NeMo Evaluator」を DGX Spark で試してみた でも触れているので、合わせて読んでみてください。
書籍リポは zenn-contents/books/nemo-agent-toolkit-production-ops、サンプルコードは nemo-agent-toolkit-production-ops に置いています。Langfuse の compose 一式や Guardrails の Colang 設定もまとめて入っているので、書籍を読みながら手元で再現するときの足場として使ってもらえれば。
どちらから読むかの判断軸
「2 冊どっちから読めばいいの?」という質問が出そうなので、ざっくりした判断フローと比較表を置いておきます。
中身の対応関係も並べておきます。
| 軸 | 入門編 - NIM + Docker ハンズオン | 実践運用編 - Guardrails × Langfuse |
|---|---|---|
| 対象 | NAT 初学者 | 入門編読了者 / 本番運用検討者 |
| 推論バックエンド | NIM 無料枠 | NIM 無料枠 |
| GPU / 環境 | 不要 / Colima + Docker | 不要 / Langfuse self-hosted を 6 サービス自前運用 |
| 中核技術 | YAML / ReAct / Milvus RAG / MCP / A2A | LangGraph / NeMo Guardrails / Langfuse / Datasets |
| 題材 | Hello Agent → 最終アプリ | 社内ドキュメント Q&A |
NAT に初めて触る方は 入門編からで、すでに 入門編レベル相当の経験があり「観測 / 安全 / 評価をどう運用に組み込むか」のあたりが気になる方は 実践運用編から、というのが素直なルートかなと思っています。
既存の DevIO 記事との往復ルート
ここまでで参照したものも含めて、NeMo 周りの DevIO 記事の中で本記事がどこに位置するのかを 1 枚にまとめておきます。
最初の入口は NVIDIA NeMo Framework を俯瞰してみた で、NeMo / Nemotron / NIM / Cosmos / NemoClaw のブランド整理と DGX Spark 対応マトリクスをここでまとめています。Agent Toolkit を実機で動かす入門は NeMo Agent Toolkit を DGX Spark + vLLM のローカル構成で動かしてみた、Guardrails の入門は NeMo Guardrails で日本語 LLM に安全装備を載せてみた、評価系は LLM 評価基盤「NeMo Evaluator」を DGX Spark で試してみた という並びです。本記事は、その流れに「Zenn Book で章単位に深掘りしたい人向けの入口」を 1 つ追加するイメージで、記事で全体感を掴んで書籍で写経しながら詰める、という往復ができるように内部リンクを張りました。
おわりに
NeMo Agent Toolkit は 1 つのフレームワークというより、複数フレームワークの上に観測・評価・安全のレイヤーを被せるための土台で、実践運用編を書きながら「LangGraph で振る舞いを書き、Guardrails で守り、Langfuse で見る」という分担がはっきりしてきて、NeMo Agent Toolkit を選ぶ意味がだんだん見えてきました。
書籍はこちらです、よかったら手に取ってみてください。
📕 NIM + Docker ではじめる NeMo Agent Toolkit ハンズオン
📗 NeMo Agent Toolkit 実践運用編 — Guardrails × Langfuse
サンプルコードは GitHub に置いていて、書籍の各章に対応しています。
入門編サンプルリポ
実践運用編サンプルリポ







