6.13号,OpenAI宣布大规模更新,包括新函数调用功能、16K上下文、更低的价格等。 一句话描述新函数调用功能:模型将用户提问转化为参数,调用第三方函数处理,再将返回值以自然语言呈现。
以下是GPT4翻译原文:
我们在今年早些时候发布gpt-3.5-turbo
,gpt-4
在短短几个月内,已经看到开发人员在这些模型之上构建了令人难以置信的应用程序。
今天,我们将跟进一些令人兴奋的更新:
- Chat Completions API 中的新函数调用功能
gpt-4
和的更新和更易于操纵的版本gpt-3.5-turbo
- 新的 16k 上下文版本
gpt-3.5-turbo
(与标准 4k 版本相比) - 我们最先进的嵌入模型的成本降低了 75%
- 输入令牌的成本降低 25%
gpt-3.5-turbo
gpt-3.5-turbo-0301
宣布和gpt-4-0314
模型的弃用时间表
所有这些模型都具有我们在 3 月 1 日推出的相同的数据隐私和安全保证——客户拥有根据他们的请求生成的所有输出,他们的 API 数据不会用于训练。
函数调用
现在,开发者们可以向GPT-4-0613和GPT-3.5-turbo-0613描述函数,然后让模型智能地选择输出一个包含用于调用这些函数的参数的JSON对象。这是一种更可靠地将GPT的功能与外部工具和API连接起来的新方式。
这些模型已经过微调,既能侦测出需要调用函数的情况(这取决于用户的输入),也能响应符合函数签名的JSON。函数调用能让开发者们更可靠地从模型中获得结构化数据。例如,开发者可以: 创建可以通过调用外部工具来回答问题的聊天机器人(例如,像ChatGPT插件) 将如“给Anya发邮件,看她下周五是否想喝杯咖啡”的查询转换成
代码语言:javascript复制send_email(to: string, body: string)
这样的函数调用,或者将“波士顿的天气怎么样?”转换为
代码语言:javascript复制get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')
将自然语言转换为API调用或数据库查询 将“这个月我的前十名客户是谁?”转换成像
代码语言:javascript复制get_customers_by_revenue(start_date: string, end_date: string, limit: int)
这样的内部API调用,或者将“Acme, Inc.上个月下了多少订单?”转换为使用sql_query(query: string)的SQL查询。
从文本中提取结构化数据 定义一个叫做
代码语言:javascript复制extract_people_data(people: [{name: string, birthday: string, location: string}])
的函数,从维基百科文章中提取所有提到的人物信息。
以上使用案例是通过我们的/v1/chat/completions端点中的新API参数,functions和function_call,实现的。这些参数允许开发者通过JSON Schema向模型描述函数,并有选择地要求模型调用某个特定函数。开发者们可以开始阅读我们的开发者文档,并在发现哪些情况下函数调用可能会有改进空间时添加评估。
函数调用示例
步骤1·开放人工智能应用程序接口
使用函数和用户输入调用模型
请求:
代码语言:javascript复制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"]
}
}
]
}'
回复:
代码语言:javascript复制{
"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"
}]
}
第2步·第三方接口
使用模型响应调用您的 API
请求:
代码语言:javascript复制curl https://weatherapi.com/...
回复:
代码语言:javascript复制{ "temperature": 22, "unit": "celsius", "description": "Sunny" }
步骤 3·开放人工智能应用程序接口
将响应发送回模型进行总结
请求:
代码语言:javascript复制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"]
}
}
]
}'
回复:
代码语言:javascript复制{
"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"
}]
}
具体调用可以用下图表示:
图片来源:即刻@Simple.AI
自ChatGPT插件的alpha版本发布以来,我们在如何让工具和语言模型安全地协同工作上取得了很多经验。但仍有一些开放的研究问题。例如,一个概念验证的攻击方法展示了如何通过从工具的输出中获取不受信任的数据,指导模型执行非预期的操作。我们正在努力减轻这些和其他风险。开发者可以通过只使用来自受信任工具的信息,以及在执行具有真实世界影响的操作,如发送电子邮件、在线发布或购买,之前包含用户确认步骤,来保护他们的应用。
新模型
GPT-4 gpt-4-0613 包含了一个具有函数调用功能的更新改进模型。 gpt-4-32k-0613 除了具有与gpt-4-0613相同的改进之外,还增加了更大的上下文长度,以更好地理解较大的文本。 随着这些更新,我们将在未来几周邀请更多等待名单上的人试用GPT-4,并计划使用这个模型完全消除等待名单。感谢所有耐心等待的人,我们很期待看到你们使用GPT-4构建的东西! GPT-3.5 Turbo gpt-3.5-turbo-0613 具有与GPT-4相同的函数调用功能,以及通过系统消息进行更可靠的操控性,这两个特性使开发者可以更有效地引导模型的响应。 gpt-3.5-turbo-16k 提供了gpt-3.5-turbo 4倍的上下文长度,价格是两倍:每1K输入token的价格是$0.003,每1K输出token的价格是$0.004。16k的上下文意味着模型现在可以在一个请求中支持大约20页的文本。 模型弃用 今天,我们将开始升级并弃用我们在3月份公布的gpt-4和gpt-3.5-turbo的初始版本。使用稳定模型名称(gpt-3.5-turbo、gpt-4、gpt-4-32k)的应用将在6月27日自动升级到上面列出的新模型。我们的Evals库支持公共和私有评估,以展示模型变更将如何影响你的使用案例。 需要更多时间进行过渡的开发者可以继续使用旧版模型,只需在API请求的'model'参数中指定gpt-3.5-turbo-0301、gpt-4-0314或gpt-4-32k-0314。这些旧版模型将在9月13日之前可用,之后指定这些模 型名称的请求将会失败。你可以通过我们的模型弃用页面获取模型弃用的最新信息。这是对这些模型的第一次更新,所以我们热切欢迎开发者的反馈,帮助我们确保过渡的顺利。
降价
我们会持续提高我们系统的效率,并将这些节省下来的成本传递给开发者,今天就有效。 嵌入 text-embedding-ada-002 是我们最受欢迎的嵌入模型。今天,我们将成本降低75%,至每1K tokens的价格是$0.0001。 GPT-3.5 Turbo gpt-3.5-turbo 是我们最受欢迎的聊天模型,为数百万用户提供了ChatGPT服务。今天我们将gpt-3.5-turbo的输入tokens的成本降低25%。开发者现在可以以每1K输入tokens $0.0015和每1K输出tokens $0.002的价格使用这个模型,这等于大约每美元700页。 gpt-3.5-turbo-16k 的价格将是每1K输入tokens $0.003和每1K输出tokens $0.004。 开发者的反馈是我们平台进化的基石,我们将根据听到的建议继续进行改进。我们很期待看到开发者如何在他们的应用中使用这些最新的模型和新功能。