OpenAI函数调用迎来重大升级:引入「最小惊讶原则」等软件工程实践,开发体验更上一层楼!

想玩转各种AI模型?chatTools 帮你搞定!这里有o1、GPT4o、Claude和Gemini等等,一个平台就能满足你所有的AI需求。快来开始你的AI冒险吧!

OpenAI的函数调用功能再次迎来重大更新!新版指南不仅大幅精简了文档,更引入了「最小惊讶原则」等软件工程最佳实践,旨在为开发者提供更加直观、高效的开发体验。本文将深入剖析此次更新的核心内容,并探讨其对AI应用开发的影响。
OpenAI的函数调用功能

OpenAI函数调用:一次彻底的理念革新

OpenAI的函数调用功能自推出以来,一直是构建强大AI应用的重要工具。然而,随着开发者的不断深入使用,一些设计上的不足也逐渐显现。为了解决这些问题,OpenAI对其函数调用功能进行了彻底的重新思考,并发布了全新的指南。

这次更新不仅仅是文档的修改,更是对函数调用设计理念的革新。新版指南强调了软件工程的最佳实践,旨在帮助开发者构建更加健壮、易于维护的AI应用。其中,最核心的理念是「最小惊讶原则」。

「最小惊讶原则」:让函数调用更符合直觉

「最小惊讶原则」是指函数的设计要符合直觉,避免让使用者感到困惑。OpenAI的开发者体验团队以一个简单的例子完美地诠释了这一原则:

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

在不好的设计中,onoff参数可能会同时为true,导致状态的矛盾。而好的设计则通过一个state参数来控制灯的开关状态,更加直观和易于理解。

新版指南的四大亮点

新版指南在以下几个方面进行了重大改进:

  1. 文档精简50%,去芜存菁:新版文档更加简洁明了,重点突出,让开发者能够快速上手。
  2. 引入全新的最佳实践指南:新指南强调了软件工程的最佳实践,帮助开发者构建更加健壮的AI应用。
  3. 集成了函数生成器:开发者可以在文档中直接生成函数定义,大大提高了开发效率。
  4. 提供了完整的天气API示例:新指南提供了完整的天气API示例,从理论到实践无缝衔接,帮助开发者快速掌握函数调用的使用方法。

软件工程最佳实践:打造高质量AI应用

新版指南最大的亮点是引入了软件工程的最佳实践,主要体现在以下几个方面:

  1. 清晰的函数定义:新指南强调函数定义的清晰性和规范性,例如:

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

    上述代码定义了一个获取天气信息的函数,包括函数名、描述、参数类型、必选参数等,确保了函数定义的清晰性和规范性。

  2. 减轻模型负担:新指南建议将一些逻辑处理放在代码中完成,而不是让模型承担过多的责任。例如:

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

    这样可以减轻模型的负担,提高模型的运行效率。

  3. 函数合并原则:新指南建议将总是连续调用的函数合并为一个函数,例如:

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

    这样可以减少API调用的次数,提高程序的运行效率。

新版指南:从理论到实践的无缝衔接

新版指南不仅提供了理论指导,还提供了直观的函数生成器,让开发者可以在浏览器中直接生成并测试函数定义。此外,新指南还提供了完整的天气API示例,帮助开发者从理论到实践无缝衔接,快速掌握函数调用的使用方法。

这些改进使得开发者能够更加高效地构建AI应用,同时也降低了学习曲线,让更多的开发者能够参与到AI应用的开发中来。

社区反响热烈

新版指南的发布引起了社区的广泛关注和好评。有开发者表示,他们每天要花费3-4小时来构建函数调用应用,新指南的出现大大提高了他们的开发效率。新指南的流程图设计也获得了赞誉,被认为达到了Stripe文档的水准。

这些积极的反馈证明了OpenAI此次更新的成功,也体现了OpenAI对开发者体验的重视。

重要细节全解读

新版指南中还包含了一些重要的细节,包括:

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

展望未来

OpenAI函数调用的这次重大升级,不仅提高了开发者的开发效率,也为AI应用的开发带来了新的可能性。通过引入软件工程的最佳实践,OpenAI正在努力构建一个更加健壮、易于使用的AI开发平台。

我们有理由相信,随着技术的不断进步,未来的AI应用将更加强大、更加智能,能够更好地服务于人类社会。OpenAI的这次更新,无疑为AI应用的开发打开了新的大门。

总结:OpenAI函数调用的新版指南,通过引入「最小惊讶原则」等软件工程最佳实践,极大地提升了开发者的体验。新指南不仅简化了开发流程,还为构建更强大的AI应用奠定了基础。

想玩转各种AI模型?chatTools 帮你搞定!这里有o1、GPT4o、Claude和Gemini等等,一个平台就能满足你所有的AI需求。快来开始你的AI冒险吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3721.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 中 TTL 的基本知识与禁用缓存键的实现策略(Java)

目录 前言1. 基本知识2. Java代码 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 单纯学习Redis可以看我前言的Java基本知识路线!! 对于Java的基本知识推荐阅读: java框架…

前端实习第二个月小结

时间飞快,第一次实习已经过去两个多月,作一些简单的总结和分享。 注:文章整体会比较轻松,提及的经历、经验仅作参考。 一、关于实习/工作内容 1、工作内容 近期做的是管理后台方面的业务,技术栈:前端re…

QT笔记- Qt6.8.1 Android编程 添加AndroidManifest.xml文件以支持修改权限

1. 切换项目选项卡,找到构建的步骤下的最后一项构建安卓APK,展开后找到应用程序栏,点击安卓自定义中的创建模板. 2. 弹出对话框勾选图中选项后点完成 3. 回到项目,查看.pro文件,里面多了很多内容不管,在下…

【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行 系列文章目录更新日志OpenHarmony技术架构OH技术架构OH支持系统类型轻量系统(mini system)小型系统(small system)标准系统(standard system) 简介环境准备安装QE…

【Linux系统编程】—— 深入理解Linux中的环境变量与程序地址空间

文章目录 环境变量常见的环境变量查看环境变量环境变量的修改与使用环境变量的组织⽅式环境变量的命令通过代码如何获取环境变量环境变量的继承 前言:在Linux系统中,环境变量和程序地址空间是系统管理和进程运行的重要组成部分。本文将详细探讨环境变量的…

深度学习 Pytorch 张量的线性代数运算

pytorch中并未设置单独的矩阵对象类型,因此pytorch中,二维张量就相当于矩阵对象,并且拥有一系列线性代数相关函数和方法。 在实际机器学习和深度学习建模过程中,矩阵或者高维张量都是基本对象类型,而矩阵所涉及到的线…

dl学习笔记:(4)简单神经网络

(1)单层正向回归网络 bx1x2z100-0.2110-0.05101-0.051110.1 接下来我们用代码实现这组线性回归数据 import torch x torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype torch.float32) z torch.tensor([-0.2, -0.05, -0.05, 0.1]) w torch.…

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 (可移动根节点) 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 (可移动根节点) 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…

OSPF小实验

引言 在前面的博客中我们学习了ospf的基础理论知识与配置:ospf(2),相信大家对ospf已经有了一定的了解了,那么接下来我们就开始尝试做一个ospf的综合实验吧 实验拓扑 实验需求 r1-3为区域0,r3-r4为区域1&…

蓝桥杯刷题第二天——背包问题

题目描述 有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是Vi价值是Wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V&am…

mono3d汇总

lidar坐标系 lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系&#xff0c;参考链接。这个坐标系和车辆的ego坐标系是一致的。 标准lidar坐标系 opendet3d&#xff0c;mmdetection3d和kitt都i使用了该坐标系 up z^ x front| /| /left y <------ 0kitti采…

接口防篡改+防重放攻击

接口防止重放攻击&#xff1a;重放攻击是指攻击者截获了一次有效请求(如交易请求),并在之后的时间里多次发送相同的请求&#xff0c;从而达到欺骗系统的目的。为了防止重放攻击&#xff0c;通常需要在系统中引入一种机制&#xff0c;使得每个请求都有一个唯一的标识符(如时间戳…

流程与管理篇:IPD核心思想与框架

关注作者 IPD是英文&#xff08;Integrated Product Development&#xff09;的写&#xff0c;中文 翻译为“集成产品开发”&#xff0c;它是一套产品开发的模式、理念与方法。 IPD整合了客户需求、市场分析和产品开发&#xff0c;建立了需求和产品之间的联系&#xff0c;开辟…

阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI

通义灵码是基于阿里巴巴通义大模型研发的AI 智能编码助手&#xff0c;在通义灵码 1.0 时代&#xff0c;我们针对代码的生成、补全和问答&#xff0c;通过高效果、低时延&#xff0c;研发出了国内最受欢迎的编码助手。 在通义灵码 2.0 发布会上&#xff0c;阿里云通义实验室自然…

记录 idea 启动 tomcat 控制台输出乱码问题解决

文章目录 问题现象解决排查过程 1. **检查 idea 编码设置**2. **检查 tomcat 配置**3.检查 idea 配置文件4.在 Help 菜单栏中&#xff0c;修改Custom VM Options完成后保存&#xff0c;并重启 idea 问题现象 运行 tomcat 后&#xff0c;控制台输出乱码 解决排查过程 1. 检查…

微透镜阵列精准全检,白光干涉3D自动量测方案提效70%

广泛应用的微透镜阵列 微透镜是一种常见的微光学元件&#xff0c;通过设计微透镜&#xff0c;可对入射光进行扩散、光束整形、光线均分、光学聚焦、集成成像等调制&#xff0c;进而实现许多传统光学元器件难以实现的特殊功能。 微透镜阵列&#xff08;Microlens Array&#x…

企业级NoSQL数据库Redis

1.浏览器缓存过期机制 1.1 最后修改时间 last-modified 浏览器缓存机制是优化网页加载速度和减少服务器负载的重要手段。以下是关于浏览器缓存过期机制、Last-Modified 和 ETag 的详细讲解&#xff1a; 一、Last-Modified 头部 定义&#xff1a;Last-Modified 表示服务器上资源…

金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口

目录 一、日志封装及应用&#xff08;理解&#xff09; 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用&#xff08;理解&#xff09; &…

Redis可视化工具--RedisDesktopManager的安装

需要安装使用&#xff0c;0.9.4以上是要收费的 下载地址&#xff1a;https://github.com/uglide/RedisDesktopManager/releases/download/0.9.3/redis-desktop-manager-0.9.3.817.exe 详情&#xff1a;https://blog.csdn.net/u012688704/article/details/82251338 点击进行安…

基于.Net Core+Vue的文件加密系统

1系统架构图 2 用例图 管理员角色的用例&#xff1a; 文件分享大厅&#xff1a;管理员可以访问文件分享大厅&#xff0c;下载文件。个人信息管理&#xff1a;管理员可以更新自己的个人信息&#xff0c;修改密码。用户管理&#xff1a;管理员负责创建、更新或删除用户账户&…