Updates and Optimizations#79
Merged
marcominerva merged 3 commits intodevelopfrom May 27, 2025
Merged
Conversation
Updated target framework to .NET 9.0 across multiple projects. Updated various package references for compatibility and new features. Replaced `ChatGptNet` with `Azure.AI.OpenAI` in `Program.cs`, enhancing chat client management. Modified `ConfigureServices` to include `HybridCache` and improve service setup. Refactored `DatabaseGptClient` to manage chat history and cache more effectively. Added `MessageLimit` property to `DatabaseGptSettings` for better message control. Streamlined `AddDatabaseGpt` extension methods for improved clarity and dependency injection.
- Updated `Swashbuckle.AspNetCore` package version to `8.1.2`. - Modified `appsettings.json` to remove outdated properties and add `Endpoint` and `DeploymentName`. - Removed `ColumnEntity` class and adjusted related code in `SqlServerDatabaseGptProvider`. - Enhanced error handling in `DatabaseGptClient` with a `try-catch` block for query execution. - Updated `CreateSessionAsync` to ensure proper GUID assignment for `sessionId`. - Changed chat history management to use `request` instead of `question`.
There was a problem hiding this comment.
Pull Request Overview
This PR modernizes the DatabaseGpt project by upgrading to .NET 9.0, swapping in Azure AI libraries for OpenAI interactions, and strengthening caching and resilience while cleaning up deprecated types.
- Updated all projects from net8.0 to net9.0 and bumped key package versions.
- Replaced
ChatGptNetwithAzure.AI.OpenAI/Microsoft.Extensions.AIand added a hybrid cache. - Refactored SQL provider to return raw column definitions and removed the
ColumnEntityclass.
Reviewed Changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/DatabaseGpt/Settings/DatabaseGptSettings.cs | Added new MessageLimit setting to cap chat history. |
| src/DatabaseGpt/DatabaseGptServiceCollectionExtensions.cs | Simplified AddDatabaseGpt overloads and removed ChatGptNet references. |
| src/DatabaseGpt/DatabaseGptClient.cs | Integrated IChatClient, hybrid cache, and resilience; added GetChatHistoryAsync/UpdateCacheAsync. |
| src/DatabaseGpt.SqlServer/SqlServerDatabaseGptProvider.cs | Switched from ColumnEntity mapping to raw string query, removed model class. |
| samples/DatabaseGptConsole/appsettings.json | Changed configuration to Azure OpenAI format (endpoint, deployment). |
| samples/DatabaseGptConsole/Program.cs | Configured AzureOpenAIClient, registered hybrid cache and chat client. |
Comments suppressed due to low confidence (3)
src/DatabaseGpt/DatabaseGptClient.cs:188
- [nitpick] Consider adding unit tests for
UpdateCacheAsyncandGetChatHistoryAsync, specifically covering trimming logic whenchat.CountexceedsMessageLimitand cache set/retrieve behaviors.
private async Task UpdateCacheAsync(Guid conversationId, ChatHistory chat, CancellationToken cancellationToken)
src/DatabaseGpt.SqlServer/SqlServerDatabaseGptProvider.cs:70
- The SQL query still selects multiple columns for
ColumnEntity, butQueryAsync<string>maps a single string. Either update the SQL to return a single concatenated column definition or restore the correct mapping shape.
var columns = await connection.QueryAsync<string>(query, new { schema = table.Schema, table = table.Name, excludedColumns });
samples/DatabaseGptConsole/appsettings.json:7
- The sample
Program.csreadsChatGPT:ApiKey, but the JSON no longer defines anApiKeyproperty. Add"ApiKey": ""under theChatGPTsection or update the code to match the new schema.
"Endpoint": "",
Updated the CodeQL configuration by replacing the previous setup with a new structure. The new configuration includes refined triggers for `push` and `pull_request` events, specifying branches and paths. Job settings have been streamlined, enhancing the setup for the .NET SDK and CodeQL analysis. Overall organization and clarity of the workflow have been improved while retaining previous comments and instructions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces significant updates to the
DatabaseGptproject, including upgrading the target framework to .NET 9.0, replacing theChatGptNetlibrary with Microsoft'sAzure.AI.OpenAIandMicrosoft.Extensions.AIlibraries, and enhancing caching and resilience mechanisms. These changes modernize the project, improve performance, and simplify dependencies.Framework and Package Upgrades:
.NET 8.0to.NET 9.0across all projects (.csprojfiles). [1] [2] [3] [4] [5] [6] [7]Dapper,Npgsql,Microsoft.Data.SqlClient, andSwashbuckle.AspNetCore. [1] [2] [3] [4] [5] [6]Transition to Azure AI Libraries:
ChatGptNetwithAzure.AI.OpenAIandMicrosoft.Extensions.AIlibraries for chat functionality, introducingAzureOpenAIClientandIChatClientfor handling chat-based operations. [1] [2] [3]Program.csfile to configure Azure OpenAI services and integrate the new chat client into the dependency injection container. [1] [2]Caching and Resilience Enhancements:
Microsoft.Extensions.Caching.Hybridto store chat history, ensuring better performance and scalability. [1] [2]Codebase Simplification and Cleanup:
ColumnEntityclass and refactored its usage to directly query strings, simplifying theSqlServerDatabaseGptProvider. [1] [2]DatabaseGptServiceCollectionExtensionsby removing redundant overloads and simplifying service registration. [1] [2]Configuration Changes:
appsettings.jsonto reflect the new Azure OpenAI configuration format, removing legacy fields likeProviderandOrganization.