控制LLM输出格式与解析结果
来自 Wikiprompt,自由的提示词百科全书
控制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 工具中。
为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。
讨论
0 条评论