using BotSharp.Abstraction.Agents.Models;
using BotSharp.Abstraction.Conversations;
using BotSharp.Abstraction.Conversations.Models;
using BotSharp.Abstraction.MLTasks;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace BotSharp.Plugin.AzureOpenAI.Hooks;
///
/// Token statistics for Azure OpenAI
///
public class TokenStatsConversationHook : IContentGeneratingHook
{
private readonly ITokenStatistics _tokenStatistics;
public TokenStatsConversationHook(ITokenStatistics tokenStatistics)
{
_tokenStatistics = tokenStatistics;
}
public async Task BeforeGenerating(Agent agent, List conversations)
{
_tokenStatistics.StartTimer();
}
public async Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenStats)
{
_tokenStatistics.StopTimer();
tokenStats.PromptCost = 0.0015f;
tokenStats.CompletionCost = 0.002f;
_tokenStatistics.AddToken(tokenStats);
}
}