Skip to content

Commit 619e82d

Browse files
authored
Extend OpenAITelemetryPluginReport with cached tokens information (#1439)
* Add CachedTokens to Usage Info * Add CachedTokens column to Markdown and Text reports
1 parent 7394157 commit 619e82d

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

DevProxy.Plugins/Inspection/OpenAITelemetryPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,8 @@ private void RecordUsageMetrics(Activity activity, OpenAIRequest request, OpenAI
844844
{
845845
Model = response.Model,
846846
PromptTokens = usage.PromptTokens,
847-
CompletionTokens = usage.CompletionTokens
847+
CompletionTokens = usage.CompletionTokens,
848+
CachedTokens = usage.PromptTokensDetails?.CachedTokens ?? 0L
848849
};
849850
var usagePerModel = _modelUsage.GetOrAdd(response.Model, model => []);
850851
usagePerModel.Add(reportModelUsageInformation);

DevProxy.Plugins/Inspection/OpenAITelemetryPluginReport.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class OpenAITelemetryPluginReportModelUsageInformation
1313
public double Cost { get; set; }
1414
public required string Model { get; init; }
1515
public required long PromptTokens { get; init; }
16+
public long CachedTokens { get; init; }
1617
}
1718

1819
public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJsonReport
@@ -33,14 +34,15 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
3334
var totalTokens = 0L;
3435
var totalPromptTokens = 0L;
3536
var totalCompletionTokens = 0L;
37+
var totalCachedTokens = 0L;
3638
var totalCost = 0.0;
3739
var totalRequests = 0;
3840

3941
var sb = new StringBuilder();
4042
_ = sb
4143
.AppendLine(CultureInfo.InvariantCulture, $"# LLM usage report for {Application} in {Environment}")
4244
.AppendLine()
43-
.Append("Model|Requests|Prompt Tokens|Completion Tokens|Total Tokens");
45+
.Append("Model|Requests|Prompt Tokens|Completion Tokens|Cached Tokens|Total Tokens");
4446

4547
if (IncludeCosts)
4648
{
@@ -49,7 +51,7 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
4951

5052
_ = sb
5153
.AppendLine()
52-
.Append(":----|-------:|------------:|----------------:|-----------:");
54+
.Append(":----|-------:|------------:|----------------:|-----------:|-----------:");
5355

5456
if (IncludeCosts)
5557
{
@@ -62,10 +64,12 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
6264
{
6365
var promptTokens = modelUsage.Value.Sum(u => u.PromptTokens);
6466
var completionTokens = modelUsage.Value.Sum(u => u.CompletionTokens);
67+
var cachedTokens = modelUsage.Value.Sum(u => u.CachedTokens);
6568
var tokens = promptTokens + completionTokens;
6669

6770
totalPromptTokens += promptTokens;
6871
totalCompletionTokens += completionTokens;
72+
totalCachedTokens += cachedTokens;
6973
totalTokens += tokens;
7074
totalRequests += modelUsage.Value.Count;
7175

@@ -74,6 +78,7 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
7478
.Append('|').Append(totalRequests)
7579
.Append('|').Append(promptTokens)
7680
.Append('|').Append(completionTokens)
81+
.Append('|').Append(cachedTokens)
7782
.Append('|').Append(tokens);
7883

7984
if (IncludeCosts)
@@ -91,6 +96,7 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
9196
.Append('|').Append(CultureInfo.CurrentCulture, $"**{totalRequests}**")
9297
.Append('|').Append(CultureInfo.CurrentCulture, $"**{totalPromptTokens}**")
9398
.Append('|').Append(CultureInfo.CurrentCulture, $"**{totalCompletionTokens}**")
99+
.Append('|').Append(CultureInfo.CurrentCulture, $"**{totalCachedTokens}**")
94100
.Append('|').Append(CultureInfo.CurrentCulture, $"**{totalTokens}**");
95101

96102
if (IncludeCosts)
@@ -108,6 +114,7 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
108114
var totalTokens = 0L;
109115
var totalPromptTokens = 0L;
110116
var totalCompletionTokens = 0L;
117+
var totalCachedTokens = 0L;
111118
var totalCost = 0.0;
112119

113120
var sb = new StringBuilder();
@@ -121,17 +128,20 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
121128
{
122129
var promptTokens = modelUsage.Value.Sum(u => u.PromptTokens);
123130
var completionTokens = modelUsage.Value.Sum(u => u.CompletionTokens);
131+
var cachedTokens = modelUsage.Value.Sum(u => u.CachedTokens);
124132
var tokens = promptTokens + completionTokens;
125133

126134
totalPromptTokens += promptTokens;
127135
totalCompletionTokens += completionTokens;
136+
totalCachedTokens += cachedTokens;
128137
totalTokens += tokens;
129138

130139
_ = sb.AppendLine(CultureInfo.InvariantCulture, $"MODEL: {modelUsage.Key}")
131140
.AppendLine()
132141
.AppendLine(CultureInfo.InvariantCulture, $"Requests: {modelUsage.Value.Count}")
133142
.AppendLine(CultureInfo.InvariantCulture, $"Prompt Tokens: {promptTokens}")
134143
.AppendLine(CultureInfo.InvariantCulture, $"Completion Tokens: {completionTokens}")
144+
.AppendLine(CultureInfo.InvariantCulture, $"Cached Tokens: {cachedTokens}")
135145
.AppendLine(CultureInfo.InvariantCulture, $"Total Tokens: {tokens}");
136146

137147
if (IncludeCosts)
@@ -149,6 +159,7 @@ public class OpenAITelemetryPluginReport : IMarkdownReport, IPlainTextReport, IJ
149159
.AppendLine()
150160
.AppendLine(CultureInfo.InvariantCulture, $"Prompt Tokens: {totalPromptTokens}")
151161
.AppendLine(CultureInfo.InvariantCulture, $"Completion Tokens: {totalCompletionTokens}")
162+
.AppendLine(CultureInfo.InvariantCulture, $"Cached Tokens: {totalCachedTokens}")
152163
.AppendLine(CultureInfo.InvariantCulture, $"Total Tokens: {totalTokens}");
153164

154165
if (IncludeCosts)

0 commit comments

Comments
 (0)