123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- import {CHART_PALETTE} from 'sentry/constants/chartPalette';
- import {t} from 'sentry/locale';
- import {DiscoverDatasets} from 'sentry/utils/discover/types';
- import {MutableSearch} from 'sentry/utils/tokenizeSearch';
- import {InsightsLineChartWidget} from 'sentry/views/insights/common/components/insightsLineChartWidget';
- import {
- useSpanIndexedSeries,
- useSpanMetricsSeries,
- } from 'sentry/views/insights/common/queries/useDiscoverSeries';
- interface TotalTokensUsedChartProps {
- groupId?: string;
- }
- export function EAPTotalTokensUsedChart({groupId}: TotalTokensUsedChartProps) {
- const aggregate = 'sum(ai.total_tokens.used)';
- let query = 'span.category:"ai"';
- if (groupId) {
- query = `${query} span.ai.pipeline.group:"${groupId}"`;
- }
- const {data, isPending, error} = useSpanIndexedSeries(
- {
- yAxis: [aggregate],
- search: new MutableSearch(query),
- transformAliasToInputFormat: true,
- },
- 'api.ai-pipelines.view',
- DiscoverDatasets.SPANS_EAP
- );
- return (
- <InsightsLineChartWidget
- title={t('Total tokens used')}
- series={[{...data[aggregate], color: CHART_PALETTE[2][0]}]}
- isLoading={isPending}
- error={error}
- />
- );
- }
- export function TotalTokensUsedChart({groupId}: TotalTokensUsedChartProps) {
- const aggregate = 'sum(ai.total_tokens.used)';
- let query = 'span.category:"ai"';
- if (groupId) {
- query = `${query} span.ai.pipeline.group:"${groupId}"`;
- }
- const {data, isPending, error} = useSpanMetricsSeries(
- {
- yAxis: [aggregate],
- search: new MutableSearch(query),
- transformAliasToInputFormat: true,
- },
- 'api.ai-pipelines.view'
- );
- return (
- <InsightsLineChartWidget
- title={t('Total tokens used')}
- series={[{...data[aggregate], color: CHART_PALETTE[2][0]}]}
- isLoading={isPending}
- error={error}
- />
- );
- }
- interface NumberOfPipelinesChartProps {
- groupId?: string;
- }
- export function EAPNumberOfPipelinesChart({groupId}: NumberOfPipelinesChartProps) {
- const aggregate = 'count()';
- let query = 'span.category:"ai.pipeline"';
- if (groupId) {
- query = `${query} span.group:"${groupId}"`;
- }
- const {data, isPending, error} = useSpanIndexedSeries(
- {
- yAxis: [aggregate],
- search: new MutableSearch(query),
- transformAliasToInputFormat: true,
- },
- 'api.ai-pipelines-eap.view',
- DiscoverDatasets.SPANS_EAP
- );
- return (
- <InsightsLineChartWidget
- title={t('Number of AI pipelines')}
- series={[{...data[aggregate], color: CHART_PALETTE[2][1]}]}
- isLoading={isPending}
- error={error}
- />
- );
- }
- export function NumberOfPipelinesChart({groupId}: NumberOfPipelinesChartProps) {
- const aggregate = 'count()';
- let query = 'span.category:"ai.pipeline"';
- if (groupId) {
- query = `${query} span.group:"${groupId}"`;
- }
- const {data, isPending, error} = useSpanMetricsSeries(
- {
- yAxis: [aggregate],
- search: new MutableSearch(query),
- transformAliasToInputFormat: true,
- },
- 'api.ai-pipelines.view'
- );
- return (
- <InsightsLineChartWidget
- title={t('Number of AI pipelines')}
- series={[{...data[aggregate], color: CHART_PALETTE[2][1]}]}
- isLoading={isPending}
- error={error}
- />
- );
- }
- interface PipelineDurationChartProps {
- groupId?: string;
- }
- export function EAPPipelineDurationChart({groupId}: PipelineDurationChartProps) {
- const aggregate = 'avg(span.duration)';
- let query = 'span.category:"ai.pipeline"';
- if (groupId) {
- query = `${query} span.group:"${groupId}"`;
- }
- const {data, isPending, error} = useSpanIndexedSeries(
- {
- yAxis: [aggregate],
- search: new MutableSearch(query),
- transformAliasToInputFormat: true,
- },
- 'api.ai-pipelines-eap.view',
- DiscoverDatasets.SPANS_EAP
- );
- return (
- <InsightsLineChartWidget
- title={t('Pipeline Duration')}
- series={[{...data[aggregate], color: CHART_PALETTE[2][2]}]}
- isLoading={isPending}
- error={error}
- />
- );
- }
- export function PipelineDurationChart({groupId}: PipelineDurationChartProps) {
- const aggregate = 'avg(span.duration)';
- let query = 'span.category:"ai.pipeline"';
- if (groupId) {
- query = `${query} span.group:"${groupId}"`;
- }
- const {data, isPending, error} = useSpanMetricsSeries(
- {
- yAxis: [aggregate],
- search: new MutableSearch(query),
- transformAliasToInputFormat: true,
- },
- 'api.ai-pipelines.view'
- );
- return (
- <InsightsLineChartWidget
- title={t('Pipeline Duration')}
- series={[{...data[aggregate], color: CHART_PALETTE[2][2]}]}
- isLoading={isPending}
- error={error}
- />
- );
- }
|