DRAFT: AIPlugin, SKFunctionResult and InputWithType attributes
Description
Filling out the attributes required to fully describe a skill and its functions for 2 applications:
- Publishing SK Skills AI (ChatGPT) Plugins -- REST microservices, documented with OpenAPI Specs
- Describing function inputs and results, often comprising complex json object return types, coming from REST functions, GRPC functions, and AI plugins registered to the kernel.
DRAFT: Open for comments. Naming? Preferences between a large attribute with many required properties, vs many small attributes (that are all still "required")?
Input and Result attribute type modeled after OpenApiResponseWithBodyAttribute and its parent class OpenApiPayloadAttribute.
Contribution Checklist
- [ ] The code builds clean without any errors or warnings
- [ ] The PR follows SK Contribution Guidelines (https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
- [ ] The code follows the .NET coding conventions (https://learn.microsoft.com/dotnet/csharp/fundamentals/coding-style/coding-conventions) verified with
dotnet format - [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone :smile:
@dluc @SergeyMenshykh this is the code associated with dev doc shared last week. I'm not committed to any naming or even the number of attributes -- only that the properties exposed therein are required for both publishing and using AI Plugins and other OpenAPI-derived functions. One option, if we don't want the AI Plugins attributes in the core kernel, would be to package them in another extension package. Can you please take a look, and let me know what you think?
no feedback. Closing PR. Reassigning to Engineering for a final design, implementation and PR.