### Motivation, Context and Description
This PR introduces several changes aimed to simplify the kernel and
enhancing its extensibility for AI services management. The changes
include the following:
1. Kernel simplification and extensibility: The code responsible for AI
services management, such as registration and resolution, has been moved
out of the Kernel and KernelConfig classes into a new class called
AIServiceProvider. This restructuring promotes the principle of Single
Responsibility, ensuring that each class has a clear and focused
purpose.
2. Hosting apps customization: With the introduction of the
AIServiceProvider, hosting applications now have the flexibility to
provide their own implementation of the provider if needed. This
promotes extensibility, allowing the hosting apps to tailor the AI
service management according to their specific requirements.
3. AI services registration improvements: A new method called
WithAiService has been added, which enables the registration of any new
AI service that is not currently supported.
4. Improved kernel builder interface: The Add* methods for AI services
registration have been moved from the KernelConfig class to the
KernelBuilder. This change aligns the interface with other KernelBilder
methods, such as WithLogger and WithMemory, creating a more cohesive and
intuitive kernel builder interface.
---------
Co-authored-by: Shawn Callegari <[email protected]>
Co-authored-by: Lee Miller <[email protected]>
### Motivation and Context
When configuring AI models (text completion, embeddings, chat, image
generation, etc) currently one has to pass a "service Id", ie assign a
name to the configuration. This allows apps to work with different
models providing the same features, e.g. working with OpenAI and Azure
OpenAI and HuggingFace at the same time.
In many scenarios though, there is only one AI model/service provider,
e.g. an app might be using just Open AI, and in this case service names
are unused.
Also, the kernel config API allows to remove AI models from the
configuration, a tentative feature that has never been used and can be
removed for now, and reintroduced if we find scenarios or get explicit
requests.
### Description
* Make the Service ID optional, making the AI configuration simpler
* Remove some unused API, reducing the complexity of kernel config
Co-authored-by: Adrian Bonar (HE/HIM) <[email protected]>
### Motivation and Context
Provide an example implementation of connecting the Semantic Kernel to
external plugins following the open api schema.
### Description
Jira Open API schema usage example
Renaming the azure key vault example, so all open api skill examples are
grouped together
Prevent RestApiOperationRunner.cs from wrapping a json response into a
json object.