Skip to content

Python: Allow enums to be passed in to on_function_result. Improve handling FRC result so it can be hashed. - #10316

Merged
Evan Mattson (moonbox3) merged 2 commits into
microsoft:mainfrom
moonbox3:py-processes-on-func-result-enum
Jan 28, 2025
Merged

Evan Mattson (moonbox3) merged 2 commits into
microsoft:mainfrom
moonbox3:py-processes-on-func-result-enum

Conversation

@moonbox3

Copy link
Copy Markdown
Collaborator

Motivation and Context

Two topics in this PR:

  • A request to be able to pass in Enums to the Python process on_function_result, instead of just strings.
  • There were some custom types (Pydantic models) that were unable to hash during an agent group chat. One could mark the model frozen so that it is hashable; however, we should add better handling in our code, in case a dev doesn't want to do that.

Description

This PR:

Contribution Checklist

@moonbox3
Evan Mattson (moonbox3) requested a review from a team as a code owner January 28, 2025 07:03
@markwallace-microsoft Mark Wallace (markwallace-microsoft) added the python Pull requests for the Python Semantic Kernel label Jan 28, 2025
@github-actions github-actions Bot changed the title Allow enums to be passed in to on_function_result. Improve handling FRC result so it can be hashed. Python: Allow enums to be passed in to on_function_result. Improve handling FRC result so it can be hashed. Jan 28, 2025
@markwallace-microsoft

Mark Wallace (markwallace-microsoft) commented Jan 28, 2025 •

Copy link
Copy Markdown
Contributor

Python Test Coverage

Python Test Coverage Report •
FileStmtsMissCoverMissing
semantic_kernel/processes
   process_step_builder.py1102478%45, 94, 108, 115–128, 140–147, 156, 165–175, 180, 220
TOTAL17069183389% 

Python Unit Test Overview

Tests Skipped Failures Errors Time
3042 4 💤 0 ❌ 0 🔥 1m 19s ⏱️

@moonbox3
Evan Mattson (moonbox3) added this pull request to the merge queue Jan 28, 2025
Merged via the queue into microsoft:main with commit 7e20631 Jan 28, 2025
@moonbox3
Evan Mattson (moonbox3) deleted the py-processes-on-func-result-enum branch January 28, 2025 21:45
jcruzmot-te pushed a commit to thousandeyes/aia-semantic-kernel that referenced this pull request Sep 15, 2025
…ndling FRC result so it can be hashed. (microsoft#10316)

### Motivation and Context

Two topics in this PR:
- A request to be able to pass in Enums to the Python process
`on_function_result`, instead of just strings.
- There were some custom types (Pydantic models) that were unable to
hash during an agent group chat. One could mark the model `frozen` so
that it is hashable; however, we should add better handling in our code,
in case a dev doesn't want to do that.

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

This PR:
- checks if the function name in `on_function_result` in our process
framework is an enum, if so, convert to a string.
- improves the parsing of the `result` in `FunctionResultContent` so
that it can be included in the hash function during an agent group chat.
Adding tests to handle multiple different scenarios.
- Closes microsoft#10299 
- Closes microsoft#10305

<!-- 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 😄
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

python Pull requests for the Python Semantic Kernel

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Python: unhashable type exception for custom return type in kernel function

4 participants