Source code for camel.utils.async_func

# =========== Copyright 2023 @ CAMEL-AI.org. All Rights Reserved. ===========
# Licensed under the Apache License, Version 2.0 (the “License”);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an “AS IS” BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# =========== Copyright 2023 @ CAMEL-AI.org. All Rights Reserved. ===========
import asyncio
from copy import deepcopy

from camel.toolkits import FunctionTool


[docs] def sync_funcs_to_async(funcs: list[FunctionTool]) -> list[FunctionTool]: r"""Convert a list of Python synchronous functions to Python asynchronous functions. Args: funcs (list[FunctionTool]): List of Python synchronous functions in the :obj:`FunctionTool` format. Returns: list[FunctionTool]: List of Python asynchronous functions in the :obj:`FunctionTool` format. """ async_funcs = [] for func in funcs: sync_func = func.func def async_callable(*args, **kwargs): return asyncio.to_thread(sync_func, *args, **kwargs) # noqa: B023 async_funcs.append( FunctionTool(async_callable, deepcopy(func.openai_tool_schema)) ) return async_funcs