支持私有化部署
AI知识库

53AI知识库

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


我要投稿

OpenAI重磅:Function Calling 2.0!

发布日期:2025-01-16 08:18:08 浏览次数: 2364
作者:探索AGI

微信搜一搜,关注“探索AGI”


昨天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

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

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

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

联系我们

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

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询