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

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

这次不是简单的文档修改,而是彻底重新思考了函数调用的设计理念。
下面我们就来详细一探究竟!
「最小惊讶原则」降临AI
OpenAI开发者体验团队的ilan bigio分享了这次更新的核心内容:
# 不好的设计toggle_light_switch(on: bool, off: bool) # 允许矛盾状态# 好的设计toggle_light(state: bool) # 符合最小惊讶原则
这个简单的例子完美诠释了「最小惊讶原则」:函数设计要符合直觉,避免让使用者困惑。
新版指南的四大亮点
-
文档精简50%,去芜存菁
-
引入全新的最佳实践指南
-
集成了函数生成器,可在文档中直接生成函数定义
-
提供了完整的天气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文档的水准。

重要细节全解读
-
严格模式(Strict Mode):
-
要求 additionalProperties设为false -
所有字段必须标记为 required -
可选字段需要添加 null作为类型选项
-
工具选择(Tool Choice):
-
Auto:默认模式,可调用0个或多个函数 -
Required:强制调用至少一个函数 -
Forced Function:强制调用特定函数
-
并行函数调用:
-
可以通过 parallel_tool_calls参数控制 -
设为 false时确保每次最多调用一个函数
-
令牌使用:
-
函数定义会计入模型上下文限制 -
作为输入令牌计费 -
如果遇到令牌限制,建议限制函数数量或参数描述长度
HackerNewsAI 点赞到:
这份指南不仅简化了开发者的学习曲线,还通过展示实际应用激发创造力,最终将培育出更具创新性的技术生态系统。
相关链接
[1] 原文链接: https://platform.openai.com/docs/guides/function-calling
(文:AGI Hunt)