Skip to content

Update currency agent A2A example instructions to use openai models#1372

Merged
rapids-bot[bot] merged 10 commits intoNVIDIA:release/1.4from
AnuradhaKaruppiah:ak-currency-agent-model-change
Jan 10, 2026
Merged

Update currency agent A2A example instructions to use openai models#1372
rapids-bot[bot] merged 10 commits intoNVIDIA:release/1.4from
AnuradhaKaruppiah:ak-currency-agent-model-change

Conversation

@AnuradhaKaruppiah
Copy link
Contributor

@AnuradhaKaruppiah AnuradhaKaruppiah commented Jan 9, 2026

Description

Closes: nvbugs-5792154

This PR adds documentation and configuration support for using openai models with the LangGraph currency agent.

Additionally the summary of the three a2a examples have been updated to highlight the difference between them:

  1. currency_agent_a2a: The toolkit is an a2a client and the example demonstrates interop with a 3rd party a2a server
  2. math_assistant_a2a: The toolkit is both a2a client and a2a server
  3. math_assistant_a2a_protected: Same as (2) but with oauth2-protected secure communication between the a2a client and a2a server

By Submitting this PR I confirm:

  • I am familiar with the Contributing Guidelines.
  • We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
    • Any contribution which contains commits that are not Signed-Off will not be accepted.
  • When the PR is ready for review, new or existing tests cover these changes.
  • When the PR is ready for review, the documentation is up to date with these changes.

Summary by CodeRabbit

  • Documentation
    • Rewrote A2A example READMEs to center NVIDIA NeMo Agent Toolkit roles (client/server) and clearer A2A workflows, including OAuth2-protected scenarios.
    • Added API key setup guidance (NVIDIA_API_KEY, OPENAI_API_KEY) with .env examples; removed Google Gemini key instructions.
    • Expanded step-by-step usage, architecture, OAuth2 configuration, per-user flows, and runtime expectations.

✏️ Tip: You can customize this high-level summary in your review settings.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
@AnuradhaKaruppiah AnuradhaKaruppiah self-assigned this Jan 9, 2026
@AnuradhaKaruppiah AnuradhaKaruppiah added bug Something isn't working non-breaking Non-breaking change labels Jan 9, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 9, 2026

Warning

Rate limit exceeded

@AnuradhaKaruppiah has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 15 minutes and 46 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between de91bd5 and cba3fae.

📒 Files selected for processing (1)
  • examples/A2A/currency_agent_a2a/README.md

Walkthrough

Updated three A2A example READMEs to reframe workflows around the NVIDIA NeMo Agent Toolkit, replace Google Gemini key guidance with NVIDIA/OpenAI API key setup and a .env model setting, and expand the protected example with a NeMo-hosted A2A client/server OAuth2 narrative.

Changes

Cohort / File(s) Summary
Currency A2A README
examples/A2A/currency_agent_a2a/README.md
Replaced Google Gemini API key instructions with NVIDIA/OpenAI API key prerequisites; added NVIDIA_API_KEY / OPENAI_API_KEY setup and .env guidance (TOOL_LLM_URL / TOOL_LLM_NAME); moved API key setup into Installation/Set Up and Step 3; minor formatting/section tweaks.
Math Assistant README
examples/A2A/math_assistant_a2a/README.md
Updated description to present an end-to-end A2A workflow with NVIDIA NeMo Agent Toolkit as both A2A client and server; emphasized time queries, logical reasoning, and combined remote calculator/local time tool usage; small wording changes.
Protected Math Assistant README
examples/A2A/math_assistant_a2a_protected/README.md
Rewrote narrative to center NeMo Agent Toolkit hosting for A2A Server and per-user A2A Client; expanded architecture and OAuth2 flow details (agent-card discovery, token acquisition, JWT/JWKS validation); added Keycloak/configuration and per-user runnable guidance; formatting and section reorganization.
A2A examples index
examples/README.md
Updated A2A section entries to reflect README rewrites for the three A2A examples above.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: updating the currency agent A2A example to support OpenAI models, which aligns with the primary file modification (currency_agent_a2a/README.md) and PR objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
@AnuradhaKaruppiah AnuradhaKaruppiah changed the title Update currency agent A2A example to use NVIDIA models Update currency agent A2A example instructions to use openai models Jan 9, 2026
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
@AnuradhaKaruppiah AnuradhaKaruppiah marked this pull request as ready for review January 9, 2026 20:02
@AnuradhaKaruppiah AnuradhaKaruppiah requested a review from a team as a code owner January 9, 2026 20:02
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In @examples/A2A/currency_agent_a2a/README.md:
- Line 87: The comment labeling gpt-3.5-turbo as a "Mini model" is incorrect;
update the line that sets TOOL_LLM_NAME (e.g., TOOL_LLM_NAME=gpt-3.5-turbo) to
either change the comment to accurately describe it as a standard model (e.g.,
"# Standard model") or switch the value to a true mini model like gpt-4o-mini if
you intend a cost-effective option, and ensure the inline comment matches the
chosen model.
- Line 57: Update the first substantive mention of the toolkit in the README
sentence "Follow the instructions in the Install Guide... to create the
development environment and install NeMo Agent toolkit" to use the full name
"NVIDIA NeMo Agent toolkit" (i.e., replace "NeMo Agent toolkit" with "NVIDIA
NeMo Agent toolkit") while leaving subsequent occurrences unchanged to maintain
consistent branding.
🧹 Nitpick comments (1)
examples/A2A/currency_agent_a2a/README.md (1)

77-77: Consider using consistent toolkit version reference.

The comment references "NAT 1.4.0," which uses an acronym form. For consistency with documentation standards, consider using the full product name "NVIDIA NeMo Agent Toolkit 1.4.0" or the established lowercase identifier form in version contexts.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f8cc33a and df29379.

📒 Files selected for processing (1)
  • examples/A2A/currency_agent_a2a/README.md
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{md,mdx}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{md,mdx}: Use 'NVIDIA NeMo Agent toolkit' for full name (first use), 'NeMo Agent toolkit' or 'the toolkit' for subsequent references, and 'Toolkit' (capital T) in titles/headings, 'toolkit' (lowercase t) in body text
Never use deprecated names: 'Agent Intelligence toolkit', 'aiqtoolkit', 'AgentIQ', 'AIQ', or 'aiq' in documentation; update any occurrences unless intentionally referring to deprecated versions or implementing compatibility layers

Files:

  • examples/A2A/currency_agent_a2a/README.md
**/*.{md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{md,mdx,rst}: Documentation must be clear, comprehensive, and free of TODOs, FIXMEs, placeholder text, offensive or outdated terms, and spelling mistakes
Do not use words listed in 'ci/vale/styles/config/vocabularies/nat/reject.txt' in documentation
Words listed in 'ci/vale/styles/config/vocabularies/nat/accept.txt' are acceptable even if they appear to be spelling mistakes

Files:

  • examples/A2A/currency_agent_a2a/README.md
**/*.{py,js,ts,tsx,jsx,sh,yaml,yml,json,toml,md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{py,js,ts,tsx,jsx,sh,yaml,yml,json,toml,md,mdx,rst}: Every file must start with the standard SPDX Apache-2.0 header
Confirm that copyright years are up-to-date whenever a file is changed
All source files must include the SPDX Apache-2.0 header template

Files:

  • examples/A2A/currency_agent_a2a/README.md
**/*.{py,md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Version numbers are derived automatically by 'setuptools-scm'; never hard-code them in code or docs

Files:

  • examples/A2A/currency_agent_a2a/README.md
**/*

⚙️ CodeRabbit configuration file

**/*: # Code Review Instructions

  • Ensure the code follows best practices and coding standards. - For Python code, follow
    PEP 20 and
    PEP 8 for style guidelines.
  • Check for security vulnerabilities and potential issues. - Python methods should use type hints for all parameters and return values (except for return values of None,
    in that situation no return type hint is needed).
    Example:
    def my_function(param1: int, param2: str) -> bool:
        pass
  • For Python exception handling, ensure proper stack trace preservation:
    • When re-raising exceptions: use bare raise statements to maintain the original stack trace,
      and use logger.error() (not logger.exception()) to avoid duplicate stack trace output.
    • When catching and logging exceptions without re-raising: always use logger.exception()
      to capture the full stack trace information.

Documentation Review Instructions - Verify that documentation and comments are clear and comprehensive. - Verify that the documentation doesn't contain any TODOs, FIXMEs or placeholder text like "lorem ipsum". - Verify that the documentation doesn't contain any offensive or outdated terms. - Verify that documentation and comments are free of spelling mistakes, ensure the documentation doesn't contain any

words listed in the ci/vale/styles/config/vocabularies/nat/reject.txt file, words that might appear to be
spelling mistakes but are listed in the ci/vale/styles/config/vocabularies/nat/accept.txt file are OK.

  • Documentation in Markdown files should not contain usage of a possessive 's with inanimate objects
    (ex: "the system's performance" should be "the performance of the system").
  • Documentation in Markdown files should not use NAT as an acronym, always spell out NeMo Agent Toolkit.
    The exception to this rule is when referring to package names or code identifiers that contain "nat", th...

Files:

  • examples/A2A/currency_agent_a2a/README.md
examples/**/*

⚙️ CodeRabbit configuration file

examples/**/*: - This directory contains example code and usage scenarios for the toolkit, at a minimum an example should
contain a README.md or file README.ipynb.

  • If an example contains Python code, it should be placed in a subdirectory named src/ and should
    contain a pyproject.toml file. Optionally, it might also contain scripts in a scripts/ directory.
  • If an example contains YAML files, they should be placed in a subdirectory named configs/. - If an example contains sample data files, they should be placed in a subdirectory named data/, and should
    be checked into git-lfs.

Files:

  • examples/A2A/currency_agent_a2a/README.md
🧠 Learnings (4)
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Applies to **/*.{md,mdx} : Never use deprecated names: 'Agent Intelligence toolkit', 'aiqtoolkit', 'AgentIQ', 'AIQ', or 'aiq' in documentation; update any occurrences unless intentionally referring to deprecated versions or implementing compatibility layers

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Applies to **/*.{md,mdx} : Use 'NVIDIA NeMo Agent toolkit' for full name (first use), 'NeMo Agent toolkit' or 'the toolkit' for subsequent references, and 'Toolkit' (capital T) in titles/headings, 'toolkit' (lowercase t) in body text

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T16:32:00.641Z
Learnt from: mnajafian-nv
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 1324
File: examples/config_inheritance/pyproject.toml:15-15
Timestamp: 2026-01-05T16:32:00.641Z
Learning: In the NVIDIA/NeMo-Agent-Toolkit repository, the develop branch may reference unreleased versions of nvidia-nat (e.g., 1.5) in pyproject.toml dependency specifications even before those versions are published to PyPI. This is intentional pre-release version management, and the workspace dependencies use editable local installs (e.g., `nvidia-nat = { path = "../..", editable = true }`) to ensure development works correctly with the local sources.

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Use technical identifiers: 'nat' for API namespace and CLI tool, 'nvidia-nat' for package name, 'NAT_' prefix for environment variables, 'NeMo-Agent-Toolkit' for URLs and directory names

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
🔇 Additional comments (2)
examples/A2A/currency_agent_a2a/README.md (2)

59-66: Clear and well-structured API key setup instructions.

The "Set Up API Keys" prerequisite section is clear and provides proper guidance for users on setting NVIDIA and OpenAI credentials.


82-86: Verify environment variable names match the external LangGraph agent expectations.

The new .env configuration (lines 84-87) sets variables for the external LangGraph currency agent. Confirm that the variable names (API_KEY, model_source, TOOL_LLM_URL, TOOL_LLM_NAME) and values match what the LangGraph agent expects from its .env file.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
examples/A2A/math_assistant_a2a/README.md (1)

19-19: Fix toolkit naming convention in body text.

The first reference to the toolkit in body text should use lowercase "toolkit". Per coding guidelines, use "NVIDIA NeMo Agent toolkit" for the full name in body text.

🔧 Proposed fix
-This example demonstrates an end-to-end A2A workflow with NVIDIA NeMo Agent Toolkit functioning as both A2A client and server. The workflow performs mathematical calculations integrated with time queries and logical reasoning, combining remote calculator operations with local time services and conditional evaluation tools.
+This example demonstrates an end-to-end A2A workflow with NVIDIA NeMo Agent toolkit functioning as both A2A client and server. The workflow performs mathematical calculations integrated with time queries and logical reasoning, combining remote calculator operations with local time services and conditional evaluation tools.
examples/A2A/currency_agent_a2a/README.md (2)

20-20: Fix grammatical error and toolkit naming convention.

Two issues on this line:

  1. Grammatical: "a NVIDIA" should be "an NVIDIA" (NVIDIA starts with a vowel sound)
  2. Naming convention: Use "NVIDIA NeMo Agent toolkit" (lowercase "toolkit") for the full name in body text per coding guidelines
🔧 Proposed fix
-This example demonstrates a NVIDIA NeMo Agent Toolkit workflow connecting to a third-party A2A server, the LangGraph-based currency agent. The workflow acts as an A2A client to perform currency conversions and financial queries with time-based context.
+This example demonstrates an NVIDIA NeMo Agent toolkit workflow connecting to a third-party A2A server, the LangGraph-based currency agent. The workflow acts as an A2A client to perform currency conversions and financial queries with time-based context.

77-77: Remove hardcoded version number from documentation.

Per coding guidelines, version numbers should not be hard-coded in code or documentation since they are derived automatically by setuptools-scm. The reference to "NAT 1.4.0" should be removed or made more generic.

🔧 Proposed fix
-git checkout eb3885f # tested on 12/2025 with NAT 1.4.0
+git checkout eb3885f # tested on 12/2025
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between df29379 and 612ba81.

📒 Files selected for processing (2)
  • examples/A2A/currency_agent_a2a/README.md
  • examples/A2A/math_assistant_a2a/README.md
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{md,mdx}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{md,mdx}: Use 'NVIDIA NeMo Agent toolkit' for full name (first use), 'NeMo Agent toolkit' or 'the toolkit' for subsequent references, and 'Toolkit' (capital T) in titles/headings, 'toolkit' (lowercase t) in body text
Never use deprecated names: 'Agent Intelligence toolkit', 'aiqtoolkit', 'AgentIQ', 'AIQ', or 'aiq' in documentation; update any occurrences unless intentionally referring to deprecated versions or implementing compatibility layers

Files:

  • examples/A2A/math_assistant_a2a/README.md
  • examples/A2A/currency_agent_a2a/README.md
**/*.{md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{md,mdx,rst}: Documentation must be clear, comprehensive, and free of TODOs, FIXMEs, placeholder text, offensive or outdated terms, and spelling mistakes
Do not use words listed in 'ci/vale/styles/config/vocabularies/nat/reject.txt' in documentation
Words listed in 'ci/vale/styles/config/vocabularies/nat/accept.txt' are acceptable even if they appear to be spelling mistakes

Files:

  • examples/A2A/math_assistant_a2a/README.md
  • examples/A2A/currency_agent_a2a/README.md
**/*.{py,js,ts,tsx,jsx,sh,yaml,yml,json,toml,md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{py,js,ts,tsx,jsx,sh,yaml,yml,json,toml,md,mdx,rst}: Every file must start with the standard SPDX Apache-2.0 header
Confirm that copyright years are up-to-date whenever a file is changed
All source files must include the SPDX Apache-2.0 header template

Files:

  • examples/A2A/math_assistant_a2a/README.md
  • examples/A2A/currency_agent_a2a/README.md
**/*.{py,md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Version numbers are derived automatically by 'setuptools-scm'; never hard-code them in code or docs

Files:

  • examples/A2A/math_assistant_a2a/README.md
  • examples/A2A/currency_agent_a2a/README.md
**/*

⚙️ CodeRabbit configuration file

**/*: # Code Review Instructions

  • Ensure the code follows best practices and coding standards. - For Python code, follow
    PEP 20 and
    PEP 8 for style guidelines.
  • Check for security vulnerabilities and potential issues. - Python methods should use type hints for all parameters and return values (except for return values of None,
    in that situation no return type hint is needed).
    Example:
    def my_function(param1: int, param2: str) -> bool:
        pass
  • For Python exception handling, ensure proper stack trace preservation:
    • When re-raising exceptions: use bare raise statements to maintain the original stack trace,
      and use logger.error() (not logger.exception()) to avoid duplicate stack trace output.
    • When catching and logging exceptions without re-raising: always use logger.exception()
      to capture the full stack trace information.

Documentation Review Instructions - Verify that documentation and comments are clear and comprehensive. - Verify that the documentation doesn't contain any TODOs, FIXMEs or placeholder text like "lorem ipsum". - Verify that the documentation doesn't contain any offensive or outdated terms. - Verify that documentation and comments are free of spelling mistakes, ensure the documentation doesn't contain any

words listed in the ci/vale/styles/config/vocabularies/nat/reject.txt file, words that might appear to be
spelling mistakes but are listed in the ci/vale/styles/config/vocabularies/nat/accept.txt file are OK.

  • Documentation in Markdown files should not contain usage of a possessive 's with inanimate objects
    (ex: "the system's performance" should be "the performance of the system").
  • Documentation in Markdown files should not use NAT as an acronym, always spell out NeMo Agent Toolkit.
    The exception to this rule is when referring to package names or code identifiers that contain "nat", th...

Files:

  • examples/A2A/math_assistant_a2a/README.md
  • examples/A2A/currency_agent_a2a/README.md
examples/**/*

⚙️ CodeRabbit configuration file

examples/**/*: - This directory contains example code and usage scenarios for the toolkit, at a minimum an example should
contain a README.md or file README.ipynb.

  • If an example contains Python code, it should be placed in a subdirectory named src/ and should
    contain a pyproject.toml file. Optionally, it might also contain scripts in a scripts/ directory.
  • If an example contains YAML files, they should be placed in a subdirectory named configs/. - If an example contains sample data files, they should be placed in a subdirectory named data/, and should
    be checked into git-lfs.

Files:

  • examples/A2A/math_assistant_a2a/README.md
  • examples/A2A/currency_agent_a2a/README.md
🧠 Learnings (6)
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Applies to **/*.{md,mdx} : Use 'NVIDIA NeMo Agent toolkit' for full name (first use), 'NeMo Agent toolkit' or 'the toolkit' for subsequent references, and 'Toolkit' (capital T) in titles/headings, 'toolkit' (lowercase t) in body text

Applied to files:

  • examples/A2A/math_assistant_a2a/README.md
  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Applies to **/*.{md,mdx} : Never use deprecated names: 'Agent Intelligence toolkit', 'aiqtoolkit', 'AgentIQ', 'AIQ', or 'aiq' in documentation; update any occurrences unless intentionally referring to deprecated versions or implementing compatibility layers

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Use technical identifiers: 'nat' for API namespace and CLI tool, 'nvidia-nat' for package name, 'NAT_' prefix for environment variables, 'NeMo-Agent-Toolkit' for URLs and directory names

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2025-12-12T20:49:51.370Z
Learnt from: zterek
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 1243
File: examples/risk_and_security/retail_agent/src/nat_retail_agent/configs/red-teaming.yml:1-98
Timestamp: 2025-12-12T20:49:51.370Z
Learning: In the NVIDIA/NeMo-Agent-Toolkit repository, most YAML configuration files use 2-space indentation rather than 4-space indentation. When reviewing YAML files, prefer consistency with the existing codebase style (2-space indentation) over the stated coding guideline (4-space indentation) until a repository-wide standardization is performed.

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2025-08-22T20:29:13.433Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 701
File: examples/evaluation_and_profiling/simple_calculator_eval/src/nat_simple_calculator_eval/configs/config-with-custom-post-process.yml:16-18
Timestamp: 2025-08-22T20:29:13.433Z
Learning: In the NeMo-Agent-Toolkit project, configuration consistency across example files is prioritized over removing unused config options, even when those options aren't currently implemented in the runtime.

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T16:32:00.641Z
Learnt from: mnajafian-nv
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 1324
File: examples/config_inheritance/pyproject.toml:15-15
Timestamp: 2026-01-05T16:32:00.641Z
Learning: In the NVIDIA/NeMo-Agent-Toolkit repository, the develop branch may reference unreleased versions of nvidia-nat (e.g., 1.5) in pyproject.toml dependency specifications even before those versions are published to PyPI. This is intentional pre-release version management, and the workspace dependencies use editable local installs (e.g., `nvidia-nat = { path = "../..", editable = true }`) to ensure development works correctly with the local sources.

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
🔇 Additional comments (3)
examples/A2A/math_assistant_a2a/README.md (1)

61-65: LGTM!

The subsequent references to "NeMo Agent toolkit" correctly use lowercase "toolkit" per coding guidelines. Content is well-organized, clear, and free of TODOs, FIXMEs, and spelling errors.

examples/A2A/currency_agent_a2a/README.md (2)

59-99: API key setup is well-documented.

The new "Set Up API Keys" section and the updated Step 3 with OpenAI model configuration are clear and comprehensive. The shift from Gemini to OpenAI aligns with the PR objectives. The environment variable setup and .env file creation instructions are appropriately detailed. Based on learnings, YAML configuration files in this repository use 2-space indentation, though no YAML is directly shown in these README changes.


52-186: Content structure and clarity are solid.

The README follows a consistent structure with the math_assistant_a2a example, providing clear architecture diagrams, setup instructions, configuration details, troubleshooting guidance, and related examples. Documentation is free of TODOs, FIXMEs, and spelling errors. The tool composition explanation clearly distinguishes between per-user A2A clients and shared MCP tools, which is important for understanding the architecture.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Copy link
Member

@willkill07 willkill07 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving with suggestion of using a newer OpenAI model

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
examples/A2A/math_assistant_a2a_protected/README.md (1)

233-233: Avoid possessive 's with inanimate objects.

Line 233 uses "Keycloak's standard paths" which should be rewritten without the possessive 's to follow documentation style guidelines.

Rewrite possessive construction
-   **Note:** These endpoints use Keycloak's standard paths (`/protocol/openid-connect/*`), not generic `/oauth/*` paths. The NeMo Agent toolkit A2A client discovers these URLs automatically from the discovery endpoint.
+   **Note:** These endpoints use standard Keycloak paths (`/protocol/openid-connect/*`), not generic `/oauth/*` paths. The NeMo Agent toolkit A2A client discovers these URLs automatically from the discovery endpoint.
🤖 Fix all issues with AI agents
In @examples/A2A/currency_agent_a2a/README.md:
- Line 82: Fix the heading spacing in the README by updating the line that
currently reads "# Step 3:Set the environment variables for the currency agent"
to include a space after the colon so it reads "# Step 3: Set the environment
variables for the currency agent"; this is the only change needed in the README
entry for Step 3.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 612ba81 and 69448d1.

📒 Files selected for processing (3)
  • examples/A2A/currency_agent_a2a/README.md
  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/README.md
🧰 Additional context used
📓 Path-based instructions (7)
**/*.{md,mdx}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{md,mdx}: Use 'NVIDIA NeMo Agent toolkit' for full name (first use), 'NeMo Agent toolkit' or 'the toolkit' for subsequent references, and 'Toolkit' (capital T) in titles/headings, 'toolkit' (lowercase t) in body text
Never use deprecated names: 'Agent Intelligence toolkit', 'aiqtoolkit', 'AgentIQ', 'AIQ', or 'aiq' in documentation; update any occurrences unless intentionally referring to deprecated versions or implementing compatibility layers

Files:

  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
**/*.{md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{md,mdx,rst}: Documentation must be clear, comprehensive, and free of TODOs, FIXMEs, placeholder text, offensive or outdated terms, and spelling mistakes
Do not use words listed in 'ci/vale/styles/config/vocabularies/nat/reject.txt' in documentation
Words listed in 'ci/vale/styles/config/vocabularies/nat/accept.txt' are acceptable even if they appear to be spelling mistakes

Files:

  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
**/*.{py,js,ts,tsx,jsx,sh,yaml,yml,json,toml,md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

**/*.{py,js,ts,tsx,jsx,sh,yaml,yml,json,toml,md,mdx,rst}: Every file must start with the standard SPDX Apache-2.0 header
Confirm that copyright years are up-to-date whenever a file is changed
All source files must include the SPDX Apache-2.0 header template

Files:

  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
**/*.{py,md,mdx,rst}

📄 CodeRabbit inference engine (.cursor/rules/general.mdc)

Version numbers are derived automatically by 'setuptools-scm'; never hard-code them in code or docs

Files:

  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
**/*

⚙️ CodeRabbit configuration file

**/*: # Code Review Instructions

  • Ensure the code follows best practices and coding standards. - For Python code, follow
    PEP 20 and
    PEP 8 for style guidelines.
  • Check for security vulnerabilities and potential issues. - Python methods should use type hints for all parameters and return values (except for return values of None,
    in that situation no return type hint is needed).
    Example:
    def my_function(param1: int, param2: str) -> bool:
        pass
  • For Python exception handling, ensure proper stack trace preservation:
    • When re-raising exceptions: use bare raise statements to maintain the original stack trace,
      and use logger.error() (not logger.exception()) to avoid duplicate stack trace output.
    • When catching and logging exceptions without re-raising: always use logger.exception()
      to capture the full stack trace information.

Documentation Review Instructions - Verify that documentation and comments are clear and comprehensive. - Verify that the documentation doesn't contain any TODOs, FIXMEs or placeholder text like "lorem ipsum". - Verify that the documentation doesn't contain any offensive or outdated terms. - Verify that documentation and comments are free of spelling mistakes, ensure the documentation doesn't contain any

words listed in the ci/vale/styles/config/vocabularies/nat/reject.txt file, words that might appear to be
spelling mistakes but are listed in the ci/vale/styles/config/vocabularies/nat/accept.txt file are OK.

  • Documentation in Markdown files should not contain usage of a possessive 's with inanimate objects
    (ex: "the system's performance" should be "the performance of the system").
  • Documentation in Markdown files should not use NAT as an acronym, always spell out NeMo Agent Toolkit.
    The exception to this rule is when referring to package names or code identifiers that contain "nat", th...

Files:

  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
examples/**/*

⚙️ CodeRabbit configuration file

examples/**/*: - This directory contains example code and usage scenarios for the toolkit, at a minimum an example should
contain a README.md or file README.ipynb.

  • If an example contains Python code, it should be placed in a subdirectory named src/ and should
    contain a pyproject.toml file. Optionally, it might also contain scripts in a scripts/ directory.
  • If an example contains YAML files, they should be placed in a subdirectory named configs/. - If an example contains sample data files, they should be placed in a subdirectory named data/, and should
    be checked into git-lfs.

Files:

  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
examples/README.md

⚙️ CodeRabbit configuration file

  • Ensure that the README.md file is up-to-date with the latest changes in the project. - Ensure that there is an entry for each example under the examples directory which contains a README.md file in the examples list. - Any added examples should be added to the README.md file. - Any removed examples should be removed from the README.md file. - Example entries should be categorized by the directory they are located in.

Files:

  • examples/README.md
🧠 Learnings (8)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Applies to **/*.{md,mdx} : Use 'NVIDIA NeMo Agent toolkit' for full name (first use), 'NeMo Agent toolkit' or 'the toolkit' for subsequent references, and 'Toolkit' (capital T) in titles/headings, 'toolkit' (lowercase t) in body text
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Use technical identifiers: 'nat' for API namespace and CLI tool, 'nvidia-nat' for package name, 'NAT_' prefix for environment variables, 'NeMo-Agent-Toolkit' for URLs and directory names
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 701
File: examples/evaluation_and_profiling/simple_calculator_eval/src/nat_simple_calculator_eval/configs/config-with-custom-post-process.yml:16-18
Timestamp: 2025-08-22T20:29:13.433Z
Learning: In the NeMo-Agent-Toolkit project, configuration consistency across example files is prioritized over removing unused config options, even when those options aren't currently implemented in the runtime.
Learnt from: zterek
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 1243
File: examples/risk_and_security/retail_agent/src/nat_retail_agent/configs/red-teaming.yml:1-98
Timestamp: 2025-12-12T20:49:51.370Z
Learning: In the NVIDIA/NeMo-Agent-Toolkit repository, most YAML configuration files use 2-space indentation rather than 4-space indentation. When reviewing YAML files, prefer consistency with the existing codebase style (2-space indentation) over the stated coding guideline (4-space indentation) until a repository-wide standardization is performed.
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Examples should contain at minimum a 'README.md' or 'README.ipynb' file

Applied to files:

  • examples/A2A/math_assistant_a2a_protected/README.md
  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Applies to **/*.{md,mdx} : Never use deprecated names: 'Agent Intelligence toolkit', 'aiqtoolkit', 'AgentIQ', 'AIQ', or 'aiq' in documentation; update any occurrences unless intentionally referring to deprecated versions or implementing compatibility layers

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Applies to **/*.{md,mdx} : Use 'NVIDIA NeMo Agent toolkit' for full name (first use), 'NeMo Agent toolkit' or 'the toolkit' for subsequent references, and 'Toolkit' (capital T) in titles/headings, 'toolkit' (lowercase t) in body text

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
  • examples/README.md
📚 Learning: 2026-01-05T15:46:49.676Z
Learnt from: CR
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 0
File: .cursor/rules/general.mdc:0-0
Timestamp: 2026-01-05T15:46:49.676Z
Learning: Use technical identifiers: 'nat' for API namespace and CLI tool, 'nvidia-nat' for package name, 'NAT_' prefix for environment variables, 'NeMo-Agent-Toolkit' for URLs and directory names

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2025-12-12T20:49:51.370Z
Learnt from: zterek
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 1243
File: examples/risk_and_security/retail_agent/src/nat_retail_agent/configs/red-teaming.yml:1-98
Timestamp: 2025-12-12T20:49:51.370Z
Learning: In the NVIDIA/NeMo-Agent-Toolkit repository, most YAML configuration files use 2-space indentation rather than 4-space indentation. When reviewing YAML files, prefer consistency with the existing codebase style (2-space indentation) over the stated coding guideline (4-space indentation) until a repository-wide standardization is performed.

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2025-08-22T20:29:13.433Z
Learnt from: AnuradhaKaruppiah
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 701
File: examples/evaluation_and_profiling/simple_calculator_eval/src/nat_simple_calculator_eval/configs/config-with-custom-post-process.yml:16-18
Timestamp: 2025-08-22T20:29:13.433Z
Learning: In the NeMo-Agent-Toolkit project, configuration consistency across example files is prioritized over removing unused config options, even when those options aren't currently implemented in the runtime.

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
📚 Learning: 2026-01-05T16:32:00.641Z
Learnt from: mnajafian-nv
Repo: NVIDIA/NeMo-Agent-Toolkit PR: 1324
File: examples/config_inheritance/pyproject.toml:15-15
Timestamp: 2026-01-05T16:32:00.641Z
Learning: In the NVIDIA/NeMo-Agent-Toolkit repository, the develop branch may reference unreleased versions of nvidia-nat (e.g., 1.5) in pyproject.toml dependency specifications even before those versions are published to PyPI. This is intentional pre-release version management, and the workspace dependencies use editable local installs (e.g., `nvidia-nat = { path = "../..", editable = true }`) to ensure development works correctly with the local sources.

Applied to files:

  • examples/A2A/currency_agent_a2a/README.md
🔇 Additional comments (5)
examples/README.md (1)

157-160: Excellent A2A example descriptions that clearly distinguish workflow patterns.

The three A2A example descriptions clearly communicate their distinct purposes: external client integration, end-to-end toolkit workflows, and OAuth2-protected variants. Naming conventions correctly use "NVIDIA NeMo Agent Toolkit" and proper toolkit references throughout.

examples/A2A/currency_agent_a2a/README.md (1)

20-20: Strong update to example overview that clearly positions the toolkit's role.

The revised description effectively communicates the per-user A2A client pattern and external integration, setting clear expectations for what this example demonstrates. The naming convention properly uses "NVIDIA NeMo Agent Toolkit" on first reference.

examples/A2A/math_assistant_a2a_protected/README.md (3)

19-22: Excellent comprehensive documentation for OAuth2-protected A2A workflow.

The updated overview clearly establishes the three-component architecture and per-user OAuth2 patterns. The detailed descriptions of Protected A2A Server, OAuth2 A2A Client, and Authorization Server roles are accurate and well-articulated. Naming conventions properly use "NVIDIA NeMo Agent Toolkit" and maintain consistent terminology throughout.


38-139: Excellent architectural documentation with clear diagrams and OAuth2 flow explanation.

The mermaid diagrams effectively visualize the three-component architecture and the OAuth2 flow sequence. The detailed flow explanation with numbered steps (discovery, authorization, token exchange, authenticated communication) provides clear understanding of the per-user OAuth2 workflow. This level of documentation clarity is valuable for developers implementing similar patterns.


161-378: Comprehensive setup and production guidance with clear step-by-step instructions.

The setup instructions are thorough and well-organized, from Keycloak initialization through client registration to running both server and client. The inclusion of expected behaviors (lines 298-305, 348-351), terminal labels, and example outputs greatly improves clarity. The Production Considerations section appropriately emphasizes security practices like HTTPS, secret management, and realm separation for production deployments.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
@AnuradhaKaruppiah
Copy link
Contributor Author

Thx for the review Will

@AnuradhaKaruppiah
Copy link
Contributor Author

/merge

@rapids-bot rapids-bot bot merged commit 4ec7cf8 into NVIDIA:release/1.4 Jan 10, 2026
17 checks passed
@AnuradhaKaruppiah AnuradhaKaruppiah deleted the ak-currency-agent-model-change branch January 12, 2026 17:31
Jerryguan777 pushed a commit to Jerryguan777/NeMo-Agent-Toolkit that referenced this pull request Jan 28, 2026
…VIDIA#1372)

Closes: nvbugs-5792154

This PR adds documentation and configuration support for using openai models with the LangGraph currency agent.

Additionally the summary of the three a2a examples have been updated to highlight the difference between them:
1. currency_agent_a2a: The toolkit is an a2a client and the example demonstrates interop with a 3rd party a2a server
2. math_assistant_a2a: The toolkit is both a2a client and a2a server
3. math_assistant_a2a_protected: Same as (2) but with oauth2-protected secure communication between the a2a client and a2a server

## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/NeMo-Agent-Toolkit/blob/develop/docs/source/resources/contributing/index.md).
- We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
  - Any contribution which contains commits that are not Signed-Off will not be accepted.
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.



## Summary by CodeRabbit

* **Documentation**
  * Rewrote A2A example READMEs to center NVIDIA NeMo Agent Toolkit roles (client/server) and clearer A2A workflows, including OAuth2-protected scenarios.
  * Added API key setup guidance (NVIDIA_API_KEY, OPENAI_API_KEY) with .env examples; removed Google Gemini key instructions.
  * Expanded step-by-step usage, architecture, OAuth2 configuration, per-user flows, and runtime expectations.

<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>

Authors:
  - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah)

Approvers:
  - Will Killian (https://github.com/willkill07)

URL: NVIDIA#1372
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants