返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

OpenAI重磅:Function Calling 2.0!

[复制链接]
链载Ai 显示全部楼层 发表于 半小时前 |阅读模式 打印 上一主题 下一主题


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

Function Calling的两大核心应用

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

  1. 获取数据(Fetching Data)

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

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

    全新的最佳实践

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

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

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

    #推荐
    defget_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
    )

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

    最后

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ