这是正在进行的一系列的第四部分. 参见第一部分,第二部分和第三部分。
这是正在进行的一系列的第四部分. 参见第一部分,第二部分和第三部分。
AI Principle IV: Use Structured Prompt Outputs
AI 原理 IV:使用结构化的 Prompt 输出有一段时间,很久很久以前,当LLM API刚刚出来,没有人知道如何正确地与他们互动的时候,最主要的问题之一是从单个提示响应中提取多个输出。
那是古代的时代,当时我们骑马旅行,用蜡烛写提示,因为电力还没有发明出来。调试提示意味着花了很长的夜晚在珠宝卷上眨眼,希望模型会返回一份名单而不是海库。
但是LLM API无法始终返回JSON响应是一个真实的事情,并引起了很多问题。
Benefits
福利为什么最好使用 JSON 结构的提示输出而不是其他格式或发明自定义格式?
Reduced Error Rate
现代LLM是精心定制的,以便在请求时输出有效的JSON - 即使在非常复杂的响应中,它们也很少失败。 此外,许多平台都有软件级别的保护,防止错误格式化的输出。
如果您使用自定义格式返回多个输出变量,您将不会受益于这种精细调节,错误率将更高。
Decoupled Prompts and Code
使用 JSON 输出,添加另一个输出字段是微不足道的,这样做不应该破坏你的现有代码。这将将添加字段从修改到代码处理逻辑的提示解开。
Simplified System
是否有实际理由使用没有内置平台支持的输出格式?对于您和随后的代码贡献者来说,使用 JSON 格式化响应更容易。
When NOT to Use Structured Output
何时不使用结构化输出Single Field Output
如果您的提示输出一个单个字段作为响应,输出一个JSON就没有任何好处。
今天单变性响应可能成为明天复杂的响应. 花了几个小时将一个字段输出提示转换为许多字段输出提示后,我现在默认使用JSON,即使只返回一个字段。
即使程序逻辑不需要多个输出,添加额外的字段也有快速工程和调试的好处. 添加一个提供响应解释的字段(或引用文档中的来源)通常可以显著提高快速性能(
因此,即使您的提示具有单个输出变量,也可以考虑JSON格式作为一个选项。
Streaming Response
对于延迟至关重要的应用程序,经常使用流式LLM端点,这些端点允许在收到整个响应之前对部分响应进行操作。
例如,如果您的提示决定了视频游戏角色所采取的行动以及该角色所说的单词,您可以将其编码为“ACTION ÁthaSPEECH_TO_READ”,然后通过流式 API 传输响应,例如:
例子输出:
WAVE_AT_HERO|Hello, Adventurer! Welcome to my shop. |
---|
一旦收到该操作,该字符开始振动,并在流入时输出文本。
Conclusion
结论不要拒绝文明的好处 - 使用 JSON 结构的提示输出。几乎没有任何缺点,它将使你的生活更容易,因为LLM 被极大地优化以返回有效的 JSON 响应。
如果你喜欢这篇文章,订阅该系列的更多。