V6 / 920e1e35d097
ChatMessageExtensions.cs
Lilith/Core/Chat/ChatMessageExtensions.cs
Unchanged from the preceding versionCS
namespace Lilith.Core.Chat;
public static class ChatMessageExtensions
{
public static ChatMessage Snapshot(this ChatMessage message) =>
message with
{
Images = message.Images is null ? null : [.. message.Images],
ToolCalls = message.ToolCalls?.Select(c => c with { Function = c.Function with { Arguments = c.Function.Arguments.Clone() } }).ToList()
};
public static SavedChatMessage ToSavedMessage(this ChatMessage message) => new()
{
Role = message.Role,
Content = message.Content ?? string.Empty,
Tokens = message.Tokens,
Images = message.Images is { Count: > 0 } ? [.. message.Images] : null,
ToolCalls = message.Snapshot().ToolCalls, ToolName = message.ToolName, ToolCallId = message.ToolCallId
};
public static ChatMessage ToChatMessage(this SavedChatMessage message) =>
new ChatMessage(message.Role, message.Content, message.Images, message.Tokens,
message.ToolCalls, message.ToolName, message.ToolCallId).Snapshot();
}