AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


OpenAI重磅:Function Calling 2.0!
发布日期:2025-01-16 08:18:08 浏览次数: 1533 来源:探索AGI

嘿,大家好!这里是一个专注于AI智能体的频道~

昨天OpenAI发布了全新的Function Calling指南,这次更新不仅让文档缩短了50%,还带来了一些重要的最佳实践。作为Agent的核心能力之一,Function Calling的正确使用对于构建强大的AI Agents应用至关重要。所以今天给家人们分享一下这次更新的重点内容!

Function Calling的两大核心应用

文中明确指出,Function Calling主要有两个核心应用场景:

  1. 获取数据(Fetching Data)

  • 检索最新信息并整合到模型响应中
  • 适用于搜索知识库和获取特定API数据(如天气数据)
  • 本质是一种RAG(检索增强生成)的实现方式
  • 执行动作(Taking Action)

    • 提交表单、调用API
    • 修改应用状态(前端/后端)
    • 执行Agent工作流动作(如对话交接)

    全新的最佳实践

    这次更新最重要的是提供了一系列实用的最佳实践,让我们重点来看几个:

    1. 写清晰的函数定义
    # 好的示例
    def get_weather(location: str):
        """获取指定位置的当前温度
        Args:
            location: 城市和国家,例如:'北京, 中国'
        """

        pass

    # 糟糕的示例
    def toggle_light_switch(on: bool, off: bool):
        """这个设计允许无效状态的存在"""
        pass
    1. 应用软件工程最佳实践
    • 让函数直观且符合最小惊讶原则(维基百科上叫:Principle of least astonishment, https://en.wikipedia.org/wiki/Principle_of_least_astonishment)
    • 使用枚举和对象结构,避免无效状态
    • 通过"实习生测试":如果一个实习生只看函数定义就能正确使用,说明设计的不错
    1. 尽可能减轻模型负担
    # 不推荐
    def get_orders(user_id: str):
        pass

    # 推荐
    def get_orders():
        # 在代码中传递user_id
        pass
    1. 保持函数数量精简
    • 建议同时使用的函数不超过20个
    • 如果发现两个函数总是一起调用,考虑合并它们

    重要的配置选项

    1. 工具选择模式(tool_choice)
    # 自动模式(默认)
    tool_choice="auto"  # 可以调用零个、一个或多个函数

    # 强制模式
    tool_choice="required"  # 必须调用至少一个函数

    # 指定函数
    tool_choice={
        "type""function"
        "function": {"name""get_weather"}
    }  # 强制调用特定函数
    1. 严格模式(Strict Mode)
    {
        "type""function",
        "function": {
            "name""get_weather",
            "strict"True,  # 启用严格模式
            "parameters": {
                "type""object",
                "properties": {
                    "location": {
                        "type""string"
                    },
                    "units": {
                        "type": ["string""null"],  # 可选参数
                        "enum": ["celsius""fahrenheit"]
                    }
                },
                "required": ["location""units"],
                "additionalProperties": false
            }
        }
    }

    流式处理的支持

    OpenAI还优化了流式处理的支持,让你能实时展示函数调用的过程:

    stream = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role""user""content""北京今天天气如何?"}],
        tools=tools,
        stream=True
    )

    for chunk in stream:
        delta = chunk.choices[0].delta
        print(delta.tool_calls)  # 实时显示函数调用进度

    最后

    这次的更新,主要是提供了一些的最佳实践。随着o1-mini即将支持Function Calling(官方确认),昨天还开始发布了tasks的功能,可以期待在2025年看到真正的Agents

    好了,这就是我今天想分享的内容。如果你对构建AI智能体感兴趣,别忘了点赞、关注噢~




    53AI,企业落地大模型首选服务商

    产品:场景落地咨询+大模型应用平台+行业解决方案

    承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

    联系我们

    售前咨询
    186 6662 7370
    预约演示
    185 8882 0121

    微信扫码

    与创始人交个朋友

    回到顶部

     
    扫码咨询