Skip to content

Serialization for the functions, fixed issues in agentchat selector_func and candidate_func serialization #6389

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

izam-mohammed
Copy link

Why are these changes needed?

This PR adds a new IndividualFunction module that allows functions to be serializable for better persistence and restoration in GroupChat. It updates the selector and candidate functions in SelectorGroupChat to use this new implementation, which supports both synchronous and asynchronous functions through a unified interface. The PR also adds a utility to automatically detect imports used by functions, making the serialization process more robust.

Checks

@izam-mohammed
Copy link
Author

@izam-mohammed please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.

@microsoft-github-policy-service agree [company="{your company}"]

Options:

  • (default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
@microsoft-github-policy-service agree
  • (when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.
@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement

@microsoft-github-policy-service agree

Copy link
Collaborator

@ekzhu ekzhu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Can we also have some unit tests for this? Serializing a SelectorGroupChat with the custom functions and deserialize it back, verify that the new one works.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not use FunctionTool?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be a quick fix. But fundamentally both are different. For data classes and others, this can also be scaled independently. For now, it would work, but I think we don't have to treat every reusable function as a tool. In the case of SelectorGroupChat selector_func is fundamentally just a function, not a tool. if you need it that way, I can do that easily. but I don't think it is better for scalability and other factors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants