关于OpenAI Schema规范传参的问题,辛苦老师解答一下

关于OpenAI Schema规范传参的问题,辛苦老师解答一下

第7章 关于OpenAI Schema规范传参的问题有一些地方不是很理解,辛苦老师指点一下:

{
	"description": "这是一个查询对应英文单词字典的工具",
	"server": "https://dict.youdao.com",
	"paths": {
		"/suggest": {
			"get": {
				"description": "根据传递的单词查询其字典信息",
				"operationId": "YoudaoSuggest",
				"parameters": [{
					"name": "q",
					"in": "query",
					"description": "要检索查询的单词,例如love/computer",
					"required": true,
					"type": "str"
				}, {
					"name": "doctype",
					"in": "query",
					"description": "返回的数据类型,支持json和xml两种格式,默认情况下json数据",
					"required": false,
					"type": "str"
				}]
			}
		}
	}
}

1. 我看演示的时候基本都是get请求且请求参数较简单,如果是post请求而且入参是一个比较复杂的json应该怎么传参呢?
2. 这个OpenAPI Schema是只适用于OpenAI的大模型还是说所有模型都适配?



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
泽辉呀 5天前

一样的哦,无论是get还是post,都可以使用OpenAPI Schema来描述,只要每个参数的含义是清晰的(重点在于写描述),`post`方法的API工具,只需要将 `in` 设置成 `request_body` 即可,无论多么复杂的一个接口都可以使用OpenAPI Schema来描述,添加多一种 `type=object` 结构即可,这里的 object 就是 json 对象。


另外OpenAPI Schema描述是一种描述性语言,和具体的方法无关,和编程语言无关,也和OpenAI无关,全名是`OpenAPI Schema`,即`开放API结构描述`,只是一种描述性的标准而已。


例如,上面的案例改成 post 方法后,对应的调整:

{
    "description": "这是一个查询对应英文单词字典的工具",
    "server": "https://dict.youdao.com",
    "paths": {
        "/suggest": {
            "post": {
                "description": "根据传递的单词查询其字典信息",
                "operationId": "YoudaoSuggest",
                "parameters": [{
                    "name": "q",
                    "in": "request_body",
                    "description": "要检索查询的单词,例如love/computer",
                    "required": true,
                    "type": "str"
                }, {
                    "name": "doctype",
                    "in": "request_body",
                    "description": "返回的数据类型,支持json和xml两种格式,默认情况下json数据",
                    "required": false,
                    "type": "str"
                }]
            }
        }
    }
}


  • 提问者 十丈红尘 #1

    我刚才参考课程中的文档资料简单写了一个,感觉不太对的样子和课程的结构对不上:

    {
    	"description": "提供用户注册和初始配置设置的API。",
    	"server": "https://dict.youdao.com",
    	"paths": {
    		"/register": {
    			"post": {
    				"description": "允许用户注册新账号并配置初始设置。",
    				"operationId": "registerUser",
    				"parameters": [{
    					"name": "q",
    					"in": "request_body",
    					"description": "要检索查询的单词,例如love/computer",
    					"required": [
    						"username",
    						"email",
    						"password"
    					],
    					"type": "object"
    				}],
    				"properties": {
    					"username": {
    						"type": "string",
    						"description": "用户的唯一用户名",
    						"example": "johndoe"
    					},
    					"email": {
    						"type": "string",
    						"description": "用户的电子邮件地址",
    						"format": "email",
    						"example": "johndoe@example.com"
    					},
    					"password": {
    						"type": "string",
    						"description": "用户的密码,需至少8个字符",
    						"format": "password",
    						"example": "strongpassword123"
    					}
    				}
    			}
    		}
    	}
    }


    5天前
  • 提问者 十丈红尘 #2

    而且还有一个问题就是,我看课程的代码中ParameterType类型没有Object,如果我在这段OpenAPI Schema中添加一个Object类型后端代码能解析吗?我是不是需要把后端代码中https://img1.sycdn.imooc.com/climg/6735f4df09a5f5ca11380860.jpg这个地方也添加一个Object?

    5天前
  • 泽辉呀 回复 提问者 十丈红尘 #3

    是的,要在后端中添加object类型,其实在python中,就是将字段类型声明成dict,你写的这个声明是标准的OpenAPI Schema规范,课程的规范是针对OpenAPI Schema进行了缩减,不需要写properties,全部参数都在parameters中完成声明(扩充出:name、in、description、required、type这四个参数)。

    5天前
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
LLM应用开发平台特训营
  • 参与学习       184    人
  • 解答问题       134    个

全栈+全流程打造价值极高+可商用大模型应用开发LLMOps平台 迅速具备低成本、高效率构建生成式 AI 原生应用的稀缺能力 教/学/练/测/评教学+大厂内推机会,培养具备AI架构和研发能力的尖端人

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师