Commit Graph
3 Commits
Author SHA1 Message Date
Dmytro Struk 060699cc8f .Net: Added AzureChatExtensionsOptions property and deprecated WithData classes (#6454)
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

Fixes: https://github.com/microsoft/semantic-kernel/issues/4787
Fixes: https://github.com/microsoft/semantic-kernel/issues/6061
Fixes: https://github.com/microsoft/semantic-kernel/issues/6448
Fixes: https://github.com/microsoft/semantic-kernel/issues/6112

Discussion:
https://github.com/microsoft/semantic-kernel/discussions/6016#discussioncomment-9459380

There are two reasons why this change is required:
1. Azure .NET SDK supports `chat completion on your data` functionality
out-of-the-box, which means that now we don't need custom
implementation.
2. `Chat completion on your data` new API has [breaking
changes](https://learn.microsoft.com/en-us/azure/ai-services/openai/references/on-your-data),
which makes current `WithData` classes non-functional.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

1. `AzureChatExtensionsOptions` property was added to
`OpenAIPromptExecutionSettings`. Initial idea was to add it on
`AzureOpenAIChatCompletionService` class level (in all constructors and
extension methods), but it looks like this configuration contains some
properties which should be useful per request (e.g. index name, search
filter etc). Later, we can also add it on service class level, if needed
(although I would do that when Options classes for all
`AddChatCompletion...` extension methods will be introduced, to avoid
more parameters in these methods at the moment).
2. `AzureChatExtensionsOptions` property is marked with `JsonIgnore`
attribute, because it's still needs to be investigated if this
configuration is serializable. It supports not only Azure AI Search
configuration, but also [other
configurations](https://learn.microsoft.com/en-us/azure/ai-services/openai/references/on-your-data#data-source)
like Azure Cosmos DB for MongoDB, Pinecone etc. We can release it
without JSON serialization first, to unblock code-first customers, and
we can add support for JSON serialization later (i.e. `config.json`
files), if there will be such request.

Note: It looks like `OpenAIPromptExecutionSettings` is not ideal place
for Azure-specific `AzureChatExtensionsOptions` property. I was thinking
to add derived `AzureOpenAIPromptExecutionSettings :
OpenAIPromptExecutionSettings` class (and unmark
`OpenAIPromptExecutionSettings` as sealed), but this looks like some
scope of work which should be implemented when OpenAI and Azure OpenAI
functionality will be separated by SDKs.

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄
2024-06-03 14:28:28 +00:00
Stephen Toub c369ab3506 .Net: Add multitargeting to .NET libraries (#4421)
Adds net8.0 targets and updates various code to take advantage of newer
APIs and also fix analyzers.
Fixes https://github.com/microsoft/semantic-kernel/issues/4308
2024-05-13 09:12:49 +00:00
Dmytro Struk 4205cd3a79 .Net: Increase code coverage and add threshold to build pipeline (#4610)
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

Resolves: https://github.com/microsoft/semantic-kernel/issues/4372

Added more tests and increased code coverage for production packages to
meet 80% threshold. Added new steps to PR build pipeline to check code
coverage for production packages and trigger a failure if code coverage
in PR is lower than defined threshold.

Example of code coverage output:

![image](https://github.com/microsoft/semantic-kernel/assets/13853051/2a271dcf-5e87-4006-a3b1-5bcfce829f3a)

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄
2024-01-17 12:04:30 +00:00