using BotSharp.Abstraction.Loggers.Models; public class CommonContentGeneratingHook : IContentGeneratingHook { private readonly IServiceProvider _services; public CommonContentGeneratingHook(IServiceProvider services) { _services = services; } public async Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenStats) { SaveLlmCompletionLog(message, tokenStats); await Task.CompletedTask; } private void SaveLlmCompletionLog(RoleDialogModel message, TokenStatsModel tokenStats) { var convSettings = _services.GetRequiredService(); if (!convSettings.EnableLlmCompletionLog) return; var db = _services.GetRequiredService(); var state = _services.GetRequiredService(); var completionLog = new LlmCompletionLog { ConversationId = state.GetConversationId(), MessageId = message.MessageId, AgentId = message.CurrentAgentId, Prompt = tokenStats.Prompt, Response = message.Content, CreateDateTime = DateTime.UtcNow }; db.SaveLlmCompletionLog(completionLog); } }