Forge
csharp4405de34
1namespace CascadeIDE.Services.Fm;
2
3/// <summary>Токены одного FM-хода (OpenAI-compatible <c>usage</c>).</summary>
4public sealed record FmTurnUsage(
5 int PromptTokens,
6 int CompletionTokens,
7 int TotalTokens)
8{
9 public static FmTurnUsage? TryCreate(int? prompt, int? completion, int? total)
10 {
11 if (prompt is null && completion is null && total is null)
12 return null;
13
14 var p = Math.Max(0, prompt ?? 0);
15 var c = Math.Max(0, completion ?? 0);
16 var t = total ?? p + c;
17 if (t <= 0 && p <= 0 && c <= 0)
18 return null;
19
20 if (t <= 0)
21 t = p + c;
22
23 return new FmTurnUsage(p, c, t);
24 }
25
26 public FmTurnUsage Add(FmTurnUsage other) =>
27 new(PromptTokens + other.PromptTokens, CompletionTokens + other.CompletionTokens, TotalTokens + other.TotalTokens);
28}
29
View only · write via MCP/CIDE