ChatGPT 3.5/4 双双升级:更长,更便宜,更开放,更可控

news2024/11/26 9:55:32

OpenAI 今年早些时候发布了 gpt-3.5-turbo 和 gpt-4,并且在短短几个月内,开发者在这些模型上开发了很多令人印象深刻的应用。

6月13日, OpenAI 官宣了版本更新的内容:

  • Chat Completions API 中新增了函数调用功能。

  • 更可控的 gpt-4 和 gpt-3.5-turbo 版本。

  • 新增了 gpt-3.5-turbo的16k 上下文版本(之前为标准的4k版本)。

  • 嵌入模型费用降低了75%。

  • gpt-3.5-turbo 的输入标记费用降低了25%。

  • gpt-3.5-turbo-0301 和 gpt-4-0314 模型的弃用时间表。


035c7bbab6e3832c904a1053048b2c3c.png

所有这些模型都遵守3月1日公布的数据隐私和安全保证:客户拥有其请求生成的所有输出,并且其 API 数据不会用于训练。

函数调用

开发者现在可以向 gpt-4-0613 和 gpt-3.5-turbo-0613 描述函数,并让模型智能地选择输出一个包含调用这些函数参数的JSON对象。这是一种新功能:将GPT的能力与外部工具和API连接起来。

这些模型经过了微调,既可以检测到需要调用函数的情况(根据用户的输入),也可以以符合函数签名的JSON形式进行响应。函数调用允许开发者更可靠地从模型获取结构化数据。例如,开发者可以:

1、创建聊天机器人通过调用外部工具来回答问题(例如ChatGPT插件)

将诸如“发送电子邮件给Anya,询问她是否下周五想喝咖啡”这样的查询转换为类似于send_email(to: string, body: string)的函数调用,或者将“波士顿的天气如何?”转换为get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')。

举个例子:如果问 Boston 现在的天气如何?通过函数调用让模型调用气候网站的数据来回答。

第一步:OpenAI API 使用函数和输入来调用模型

请求代码

curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {"role": "user", "content": "What is the weather like in Boston?"}
  ],
  "functions": [
    {
      "name": "get_current_weather",
      "description": "Get the current weather in a given location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. San Francisco, CA"
          },
          "unit": {
            "type": "string",
            "enum": ["celsius", "fahrenheit"]
          }
        },
        "required": ["location"]
      }
    }
  ]
}'

返回

Response
{
  "id": "chatcmpl-123",
  ...
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "function_call": {
        "name": "get_current_weather",
        "arguments": "{ \"location\": \"Boston, MA\"}"
      }
    },
    "finish_reason": "function_call"
  }]
}

第二步:第三方API 使用模型响应去调用API

请求:

curl https://weatherapi.com/...

返回:

{ "temperature": 22, "unit": "celsius", "description": "Sunny" }

第三步:OpenAI API 模型汇总响应返回给用户

请求:

curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {"role": "user", "content": "What is the weather like in Boston?"},
    {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston, MA\"}"}},
    {"role": "function", "name": "get_current_weather", "content": "{\"temperature\": "22", \"unit\": \"celsius\", \"description\": \"Sunny\"}"}
  ],
  "functions": [
    {
      "name": "get_current_weather",
      "description": "Get the current weather in a given location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. San Francisco, CA"
          },
          "unit": {
            "type": "string",
            "enum": ["celsius", "fahrenheit"]
          }
        },
        "required": ["location"]
      }
    }
  ]
}'

返回:

{
  "id": "chatcmpl-123",
  ...
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "The weather in Boston is currently sunny with a temperature of 22 degrees Celsius.",
    },
    "finish_reason": "stop"
  }]
}

2、将自然语言转换为 API 调用或数据库查询

将“本月我的前十个客户是谁?”转换为类似于get_customers_by_revenue(start_date: string, end_date: string, limit: int)的内部API调用,或者将“上个月Acme公司下了多少订单?”转换为使用sql_query(query: string)的SQL查询。

3、从文本中提取结构化数据

可以定义一个名为extract_people_data(people: [{name: string, birthday: string, location: string}])的函数,用来提取出在维基百科文章中提到的所有人物。

functions 参数实际上就类似于用户要指定的 Agent。

注,这里可以是不止一个function,function 是一个对象,还可以加上名称(name)、描述(description)、参数(parameters)等等。

返回的结果包含了如下结构化的内容:

function_call:调用的函数名,和用户传入的函数名称一致

arguments:JSON格式的参数值,包含了用户调用函数需要的参数名称和值。

比如说:

"function_call": { "name": "get_current_weather", "arguments": "{ \"location\": \"Boston, MA\"}" }

升级后,简化了 agent 的操作,避免了以前在 Prompt 中去描述要提取信息的名称、参数等等。‍‍‍‍

通过 /v1/chat/completions 端点中的新API参数 functions 和 function_call 可以实现函数调用功能。开发者可以通过 JSON Schema 向模型描述函数,并可选择性地要求其调用特定函数。

同时 OpenAI 也提醒了这样做可能带来的风险:

“自从 ChatGPT 插件的 Alpha 版发布以来,我们对于使工具和语言模型安全地协同工作有了很多了解。然而,仍然存在一些开放的研究问题。例如,一个概念验证漏洞展示了不受信任的工具输出中的数据如何指示模型执行意外操作。我们正在努力减轻这些和其他风险。开发者可以通过仅使用来自可信工具的信息,并在执行具有现实影响的操作(例如发送电子邮件、在线发布或购买)之前,包含用户确认步骤来保护他们的应用程序。”

新的模型

GPT-4

gpt-4-0613 包含了一个经过更新和改进的模型,具备函数调用功能。

gpt-4-32k-0613 包含了与 gpt-4-0613 相同的改进,还具有更长的上下文长度,以更好地理解更大的文本。

GPT-3.5 Turbo

gpt-3.5-turbo-0613 具备与 GPT-4 相同的函数调用功能,以及通过系统消息实现更可靠的控制响应的能力。这两个功能使得开发者能够更有效地引导模型的回复。

gpt-3.5-turbo-16k 提供了比 gpt-3.5-turbo 更长4倍的上下文长度,价格为原价的两倍:输入标记每千个0.003美元,输出标记每千个0.004美元。16k上下文意味着该模型现在可以在单个请求中支持约20页的文本。

模型弃用

OpenAI 将开始升级和弃用在三月份宣布的 gpt-4 和 gpt-3.5-turbo 的初始版本。使用稳定模型名称(gpt-3.5-turbo、gpt-4和gpt-4-32k)的应用程序将在6月27日自动升级到上述新模型。为了比较不同版本的模型性能,OpenAI 的 Evals 库支持公开和私有评估,以展示模型变化对带来的影响。

需要更多过渡时间的开发者可以在API请求的 'model' 参数中指定 gpt-3.5-turbo-0301、gpt-4-0314 或 gpt-4-32k-0314 来继续使用旧模型。这些旧模型将在9月13日之后无法访问。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【有奖体验】叮!你有一张 3D 卡通头像请查收

立即体验基于函数计算部署【图生图】一键部署 3D 卡通风格模型:https://developer.aliyun.com/topic/aigc_fc 人工智能生成内容(Artificial Intelligence Generated Content,简称 AIGC)是当下最火的概念之一。AIGC 被认为是继专业…

MFC .rc文件解析(EXE属性详细信息添加)

文章目录 Windows 资源文件(.rc文件)资源(Resources)类型从文件导入的(BITMAP,ICON,HTML,FONT,CURSOR 等)对话框资源类型:(DIALOG,DIALOGEX 等)菜单资源类型字…

【Java项目】使用Nacos实现动态线程池技术以及Nacos配置文件更新监听事件

文章目录 项目源码线程池概念ThreadPoolExecutor介绍Nacos实现对Nacos配置文件更新的事件监听机制定时通知功能邮件发送通知功能开始测试 项目源码 真诚的希望能给我项目一个stars!!! 项目源码 线程池概念 线程池(Thread Pool&…

Megatron-LM GPT2

内容 使用原始 Megatron-LM 训练 GPT-2 训练数据设置运行未修改的 Megatron-LM GPT2 模型启用 DeepSpeed 参数解析初始化和训练 初始化使用训练 API 前向传播反向传播更新模型参数损失缩放检查点保存和加载DeepSpeed 激活检查点(可选)训练脚本使用 GPT-…

拆分代码 + 预加载,减少首屏资源,提升首屏性能及应用体验

route-resource-preload 组件懒加载可以极大地提升我们的应用首屏加载体验, 但我们在进行组件资源拆包后,一旦加载某个组件资源出现以上时间过长的情况,则会出现视图无法正常渲染的问题(导致页面白屏/组件出不来/交互卡顿等情况)。…

Pytest教程__钩子方法setup、teardown、setup_class、teardown_class(8)

pytest跳过用例执行的用法与unittest跳过用例大致相同。 pytest跳过用例的方法如下: pytest.mark.skip(reason):无条件用例。reason是跳过原因,下同。pytest.mark.skipIf(condition, reason):condition为True时跳过用例。 pyte…

代码随想录算法训练营第五十八天|739. 每日温度|496.下一个更大元素 I

LeetCode739. 每日温度 基本思路:什么时候使用单调栈呢?通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。例如本题其实就是找找到一个元素右…

【发电厂】发电厂模型验证应用于电网事件在线性能监测【相量测量单元 (PMU) 数据对电网事件的在线性能监控】研究(MatlabSimulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

(一文详解!)wrk性能测试

目录 一、简介 二、格式及用法 三、简单压测及结果分析 四、使用lua脚本进行压测 一、简介 wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等&#xff0…

华为OD机试真题 JavaScript 实现【报数游戏】【2022Q4 100分】

一、题目描述 100个人围成一圈,每个人有一个编码,编号从1开始到100。他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少&#xff…

Ubuntu 更新 CMake 版本

项目中有时候会出现CMake版本小于最低要求的情况,实际上没有有必要这么高的要求,但是在不能改对方代码的情况下,只能去升级自身的版本了. 尝试了网上说的直接update之后再次安装的方式,结果版本号没有改变 sudo apt-get update sudo apt-get remove cmake sudo apt-get ins…

Rust语言从入门到入坑——(3)小谈Cargo工具以及VScode配置Rust

文章目录 0 引入1、Cargo 是什么2、常用Cargo指令3、VScode配置Rust环境3.1.tasks.json3.2.launch.json 4、总结 0 引入 上一节我们谈了在编译工程的时候用到Cargo(卡狗) 1、Cargo 是什么 Cargo 是 Rust 的构建系统和包管理器。 Rust 开发者常用 Carg…

Metricbeat安装下载,nginx模块使用

目录 MetricbeatMetricbeat组成下载启动Metricbeat Modulesystem module配置内容 Nginx Module开启Nginx Module 配置nginx module测试 Metricbeat 定期收集操作系统或应用服务的指标数据存储到Elasticsearch中,进行实时分析 Metricbeat组成 Metricbeat有2部分组成…

Jmeter性能测试步骤入门

目录 前言: 一、Jmeter简介 1 概述 2 JMeter支持的协议 二、Jmeter实现性能测试 第一步:配置jdk环境 第二步:下载jmeter 第三步:启动Jmeter 四、一个http还除了上述http请求中的请求行和请求体,还包含请求头&#xff…

Android使用AspectJ拦截点击事件

介绍: AspectJ是一种AOP框架,它可以在编译时或运行时拦截指定的方法。在Android开发中,我们可以使用AspectJ来拦截UI事件并执行自己的业务逻辑。本文将说明如何使用AspectJ来拦截Android应用程序中的点击事件,并附有详细的代码注…

存储池和LUN

存储池是什么意思 存储池是为集体存储共享置备的存储卷的集合。这些池建立在物理存储设备的聚合上,根据资源需求进行隔离,然后由共享环境中的各种计算机或系统使用。存储池可以分为三类,每类都有不同的用途;主存储池、副本存储池和活动数据池…

618来了!看图技术如何在物流管理系统大显身手!

导读 近日,随着电商“618”购物节的临近,各大商家纷纷推出各类补贴活动刺激消费者热情。下单后,消费者的心理活动如何呢?蹲点抢到优惠券,精打细算的凑单后,终于完成付款。焦急的等待待发货的小红点跳至待收…

分享三个java低代码开发平台,每个都很能打,建议收藏!

来讲讲近期比较流行的低代码开发平台一词。低代码的目的是将可重复性的编程工作通过平台实现,将开发人员从没有技术含量的增删改查开发中解放出来,让其专注于更有价值的开发工作,例如业务建模、数据库设计、流程设计、API核心开发、业务逻辑开…

如何调用百度地图API

前言 要调用百度地图API,步骤操作如下 注册并创建一个API密钥。您可以在百度地图API控制台上创建您的密钥。选择要使用的API服务。百度地图API提供了多种服务,包括地图展示、路线规划、地点搜索、实时交通等。您可以在百度地图API控制台上查看所有可用…

大数据hadoop生态技术简介

Hadoop 生态是指围绕 Hadoop 大数据处理平台形成的一系列开源软件和工具,用于支持大规模数据处理、存储、管理、分析和可视化等应用场景。暂时将其核心技术分为9类: 数据采集技术框架: Flume、Logstash、FileBeat;Sqoop和Datax&…