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)