1299 Commits
Author SHA1 Message Date
Evan Mattson 4724dbc8f3 Python: Fix AzureAIAgent intermediate message ordering for invoke and invoke_stream (#12005)
### Motivation and Context

This PR fixes a core issue in `AzureAIAgent` where `FunctionCallContent`
and `FunctionResultContent` messages were not being emitted in the
correct order during `invoke()` and `invoke_stream()` execution.

- `invoke_stream`: tool messages are now drained and emitted after each
streamed assistant chunk, preserving causal ordering (tool call ->
result -> assistant reply).
- `invoke`: tool messages are emitted via callback immediately after the
non-streaming response is received, ensuring they precede the final
assistant message if applicable.

### Description

Updated samples to better show how the callbacks are used to receive the
intermediate messages in the proper order.
- Added unit tests to ensure proper coverage and message ordering.
- Closes #11999

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

### 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 😄
2025-05-12 22:58:06 +00:00
Evan Mattson b07454aff8 Python: Fix OpenAIAssistantAgent/OpenAIResponsesAgent intermediate message ordering for invoke and invoke_stream (#12008)
### Motivation and Context

This PR fixes a core issue in `OpenAIAssistantAgent` and
`OpenAIResponsesAgent` where `FunctionCallContent` and
`FunctionResultContent` messages were not being emitted in the correct
order during `invoke()` and `invoke_stream()` execution.

- `invoke_stream`: tool messages are now drained and emitted after each
streamed assistant chunk, preserving causal ordering (tool call ->
result -> assistant reply).
- `invoke`: tool messages are emitted via callback immediately after the
non-streaming response is received, ensuring they precede the final
assistant message if applicable.

### Description

Updated samples to better show how the callbacks are used to receive the
intermediate messages in the proper order.
- Added unit tests to ensure proper coverage and message ordering.
- Closes #12007

### Contribution Checklist

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

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
2025-05-12 22:45:43 +00:00
Evan Mattson fb2fc6b30c Python: Fix ChatCompletionAgent intermediate message ordering for invoke and invoke_stream (#12000)
### Motivation and Context

When using the `on_intermediate_message` callback, we are returning
messages to the caller in an incorrect order. While using function
calling, the order is:

1. Provide user input to agent that requires a tool call
2. FunctionCallContent chunks returned via callback
3. FunctionResultContent returned via callback
4. Final output (StreamingTextContent/TextContent) from agent returned
via invoke_stream/invoke

What we are really seeing is:
1. Provide user input to agent that requires a tool call
2. Final output (StreamingTextContent/TextContent) from agent returned
via invoke_stream/invoke
3. FunctionCallContent chunks returned via callback
4. FunctionResultContent returned via callback

The callback needs a bit of adjusting -- for the streaming case it must
emit messages as part of handling the AsyncGen response_list loop.

<!-- 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.
-->

### Description

Fix the ordering of the intermediate callback so messages aren't
received out of order.
- Adds unit tests to check message order
- Adjusts some samples
- Closes #11998 

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

### 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 😄
2025-05-12 07:45:08 +00:00
Evan Mattson fa919883c8 Python: Fix fallback logic overriding custom ChatHistory in ChatHistoryAgentThread (#11976)
### Motivation and Context

Fixes a bug where passing a valid `ChatHistoryReducer` into
`ChatHistoryAgentThread` would be silently overridden by a base
`ChatHistory` instance due to a falsy evaluation. There is now an
explicit `is not None` check to make sure the reducer behavior is
preserved.

Python is using the ChatHistory `__len__` override as part of the
truthiness check. The initial ChatHistoryReducer(ChatHistory) has no
messages when created, so it is evaluated as False.

<!-- 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.
-->

### Description

Fixes a bug where we overwrite a passed in ChatHistoryReducer object
with a base ChatHistory.
- Adds unit tests

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

### 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 😄
2025-05-12 00:55:07 +00:00
Evan Mattson 1428275f2a Python: Pin ONNX Windows pkg to last available. (#12006)
### Motivation and Context

The last ONNX package version (1.22.0) only has Linux or MacOS
available. Windows has not been published. The latest Win available
package is 1.21.0. Pinning the Windows package version to 1.21.0 so that
we don't break the CI/CD pipeline.

<!-- 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.
-->

### Description

Pin Win package to 1.21.0 so that we don't block the CI pipeline.

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

### 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 😄
2025-05-12 09:47:59 +09:00
dependabot[bot]andEvan Mattson a8cdbd9d96 Python: Bump torch from 2.6.0 to 2.7.0 in /python (#11788)
Bumps [torch](https://github.com/pytorch/pytorch) from 2.6.0 to 2.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytorch/pytorch/releases">torch's
releases</a>.</em></p>
<blockquote>
<h1>PyTorch 2.7.0 Release Notes</h1>
<ul>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#highlights">Highlights</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#tracked-regressions">Tracked
Regressions</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#backwards-incompatible-changes">Backwards
Incompatible Changes</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#deprecations">Deprecations</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#new-features">New
Features</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#improvements">Improvements</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#bug-fixes">Bug
fixes</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#performance">Performance</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#documentation">Documentation</a></li>
<li><a
href="https://github.com/pytorch/pytorch/blob/HEAD/#developers">Developers</a></li>
</ul>
<h1>Highlights</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytorch/pytorch/commit/134179474539648ba7dee1317959529fbd0e7f89"><code>1341794</code></a>
Gracefully handle optree less than minimum version, part 2 (<a
href="https://redirect.github.com/pytorch/pytorch/issues/151323">#151323</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/073912749d667fcfb2de1c15e1e664dc0ccd3460"><code>0739127</code></a>
Gracefully handle optree less than minimum version (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150977">#150977</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/0c236f3c722abc8e76fc16fae90946af9a895ce5"><code>0c236f3</code></a>
Update triton wheel build, setuptools pin (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150953">#150953</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/c7ff78dfc0c38847bf5daa78ab8b3669e1734246"><code>c7ff78d</code></a>
Fix inplacing with multiple, fused uses (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150892">#150892</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/894909a6139ff38d056d3ca5cfa33a020c7602c1"><code>894909a</code></a>
Revert &quot;[CUDA] Only use vec128 if CUDA version is newer than
12.8&quot; (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150855">#150855</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/ef2b1390ed5fda1f50843bf5977e5f8cf5e40493"><code>ef2b139</code></a>
[Manylinux 2.28] Correct Linux aarch64 cuda binaries wheel name (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150820">#150820</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/3f236f19032ff6424160018c024478c83b6ad6b9"><code>3f236f1</code></a>
[CUDA] Only use vec128 if CUDA version is newer than 12.8 (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150818">#150818</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/35f1e7621254da1dcc8b24797059e9d010d49196"><code>35f1e76</code></a>
Reland of &quot;[ROCm] change preferred blas lib defaults (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150249">#150249</a>)&quot;&quot;
(<a
href="https://redirect.github.com/pytorch/pytorch/issues/150707">#150707</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/a6321d62273dd281a08b1c4ec87ce3edd5b330dc"><code>a6321d6</code></a>
Revert &quot;Dont exclude constant_pad_nd in prologue fusion&quot; (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150699">#150699</a>)</li>
<li><a
href="https://github.com/pytorch/pytorch/commit/1cc51c640a717335b7bc48c11e28a1f5391b99e1"><code>1cc51c6</code></a>
[CUDA][avgpool2d] Fix backward launch bounds again for
<code>sm100</code>, <code>sm120</code> (<a
href="https://redirect.github.com/pytorch/pytorch/issues/150">#150</a>...</li>
<li>Additional commits viewable in <a
href="https://github.com/pytorch/pytorch/compare/v2.6.0...v2.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=torch&package-manager=pip&previous-version=2.6.0&new-version=2.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan Mattson <[email protected]>
2025-05-09 03:48:51 +00:00
dependabot[bot]andEvan Mattson 243526b624 Python: Update pyarrow requirement from <20.0,>=12.0 to >=12.0,<21.0 in /python (#11785)
Updates the requirements on [pyarrow](https://github.com/apache/arrow)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/apache/arrow/releases">pyarrow's
releases</a>.</em></p>
<blockquote>
<h2>Apache Arrow 20.0.0</h2>
<p>Release Notes URL: <a
href="https://arrow.apache.org/release/20.0.0.html">https://arrow.apache.org/release/20.0.0.html</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/apache/arrow/commit/3ad0370a04ccdae638755b94c3c31c8760a11193"><code>3ad0370</code></a>
MINOR: [Release] Update versions for 20.0.0</li>
<li><a
href="https://github.com/apache/arrow/commit/e4aed0d61b05ef055379b11e0899161422d7be39"><code>e4aed0d</code></a>
MINOR: [Release] Update .deb/.rpm changelogs for 20.0.0</li>
<li><a
href="https://github.com/apache/arrow/commit/02f9dfbd25c4e2d827f89b05976fcdb46209fe75"><code>02f9dfb</code></a>
MINOR: [Release] Update CHANGELOG.md for 20.0.0</li>
<li><a
href="https://github.com/apache/arrow/commit/92c3e39f3901f0343c1e6c48c25b96aafaea101c"><code>92c3e39</code></a>
<a
href="https://redirect.github.com/apache/arrow/issues/46077">GH-46077</a>:
[CI][C++] Disable -Werror on macos-13 (<a
href="https://redirect.github.com/apache/arrow/issues/46106">#46106</a>)</li>
<li><a
href="https://github.com/apache/arrow/commit/2f82cd86b43cca0554b849fb095109fbaa18ec3e"><code>2f82cd8</code></a>
<a
href="https://redirect.github.com/apache/arrow/issues/46123">GH-46123</a>:
[C++] Undefined behavior in <code>compare_internal.cc</code> and
`light_array_...</li>
<li><a
href="https://github.com/apache/arrow/commit/af15118dd065facc6e9bbeb58af13c382351600e"><code>af15118</code></a>
<a
href="https://redirect.github.com/apache/arrow/issues/46159">GH-46159</a>:
[CI][C++] Stop using possibly missing boost/process/v2.hpp on
boost...</li>
<li><a
href="https://github.com/apache/arrow/commit/7a6eefe3ec64ea8da4563488dc300ec432252d4b"><code>7a6eefe</code></a>
<a
href="https://redirect.github.com/apache/arrow/issues/46169">GH-46169</a>:
[CI][R] Update R version to 4.5 due to 4.4 not being on APT
reposit...</li>
<li><a
href="https://github.com/apache/arrow/commit/5c1eb910e2654195d4719469ee7be4ab864e2cf3"><code>5c1eb91</code></a>
<a
href="https://redirect.github.com/apache/arrow/issues/46167">GH-46167</a>:
[R][CI] Update Artifacts for R 4.5 in task.yml (<a
href="https://redirect.github.com/apache/arrow/issues/46168">#46168</a>)</li>
<li><a
href="https://github.com/apache/arrow/commit/0f41ecc3f7ef551614fb43277b97814e22683fdb"><code>0f41ecc</code></a>
<a
href="https://redirect.github.com/apache/arrow/issues/45986">GH-45986</a>:
[C++] Update bundled GoogleTest (<a
href="https://redirect.github.com/apache/arrow/issues/45996">#45996</a>)</li>
<li><a
href="https://github.com/apache/arrow/commit/1e2aa39012961e85a719857f0089fa04ab9119b3"><code>1e2aa39</code></a>
<a
href="https://redirect.github.com/apache/arrow/issues/46075">GH-46075</a>:
[Release][CI] Fix binary verification (<a
href="https://redirect.github.com/apache/arrow/issues/46076">#46076</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/apache/arrow/compare/go/v12.0.0...apache-arrow-20.0.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan Mattson <[email protected]>
2025-05-09 01:45:17 +00:00
07017af710 Python: Port Agent Runtime to SK repo (#11873)
### 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.
-->
Porting the agent runtime to SK repo for multi-agent orchestration work.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
1. Core runtime abstraction and in-process runtime implementation.
2. Unit tests.
3. Mark all public classes and methods experimental.

### 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 😄

---------

Co-authored-by: Eduard van Valkenburg <[email protected]>
Co-authored-by: Evan Mattson <[email protected]>
2025-05-07 12:33:36 +00:00
Tao Chen 7593c91176 Python: Disable Milvus memory store integration tests (#11920)
### 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.
-->
The Milvus memory store integration tests have been failing, blocking
some PR merges.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
Temporarily skipping the Milvus memory store integration test.

### 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 😄
2025-05-07 07:11:24 +00:00
dependabot[bot] 2d992cd799 Python: Bump google-cloud-aiplatform from 1.89.0 to 1.91.0 in /python (#11894)
Bumps
[google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform)
from 1.89.0 to 1.91.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/python-aiplatform/releases">google-cloud-aiplatform's
releases</a>.</em></p>
<blockquote>
<h2>v1.91.0</h2>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.90.0...v1.91.0">1.91.0</a>
(2025-04-30)</h2>
<h3>Features</h3>
<ul>
<li>Add Model Garden deploy SDK documentation and use cases. (<a
href="https://github.com/googleapis/python-aiplatform/commit/6eea5f4fc05444cf47609fbe4da9038d5fa6ac29">6eea5f4</a>)</li>
<li>Allow setting Vertex Model Garden source model version id during
model upload (<a
href="https://github.com/googleapis/python-aiplatform/commit/b1bbba6f94a86fdc711c59bfc248abe544c3da09">b1bbba6</a>)</li>
<li>GenAI - Add support for self-hosted OSS models in Batch Prediction.
(<a
href="https://github.com/googleapis/python-aiplatform/commit/c76ac624a4b708dc5980ec64eb52661eb7c8061d">c76ac62</a>)</li>
<li>GenAI - Support batch prediction in Model Garden OpenModel. (<a
href="https://github.com/googleapis/python-aiplatform/commit/8bf30b74828c976e315879d9a7b61cb718e1bcfe">8bf30b7</a>)</li>
<li>Update upperbound for langgraph (<a
href="https://github.com/googleapis/python-aiplatform/commit/547bf01410647b104c6b8134d57b8c27847558b4">547bf01</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Removing Python 3.8 support due to EOL (<a
href="https://github.com/googleapis/python-aiplatform/commit/4330b2fc2860eb38986937a81f4919059775137a">4330b2f</a>)</li>
</ul>
<h2>v1.90.0</h2>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.89.0...v1.90.0">1.90.0</a>
(2025-04-22)</h2>
<h3>Features</h3>
<ul>
<li>Add <code>pydantic</code> to default required packages for agent
engines (<a
href="https://github.com/googleapis/python-aiplatform/commit/6960ae4fb2e3fadd755b7725859f66f29d6498b4">6960ae4</a>)</li>
<li>Introduce a ModuleAgent template to Agent Engine (<a
href="https://github.com/googleapis/python-aiplatform/commit/5efcd6b1d42d477220674ee7d3dc97594b02c03f">5efcd6b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Broken import of VertexAiSessionService in AdkApp (<a
href="https://github.com/googleapis/python-aiplatform/commit/b84657a97404477d93d5010e03e36a777bbbb373">b84657a</a>)</li>
<li><strong>deps:</strong> Allow werkzeug 3.x (<a
href="https://github.com/googleapis/python-aiplatform/commit/0cb2b93cbebdb51982e7890f7d6c565110f0b50e">0cb2b93</a>)</li>
<li>Pin pydantic version lower-bound limit to 2.11.1 to fix a pydantic
dependency issue. (<a
href="https://github.com/googleapis/python-aiplatform/commit/a5c113022d2471e66945db45a93a762256ccaede">a5c1130</a>)</li>
<li>Pin pydantic version lower-bound limit to 2.11.1 to fix a pydantic
dependency issue. (<a
href="https://github.com/googleapis/python-aiplatform/commit/180cbbaca017a5e0e3a082652520e9ba489b0e0b">180cbba</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/python-aiplatform/blob/main/CHANGELOG.md">google-cloud-aiplatform's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.90.0...v1.91.0">1.91.0</a>
(2025-04-30)</h2>
<h3>Features</h3>
<ul>
<li>Add Model Garden deploy SDK documentation and use cases. (<a
href="https://github.com/googleapis/python-aiplatform/commit/6eea5f4fc05444cf47609fbe4da9038d5fa6ac29">6eea5f4</a>)</li>
<li>Allow setting Vertex Model Garden source model version id during
model upload (<a
href="https://github.com/googleapis/python-aiplatform/commit/b1bbba6f94a86fdc711c59bfc248abe544c3da09">b1bbba6</a>)</li>
<li>GenAI - Add support for self-hosted OSS models in Batch Prediction.
(<a
href="https://github.com/googleapis/python-aiplatform/commit/c76ac624a4b708dc5980ec64eb52661eb7c8061d">c76ac62</a>)</li>
<li>GenAI - Support batch prediction in Model Garden OpenModel. (<a
href="https://github.com/googleapis/python-aiplatform/commit/8bf30b74828c976e315879d9a7b61cb718e1bcfe">8bf30b7</a>)</li>
<li>Update upperbound for langgraph (<a
href="https://github.com/googleapis/python-aiplatform/commit/547bf01410647b104c6b8134d57b8c27847558b4">547bf01</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Removing Python 3.8 support due to EOL (<a
href="https://github.com/googleapis/python-aiplatform/commit/4330b2fc2860eb38986937a81f4919059775137a">4330b2f</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.89.0...v1.90.0">1.90.0</a>
(2025-04-22)</h2>
<h3>Features</h3>
<ul>
<li>Add <code>pydantic</code> to default required packages for agent
engines (<a
href="https://github.com/googleapis/python-aiplatform/commit/6960ae4fb2e3fadd755b7725859f66f29d6498b4">6960ae4</a>)</li>
<li>Introduce a ModuleAgent template to Agent Engine (<a
href="https://github.com/googleapis/python-aiplatform/commit/5efcd6b1d42d477220674ee7d3dc97594b02c03f">5efcd6b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Broken import of VertexAiSessionService in AdkApp (<a
href="https://github.com/googleapis/python-aiplatform/commit/b84657a97404477d93d5010e03e36a777bbbb373">b84657a</a>)</li>
<li><strong>deps:</strong> Allow werkzeug 3.x (<a
href="https://github.com/googleapis/python-aiplatform/commit/0cb2b93cbebdb51982e7890f7d6c565110f0b50e">0cb2b93</a>)</li>
<li>Pin pydantic version lower-bound limit to 2.11.1 to fix a pydantic
dependency issue. (<a
href="https://github.com/googleapis/python-aiplatform/commit/a5c113022d2471e66945db45a93a762256ccaede">a5c1130</a>)</li>
<li>Pin pydantic version lower-bound limit to 2.11.1 to fix a pydantic
dependency issue. (<a
href="https://github.com/googleapis/python-aiplatform/commit/180cbbaca017a5e0e3a082652520e9ba489b0e0b">180cbba</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/ec3bc047da721f4a88ab83199fef880620ac7afb"><code>ec3bc04</code></a>
chore(main): release 1.91.0 (<a
href="https://redirect.github.com/googleapis/python-aiplatform/issues/5251">#5251</a>)</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/8bf30b74828c976e315879d9a7b61cb718e1bcfe"><code>8bf30b7</code></a>
feat: GenAI - Support batch prediction in Model Garden OpenModel.</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/e0a54df29ee3a8dd569047e0084e85376c034228"><code>e0a54df</code></a>
chore: bump DEFAULT_PYTHON_VERSION to 3.10 in noxfile.py</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/c76ac624a4b708dc5980ec64eb52661eb7c8061d"><code>c76ac62</code></a>
feat: GenAI - Add support for self-hosted OSS models in Batch
Prediction.</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/b1bbba6f94a86fdc711c59bfc248abe544c3da09"><code>b1bbba6</code></a>
feat: Allow setting Vertex Model Garden source model version id during
model ...</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/4330b2fc2860eb38986937a81f4919059775137a"><code>4330b2f</code></a>
fix: Removing Python 3.8 support due to EOL</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/547bf01410647b104c6b8134d57b8c27847558b4"><code>547bf01</code></a>
feat: Update upperbound for langgraph</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/6eea5f4fc05444cf47609fbe4da9038d5fa6ac29"><code>6eea5f4</code></a>
feat: Add Model Garden deploy SDK documentation and use cases.</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/e1fcfffc72a1f6d63b71cb414de3e84f1de0f53f"><code>e1fcfff</code></a>
chore: Samples - Restore vector search sample for filtering and
crowding</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/e6772d37baaa4dfc7f1509e116f5924fbc47d761"><code>e6772d3</code></a>
chore(main): release 1.90.0 (<a
href="https://redirect.github.com/googleapis/python-aiplatform/issues/5185">#5185</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/python-aiplatform/compare/v1.89.0...v1.91.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google-cloud-aiplatform&package-manager=pip&previous-version=1.89.0&new-version=1.91.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-07 07:01:22 +00:00
Evan Mattson d266ac5db0 Python: Properly surface streaming code responses and handle Bing Grounding for AzureAIAgent (#11850)
### Motivation and Context

The AzureAIAgent streaming event path for handling streaming code output
as well as both streaming and non-streaming Bing Grounding tool calls
were missing in the current implementation. This PR adds handling for
those two scenarios.

<!-- 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.
-->

### Description

Updates to allow for proper handling of streaming code using the
AzureAIAgent
- code_interpreter: note that the code interpreter tool call is handled
as returning `StreamingTextContent` with the `metadata` dict configured
with `{"code": True}`.
- bing_grounding: support for the Bing Grounding Tool is added. There is
a current issue with streaming events and the Bing Grounding tool - the
`requesturl` as part of the tool call is coming back empty. This issue
has been raised with the appropriate team. Both streaming and
non-streaming do properly return the `StreamingAnnotationContent` or
`AnnotationContent` respectively.
- Samples were added to show interaction with the AzureAIAgent and these
tools, some also showing how to use the `on_intermediate_message`
callback.
- Fixes #11847

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

### 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 😄
2025-05-06 20:28:29 +00:00
kanchi 966fa8ca04 Python: Replace mutable default arguments and prevent unintended side effects (#11849)
### Motivation and Context

Some functions and methods were using mutable objects (typically `dict`)
as default argument values.
In Python, default arguments are evaluated only once at the time of
function definition.
This can lead to unexpected behavior when the default value is modified
within the function, as subsequent calls to the function may reuse the
modified object.

As a result, calling such functions or methods multiple times can lead
to unintended behavior.

Reference:  
[8.7. Function definitions (Official Python
Documentation)](https://docs.python.org/3.12/reference/compound_stmts.html#function-definitions)
> Default parameter values are evaluated from left to right when the
function definition is executed. This means that the expression is
evaluated once, when the function is defined, and that the same
“pre-computed” value is used for each call. This is especially important
to understand when a default parameter value is a mutable object, such
as a list or a dictionary: if the function modifies the object (e.g. by
appending an item to a list), the default parameter value is in effect
modified. This is generally not what was intended. A way around this is
to use None as the default, and explicitly test for it in the body of
the function, e.g.:


### Description

- Replaced mutable types (e.g., `dict`, `list`) used as default argument
values with `None`, and properly initialized them within the function
body.
- Reviewed and updated the parts of the code that performed destructive
modifications on the arguments, to avoid unintentionally modifying
variables from the caller’s scope.
- ~Added the `flake8-bugbear` rule in Ruff to detect this kind of
issue.~
- ~For now, errors in `tests` and `samples` directories are ignored due
to the large number of violations.~

### 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
2025-05-06 19:03:05 +00:00
SeryioGonzalez cf42cda501 Python: Update README.md (#11890)
The path is wrong

### 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.
-->

### Description

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

### Contribution Checklist

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

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
2025-05-06 18:02:41 +00:00
Evan Mattson 1a187b03bc Python: Introduce the Copilot Studio Agent (#11851)
### Motivation and Context

Semantic Kernel Python currently has a demo showing how to interact with
a Copilot Studio Agent; however, that uses the `DirectLine API`. This PR
introduces a Semantic Kernel `CoilotStudioAgent` that leverages the
team's new `microsoft.agents.copilotstudio.client`. One must first have
a Copilot Studio Agent created via the portal; and once ready, they can
reference it with the proper App Registration and Agent metadata.
Interacting with the Agent can leverage Microsoft Copilot Studio's
knowledge sources and internal tools.

<!-- 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.
-->

### Description

Add support for the `CopilotStudioAgent`. 
- Provide getting started samples
- Introduces a detailed README on what is required for setup and
interacting with the agent.
- The current version of the `CopilotStudioAgent` does not support
calling another Copilot Studio Agent via a skill.
- Authentication for the agent is limited to interactive right now. Once
service-to-service auth is support via the client, we will add this into
SK.
- Closes #11607

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

### 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 😄
2025-05-06 10:29:29 +00:00
Evan Mattson bc715487cb Python: Add extra_body attribute to OpenAI Chat settings (#11852)
### Motivation and Context

SK'S `OpenAIChatPromptExecutions` do not allow one to configure the
`extra_body` input to a chat completions create. This is something
specified on the Azure OpenAI connector but not on OpenAI. Because there
are also custom attributes as part of AOAI, we're providing a base class
attribute, and we will keep the child class attribute as-is.

<!-- 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.
-->

### Description

Introduce the `extra_body` attribute on OpenAI Chat Prompt Execution
Settings.
- Closes #11813

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

### 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 😄
2025-05-06 07:47:26 +00:00
Evan Mattson 89ef228f93 Python: Per deprecation message and date remove add_chat_message from AzureAIAgent and OpenAIAssistantAgent (#11827)
### Motivation and Context

Per the deprecation message on the method `add_chat_message(...)`
currently on the `AzureAIAgent` and `OpenAIAssistantAgent` classes, we
are removing the method in favor of passing in any messages directly to
the `get_response(...)`, `invoke(...)` or `invoke_stream(...)`. The
underlying thread abstraction handles adding the messages to the thread
as part of invocation.

<!-- 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.
-->

### Description

Remove the methods per the deprecation message and date.

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

### 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 😄
2025-05-02 07:38:19 +00:00
Evan Mattson 08feb2aebf Python: Deep-copy function_result.value in invoke_function_call to prevent state mutation (#11826)
### Motivation and Context

The existing implementation of `kernel.invoke_function_call(...)` stores
mutable tool return values by reference. Subsequent mutations to the
same in-memory state bleed into earlier chat messages, which corrupts
conversation history and breaks reproducibility. By deep-copying the
function result immediately after execution, we can guarantee an
immutable snapshot of each tool's output at the time of invocation,
which preserves previous tool invocations and removes unwanted side
effects.

<!-- 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.
-->

### Description

After `await stack(invocation_context)` in
`kernel.invoke_function_call(...)`, we now have:
```python
if invocation_context.function_result and invocation_context.function_result.value is not None:
    invocation_context.function_result.value = copy.deepcopy(
        invocation_context.function_result.value
    )
```
This has no change to our public API or user-facing behavior; internal
state handling is now robust against undesired mutations.
- Adds a unit test to exercise the new behavior and assert on the proper
mutations/states.

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

### 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 😄
2025-05-01 00:19:34 +00:00
Evan Mattson d3404ccc28 Python: Support callers passing in max supersteps for processes (#11798)
### Motivation and Context

Today in Python processes the `max_supersteps` config is hidden from the
caller. The internal execute method defaults the value to 100, and this
doesn't allow for developers to leverage custom values depending on
their use cases.

<!-- 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.
-->

### Description

Provide a way for callers to pass in `max_supersteps` via the process
runtime `start` method.
- Update README
- Update unit tests accordingly. 

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

### 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 😄
2025-04-30 09:25:47 +00:00
Evan Mattson f579976d55 Python: Bump Python version to 1.29.0 for a release. (#11786)
### Motivation and Context

Bump Python version to 1.29.0 for a release.

<!-- 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.
-->

### Description

Bump Python version to 1.29.0 for a release.

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

### 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 😄
2025-04-29 08:19:20 +09:00
Evan Mattson 30d2b0802a Python: Support Process State Management (#11637)
### Motivation and Context

SK Python processes have been missing support to be able to serialize
and deserialize JSON state for a process and its steps. This PR brings
in the functionality to allow the developer to do so. The
`getting_started_with_processes` step03 has been update to reflect this
latest functionality. It is possible to dump a JSON state to a file, and
reload the state to continue running the process.

State metadata that handles the version for steps is managed via a
decorator:

```python
@kernel_process_step_metadata("CutFoodStep.V1")
class CutFoodStep(KernelProcessStep):
    class Functions(Enum):
        ChopFood = "ChopFood"
        SliceFood = "SliceFood"
```

If no decorator/state is supplied the step will be built with a default
state version of "v1" which aligns with .Net.

<!-- 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.
-->

### Description

Support state and versioning management for Python processes.
- Update samples to reflect changes.
- Closes #9584

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

### 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
- [ ] I didn't break anyone 😄
2025-04-28 22:51:11 +00:00
gaudybandGaudy Blanco 96962c94e8 Python: New tests for azure_cosmos_db_mongodb_collection and local_step (#11518)
### Motivation and Context

Improve coverage for azure_cosmos_db_mongodb_collection and local_step
classes.

### Description

New test files:
- test_azure_cosmos_db_mongodb_collection.py
- test_local_step.py

### Contribution Checklist

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄

---------

Co-authored-by: Gaudy Blanco <[email protected]>
2025-04-28 17:27:30 +00:00
Tao Chen ab53559399 Python: Return thread id and run id in agent response metadata (#11744)
### 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.
-->
We are currently not returning the thread id and run id from the Azure
AI and Assistant agents. These properties will be useful for evaluation
purposes.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
Return the thread id and run id in the agent response metadata.


### 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 😄
2025-04-26 02:30:10 +00:00
Evan Mattson d7e4e3f12a Python: Support polling options at run-level for AzureAIAgent, OpenAIAssistantAgent, and OpenAIResponsesAgent (#11705)
### Motivation and Context

Based on feedback, there are customer scenarios where it can be helpful
to be able to pass in run-level polling options, instead of only at the
agent definition/constructor level.

<!-- 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.
-->

### Description

Add run-level run polling options parameter.

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

### 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 😄
2025-04-25 15:04:00 +00:00
Tao Chen 2a5fa441e8 Python: Add ability to clone a kernel (#11680)
### 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.
-->
Currently, we don't have a dedicated method to create a clone of a
kernel instance. Using `model_copy(deep=True)` will result in an error
because some service clients aren't serializable.

Being able to clone a kernel will be critical in many scenarios where
developers don't want to mutate the original one that is attached to an
agent or some other objects.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
1. Create a clone method in the `Kernel` class that will return a new
instance of the kernel with the same configuration, including the list
of filters, plugins and the AI selector. It will also include the same
list of services references.
2. Add unit tests and integration tests to ensure the new method works
as expected.

### 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 😄
2025-04-24 00:26:51 +00:00
dependabot[bot] b8b016b6bb Python: Update pymongo requirement from <4.12,>=4.8.0 to >=4.8.0,<4.13 in /python (#11553)
Updates the requirements on
[pymongo](https://github.com/mongodb/mongo-python-driver) to permit the
latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mongodb/mongo-python-driver/releases">pymongo's
releases</a>.</em></p>
<blockquote>
<h2>PyMongo 4.12.0</h2>
<p>Community notes: <a
href="https://www.mongodb.com/community/forums/t/pymongo-4-12-released/318187">https://www.mongodb.com/community/forums/t/pymongo-4-12-released/318187</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mongodb/mongo-python-driver/blob/master/doc/changelog.rst">pymongo's
changelog</a>.</em></p>
<blockquote>
<h2>Changes in Version 4.12.0 (2025/04/08)</h2>
<p>.. warning:: Driver support for MongoDB 4.0 reached end of life in
April 2025.
PyMongo 4.12 will be the last release to support MongoDB 4.0.</p>
<p>PyMongo 4.12 brings a number of changes including:</p>
<ul>
<li>Support for configuring DEK cache lifetime via the
<code>key_expiration_ms</code> argument to
:class:<code>~pymongo.encryption_options.AutoEncryptionOpts</code>.</li>
<li>Support for $lookup in CSFLE and QE supported on MongoDB 8.1+.</li>
<li>pymongocrypt&gt;=1.13 is now required for :ref:<code>In-Use
Encryption</code> support.</li>
<li>Added
:meth:<code>gridfs.asynchronous.grid_file.AsyncGridFSBucket.rename_by_name</code>
and :meth:<code>gridfs.grid_file.GridFSBucket.rename_by_name</code>
for more performant renaming of a file with multiple revisions.</li>
<li>Added
:meth:<code>gridfs.asynchronous.grid_file.AsyncGridFSBucket.delete_by_name</code>
and :meth:<code>gridfs.grid_file.GridFSBucket.delete_by_name</code>
for more performant deletion of a file with multiple revisions.</li>
<li>AsyncMongoClient no longer performs DNS resolution for
&quot;mongodb+srv://&quot; connection strings on creation.
To avoid blocking the asyncio loop, the resolution is now deferred until
the client is first connected.</li>
<li>Added index hinting support to the

:meth:<code>~pymongo.asynchronous.collection.AsyncCollection.distinct</code>
and
:meth:<code>~pymongo.collection.Collection.distinct</code>
commands.</li>
<li>Deprecated the <code>hedge</code> parameter for
:class:<code>~pymongo.read_preferences.PrimaryPreferred</code>,
:class:<code>~pymongo.read_preferences.Secondary</code>,
:class:<code>~pymongo.read_preferences.SecondaryPreferred</code>,
:class:<code>~pymongo.read_preferences.Nearest</code>. Support for
<code>hedge</code> will be removed in PyMongo 5.0.</li>
<li>Removed PyOpenSSL support from the asynchronous API due to
limitations of the CPython asyncio.Protocol SSL implementation.</li>
<li>Allow valid SRV hostnames with less than 3 parts.</li>
</ul>
<p>Issues Resolved
...............</p>
<p>See the <code>PyMongo 4.12 release notes in JIRA</code>_ for the list
of resolved issues
in this release.</p>
<p>.. _PyMongo 4.12 release notes in JIRA: <a
href="https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=41916">https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=41916</a></p>
<h2>Changes in Version 4.11.2 (2025/03/05)</h2>
<p>Version 4.11.2 is a bug fix release.</p>
<ul>
<li>Fixed a bug where
:meth:<code>~pymongo.database.Database.command</code> would fail when
attempting to run the bulkWrite command.</li>
</ul>
<p>Issues Resolved
...............</p>
<p>See the <code>PyMongo 4.11.2 release notes in JIRA</code>_ for the
list of resolved issues in this release.</p>
<p>.. _PyMongo 4.11.2 release notes in JIRA: <a
href="https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=42506">https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=42506</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/98b656f286790ecbfc98acd5bbdf5bb128ad2804"><code>98b656f</code></a>
BUMP 4.12.0</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/92970d39fd0fd9060c95c35a6081676b7b6af548"><code>92970d3</code></a>
PYTHON-5248 Update changelog for 4.12 release (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2265">#2265</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/4d4a26cbbe994675551234b15953bd2cf27d6d8a"><code>4d4a26c</code></a>
PYTHON-5270 Server selection should log remainingTimeMS as milliseconds
(<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2263">#2263</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/7a4218f0ad653af5091c1cb6a8dfc5d377f3df37"><code>7a4218f</code></a>
PYTHON-5263 Convert s3-related functions to generated config (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2259">#2259</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/79e5d601397f6d3891d9eaf881b43fd40a712ee2"><code>79e5d60</code></a>
PYTHON-5268 Fix handling of PYTHON_BINARY (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2264">#2264</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/bf0aa56fbbfa33c3bfbdf3c03a4ab55aceb0cda4"><code>bf0aa56</code></a>
PYTHON-5252 Add dependency on pymongocrypt 1.13 (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2258">#2258</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/708ce16961f077b7a03fc97e66ccfaccaa0d847a"><code>708ce16</code></a>
PYTHON-4724 - Prohibit AsyncMongoClient from being used across multiple
event...</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/1c813dc6489214bfab50aed04dfd63455bb4d231"><code>1c813dc</code></a>
PYTHON-4575 Allow valid SRV hostnames with less than 3 parts (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2234">#2234</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/e7c0814512ef4bc104bd17919acd80319460e1a0"><code>e7c0814</code></a>
PYTHON-4557 - Fix write log messages for retried commands (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2260">#2260</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/b40223938c9646e0b1a8f60d22e36120991b394d"><code>b402239</code></a>
PYTHON-5219 - Avoid awaiting coroutines when holding locks (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2250">#2250</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mongodb/mongo-python-driver/compare/4.8.0...4.12.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 16:23:37 +00:00
dependabot[bot] cce7ee258e Python: Update prance requirement from ~=23.6.21.0 to >=23.6.21,<25.4.9 in /python (#11555)
Updates the requirements on
[prance](https://github.com/RonnyPfannschmidt/prance) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/RonnyPfannschmidt/prance/blob/main/CHANGES.rst">prance's
changelog</a>.</em></p>
<blockquote>
<h1>Prance 25.04.08.0</h1>
<h2>Compatibility changes</h2>
<p>Thank you to Mathis for bringing this forth.</p>
<ul>
<li>migrate from jsonschema to referencing for references</li>
<li>drop unmaintained python 3.8/3.9</li>
<li>add support  + ci for python 3.11/3.12/3.14</li>
<li>migrate convert from mermade.org.uk to converter.swagger.io</li>
<li>switch yaml mimetype from the x-yaml form to the official yaml
form</li>
<li>include petstore example data to ease testing without the git
subrepo</li>
<li>explicitly use openapi-spec-validator backends in tests</li>
<li>drop dependency on setuptools and six</li>
</ul>
<h1>Prance 23.06.21.0</h1>
<ul>
<li>first release to do away with zerover</li>
<li>prance now uses calver by date</li>
</ul>
<h1>Prance 0.23.02.22.0 (2023-02-22)</h1>
<ul>
<li>note: due to a mistake in tagging this was released as 0.22.2.22.0
and was not found as the latest release</li>
</ul>
<h2>Features</h2>
<ul>
<li>Update packaging to use modern setuptools and drop python3.7. (<a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/147">#147</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Fixed bug where user's HOMEDRIVE exists, but HOMEDRIVE is offline.
(<a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/142">#142</a>)</li>
<li>unpin chardet to allow usage. (<a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/144">#144</a>)</li>
<li>Unpin packaging to prevent pin issues. (<a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/145">#145</a>)</li>
<li>unpin click to allow using modern versions. (<a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/146">#146</a>)</li>
</ul>
<h1>Prance 0.22.11.04.0</h1>
<h2>Features</h2>
<ul>
<li>consolidate and unify openapi-spec-validator api usage (<a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/132">#132</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/RonnyPfannschmidt/prance/commit/fdd9d38e1ad54b2aef7a5023aa6f5ba54d151573"><code>fdd9d38</code></a>
add changelog and upgrade metadata classifiers</li>
<li><a
href="https://github.com/RonnyPfannschmidt/prance/commit/7b3f0633b431054713bd7f4ac8cc69e8ff516927"><code>7b3f063</code></a>
Merge pull request <a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/161">#161</a>
from MathisFranel/python3.12-support</li>
<li><a
href="https://github.com/RonnyPfannschmidt/prance/commit/0177056e242a47565bb6f505df5879a47f412109"><code>0177056</code></a>
[pre-commit.ci] auto fixes from pre-commit.com hooks</li>
<li><a
href="https://github.com/RonnyPfannschmidt/prance/commit/5e085ecf5d694f42c4969f41cd3fb27792bd2112"><code>5e085ec</code></a>
Update of dependencies and support for Python3.10 to Python3.13</li>
<li><a
href="https://github.com/RonnyPfannschmidt/prance/commit/2b91d0776630512843ca7d2975f963080a5c3bb6"><code>2b91d07</code></a>
Merge pull request <a
href="https://redirect.github.com/RonnyPfannschmidt/prance/issues/152">#152</a>
from RonnyPfannschmidt/prepare-release</li>
<li>See full diff in <a
href="https://github.com/RonnyPfannschmidt/prance/compare/v23.06.21.0...v25.04.08.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 14:38:30 +00:00
dependabot[bot] 5c4e7d4060 Python: Bump google-cloud-aiplatform from 1.87.0 to 1.89.0 in /python (#11670)
Bumps
[google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform)
from 1.87.0 to 1.89.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/python-aiplatform/releases">google-cloud-aiplatform's
releases</a>.</em></p>
<blockquote>
<h2>v1.89.0</h2>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.88.0...v1.89.0">1.89.0</a>
(2025-04-16)</h2>
<h3>Features</h3>
<ul>
<li>Add support for env_vars parameter when creating or updating Agent
Engine. (<a
href="https://github.com/googleapis/python-aiplatform/commit/691c1f6156f2d66db369c2e5656c0e733b23a8f4">691c1f6</a>)</li>
<li>Add UpdateRagEngineConfig rpc (<a
href="https://github.com/googleapis/python-aiplatform/commit/64386e9d172f2b94338dc5468809821754d0d129">64386e9</a>)</li>
<li>Implement preview <code>get_rag_engine_config</code> in
<code>rag_data.py</code> (<a
href="https://github.com/googleapis/python-aiplatform/commit/cda064ecf87de75eaa9d4c4f5ccc18876fd53b99">cda064e</a>)</li>
<li>Implement preview <code>update_rag_engine_config</code> in
<code>rag_data.py</code> (<a
href="https://github.com/googleapis/python-aiplatform/commit/cda064ecf87de75eaa9d4c4f5ccc18876fd53b99">cda064e</a>)</li>
<li>Update win rate calculation in GenAI Evaluation for rubric based
evaluation (<a
href="https://github.com/googleapis/python-aiplatform/commit/d442c42ba15fcf5948fe71a60fc7ad50b89aa2c9">d442c42</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Include the env variables of the AdkApp when cloning (<a
href="https://github.com/googleapis/python-aiplatform/commit/9814768b937db43aac6f381023b409c68daebc5e">9814768</a>)</li>
</ul>
<h2>v1.88.0</h2>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.87.0...v1.88.0">1.88.0</a>
(2025-04-09)</h2>
<h3>Features</h3>
<ul>
<li>Add a module-level function to create a Gemini template config for
single-turn Gemini examples without having to explicitly construct the
Gemini example. (<a
href="https://github.com/googleapis/python-aiplatform/commit/126d10c87d9ce3817c39396e32fb5412761ab0aa">126d10c</a>)</li>
<li>Add autoscaling_target_request_count_per_minute option in Preview
model deployment on Endpoint &amp; Model classes. (<a
href="https://github.com/googleapis/python-aiplatform/commit/0f1f10a1172d2aaf89a96f614cc1a17c4ae65458">0f1f10a</a>)</li>
<li>Add Gen AI logging public preview API (<a
href="https://github.com/googleapis/python-aiplatform/commit/1589f6654e04f90b4f933254d4d19e5d24cb180f">1589f66</a>)</li>
<li>Add new template for AgentEngine (<a
href="https://github.com/googleapis/python-aiplatform/commit/0478f103a06f130eccdabb320993d6471a35df4f">0478f10</a>)</li>
<li>Add the possibility to create multimodal datasets without explicitly
specifying a bigquery dataset/table. (<a
href="https://github.com/googleapis/python-aiplatform/commit/f5043a6ff6d4777e0e67193fc934a3bd3bd8cb1a">f5043a6</a>)</li>
<li>Allow EvalTask to take dataset as a Google sheet - simplifying
rubric revision CUJ (<a
href="https://github.com/googleapis/python-aiplatform/commit/15df1f6ed71a071404c34d5f052288e521ecf6a6">15df1f6</a>)</li>
<li>Allow table targets in multi-region datasets when creating
multimodal datasets (<a
href="https://github.com/googleapis/python-aiplatform/commit/2d7bc32dc30d4e6a08947bf72ca24d94aac009fd">2d7bc32</a>)</li>
<li>Check if rubrics column is present before converting list of rubrics
to string (<a
href="https://github.com/googleapis/python-aiplatform/commit/6c1569b24b1355afd9b4aa6fdebf3137924ebac9">6c1569b</a>)</li>
<li>Convert list of rubrics to a string before sending the API request.
This allows users to use default parse_rubrics function that returns a
list of rubrics with customized prompts, and bring their own rubrics as
a list. (<a
href="https://github.com/googleapis/python-aiplatform/commit/9f21b73f6558eaba73b04d95172a9d667549353b">9f21b73</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK autorater metric
configuration utils to vertexai.preview module. (<a
href="https://github.com/googleapis/python-aiplatform/commit/f816d5aa78efcffb6d83f127a748d55ea6deaaf7">f816d5a</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK parsing rubric
generation response with additional fields to vertexai.preview module.
(<a
href="https://github.com/googleapis/python-aiplatform/commit/79ca86a57ef14e4b1bd92c4ee6a55a67f84a6ff4">79ca86a</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK rubric based
evaluation to vertexai.preview module. (<a
href="https://github.com/googleapis/python-aiplatform/commit/bb0758140882b3978565ce6e7137ead8f3bf9457">bb07581</a>)</li>
<li>Model optimizer SDK support (<a
href="https://github.com/googleapis/python-aiplatform/commit/f2572989fc03aebfea0a79229db3d61413ff95e2">f257298</a>)</li>
<li>Track the output path for metrics_table in experiments metadata, if
output bucket is specified but no file name is specified, we will
generate a unique file name (<a
href="https://github.com/googleapis/python-aiplatform/commit/be2c99f91772fd5e07e8fb7b73c688f94226daab">be2c99f</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Preprend question tag to rubric critiquing response after editing
the predefined prompts to end with &lt;question&gt; to avoid parsing
errors (<a
href="https://github.com/googleapis/python-aiplatform/commit/0abd6ad057b806bd6fd19d7c51292ecd958015d7">0abd6ad</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/python-aiplatform/blob/main/CHANGELOG.md">google-cloud-aiplatform's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.88.0...v1.89.0">1.89.0</a>
(2025-04-16)</h2>
<h3>Features</h3>
<ul>
<li>Add support for env_vars parameter when creating or updating Agent
Engine. (<a
href="https://github.com/googleapis/python-aiplatform/commit/691c1f6156f2d66db369c2e5656c0e733b23a8f4">691c1f6</a>)</li>
<li>Add UpdateRagEngineConfig rpc (<a
href="https://github.com/googleapis/python-aiplatform/commit/64386e9d172f2b94338dc5468809821754d0d129">64386e9</a>)</li>
<li>Implement preview <code>get_rag_engine_config</code> in
<code>rag_data.py</code> (<a
href="https://github.com/googleapis/python-aiplatform/commit/cda064ecf87de75eaa9d4c4f5ccc18876fd53b99">cda064e</a>)</li>
<li>Implement preview <code>update_rag_engine_config</code> in
<code>rag_data.py</code> (<a
href="https://github.com/googleapis/python-aiplatform/commit/cda064ecf87de75eaa9d4c4f5ccc18876fd53b99">cda064e</a>)</li>
<li>Update win rate calculation in GenAI Evaluation for rubric based
evaluation (<a
href="https://github.com/googleapis/python-aiplatform/commit/d442c42ba15fcf5948fe71a60fc7ad50b89aa2c9">d442c42</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Include the env variables of the AdkApp when cloning (<a
href="https://github.com/googleapis/python-aiplatform/commit/9814768b937db43aac6f381023b409c68daebc5e">9814768</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.87.0...v1.88.0">1.88.0</a>
(2025-04-09)</h2>
<h3>Features</h3>
<ul>
<li>Add a module-level function to create a Gemini template config for
single-turn Gemini examples without having to explicitly construct the
Gemini example. (<a
href="https://github.com/googleapis/python-aiplatform/commit/126d10c87d9ce3817c39396e32fb5412761ab0aa">126d10c</a>)</li>
<li>Add autoscaling_target_request_count_per_minute option in Preview
model deployment on Endpoint &amp; Model classes. (<a
href="https://github.com/googleapis/python-aiplatform/commit/0f1f10a1172d2aaf89a96f614cc1a17c4ae65458">0f1f10a</a>)</li>
<li>Add Gen AI logging public preview API (<a
href="https://github.com/googleapis/python-aiplatform/commit/1589f6654e04f90b4f933254d4d19e5d24cb180f">1589f66</a>)</li>
<li>Add new template for AgentEngine (<a
href="https://github.com/googleapis/python-aiplatform/commit/0478f103a06f130eccdabb320993d6471a35df4f">0478f10</a>)</li>
<li>Add the possibility to create multimodal datasets without explicitly
specifying a bigquery dataset/table. (<a
href="https://github.com/googleapis/python-aiplatform/commit/f5043a6ff6d4777e0e67193fc934a3bd3bd8cb1a">f5043a6</a>)</li>
<li>Allow EvalTask to take dataset as a Google sheet - simplifying
rubric revision CUJ (<a
href="https://github.com/googleapis/python-aiplatform/commit/15df1f6ed71a071404c34d5f052288e521ecf6a6">15df1f6</a>)</li>
<li>Allow table targets in multi-region datasets when creating
multimodal datasets (<a
href="https://github.com/googleapis/python-aiplatform/commit/2d7bc32dc30d4e6a08947bf72ca24d94aac009fd">2d7bc32</a>)</li>
<li>Check if rubrics column is present before converting list of rubrics
to string (<a
href="https://github.com/googleapis/python-aiplatform/commit/6c1569b24b1355afd9b4aa6fdebf3137924ebac9">6c1569b</a>)</li>
<li>Convert list of rubrics to a string before sending the API request.
This allows users to use default parse_rubrics function that returns a
list of rubrics with customized prompts, and bring their own rubrics as
a list. (<a
href="https://github.com/googleapis/python-aiplatform/commit/9f21b73f6558eaba73b04d95172a9d667549353b">9f21b73</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK autorater metric
configuration utils to vertexai.preview module. (<a
href="https://github.com/googleapis/python-aiplatform/commit/f816d5aa78efcffb6d83f127a748d55ea6deaaf7">f816d5a</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK parsing rubric
generation response with additional fields to vertexai.preview module.
(<a
href="https://github.com/googleapis/python-aiplatform/commit/79ca86a57ef14e4b1bd92c4ee6a55a67f84a6ff4">79ca86a</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK rubric based
evaluation to vertexai.preview module. (<a
href="https://github.com/googleapis/python-aiplatform/commit/bb0758140882b3978565ce6e7137ead8f3bf9457">bb07581</a>)</li>
<li>Model optimizer SDK support (<a
href="https://github.com/googleapis/python-aiplatform/commit/f2572989fc03aebfea0a79229db3d61413ff95e2">f257298</a>)</li>
<li>Track the output path for metrics_table in experiments metadata, if
output bucket is specified but no file name is specified, we will
generate a unique file name (<a
href="https://github.com/googleapis/python-aiplatform/commit/be2c99f91772fd5e07e8fb7b73c688f94226daab">be2c99f</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Preprend question tag to rubric critiquing response after editing
the predefined prompts to end with &lt;question&gt; to avoid parsing
errors (<a
href="https://github.com/googleapis/python-aiplatform/commit/0abd6ad057b806bd6fd19d7c51292ecd958015d7">0abd6ad</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/da35701e02bb6fe7fac5fdf840cf30280985a453"><code>da35701</code></a>
chore(main): release 1.89.0 (<a
href="https://redirect.github.com/googleapis/python-aiplatform/issues/5158">#5158</a>)</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/cda064ecf87de75eaa9d4c4f5ccc18876fd53b99"><code>cda064e</code></a>
feat: Implement preview <code>update_rag_engine_config</code> in
<code>rag_data.py</code></li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/c553b48d4bd3f1ee567f6056c822edc92cd02bf2"><code>c553b48</code></a>
chore: Declare compatibility with Protobuf v30</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/691c1f6156f2d66db369c2e5656c0e733b23a8f4"><code>691c1f6</code></a>
feat: Add support for env_vars parameter when creating or updating Agent
Engine.</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/418607ac98b382c4d501f19db0c4773759da8ce2"><code>418607a</code></a>
chore: Change command parameter type to Optional[Sequence[str]] in
CustomCont...</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/d442c42ba15fcf5948fe71a60fc7ad50b89aa2c9"><code>d442c42</code></a>
feat: Update win rate calculation in GenAI Evaluation for rubric based
evalua...</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/64386e9d172f2b94338dc5468809821754d0d129"><code>64386e9</code></a>
Copybara import of the project:</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/a6a1ec5034cf4b70e8a82945b5bfd467a7ef25a6"><code>a6a1ec5</code></a>
chore: Handle Autogen <code>RunResponseProtocol</code></li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/c1fa49fe42839eebca467f461e544ce72764063a"><code>c1fa49f</code></a>
chore: Add a system test for using prompt management as template
config</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/9814768b937db43aac6f381023b409c68daebc5e"><code>9814768</code></a>
fix: Include the env variables of the AdkApp when cloning</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/python-aiplatform/compare/v1.87.0...v1.89.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google-cloud-aiplatform&package-manager=pip&previous-version=1.87.0&new-version=1.89.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 14:21:08 +00:00
Eduard van Valkenburg 9febe95fbb Python: updated mixed chat sample (#11624)
### 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.
-->
Updated the mixed_chat sample to use Azure AI Agents instead of
assistant api and used the newest syntax for the chat completion agent

### Description

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

### 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 😄
2025-04-22 07:31:54 +00:00
Sophia Lagerkrans-Pandey 479d2241d0 Python: Update README.md (#11662)
### Motivation and Context

Update the `getting_started_with_processes` README to say `processes`
instead of `agents`.

<!-- 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.
-->

### Description

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

### 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 😄
2025-04-22 07:23:34 +00:00
Evan Mattson 4d30d30c65 Python: Adjust RunPollingOptions import to base level, Add continue during invoke tool calls (#11636)
### Motivation and Context

We're not exposing the RunPollingOptions at the base
`semantic_kernel.agents` import level. To make it easier for devs, we
should.

Additionally, when using an `AzureAIAgent` or `OpenAIAssistantAgent`
`invoke` or `get_response`, right after submitting the tool call output,
we immediate make a call via the client to get the finished steps. To
give time to the server to respond and not hit rate limits, add a
`continue` to abide by our polling options.

<!-- 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.
-->

### Description

Adjust import and polling behavior to avoid hitting rate limits.

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

### 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 😄
2025-04-21 10:34:20 +00:00
NEWTON MALLICKandEvan Mattson 8edcdb3ab0 Python: Added Brave search capability in SK(python) based on PR #9632 (#11531)
### Motivation and Context

Added BRAVE SEARCH CAPABILITIES in Semantic Kernel Python based on PR
#11308 .

### Description

- Introduce BraveConnector & BraveSearch for Brave Search API
integration,
- BraveSettings and response models were added, respectively.
- Add unit Tests  

### 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 😄

---------

Co-authored-by: Evan Mattson <[email protected]>
2025-04-21 10:16:31 +00:00
Evan Mattson deaf92b0de Python: Bump Python version to 1.28.1 for a release. (#11605)
### Motivation and Context

Bump Python version to 1.28.1 for a release.

<!-- 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.
-->

### Description

Bump Python version to 1.28.1 for a release.

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

### 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 😄
2025-04-17 06:06:21 +00:00
Eduard van Valkenburg 5cbd980f55 Python: create MCP server from agent (#11506)
### 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.
-->
This PR adds a second create_mcp_server function that takes in a list of
functions/plugins/agents, and can thus easily be used to create a MCP
server based on a Agent
Adds a sample with a Azure AI Agent.
Partial for #11463 

### Description

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

### 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 😄
2025-04-17 05:29:11 +00:00
Tao Chen 71caf53a9e Python: Add samples to show how to get completion token usage (#11575)
### 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.
-->
We have had questions on how to get the token usage from a chat
completion response.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
Add samples to show how to get the token usage from a chat completion
(streaming) response.

### 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 😄
2025-04-17 01:55:07 +00:00
Evan Mattson da1e1e5b63 Python: Fix Agent StreamingTextContent Yielding and Proper Handling of FunctionCallContent/FunctionResultContent (#11563)
### Motivation and Context

This PR addresses an issue where responses during the `invoke_stream`
call were not being properly filtered by content type. The bug caused
the system to yield responses containing non-text content (i.e.,
FunctionCallContent or FunctionResultContent) directly, rather than
routing them through the on_intermediate_message callback for
specialized handling. The fix ensures that only responses exclusively
composed of StreamingTextContent are yielded, while other
function-related content types are passed to the appropriate callback.

Additionally, the `ChatHistoryAgentThread` id property wasn't set - it
was configuring a `_thread_id`, which the base class doesn't use.

<!-- 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.
-->

### Description

- Properly yield expected content type `StreamingTextContent` from an
agent `invoke_stream(...)` call. Other FCC or FRC types are yielded via
the `on_intermediate_message` callback.
- Fix `ChatHistoryAgentThread` id bug that was setting `_thread_id`
instead of `_id`.
- Update integration tests to make sure we receive the expected content
types during function call invocations.
- Closes #11561
- Closes #11535 

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

### 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 😄
2025-04-16 00:23:34 +00:00
Eduard van Valkenburg 5f37e464df Python: add support for prompts and sample (#11508)
### 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.
-->
Allow a list of prompts to be added and exposed with the MCP server
setup.

This uses the built-in rendering types (all of them) to be used and
exposed as prompts.

Closes: #11143

### Description

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

### 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 😄
2025-04-15 08:25:35 +00:00
Eduard van Valkenburg bae7e281ee Python: version updated to 1.28.0 (#11504)
### 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.
-->
Updated the version of the package to 1.28

### Description

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

### 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 😄
2025-04-11 08:30:36 +00:00
Eduard van Valkenburg 975bb9ba44 Python: small code improvements in code of call automation sample (#11477)
### 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.
-->
cleanup of the call automation sample
cleaner code and clearer seperation of debug and info logs.

### Description

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


### 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 😄
2025-04-11 08:14:07 +00:00
Evan Mattson 3cce24bb74 Python: Bug fix for azure ai agent truncate strategy. Add sample. (#11503)
### Motivation and Context

We are not handling the AzureAIAgent truncation strategy object
correctly in AgentThreadActions. Fix this and add a sample showing how
to configure the object during agent invocation.

<!-- 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.
-->

### Description

Bug fix and sample.

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

### 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 😄
2025-04-11 08:06:07 +00:00
Eduard van Valkenburg 12851923bc Python: allow settings to be created directly (#11468)
### 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.
-->
I've always hated having to add the .create to a settings object, this
removes that, you can just use the regular init, added benefit is that
it has the proper fields in the docstrings for each implemented settings
object!

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
Adds a __new__ method to the base settings class, which takes the prefix
and if supplied the env_file and encoding, then calls model_rebuild and
then the init.

### 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 😄
2025-04-11 06:26:22 +00:00
Eduard van Valkenburg 07c09e6137 Python: sample using GitHub MCP Server and Azure AI Agent (#11465)
### 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.
-->
This adds a sample using Azure AI Agents and the local Github MCP server
as a plugin.

Partial for: #11463

### Description

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

### 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 😄
2025-04-11 05:31:00 +00:00
Eduard van ValkenburgandNico Möller 78dd3d5e9c Python: Introducing SK as a MCP Server (#11362)
### 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.
-->

This PR adds the ability to stand up your Kernel as a MCP Server, it
returns the Server object, which you can then run as either a Stdio or
Sse server.
Includes a sample to demonstrate.

### Description

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

### 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 😄

---------

Co-authored-by: Nico Möller <[email protected]>
2025-04-11 05:22:07 +00:00
Eduard van Valkenburg 97fb2c38f8 Python: Allow Kernel Functions from Prompt for image and audio content (#11403)
### 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.
-->
I noticed that even though the input and prompt rendering match what you
want to use for image and audio generation, we didn't support that.

This introduces just that, with two samples. This unlocks the following
scenario's:

- Running text to speech pipelines with set intro/outro statements
- Creating function calls for image generation with limited scope and a
lot of set pieces.

### Description

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

- Adds a `get_image_content` method to the TextToImageClientBase class
- Adds the option to select a TextToImage or TextToAudio client in the
service selector (only for non-streaming)
- Adds branches in the KernelFunctionFromPrompt _invoke_internal for
those types.
- Adds handling the output as a FunctionResult
- Adds samples for both


### 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 😄
2025-04-10 12:51:53 +00:00
Evan Mattson 81e89f0c22 Python: Improve agent integration tests (#11475)
### Motivation and Context

The current integration tests for agents work fine; however, if any
errors are encountered due to server-side hiccups, the instant failure
cause the whole test run to fail. This PR creates an `agent_test_base`
that provides some retry logic, as well as a standardized way for agent
test classes to use the underlying methods/protocol.

<!-- 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.
-->

### Description

Improve the agent integration tests.
- The OpenAI Responses API is throwing 500s for file search right now.
Adding `xfail` for the time being. Filed an
[issue](https://github.com/openai/openai-python/issues/2298) on them.
- Handle errors when calling for a response for the OpenAI Responses API
-- throw a specific agent except or content exception, if received from
Azure OpenAI.
- Removed the `OpenAIResponsesAgent` `invoke` and `invoke_stream`
web_search tests. We have coverage for `get_responses`. The web search
is flaky sometimes.

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

### 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 😄
2025-04-10 12:11:06 +00:00
Evan Mattson 6f35b627f4 Python: Support Auto Function Invocation Filter for AzureAIAgent and OpenAIAssistantAgent (#11460)
### Motivation and Context

The server-side agents like AzureAIAgent and OpenAIAssistantAgent do not
support the Auto function invocation filter. Although we return
intermediate step results, like FunctionResultContent, as part of the
`on_intermediate_steps` callback, this didn't allow for developers to
configure a filter to return the result as-is, or modify the result as
part of the filter.

<!-- 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.
-->

### Description

Add support for the auto function invocation filter for the
`AzureAIAgent` and `OpenAIAssistantAgent`.
- Closes #11054
- Closes #11456 
- Adds samples on how to configure the filter for both agent types, and
how to configure the callback to show the various content types.

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

### 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 😄
2025-04-10 00:39:47 +00:00
dependabot[bot] ee4fb6d837 Python: Bump google-cloud-aiplatform from 1.86.0 to 1.87.0 in /python (#11423)
Bumps
[google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform)
from 1.86.0 to 1.87.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/python-aiplatform/releases">google-cloud-aiplatform's
releases</a>.</em></p>
<blockquote>
<h2>v1.87.0</h2>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.86.0...v1.87.0">1.87.0</a>
(2025-04-01)</h2>
<h3>Features</h3>
<ul>
<li>Add page spans in retrieved contexts from Vertex RAG Engine in
aiplatform v1 (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
<li>Add page spans in retrieved contexts from Vertex RAG Engine in
aiplatform v1beta1 (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
<li>Add support for Vertex AI Search engine (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
<li>Add validation of the BigQuery location when creating a
MultimodalDataset (<a
href="https://github.com/googleapis/python-aiplatform/commit/98459aafa6fbb3edf79690b53bc646d14ac006a0">98459aa</a>)</li>
<li>Adding Vertex AI Search Config for RAG corpuses to SDK (<a
href="https://github.com/googleapis/python-aiplatform/commit/a7453da7d747e76bf69ce1ef3473a66f960ceb8b">a7453da</a>)</li>
<li>Allow using multimodal datasets in the SDK. (<a
href="https://github.com/googleapis/python-aiplatform/commit/d951b74b4f027de981a0b34b420285c99856ca1c">d951b74</a>)</li>
<li>ExampleStore SDK in public preview (<a
href="https://github.com/googleapis/python-aiplatform/commit/50fbdeebd3ab59dde9ef4039035ed912e652f42a">50fbdee</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK multimodal evaluation
to vertexai.preview module. (<a
href="https://github.com/googleapis/python-aiplatform/commit/f090ca1f7538453bafc0e4c634597906185c0647">f090ca1</a>)</li>
<li>Make it optional to pass in an instance of an agent when creating a
new ReasoningEngine instance (<a
href="https://github.com/googleapis/python-aiplatform/commit/f3addc9f104b1c4fdfec0e82df3d58292f9de33e">f3addc9</a>)</li>
<li>Support creating multimodal datasets from a JSONL file containing
Gemini requests (<a
href="https://github.com/googleapis/python-aiplatform/commit/a3236795fef390263140e7f8bf5b47eb8d3e5ad9">a323679</a>)</li>
<li>Vertex AI Model Garden open model export SDK Public Preview (<a
href="https://github.com/googleapis/python-aiplatform/commit/898109d607472688fba88e3406c19eb3e8a1b012">898109d</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Propagating import result sink correctly in the vertexai sdk. (<a
href="https://github.com/googleapis/python-aiplatform/commit/184cca51f8f2c91b4dc7564a9d3dcb72381d82d1">184cca5</a>)</li>
<li>Remove the xprof dependency from Vertex Tensorboard uploader. (<a
href="https://github.com/googleapis/python-aiplatform/commit/1336b85dab923521077134631951c7b9456268a0">1336b85</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>A comment for field <code>rag_files_count</code> in message
<code>.google.cloud.aiplatform.v1beta1.RagCorpus</code> is changed (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/python-aiplatform/blob/main/CHANGELOG.md">google-cloud-aiplatform's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/python-aiplatform/compare/v1.86.0...v1.87.0">1.87.0</a>
(2025-04-01)</h2>
<h3>Features</h3>
<ul>
<li>Add page spans in retrieved contexts from Vertex RAG Engine in
aiplatform v1 (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
<li>Add page spans in retrieved contexts from Vertex RAG Engine in
aiplatform v1beta1 (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
<li>Add support for Vertex AI Search engine (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
<li>Add validation of the BigQuery location when creating a
MultimodalDataset (<a
href="https://github.com/googleapis/python-aiplatform/commit/98459aafa6fbb3edf79690b53bc646d14ac006a0">98459aa</a>)</li>
<li>Adding Vertex AI Search Config for RAG corpuses to SDK (<a
href="https://github.com/googleapis/python-aiplatform/commit/a7453da7d747e76bf69ce1ef3473a66f960ceb8b">a7453da</a>)</li>
<li>Allow using multimodal datasets in the SDK. (<a
href="https://github.com/googleapis/python-aiplatform/commit/d951b74b4f027de981a0b34b420285c99856ca1c">d951b74</a>)</li>
<li>ExampleStore SDK in public preview (<a
href="https://github.com/googleapis/python-aiplatform/commit/50fbdeebd3ab59dde9ef4039035ed912e652f42a">50fbdee</a>)</li>
<li>GenAI Evaluation: Release GenAI Evaluation SDK multimodal evaluation
to vertexai.preview module. (<a
href="https://github.com/googleapis/python-aiplatform/commit/f090ca1f7538453bafc0e4c634597906185c0647">f090ca1</a>)</li>
<li>Make it optional to pass in an instance of an agent when creating a
new ReasoningEngine instance (<a
href="https://github.com/googleapis/python-aiplatform/commit/f3addc9f104b1c4fdfec0e82df3d58292f9de33e">f3addc9</a>)</li>
<li>Support creating multimodal datasets from a JSONL file containing
Gemini requests (<a
href="https://github.com/googleapis/python-aiplatform/commit/a3236795fef390263140e7f8bf5b47eb8d3e5ad9">a323679</a>)</li>
<li>Vertex AI Model Garden open model export SDK Public Preview (<a
href="https://github.com/googleapis/python-aiplatform/commit/898109d607472688fba88e3406c19eb3e8a1b012">898109d</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Propagating import result sink correctly in the vertexai sdk. (<a
href="https://github.com/googleapis/python-aiplatform/commit/184cca51f8f2c91b4dc7564a9d3dcb72381d82d1">184cca5</a>)</li>
<li>Remove the xprof dependency from Vertex Tensorboard uploader. (<a
href="https://github.com/googleapis/python-aiplatform/commit/1336b85dab923521077134631951c7b9456268a0">1336b85</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>A comment for field <code>rag_files_count</code> in message
<code>.google.cloud.aiplatform.v1beta1.RagCorpus</code> is changed (<a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa">30f0fcf</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/cd8ecfc393f475625238ebda2b33cda37caf0e04"><code>cd8ecfc</code></a>
chore(main): release 1.87.0 (<a
href="https://redirect.github.com/googleapis/python-aiplatform/issues/5107">#5107</a>)</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/14622d61dac4b4e22ad567fd30dd413b8f5146e1"><code>14622d6</code></a>
chore: Support the batch mode in Llama Index Query Pipeline.</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/898109d607472688fba88e3406c19eb3e8a1b012"><code>898109d</code></a>
feat: Vertex AI Model Garden open model export SDK Public Preview</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/273e341181ef37a50e92b343821cf6242c081ad9"><code>273e341</code></a>
chore: More actionable warning (with doc) for &quot;Failed to register
API methods&quot;.</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/a3236795fef390263140e7f8bf5b47eb8d3e5ad9"><code>a323679</code></a>
feat: support creating multimodal datasets from a JSONL file containing
Gemin...</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/50fbdeebd3ab59dde9ef4039035ed912e652f42a"><code>50fbdee</code></a>
feat: ExampleStore SDK in public preview</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/a7453da7d747e76bf69ce1ef3473a66f960ceb8b"><code>a7453da</code></a>
feat: Adding Vertex AI Search Config for RAG corpuses to SDK</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/f090ca1f7538453bafc0e4c634597906185c0647"><code>f090ca1</code></a>
feat: GenAI Evaluation: Release GenAI Evaluation SDK multimodal
evaluation to...</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/30f0fcff3e885157a6bf8e7902725a0d67acfffa"><code>30f0fcf</code></a>
Copybara import of the project:</li>
<li><a
href="https://github.com/googleapis/python-aiplatform/commit/1336b85dab923521077134631951c7b9456268a0"><code>1336b85</code></a>
fix: Remove the xprof dependency from Vertex Tensorboard uploader.</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/python-aiplatform/compare/v1.86.0...v1.87.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google-cloud-aiplatform&package-manager=pip&previous-version=1.86.0&new-version=1.87.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 22:03:33 +00:00
dependabot[bot] 96f5db8d92 Python: Update chromadb requirement from <0.7,>=0.5 to >=0.5,<1.1 in /python (#11420)
Updates the requirements on
[chromadb](https://github.com/chroma-core/chroma) to permit the latest
version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chroma-core/chroma/commit/ba4f4fdd0ea93df470d01f8df82f1a5a2d193b38"><code>ba4f4fd</code></a>
[RELEASE] 1.0.2 (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4197">#4197</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/3c549066d71e9392680db714b02d5b338f450fb8"><code>3c54906</code></a>
[ENH]: better garbage collection tracing (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4136">#4136</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/8b6f04c663bc97ef99a2ea852d4135c60db57e13"><code>8b6f04c</code></a>
[ENH]: allow overriding default garbage collection mode per tenant &amp;
clean up...</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/c722b144181c11b3beeb1c11a4fb18024095a04c"><code>c722b14</code></a>
[ENH] CLI JS bundle (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4186">#4186</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/b51933dd4b10e2c64977f25c78851db461b4ff85"><code>b51933d</code></a>
[BUG] Hide unannounced commands (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4184">#4184</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/6dde453db8884a12724a673bfc6187c594ba0a3e"><code>6dde453</code></a>
[ENH] CLI install command v1 (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4183">#4183</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/50167cb526e74aea61b97d858a499c3ffae49bb0"><code>50167cb</code></a>
[ENH] gen benchmarking readme update (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4182">#4182</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/6252a74640ea6ae44880cd9f06b3acf576635c26"><code>6252a74</code></a>
[ENH] Update gen-benchmarking config (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4180">#4180</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/52dd6390495bba20e5400b07c393478271ff7b6d"><code>52dd639</code></a>
[ENH] Add gen benchmarking config (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4179">#4179</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/d007066bed1f7e46fd6d432c1be216cabbf0516a"><code>d007066</code></a>
[ENH] Adding listing for sample apps (<a
href="https://redirect.github.com/chroma-core/chroma/issues/4176">#4176</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/chroma-core/chroma/compare/0.5.0...1.0.2">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 20:28:56 +00:00
kanchi 7e376b71ad Python: Fix TypeError when required is missing in MCP tool’s inputSchema (#11458)
### Motivation and Context

Resolves #11457

### Description

Fixed an issue where a `TypeError` would occur when the inputSchema of a
tool listed from the MCP server did not include any required parameters.

### Contribution Checklist

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

- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄
2025-04-09 20:16:15 +00:00
Evan Mattson 3a7dfe9984 Python: Update Doc Gen demo based on latest agent invocation api pattern (#11426)
### Motivation and Context

The current document generator demo is using old agent invocation API
patterns. This PR updates the demo to use the latest API abstractions
with SK's current group chat patterns.

<!-- 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.
-->

### Description

Update the demo.

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

### 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 😄
2025-04-08 22:39:25 +00:00
Evan Mattson 6551a860c7 Python: Add ChatCompletionAgent integration tests (#11430)
### Motivation and Context

Add ChatCompletionAgent integration tests. The last set of agent
integration tests that aren't available right now. Additionally, as part
of creating the tests, it was discovered that we're yielding
FunctionCallContent and FunctionResultContent, when we shouldn't be. To
handle those content types, one needs to use the
`on_intermediate_message` callback.

<!-- 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.
-->

### Description

Adds ChatCompletionAgent integration tests. 
- Fix Responses Agent thread get_messages method to properly return
input messages from the API.

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

### 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 😄
2025-04-08 21:46:25 +00:00