diff --git a/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs b/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs index c5b22d892..811266160 100644 --- a/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs +++ b/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs @@ -860,8 +860,10 @@ public List GetExecutionLogs(string conversationId) #region LLM Completion Log public void SaveLlmCompletionLog(LlmCompletionLog log) { + if (log == null || string.IsNullOrEmpty(log.ConversationId)) return; + var convDir = FindConversationDirectory(log.ConversationId); - if (!Directory.Exists(convDir)) return; + if (string.IsNullOrEmpty(convDir)) return; var logDir = Path.Combine(convDir, "llm_prompt_log"); if (!Directory.Exists(logDir)) @@ -870,7 +872,7 @@ public void SaveLlmCompletionLog(LlmCompletionLog log) } log.Id = Guid.NewGuid().ToString(); - var index = GetLlmCompletionLogIndex(logDir, log.MessageId); + var index = GetNextLlmCompletionLogIndex(logDir, log.MessageId); var file = Path.Combine(logDir, $"{log.MessageId}.{index}.log"); File.WriteAllText(file, JsonSerializer.Serialize(log, _options)); } @@ -969,6 +971,8 @@ private List FetchResponses(string fileDir) private string? FindConversationDirectory(string conversationId) { + if (string.IsNullOrEmpty(conversationId)) return null; + var dir = Path.Combine(_dbSettings.FileRepository, _conversationSettings.DataDir, conversationId); if (!Directory.Exists(dir)) return null; @@ -1024,7 +1028,7 @@ private List CollectConversationStates(string stateDir) return states; } - private int GetLlmCompletionLogIndex(string logDir, string id) + private int GetNextLlmCompletionLogIndex(string logDir, string id) { var files = Directory.GetFiles(logDir); if (files.IsNullOrEmpty()) diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs index 0dc83366b..89c583c5a 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs @@ -892,6 +892,8 @@ public List GetExecutionLogs(string conversationId) #region LLM Completion Log public void SaveLlmCompletionLog(LlmCompletionLog log) { + if (log == null || string.IsNullOrEmpty(log.ConversationId)) return; + var completiongLog = new LlmCompletionLogDocument { Id = string.IsNullOrEmpty(log.Id) ? Guid.NewGuid().ToString() : log.Id,