如何在ChatGPT函数调用参数中定义包含指定属性的复杂对象数组?
如何在ChatGPT函数调用参数中定义包含指定属性的复杂对象数组?
我完全懂你遇到的困扰——想让ChatGPT在函数调用时返回一个带特定属性的对象数组,但不知道怎么把数组里的对象结构描述清楚对吧?其实你只差关键的一步:在items字段里明确写出对象的properties细节,而不只是标记类型和简单描述。
你之前的写法只告诉模型“这是个对象”,但没说明对象里具体有哪些属性,模型自然没法精准生成符合要求的JSON结构。按照OpenAI函数调用基于的JSON Schema规范,我们可以这样修正你的参数定义:
[ { "name": "get_ICD_codes", "description": "Get the ICD codes with description in the given format", "parameters": { "type": "object", "properties": { "icds": { "type": "array", "description": "Array of ICD objects", "items": { "type": "object", "description": "An object with ICD code and description as properties", "properties": { "code": { "type": "string", "description": "The specific ICD code (e.g., I10 for essential hypertension)" }, "description": { "type": "string", "description": "Human-readable explanation of the ICD code" } }, "required": ["code", "description"] } } }, "required": ["icds"] } } ]
简单解释下修改的部分:
- 在
items里新增了properties字段,明确定义了每个ICD对象必须包含code和description两个属性 - 给每个属性指定了类型(都是字符串)和更具体的描述,帮模型理解属性的含义
- 用
required数组强制要求这两个属性必须存在,避免模型返回缺失关键信息的对象
这样定义之后,ChatGPT就能清晰理解你需要的数组结构,返回符合要求的JSON对象数组了。
备注:内容来源于stack exchange,提问作者Kedar Bhumkar
相关产品推荐
相关产品推荐

