From 0fd7e5c1b398ce9e66e1f9116fd8be56ae41467b Mon Sep 17 00:00:00 2001 From: Goutham Karthi Date: Thu, 16 Oct 2025 15:13:06 -0700 Subject: [PATCH] adding pydantic dashboard docs --- .../Dashboards/DashboardTemplatesListicle.tsx | 9 ++- constants/docsSideNav.ts | 5 ++ .../pydantic-ai-dashboard.mdx | 53 ++++++++++++++++++ .../pydantic-dashboard.webp | Bin 0 -> 83242 bytes 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 data/docs/dashboards/dashboard-templates/pydantic-ai-dashboard.mdx create mode 100644 public/img/docs/dashboards/dashboard-templates/pydantic-dashboard.webp diff --git a/components/Dashboards/DashboardTemplatesListicle.tsx b/components/Dashboards/DashboardTemplatesListicle.tsx index 51a72617f..b164289e8 100644 --- a/components/Dashboards/DashboardTemplatesListicle.tsx +++ b/components/Dashboards/DashboardTemplatesListicle.tsx @@ -17,7 +17,8 @@ import { SiClaude, SiGooglegemini, SiAnthropic, - SiAmazonwebservices + SiAmazonwebservices, + SiPydantic } from 'react-icons/si' import { Monitor, @@ -275,6 +276,12 @@ const DashboardTemplatesData: IconCardData[] = [ icon: , clickName: 'PostgreSQL Dashboard Template', }, + { + name: 'Pydantic AI', + href: '/docs/dashboards/dashboard-templates/pydantic-ai-dashboard', + icon: , + clickName: 'Pydantic AI Dashboard Template', + }, { name: 'RabbitMQ', href: '/docs/dashboards/dashboard-templates/rabbitmq', diff --git a/constants/docsSideNav.ts b/constants/docsSideNav.ts index 6c9f5ef3d..3ec078bd0 100644 --- a/constants/docsSideNav.ts +++ b/constants/docsSideNav.ts @@ -1751,6 +1751,11 @@ const docsSideNav = [ route: '/docs/dashboards/dashboard-templates/postgresql', label: 'PostgreSQL', }, + { + type: 'doc', + route: '/docs/dashboards/dashboard-templates/pydantic-ai-dashboard', + label: 'Pydantic AI', + }, { type: 'doc', route: '/docs/dashboards/dashboard-templates/rabbitmq', diff --git a/data/docs/dashboards/dashboard-templates/pydantic-ai-dashboard.mdx b/data/docs/dashboards/dashboard-templates/pydantic-ai-dashboard.mdx new file mode 100644 index 000000000..81971774b --- /dev/null +++ b/data/docs/dashboards/dashboard-templates/pydantic-ai-dashboard.mdx @@ -0,0 +1,53 @@ +--- +date: 2025-10-16 +id: pydantic-ai +tags : [SigNoz Cloud, Self-Host, Pydantic AI] +title: Pydantic AI Dashboard +description: Monitor Pydantic AI usage and performance including token consumption, model distribution, error rates, request volumes, and latency trends for optimal AI workload observability. +--- + +This dashboard offers a clear view into Pydantic AI usage and performance. It highlights key metrics such as token consumption, model distribution, error rates, request volumes, and latency trends. Teams can also track which services and languages are leveraging the DeepSeek API, along with detailed records of errors, to better understand adoption patterns and optimize reliability and efficiency. + +## Dashboard Preview + +
+ +
+ +
+ +## What This Dashboard Monitors + +This dashboard tracks critical performance metrics for your Pydantic AI usage using OpenTelemetry to help you: + +- **Monitor Token Consumption**: Track input tokens (user prompts) and output tokens (model responses) to monitor system workload, efficiency trends, and consumption across different workloads. +- **Track Reliability**: Monitor error rates to identify reliability issues and ensure applications maintain a smooth, dependable experience. +- **Analyze Model Adoption**: Understand which Pydantic AI model variants are being used most often to track preferences and measure adoption of newer releases. +- **Monitor Usage Patterns**: Observe token consumption and request volume trends over time to spot adoption curves, peak cycles, and unusual spikes. +- **Ensure Responsiveness**: Track P95 latency to surface potential slowdowns, spikes, or regressions and maintain consistent user experience. +- **Understand Service Distribution**: See which services and programming languages are leveraging Pydantic AI across your stack. + +## Metrics Included + +### Token Usage Metrics +- **Total Token Usage (Input & Output)**: Displays the split between input tokens (user prompts) and output tokens (model responses), showing exactly how much work the system is doing over time. +- **Token Usage Over Time**: Time series visualization showing token consumption trends to identify adoption patterns, peak cycles, and baseline activity. + +### Performance & Reliability +- **Total Error Rate**: Tracks the percentage of Pydantic AI calls that return errors, providing a quick way to identify reliability issues. +- **Latency (P95 Over Time)**: Measures the 95th percentile latency of requests over time to surface potential slowdowns and ensure consistent responsiveness. +- **HTTP Request Duration**: Monitors the duration of outbound HTTP requests made during LLM calls, helping identify network bottlenecks and API response time patterns that impact overall Pydantic AI performance. + +### Usage Analysis +- **Model Distribution**: Shows which Pydantic AI model variants are being called most often, helping track preferences and measure adoption across different models. +- **Requests Over Time**: Captures the volume of requests sent to Pydantic AI over time, revealing demand patterns and high-traffic windows. +- **Services and Languages Using Pydantic AI**: Breakdown showing where Pydantic AI is being adopted across different services and programming languages in your stack. +- **Agents**: List of agents along with how many times each agent was called. +- **Tools**: List of tool calls along with how many times each tool was called. +- **Pydantic AI Request Logs**: Comprehensive list of all generated logs for Pydantic AI requests associated with the given service name, providing detailed visibility into API call patterns. + +### Error Tracking +- **Error Records**: Table logging all recorded errors with clickable records that link to the originating trace for detailed error investigation. \ No newline at end of file diff --git a/public/img/docs/dashboards/dashboard-templates/pydantic-dashboard.webp b/public/img/docs/dashboards/dashboard-templates/pydantic-dashboard.webp new file mode 100644 index 0000000000000000000000000000000000000000..2436d84dfff8093791b7927d6f318a58addfa402 GIT binary patch literal 83242 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%0A^+J5`KRLK8H0hHJ~+Y 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