summaryrefslogtreecommitdiff
path: root/src/Agent.Planner/TokenEstimate.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Agent.Planner/TokenEstimate.cs')
-rw-r--r--src/Agent.Planner/TokenEstimate.cs15
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.");
+ }
+ }
+}