OpenAI 通过强大的结构化输出功能增强了其 API

2024-08-24 12:12

本文主要是介绍OpenAI 通过强大的结构化输出功能增强了其 API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

可以通过打开/关闭 JSON 模式或使用函数调用来创建先前结构化的输出。

大型语言模型 (LLM) 与一般的对话式 UI 非常相似,擅长处理以自然语言呈现的非结构化数据。首先对这些非结构化输入进行组织和处理,然后将其重新转换为自然语言作为结构化响应。

之前有两个选项可用:JSON 模式和函数调用...

OpenAI JSON 模式

启用 OpenAI 的 JSON 模式并不能确保输出遵循特定的预定义 JSON 架构。它只能保证 JSON 有效且解析时不会出错。

OpenAI 的 JSON 模式的挑战在于每次推理时 JSON 输出都具有很大的可变性,因此无法预定义一致的 JSON 模式。

函数调用

需要澄清的是,聊天完成 API 本身不会调用任何函数,但模型可以生成 JSON 输出,您可以在代码中使用该输出来触发函数调用。

在 API 中引入结构化输出

去年,OpenAI 推出了JSON 模式,作为开发人员使用其模型构建可靠应用程序的宝贵工具。

尽管 JSON 模式增强了模型生成有效 JSON 输出的能力,但正如我在之前的文章中强调的那样,它并不能确保响应遵循特定的架构。这使得该功能更具实验性,而非可用于生产的 功能。

现在,OpenAI 在 API 中引入了结构化输出,这是一项新功能,旨在保证模型生成的输出与开发人员提供的 JSON 模式完全匹配。

结构化输出有两种格式:函数调用和参数的新选项response_format

函数调用 Python 示例

以下函数调用示例的 Python 代码可以按原样复制并粘贴到笔记本中:

# Install the requests library if not already installed
!pip install requestsimport requests
import json# Define your OpenAI API key
api_key = '<You API Key Goes Here>'# Define the API endpoint
url = "https://api.openai.com/v1/chat/completions"# Define the headers with the API key
headers = {"Authorization": f"Bearer {api_key}","Content-Type": "application/json"
}# Define the data for the API request
data = {"model": "gpt-4o-2024-08-06","messages": [{"role": "system","content": "You are a helpful assistant. The current date is August 6, 2024. You help users query for the data they are looking for by calling the query function."},{"role": "user","content": "look up all my orders in may of last year that were fulfilled but not delivered on time"}],"tools": [{"type": "function","function": {"name": "query","description": "Execute a query.","strict": True,"parameters": {"type": "object","properties": {"table_name": {"type": "string","enum": ["orders"]},"columns": {"type": "array","items": {"type": "string","enum": ["id","status","expected_delivery_date","delivered_at","shipped_at","ordered_at","canceled_at"]}},"conditions": {"type": "array","items": {"type": "object","properties": {"column": {"type": "string"},"operator": {"type": "string","enum": ["=", ">", "<", ">=", "<=", "!="]},"value": {"anyOf": [{"type": "string"},{"type": "number"},{"type": "object","properties": {"column_name": {"type": "string"}},"required": ["column_name"],"additionalProperties": False}]}},"required": ["column", "operator", "value"],"additionalProperties": False}},"order_by": {"type": "string","enum": ["asc", "desc"]}},"required": ["table_name", "columns", "conditions", "order_by"],"additionalProperties": False}}}]
}# Make the API request
response = requests.post(url, headers=headers, data=json.dumps(data))# Print the response
print(response.status_code)
print(response.json())

最后

JSON 是构建和交换 AI 代理及其交互功能之间的数据的重要工具,可确保跨各种系统和平台的清晰、一致和可靠的通信。

这篇关于OpenAI 通过强大的结构化输出功能增强了其 API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张