mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
### Motivation and Context Closes #12442 When `ChatCompletionAgent` instances are used as plugins with `GoogleAIChatCompletion`, the application crashes with: ``` ValueError: Unknown field for Schema: anyOf ``` **Root cause**: The Semantic Kernel JSON schema builder generates `anyOf` for Union types (e.g. `str | list[str]` on the agent's `messages` parameter) and type-as-array for Optional types (e.g. `["string", "null"]`). Google AI's protobuf `Schema` does not support these constructs. ### Description Add `sanitize_schema_for_google_ai()` to `shared_utils.py` that recursively rewrites unsupported schema constructs: - `anyOf` / `oneOf` with a null variant → single type + `nullable: true` - `anyOf` / `oneOf` without null → picks the first variant - `type` as array (e.g. `["string", "null"]`) → single type + `nullable: true` Applied in both `kernel_function_metadata_to_google_ai_function_call_format()` and `kernel_function_metadata_to_vertex_ai_function_call_format()`. ### Contribution Checklist - [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) - [x] The existing tests pass, and I have added 12 new regression tests - [x] I didn't break any existing functionality > [!NOTE] > AI-assisted contribution: Claude helped with code review, test generation, and formatting. --------- Co-authored-by: Claude Opus 4.6 <[email protected]> Co-authored-by: Evan Mattson <[email protected]>