diff options
Diffstat (limited to 'src/Agent.Planner/TokenEstimate.cs')
| -rw-r--r-- | src/Agent.Planner/TokenEstimate.cs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Agent.Planner/TokenEstimate.cs b/src/Agent.Planner/TokenEstimate.cs new file mode 100644 index 0000000..4b8920a --- /dev/null +++ b/src/Agent.Planner/TokenEstimate.cs @@ -0,0 +1,15 @@ +namespace Agent.Planner; + +public readonly record struct TokenEstimate(long Optimistic, long MostLikely, long Pessimistic) +{ + public double ExpectedTokens => (Optimistic + (4d * MostLikely) + Pessimistic) / 6d; + public double VarianceTokens => Math.Pow((Pessimistic - Optimistic) / 6d, 2); + + public void Validate(TokenBudgetClass budgetClass) + { + if (Optimistic <= 0 || Optimistic > MostLikely || MostLikely > Pessimistic || Pessimistic > budgetClass.MaxTokens()) + { + throw new PlannerValidationException("Estimate must satisfy 0 < O <= M <= P <= token budget."); + } + } +} |
