如何正确构造含functions参数的ChatGPT API请求体获结构化结果
如何让ChatGPT API返回包含毕加索相似艺术家的结构化JSON响应
问题出在函数定义和指令提示的模糊性,导致模型误解了需求。以下是具体修正方案:
核心修改方向
- 明确指令约束:在系统提示和用户提问中,清晰说明要排除毕加索本人,并指定返回数量
- 完善函数定义:修正拼写错误,细化函数和参数的描述,让模型准确理解参数要求
- 强化结构化要求:确保模型明白需要返回符合格式的外部艺术家列表
修正后的完整API请求
{ "model": "gpt-3.5-turbo-0613", "messages": [ { "role": "system", "content": "你是艺术专家,需要列出与指定艺术家风格、流派或影响力相似的其他艺术家,**不得包含原艺术家本人**,必须通过函数调用返回结构化结果。" }, { "role": "user", "content": "列出10位与巴勃罗·毕加索风格或流派相似的艺术家,不要包含毕加索本人。" } ], "functions": [ { "name": "get_similar_artists", "description": "获取与目标艺术家风格、流派或影响力相似的其他艺术家列表,需排除目标艺术家本人", "parameters": { "type": "object", "properties": { "similarArtists": { "type": "array", "description": "与目标艺术家相似的其他艺术家姓名列表,不包含目标艺术家本人", "items": { "type": "string", "description": "艺术家姓名" } } }, "required": ["similarArtists"] } } ] }
关键修正说明
- 系统提示补充约束:明确告知模型必须排除原艺术家,且必须用函数返回结构化结果,消除歧义
- 用户提问明确数量:直接指定返回10位,和无函数调用时的需求对齐
- 函数描述细化:将原模糊的"Similar artists"改为明确的"其他艺术家列表,需排除目标艺术家本人",避免模型误解
- 修正拼写错误:将参数items里的
desctiption改为正确的description,避免模型解析异常 - 添加required字段:明确
similarArtists是必填参数,强制模型返回该字段
这样修改后,模型就能准确理解需求,返回包含10位相似艺术家的结构化JSON响应,不会再只返回毕加索本人。
内容的提问来源于stack exchange,提问作者Matej Ukmar
相关产品推荐
相关产品推荐

