BotSharp/src/Infrastructure/BotSharp.Logger/Hooks/CommonContentGeneratingHook.cs
2025-02-20 11:59:59 -06:00

39 lines
1.2 KiB
C#

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<ConversationSetting>();
if (!convSettings.EnableLlmCompletionLog) return;
var db = _services.GetRequiredService<IBotSharpRepository>();
var state = _services.GetRequiredService<IConversationStateService>();
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);
}
}