This repository demonstrates how to build a secure, enterprise-grade AI agent is incapsulated within a simply Python application built using streamlit, NVIDIA NeMo Agent Toolkit and NVIDIA NeMo Guardrails. All of the observability telemetry of traces, logs, and metrics are collected using the Dynatrace distribution of the OpenTelemetry Collector for analysis within Dynatrace.
This repo and related guides assume Mac OS/Linux, but you can adapt as required for Windows.
This diagram below depicts the setup consisting of:
- Sample Python app - Used to generate prompts and send telemetry data to and OpenTelemetry Collector
- OpenTelemetry Collector - Configured to send telemetry data to Dynatrace OTLP APIs
- NVIDIA Build - free to use LLM models accessed via APIs and a Build API key
- Tavily - Uses as Agentic tool to search the internet and accessed via APIs and a Build API key
- Dynatrace - View and analyze OpenTelemetry metrics
- Local software
- Python 3.11, 3.12, or 3.13
- Python package and project manager, uv
- Docker or Podman for containerized deployment of a OpenTelemetry Collector
- NVIDIA Build Account on build.nvidia.com
- Tavily Developer Account on tavily.com
- Dynatrace Tenant. For a Trial, visit Dynatrace signup page
-
Clone the repository:
git clone git@github.com:dynatrace-ace/perform-2026-nvidia-workshop.git cd perform-2026-nvidia-workshop -
Create Environment Variables file
Make an environment file using the provided environment variable template:
cp .env-app-template .env
-
Set Tavily API Key
- Create a Tavily API KEY API Key on tavily.com
- Adjust
.envwith your Tavily API Key forTAVILY_API_KEY - Once set, you can review your API usage with this command.
curl --request GET \ --url https://api.tavily.com/usage \ --header "Authorization: Bearer $TAVILY_API_KEY" | jq .
-
Set NVIDIA API Key
- Create a NVIDIA API Key on build.nvidia.com
- Adjust
.envwith your NVIDIA API Key forNVIDIA_API_KEY
-
Create Dynatrace API Key
- Make a Dynatrace API Token with the required scopes for the OTLP API:
openTelemetryTrace.ingestmetrics.ingestlogs.ingest
- Adjust
.envwith your Dynatrace environmentDT_BASE_URLandDT_API_TOKEN
- Make a Dynatrace API Token with the required scopes for the OTLP API:
-
Start an OpenTelemetry Collector configured to send observability data to Dynatrace. For this, follow the OTLP receiver only setup guide
-
Create virtual environment
uv venv --python 3.13 .venv source .venv/bin/activate -
Install dependencies
# Using uv (recommended) uv pip install -r requirements.txt -
Update the NVIDIA configuration files
This script will create the
guardrails_config/config.ymlandsrc/configs/config.ymlfiles from the provided template for NVIDIA build API usage required for NVIDIA NAT and Guardrail usage.source .env python update_config.py build -
Start sample App
This will start a web app on port
8501for examplehttp://localhost:8501streamlit run app.py
-
Open App
Start app which will open the web UI in a local browser at
http://localhost:5801
See the RESOURCES.md guide for details.

