【提示工程】询问GPT返回Json结构数据

这篇具有很好参考价值的文章主要介绍了【提示工程】询问GPT返回Json结构数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


theme: orange

众所周知,我们可以通过构建的Prompt获取期望的内容,但是通常都是以自然语言返回的,假如我们想得到结构化的数据,比如Json,XML那么怎么办,这篇文章给你一个思路。

理所当然的想法

要实现询问大模型后返回结构化的数据,首先能想到的是可以通过在提示末尾添加以 JSON 格式提供您的响应来进行一些“提示工程”,从而获得字符串化的 JSON。问题是这些响应通常包括错误的尾随逗号或介绍性的文字,导致中断错误。

接下来我们通过食谱应用中来实验下,用户在输入框中输入菜名,然后点击“获取食谱”。当您点击此按钮时,我们将运行 getRecipe() 函数:

``typescript function getRecipe() { // Create prompt text with user input. Include data model schema description. const prompt =return a recipe for ${userInput}. Provide your response as a JSON object with the following schema: {"dish": ${userInput}, "ingredients": ["", "", ...], "instructions": ["", "", ... ]}`; openai.createChatCompletion({ model: "gpt-3.5-turbo", messages: [ { role: "system", "content": "You are a helpful recipe assistant." }, { role: "user", content: prompt } ], }) .then((completion) => { // Handle API response const generatedText = completion.data.choices[0].message.content; setRecipe(JSON.parse(generatedText)); }) .catch((error) => { console.log(error); }); } }

```

我要求以 JSON 格式提供响应,然后即兴设计了一个模式来指示我希望如何格式化对象。该模式可以改进,但在很大程度上,它是有效的。然而,正如前面提到的,这些响应容易出现尾随逗号错误,这种非正式的模式需要更具可扩展性和易于维护。

当我使用上面的提示请求buttered toast食谱时,我收到了以下响应: ```text Here's a recipe for buttered toast in JSON format as requested:

{
"dish": "buttered toast",
"ingredients": [
"2 slices of bread",
"2 tablespoons of unsalted butter"
],
"instructions": [
"Preheat your toaster or toaster oven.",
"Place the slices of bread in the toaster or toaster oven.",
"Toast the bread for 1-2 minutes, or until it is golden brown.",
"Carefully remove the toasted bread from the toaster or toaster oven.",
"Place a tablespoon of butter on each slice of toast.",
"Use a knife to spread the butter evenly over the surface of the toast.",
"Serve immediately and enjoy!"
]
}
I hope this helps! 您可以看到响应的核心是正确的,并且非常符合我期望的结构,但这个响应包含了一个不必要的引导性介绍性文字,导致了下列的错误: shell SyntaxError: Unexpected token 'H', "Here's a r"... is not valid JSON
at JSON.parse ```

二次优化

我们可以进一步优化我们的提示以解决这些错误。我尝试添加“不要在大括号外返回响应中的任何内容。”这样做在很大程度上似乎可以消除那些引言和结论性的句子。

OpenAI API 的允许我们指定我们希望以 JSON 格式获得响应,但我们必须使用 JSON Schema 来实现。我通过创建一个 JSON Schema 对象并将其传递给新函数的参数来更新我们的功能。

typescript function getRecipe() { // Create prompt text with user input const prompt = `return a recipe for ${userInput}`; // Define the JSON Schema by creating a schema object const schema = { "type": "object", "properties": { "dish": { "type": "string", "description": "Descriptive title of the dish" }, "ingredients": { "type": "array", "items": {"type": "string"} }, "instructions": { "type": "array", "description": "Steps to prepare the recipe.", "items": {"type": "string"} } } } // Note the updated model and added functions and function_call lines // Note that we pass our schema object to parameters openai.createChatCompletion({ model: "gpt-3.5-turbo-0613", messages: [ { role: "system", "content": "You are a helpful recipe assistant." }, { role: "user", content: prompt } ], functions: [{ name: "set_recipe", parameters: schema }], function_call: {name: "set_recipe"} }) .then((completion) => { // Note the updated location for the response const generatedText = completion.data.choices[0].message.function_call.arguments; setRecipe(JSON.parse(generatedText)); }) .catch((error) => { console.log(error); }); } 经过这次更新,我收到了以下响应: text { "dish": "Buttered Toast", "ingredients": [ "Bread slices", "Butter" ], "instructions": [ "Heat a non-stick skillet or griddle over medium heat.", "Spread butter on one side of each bread slice.", "Place the bread slices on the hot skillet or griddle, butter side down.", "Cook for about 2-3 minutes or until the bottom side is golden brown and crispy.", "Flip the bread slices and cook for another 1-2 minutes.", "Remove from the skillet or griddle and serve immediately." ] }

当我将这个响应传递给 JSON.parse() 时,没有出现错误。现在,食谱应用程序更加可靠,不容易出现由于 OpenAI API 响应格式不一致而导致的错误。

结论

这种方法需要更多的代码行,而且,至少目前,JSON Schema 是唯一支持的声明性语言。一些开发人员可能仍然想尝试非正式地请求 JSON 对象。但是,如果您正在构建依赖于此 JSON 以将元素呈现到页面的项目,这种方法是值得一试的。文章来源地址https://www.toymoban.com/news/detail-697280.html

到了这里,关于【提示工程】询问GPT返回Json结构数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot (二) --- 返回Json数据

    ​ JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是一种在各个编程语言中流通的数据格式,负责不同编程语言中的 数据传递和交互 。 相当于全球通用语— 英语 ,中国56个民族不同地区的通用语言- 普通话 json的基本语法格式如下: json是一种纯字符数据,不属

    2024年02月16日
    浏览(61)
  • ChatGPT的Prompts关键词提示工程集合:包含AI绘画和GPT文本对话

    明确一个概念,ChatGPT是一种大型的自然语言处理模型,它基于深度神经网络和语言模型技术,可以通过对已有的海量文本数据进行训练,从而实现对自然语言的理解和生成。ChatGPT可以用于各种任务,如文本生成、对话生成、情感分析、语言翻译等。 相比于之前写过一篇关于

    2024年02月11日
    浏览(67)
  • 询问ChatGPT的高质量答案艺术——提示工程指南

    书籍笔记《The Art of Asking ChatGPT for High-Quality Answers: A complete Guide to Prompt Engineering Techniques》 注意:由于chatGPT回复字数限制,凡是在案例中涉及到长文本的不会截图 提示工程是创建提示、询问或指令的过程,用以指导像ChatGPT这样的语言模型的输出。它允许用户控制模型的输出

    2024年02月03日
    浏览(86)
  • Django接口返回JSON格式数据报文

    目录 遇到问题 Django返回json结构报文 不可行方式python json 可行方式JsonResponse+QuerySet.values()。 python的两个web框架,flask和django,两者都具有view 模板的章节,但是当前开发一个应用,大部分采用前后端分离的合作方式。因此必然面对的一个事情就是接口返回json格式的数据报文。

    2024年02月15日
    浏览(45)
  • SpringBoot返回JSON数据是少8小时

    问题 数据库保存时间是北京时区 查询出来的和数据库中保存的时间一样是北京时区的 经过SpringMVC转换为JSON字符串后少了8个小时 解决 在实体类时间属性上使用 @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”) ,未生效 在application.properties中使用 spring.jackson.time-zone=GM

    2024年02月21日
    浏览(38)
  • 后端java 如何返回给前端 JSON数据

    在上述代码中,@ResponseBody注解用于将Java List对象转换为JSON格式的数据,并返回给前端。Spring会自动将List对象转换为JSON格式的数组,其中每个元素都是一个JSON对象。在本例中,每个JSON对象都包含一个name属性和一个age属性。 Regenerate

    2024年02月15日
    浏览(42)
  • C#从http上返回JSON数据

    一:C#从http上取JSON数据 向服务器请求数据后,一般时XML或JSON:(以JSON为例) 在C#中WinForm为例操作: Util工具类: 窗体中点击发生事件: 二:公司中已经封好的方法使用: 第一步:先添加引用; Universal.Kits 第二步:书写方法; 第三步:调用方法获取数据; 第四步:转为获取到

    2024年02月03日
    浏览(37)
  • 04 SpringMVC响应数据之页面跳转控制+返回JSON数据+返回静态资源

    总结: 请求数据接收,我们都是通过handler的形参列表 前端数据响应,我们都是通过handler的return快速处理! https://blog.csdn.net/m0_59735420/article/details/128126514 什么是返回模板视图页面? 当http请求被controller中的handler处理时,有时需要指定响应的页面(返回本地的) 为什么要

    2024年01月18日
    浏览(36)
  • SpringMVC之JSON数据返回与异常处理机制

    目录 一.SpringMVC的JSON数据返回 1.导入Maven依赖 2.配置spring-mvc.xml 3.@ResponseBody注解的使用 3.1案例演示 1.List集合转JSON  2.Map集合转JSON  3.返回指定格式String 4. @ResponseBody用法  5.Jackson 5.1介绍 5.2常用注解 二.异常处理机制  1.为什么要全局异常处理 2.异常处理思路 3.SpringMVC异常分类

    2024年02月08日
    浏览(41)
  • ChatGPT中文版Prompt提示工程超详细指南《提示工程简介及示例》Github最新破万星项目Meta AI前工程师解密百万年薪提示工程师GPT-4模型优化利器(一)

    近期,Meta AI前工程师推出的最强辅助——提示工程师指南在Github上引起了极大的反响。 这份全面指南详细列出了提示工程师所需的所有资料,使得他们在开发过程中拥有更多的技巧。这份指南提供的信息十分丰富,覆盖了从提示技巧使用到提示应用等各个方面,甚至还提供

    2024年02月02日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包