Merge pull request #963 from iceljc/master

add additional llm cost
This commit is contained in:
iceljc 2025-03-21 18:44:16 -05:00 committed by GitHub
commit 23cbe41cbe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 18 additions and 2 deletions

View file

@ -6,6 +6,7 @@ public class TokenStatsModel
public string Model { get; set; }
public string Prompt { get; set; }
public int PromptCount { get; set; }
public int CachedPromptCount { get; set; }
public int CompletionCount { get; set; }
public AgentLlmConfig LlmConfig { get; set; }
}

View file

@ -62,12 +62,22 @@ public class LlmModelSetting
/// </summary>
public int Dimension { get; set; }
public LlmCost AdditionalCost { get; set; } = new();
public override string ToString()
{
return $"[{Type}] {Name} {Endpoint}";
}
}
public class LlmCost
{
public float CachedPromptCost { get; set; } = 0f;
public float AudioPromptCost { get; set; } = 0f;
public float ReasoningCompletionCost { get; } = 0f;
public float AudioCompletionCost { get; } = 0f;
}
public enum LlmModelType
{
Text = 1,

View file

@ -41,9 +41,11 @@ public class TokenStatistics : ITokenStatistics
var settingsService = _services.GetRequiredService<ILlmProviderService>();
var settings = settingsService.GetSetting(stats.Provider, _model);
var deltaPromptCost = stats.PromptCount / 1000f * settings.PromptCost;
var deltaPromptCost = (stats.PromptCount - stats.CachedPromptCount) / 1000f * settings.PromptCost;
var deltaCachedPromptCost = stats.CachedPromptCount / 1000f * (settings.AdditionalCost?.CachedPromptCost ?? 0f);
var deltaCompletionCost = stats.CompletionCount / 1000f * settings.CompletionCost;
var deltaTotal = deltaPromptCost + deltaCompletionCost;
var deltaTotal = deltaPromptCost + deltaCachedPromptCost + deltaCompletionCost;
_promptCost += deltaPromptCost;
_completionCost += deltaCompletionCost;
@ -53,6 +55,8 @@ public class TokenStatistics : ITokenStatistics
stat.SetState("prompt_total", stats.PromptCount + inputCount, isNeedVersion: false, source: StateSource.Application);
var outputCount = int.Parse(stat.GetState("completion_total", "0"));
stat.SetState("completion_total", stats.CompletionCount + outputCount, isNeedVersion: false, source: StateSource.Application);
var cachedCount = int.Parse(stat.GetState("cached_prompt_total", "0"));
stat.SetState("cached_prompt_total", stats.CachedPromptCount + cachedCount, isNeedVersion: false, source: StateSource.Application);
// Total cost
var total_cost = float.Parse(stat.GetState("llm_total_cost", "0"));

View file

@ -84,6 +84,7 @@ public class ChatCompletionProvider : IChatCompletion
Provider = Provider,
Model = _model,
PromptCount = response.Value?.Usage?.InputTokenCount ?? 0,
CachedPromptCount = response.Value?.Usage?.InputTokenDetails?.CachedTokenCount ?? 0,
CompletionCount = response.Value?.Usage?.OutputTokenCount ?? 0
});
}