讨论

控制LLM输出格式与解析结果

来自 Wikiprompt,自由的提示词百科全书

宝玉
贡献者宝玉X来源

2023年11月3日

控制LLM输出格式与解析结果 一份关于使用函数调用和少样本示例控制LLM输出格式的指南,附有用于稳定JSON解析的实用代码片段。

提示词内容收藏

🌐
方法一:使用函数调用 函数调用是OpenAI为GPT API提供的一项功能,它让大语言模型在输出最终结果之前决定是否调用特定函数。例如,如果用户询问今天的天气,大语言模型会先输出一个中间结果,告诉你要调用一个与天气相关的函数,参数为“今天”。然后你可以调用天气函数,获取结果,并告诉大语言模型向用户输出最终结果。 这个功能最初并不是为了控制输出格式而设计的,但它在告诉我们要调用哪个函数时,会给我们一个标准的JSON格式,即使使用GPT-3.5,也能提供相当稳定的JSON输出。我们可以利用这一点来控制大语言模型的输出格式。 我们可以将希望ChatGPT输出的内容定义为一个函数,但实际上我们不需要执行该函数,只需从大语言模型获取输出结果即可。 例如,如果我想让ChatGPT输出一个对象: { "name": "John", "age": 30, "city": "New York" } 在调用GPT时,定义一个参数与所需JSON格式匹配的函数: { "name": "getUserInfo", "description": "获取用户信息", "parameters": { "type": "object", "properties": { "name": { "type": "string", "description": "用户的全名" }, "age": { "type": "number", "description": "用户的年龄" }, "city": { "type": "string", "description": "用户所在城市" } }, "required": ["name", "age", "city"] } } 然后在调用GPT时,你可以获得稳定的JSON输出。限制是API必须支持函数调用。 方法二:使用带输出格式示例的少样本学习 如果API不支持函数调用,我们可以使用少样本学习,通过提供一个或多个输出格式示例让大语言模型遵循。 例如,在翻译时,我可能会让大语言模型翻译两次,一次直译,一次意译,然后使用意译结果。在这种情况下,我不需要JSON格式,只需使用特殊字符分隔两个结果,并通过这些字符进行分割来获取意译结果。 对于JSON格式,少样本学习也可以使用,但使用GPT-3.5时,稳定性不太好,有时格式不会被遵循。 确保你的响应可以被Python的json解析,请使用以下格式作为示例: { "name": "John", "age": 30, "city": "New York" }

登录以查看完整提示词

继续使用:

登录即表示你同意我们的 使用条款 和 隐私政策

用法

此提示词专为 coding 设计。复制上方内容并粘贴到你常用的 AI 工具中。

为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。

参考资料

分类:coding| twitter| llm| output-format

讨论