Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

NVIDIA NeMo Agent Tooklit を使ってみた

Avatar for SatohJohn SatohJohn
December 10, 2025
39

NVIDIA NeMo Agent Tooklit を使ってみた

1時間で理解するッ!!NVIDIA NIMやNVIDIA NeMoの基礎と実用例 というイベントで発表しました。
https://3-shake.connpass.com/event/373638/

Avatar for SatohJohn

SatohJohn

December 10, 2025
Tweet

Transcript

  1. 自己紹介 佐藤 慧太@SatohJohn • 2023/1 株式会社スリーシェイク入社 • Google Cloud Partner

    Top Engineer ’24、’25、’26 選出 • お客様の労苦 <Toil>を減らす • 娘のお世話を精一杯やっています
  2. Workflow Configuration functions: webpage_query: _type: webpage_query webpage_url: https://docs.smith.langchain.com description: "Search

    for information about LangSmith. For any questions about LangSmith, you must use this tool!" embedder_name: nv-embedqa-e5-v5 chunk_size: 512 current_datetime: _type: current_datetime llms: nim_llm: _type: nim model_name: meta/llama-3.1-70b-instruct temperature: 0.0 embedders: nv-embedqa-e5-v5: _type: nim model_name: nvidia/nv-embedqa-e5-v5 workflow: _type: react_agent tool_names: [webpage_query, current_datetime] llm_name: nim_llm verbose: true parse_agent_response_max_retries: 3
  3. Workflow Configuration 1. functions a. AI Agent が呼び出せる “callable なコンポーネント”

    を定義する i. ツール、sub-Agent など b. この挙動は Python によって自作することができる 2. llm a. AI Agent が利用する llm model のプロバイダと model を指定する b. nim や litellm などを指定することができる c. プロバイダは追加することができる
  4. NVIDIA NeMo Agent Toolkit のメリット • yaml を使った AI Agent

    の作成 • NVIDIA NeMo Agent Toolkit というレイヤーで Workflow を作成 するため、AI Agent の Framework に依存が少ない ◦ AI Agent の方で使える使えないがあるので注意しないとい けないことがある • 拡張を Python で記載ができる = Pluggable
  5. Sample config file functions: wiki_search: _type: wiki_search max_results: 5 current_datetime:

    _type: current_datetime llms: nim_llm: _type: nim model_name: meta/llama-3.1-70b-instruct temperature: 0.0 workflow: _type: react_agent tool_names: [wiki_search, current_datetime] llm_name: nim_llm verbose: true parse_agent_response_max_retr ies: 3
  6. Function を作成する NVIDIA NeMo Agent Toolkit における Function は Workflow

    のステップを指す 例えば Workflow の type を自作する際も Function として作成する つまり Config における _type: で基本にないものは自作することになる 今回は、Agent Development Kit を使った workflow を題とする https://github.com/NVIDIA/NeMo-Agent-Toolkit/tree/develop/examples/frameworks/adk_demo
  7. Function を作成する - Agent Development Kit - uv add "nvidia-nat[adk]"

    nat workflow create --workflow-dir agents adk https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/reference/frameworks-overvi ew.md#adk-google-agent-development-kit
  8. Function を作成する - Agent Development Kit - class ADKFunctionConfig(FunctionBaseConfig, name="adk"):

    name: str = Field(default="nat-adk-agent") description: str prompt: str llm: LLMRef tool_names: list[str] = Field(default_factory=list) workflow_alias: str = Field(default="adk_agent") user_id: str = Field(default="nat")
  9. Function を作成する - Agent Development Kit - @register_function(config_type=ADKFunctionConfig, framework_wrappers=[LLMFrameworkEnum.ADK]) async

    def adk_agent(config: ADKFunctionConfig, builder: Builder): model = await builder.get_llm(config.llm, wrapper_type=LLMFrameworkEnum.ADK) tools = await builder.get_tools(config.tool_names, wrapper_type=LLMFrameworkEnum.ADK) agent = Agent( name=config.name, model=model, description=config.description, instruction=config.prompt, tools=tools, ) runner = Runner(app_name=config.name, agent=agent, artifact_service=artifact_service, session_service=session_service) async def _response_fn(input_message: str) -> str: async def run_prompt(new_message: str) -> str: do_anything return await run_prompt(input_message) yield FunctionInfo.create(single_fn=_response_fn, description=config.description)
  10. Function を作成する - Agent Development Kit - functions: current_datetime: _type:

    current_datetime llms: llm: _type: litellm model_name: vertex_ai/gemini-2.5-pro workflow: _type: adk name: adk_demo llm: llm tool_names: [current_datetime] description: instruction: You are a helpful agent who can answer user questions.
  11. 補足 Gemini 3 Pro を使う class Gemini3(Gemini): @cached_property def api_client(self)

    -> Client: project = os.getenv("GOOGLE_CLOUD_PROJECT", "xxxxx") location = "global" return Client( project=project, location=location, http_options=types.HttpOptions( headers=self._tracking_headers, retry_options=self.retry_options, ) ) agent = Agent( name=config.name, model=Gemini3(model="gemini-3-pro-preview"), description=config.description, instruction=config.instruction )
  12. functions: current_datetime: _type: current_datetime workflow: _type: adk name: adk_demo tool_names:

    [current_datetime] description: Test agent instruction: You are a helpful agent who can answer user questions. 注意 UI の方で AI Agent がどういう動きをしたのかのトレースが見えにくい 補足 Gemini 3 Pro を使う
  13. まとめ NVIDIA NeMo Agent Toolkit を 知らないひと 1. AI Agent

    またはそれを組み込んだ ワークフローを作れる 2. yaml で定義する 3. 足りない部分は自作する
  14. まとめ NVIDIA NeMo Agent ToolKit (NAT) を 知らないひと Python で

    AI Agent 作成に挑戦したいひと 1. Config を使い定義を作成して利用 2. Function を自作して Agent また は tool として利用 3. 利用者がインストールして利用