Skip to content

Commit

Permalink
Refactor and update SemanticKernelMapperExtensions.cs
Browse files Browse the repository at this point in the history
Refactored `ToChatResponseInternal` to extract "CreatedAt" logic into `GetCreatedAt` method. Updated `ToCompletionResponse` to handle null values in `Metadata` safely and modified `Usage` property initialization. Upgraded `Microsoft.SemanticKernel` and `Microsoft.SemanticKernel.Connectors.OpenAI` packages in `OllamaApiFacade.csproj` from version 1.22.0 to 1.29.0.
  • Loading branch information
GregorBiswanger committed Nov 17, 2024
1 parent 13e6aad commit 31c5fcf
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
23 changes: 16 additions & 7 deletions OllamaApiFacade/Extensions/SemanticKernelMapperExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,7 @@ public static ChatResponse ToChatResponse(this ChatMessageContent? message)

private static ChatResponse ToChatResponseInternal(string? modelId, AuthorRole? role, string? content, IReadOnlyDictionary<string, object?>? metadata)
{
var createdAtDateTimeOffset = (DateTimeOffset)metadata!["CreatedAt"]!;
var createdAt = createdAtDateTimeOffset.ToUniversalTime().ToString("o");
var createdAt = GetCreatedAt(metadata);

return new ChatResponse(
modelId,
Expand All @@ -88,15 +87,25 @@ private static ChatResponse ToChatResponseInternal(string? modelId, AuthorRole?
);
}

private static string GetCreatedAt(IReadOnlyDictionary<string, object?>? metadata)
{
if (metadata != null && metadata.TryGetValue("CreatedAt", out var createdAtValue) && createdAtValue is DateTimeOffset createdAtDateTimeOffset)
{
return createdAtDateTimeOffset.ToUniversalTime().ToString("o");
}

return DateTimeOffset.MinValue.ToUniversalTime().ToString("o");
}

/// <summary>
/// Converts a <see cref="ChatMessageContent"/> object into a <see cref="OllamaApiFacade.DTOs.CompletionResponse"/> object.
/// </summary>
/// <param name="chatMessageContent">The chat message content to be converted.</param>
/// <returns>A <see cref="OllamaApiFacade.DTOs.CompletionResponse"/> object containing the converted message content.</returns>
public static CompletionResponse ToCompletionResponse(this ChatMessageContent chatMessageContent)
{
var chatTokenUsage = chatMessageContent.Metadata!["Usage"] as ChatTokenUsage;
var systemFingerprint = chatMessageContent.Metadata["SystemFingerprint"] == null;
var chatTokenUsage = chatMessageContent.Metadata?["Usage"] as ChatTokenUsage;
var systemFingerprint = chatMessageContent.Metadata?["SystemFingerprint"] == null;

return new CompletionResponse(
Id: "chatcmpl-427",
Expand All @@ -116,12 +125,12 @@ public static CompletionResponse ToCompletionResponse(this ChatMessageContent ch
FinishReason: "stop"
)
],
Usage: new Usage
Usage: chatTokenUsage != null ? new Usage
{
PromptTokens = chatTokenUsage!.InputTokenCount,
PromptTokens = chatTokenUsage.InputTokenCount,
CompletionTokens = chatTokenUsage.OutputTokenCount,
TotalTokens = chatTokenUsage.TotalTokenCount
}
} : new Usage()
);
}
}
4 changes: 2 additions & 2 deletions OllamaApiFacade/OllamaApiFacade.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.SemanticKernel" Version="1.22.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.OpenAI" Version="1.22.0" />
<PackageReference Include="Microsoft.SemanticKernel" Version="1.29.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.OpenAI" Version="1.29.0" />
</ItemGroup>

<ItemGroup>
Expand Down

0 comments on commit 31c5fcf

Please sign in to comment.