所需先决条件
- 我搜索了 Issue Tracker 和 Discussions ,但尚未报告此问题。如果有,请在那里加1或评论。
- 请先在 Discussion 中提问。
动机
当前的LLM(语言学习模型)输出往往是自由格式文本,这可能并不总是适用于所有应用。在需要结构化或特定格式输出的上下文中,用户发现很难调整LLM的输出。能够指定输出格式或类型可以增强LLM在各种应用中的集成,从数据分析到自然语言处理任务。
解决方案
解决方案:
- 结构化输出格式:
- 引入一个API参数,允许用户指定所需的输出格式。例如:
output_format="JSON"
。 - 在指定的格式中,允许分层结构。例如,如果输出预期为摘要,则可以如下所示:
{
"title": "Summary Title",
"points": ["point1", "point2", "point3"]
}
- 输出类型:
- 允许用户为输出指定类型。这可以是任何东西,从
number
、string
、symbol
、emotion
等。 - 例如,如果用户希望从一段文字中获取情感,他们可以将输出类型指定为
emotion
,LLM将返回happy
、sad
、angry
等。
替代方案
- 使用现有工具:有一些开源工具,如 Outlines 和 Instructor ,它们试图提供结构化输出。然而,将这些与LLM集成可能需要额外的努力,并且可能不是无缝的。
- 后处理:另一个选择是让用户根据需要对LLM输出进行后处理。然而,如果始终需要额外的处理,这将使强大的模型失去其目的。
其他上下文
在结构化数据的时代,获得可直接使用的信息的格式变得越来越重要。特别是在关系数据库、数据可视化工具或特定分析工具等应用中,具有LLM结构化输出可以大大减少数据处理和集成的时间。
4条答案
按热度按时间fquxozlt1#
我认为使用函数调用可以让LLM输出结构化输出。
我的初步想法是用户可以添加他们想要的具体结构,例如:
并且他们需要描述每个部分需要输出的内容。例如:
{"Belief": "what's your belief"}
。同时,用户还需要指定何时需要结构化输出。最后,用户还需要指定哪个角色需要结构化输出。最终的输入可能是我们为角色扮演类添加一个接口,该接口发送此消息。然后助手将输出结构化输出。我们将在代理中构建一个函数调用。
我们将以如下格式构建参数:
然后我们将有以下函数调用:
可以使用以下方式生成generate_text函数:
通过这种方式,代理的输出可能是结构化的
ss2ws0br2#
太好了,@yitianlian!使用函数调用是与当前多代理系统所采用的方法不同的另一种方式。然而,我们需要推理来解释它为什么比多代理所做的事情更好。
此外,我不确定您是否考虑了问题描述中的"使用现有工具":"有一些开源工具,如Outlines和Instructor,它们试图提供结构化的输出。然而,将这些工具与LLM集成可能需要额外的努力,并且可能不会无缝衔接。"
因此,我认为类似的任务/问题已经被其他开源项目完成,您对此有何看法?我只是想避免重复造轮子。如果您无法做出决定,您可以询问@lightaime。谢谢。
ubof19bj3#
我之前使用过工具Instructor来帮助我结构化模型的输出。在我看来,与函数调用相比,它有两个缺点:
关于Outlines,我没有使用过,抱歉。所以我会和@lightaime讨论一下。
rlcwz9us4#
好的,结论很好,期待你的进步:)