OpenAI发布新版function calling 指南!引入「最小惊讶」等「软件工程原则」

OpenAI函数调用又双叒叕更新了!

这次的大变化:文档篇幅砍掉一半,却引入了更清晰的「软件工程最佳实践」!

这次不是简单的文档修改,而是彻底重新思考了函数调用的设计理念。

下面我们就来详细一探究竟!

「最小惊讶原则」降临AI

OpenAI开发者体验团队的ilan bigio分享了这次更新的核心内容:

# 不好的设计toggle_light_switch(on: bool, off: bool)  # 允许矛盾状态
# 好的设计toggle_light(state: bool) # 符合最小惊讶原则

这个简单的例子完美诠释了「最小惊讶原则」:函数设计要符合直觉,避免让使用者困惑

新版指南的四大亮点

  1. 文档精简50%,去芜存菁

  2. 引入全新的最佳实践指南

  3. 集成了函数生成器,可在文档中直接生成函数定义

  4. 提供了完整的天气API示例,从理论到实践无缝衔接

软件工程最佳实践大放异彩

这次更新最大的亮点是引入了软件工程的最佳实践。

来看看具体内容:

1. 清晰的函数定义

{    "type": "function",    "function": {        "name": "get_weather",        "description": "获取指定位置的当前温度",        "parameters": {            "type": "object",            "properties": {                "location": {                    "type": "string",                    "description": "城市和国家,例如:北京,中国"                }            },            "required": ["location"],            "additionalProperties": false        },        "strict": true    }}

2. 减轻模型负担

ilan强调:「不要让模型做代码能做的事」。

比如:

# 不推荐get_orders(user_id)  # 让模型传递user_id
# 推荐get_orders() # 在代码中处理user_id

3. 函数合并原则

# 不推荐mark_location()query_location()  # 总是连续调用
# 推荐query_and_mark_location() # 合并为一个函数

实战流程清晰可见

新版指南还提供了直观的函数生成器,让开发者可以在浏览器中直接生成并测试函数定义。

开发者好评

社区反响热烈,有开发者分享他们每天要花3-4小时构建函数调用应用。

新指南的流程图设计也获得赞誉,被认为达到了Stripe文档的水准。

重要细节全解读

  1. 严格模式(Strict Mode)
  • 要求additionalProperties设为false
  • 所有字段必须标记为required
  • 可选字段需要添加null作为类型选项
  1. 工具选择(Tool Choice)
  • Auto:默认模式,可调用0个或多个函数
  • Required:强制调用至少一个函数
  • Forced Function:强制调用特定函数
  1. 并行函数调用
  • 可以通过parallel_tool_calls参数控制
  • 设为false时确保每次最多调用一个函数
  1. 令牌使用
  • 函数定义会计入模型上下文限制
  • 作为输入令牌计费
  • 如果遇到令牌限制,建议限制函数数量或参数描述长度

HackerNewsAI 点赞到:

这份指南不仅简化了开发者的学习曲线,还通过展示实际应用激发创造力,最终将培育出更具创新性的技术生态系统。

相关链接

[1] 原文链接: https://platform.openai.com/docs/guides/function-calling

(文:AGI Hunt)

欢迎分享

发表评论