You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OpenAI Assistants API让GPT助手调用异步函数?

解决Discord Bot对接OpenAI Assistants API时异步函数不执行的问题
  • 核心原因:你直接调用异步函数toggle_growlight时,仅创建了协程对象,并未触发实际执行——异步函数必须在异步上下文内用await调用,或在同步环境中通过asyncio.run()触发执行。

  • 具体修复方案:

    1. 先通过inspect.iscoroutinefunction()区分同步/异步函数,再对应执行:
      • 若代码运行在异步上下文(比如Discord.py的命令本身是异步的),直接用await执行:
        import inspect
        
        function_map = {
            "add_numbers": add_numbers,
            "toggle_growlight": toggle_growlight
        }
        
        async def execute_called_function(func_name, args):
            target_func = function_map[func_name]
            if inspect.iscoroutinefunction(target_func):
                return await target_func(**args)
            else:
                return target_func(**args)
        
        # 在你的异步命令处理逻辑中调用
        await execute_called_function(function_name, function_args)
        
      • 若代码运行在同步上下文,用asyncio.run()包裹异步函数调用:
        import inspect
        import asyncio
        
        function_map = {
            "add_numbers": add_numbers,
            "toggle_growlight": toggle_growlight
        }
        
        def execute_called_function(func_name, args):
            target_func = function_map[func_name]
            if inspect.iscoroutinefunction(target_func):
                return asyncio.run(target_func(**args))
            else:
                return target_func(**args)
        
        # 在同步逻辑中调用
        execute_called_function(function_name, function_args)
        
  • 验证:修改后,toggle_growlight内的print()语句会正常输出,函数逻辑也会执行。

内容的提问来源于stack exchange,提问作者Liam McMillen-Meyers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 03:00:02