输出顺序与依赖控制
很多结构化输出不稳定,不是因为模型太弱,而是因为你把“后面的结论”放在了“前面的依据”之前。
适合什么时候读
- 你的输出字段之间有明显前后依赖
- 你想让
instant结构化流式更好用 - 你发现模型会先下结论,再漏掉支撑字段
你会学到什么
- 为什么字段顺序本身就是一种约束
- 如何把“事实层”和“结论层”拆开
- 哪些前置字段应该进入
ensure_keys
依赖顺序的心智模型
如果后一个字段依赖前一个字段,就应该让它在结构里排在后面。
最小示例
python
from agently import Agently
agent = Agently.create_agent()
result = (
agent
.input("Dark Souls 3 和 GTA6 的发售日在哪里查?如何购买?")
.output(
{
"信息列表": [
{
"主题": (str, "对应的游戏或主题"),
"关键信息": (str, "回答问题所需的关键事实"),
"是否确定": (bool, "是否确认该信息可靠"),
}
],
"确定信息": (str, "只解释可靠的信息"),
"不确定信息": (str, "列出仍需确认的部分"),
}
)
.start(
ensure_keys=[
"信息列表[*].主题",
"信息列表[*].关键信息",
"信息列表[*].是否确定",
]
)
)
print(result)三条实用排序规则
- 先列事实,再做归纳
- 先给判断,再给解释,只适用于解释依赖判断的场景
- 先输出程序要消费的结构字段,再输出自然语言总结
ensure_keys 应该压在哪些字段上
只要后续字段依赖前置字段,就优先保障前置字段完整。
例如上面的例子里,真正应该先稳住的是:
信息列表[*].主题信息列表[*].关键信息信息列表[*].是否确定
因为“确定信息”和“不确定信息”本质上都是建立在这些基础字段之上。
这对流式消费有什么帮助
只要顺序设计得对,流式体验就会更自然,因为前端能先拿到有意义的骨架。
常见误区
- 一上来就让模型输出最终总结,却没给它先整理依据的空间。
- 结构里明明有依赖关系,字段顺序却完全随意。
ensure_keys压在结论字段上,却没保障前置事实字段。
下一步去哪
- 想看字段本身怎么定义: 看 Agently Output Format 语法
- 想边生成边消费这些字段: 看 Instant 结构化流式解析
- 想读取最终结果对象: 看 结果数据与对象
Related Skills(可选)
agently-output-control