47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
from typing import Any, Optional, Protocol, runtime_checkable
|
|
|
|
from ..doc_utils import export_module
|
|
from ..tools import Tool
|
|
|
|
__all__ = ["Interoperable"]
|
|
|
|
|
|
@runtime_checkable
|
|
@export_module("autogen.interop")
|
|
class Interoperable(Protocol):
|
|
"""A Protocol defining the interoperability interface for tool conversion.
|
|
|
|
This protocol ensures that any class implementing it provides the method
|
|
`convert_tool` to convert a given tool into a desired format or type.
|
|
"""
|
|
|
|
@classmethod
|
|
def convert_tool(cls, tool: Any, **kwargs: Any) -> Tool:
|
|
"""Converts a given tool to a desired format or type.
|
|
|
|
This method should be implemented by any class adhering to the `Interoperable` protocol.
|
|
|
|
Args:
|
|
tool (Any): The tool object to be converted.
|
|
**kwargs (Any): Additional parameters to pass during the conversion process.
|
|
|
|
Returns:
|
|
Tool: The converted tool in the desired format or type.
|
|
"""
|
|
...
|
|
|
|
@classmethod
|
|
def get_unsupported_reason(cls) -> Optional[str]:
|
|
"""Returns the reason for the tool being unsupported.
|
|
|
|
This method should be implemented by any class adhering to the `Interoperable` protocol.
|
|
|
|
Returns:
|
|
str: The reason for the interoperability class being unsupported.
|
|
"""
|
|
...
|