Structured Output
在众多用例中,如聊天机器人,模型需以自然语言回复用户。然而,在某些情况下,自然语言回复并不理想。例如,如果我们需要获取模型的输出,将其作为HTTP请求的正文传递,或存储到数据库中,那么输出必须符合预定义的架构。这一要求催生了结构化输出的概念,即引导模型以特定的结构化格式生成回复。
在本教程中,我们将探讨如何从大型语言模型(LLM)生成结构化输出,并将其作为HTTP请求的正文传递。
先决条件
我们将使用相同的事件管理服务器来进行HTTP请求。
当然!以下是一个关于您的结构化输出流程的教程,其格式与您的“Agent as Tool”文档保持一致,包括详细的步骤说明和图像占位符。
概述
通过Start节点接收用户输入。
使用大型语言模型(LLM)生成结构化的JSON数组。
遍历数组中的每个元素。
通过HTTP将每个项目发送到外部端点。

步骤1:设置起始节点
首先,在画布上添加一个开始节点。

关键输入参数:
输入类型:
chatInput(默认):流程从用户的聊天消息开始。formInput:流程从表单开始(如果您想从用户那里收集结构化数据)。
临时存储器: *(可选)如果启用此功能,流程将不会保留运行之间的聊天历史记录。
流动状态: *(可选)预填充状态变量。
示例:
[ { "key": "answers", "value": "" } ]
持久状态: *(可选)如果启用,状态将在同一会话中保持不变。
步骤2:使用大型语言模型(LLM)生成结构化输出
添加一个LLM(大型语言模型)节点,并将其连接到Start(开始)节点。

**目的:**使用语言模型分析输入并生成结构化的JSON数组。
关键输入参数:
JSON结构化输出:
键:
answers类型:
JSON 数组JSON模式:
{ "name": { "type": "string", "required": true, "description": "事件的名称" },, "date": { "type": "string", "required": true, "description": "事件的日期" },, "location": { "type": "string", "required": true, "description": "事件地点" } }描述:“用户查询的答案”
更新流状态:
使用生成的JSON输出更新流状态。
示例:
[ { "key": "answers",, "value": "{{ output.answers }}" } ]
步骤3:遍历JSON数组
添加一个迭代节点,并将其连接到LLM节点的输出端。

**目的:**遍历从LLM节点生成的JSON数组中的每个元素。
关键输入参数:
数组输入:
要遍历的数组。设置为保存状态中的答案:
{{ $flow.state.answers }}这意味着节点将遍历答案数组中的每个事件。
步骤4:通过HTTP发送每个项目
在循环内部,添加一个HTTP节点。

**目的:**对于数组中的每个项目,向指定端点(例如,http://localhost:5566/events)发送一个HTTP POST请求。
关键输入参数:
方法:
POST(此用例中的默认方法)。
URL:
发送数据的端点。
示例:
http://localhost:5566/events
头部信息: *(可选)添加任何所需的HTTP头(例如,用于身份验证)。
查询参数: *(可选)如有需要,请添加任何查询参数。
体型:
json(默认):以JSON格式发送正文。
正文:
请求体中要发送的数据。
在循环中设置为当前项:
{{ $iteration }}
响应类型:
json(默认):预期接收JSON格式的响应。
示例交互
用户输入:
创建2个事件:
1. 下周六在荷兰举行的JS大会
2. 9月19日在都柏林举行的通用人工智能(GenAI)聚会流程:
起始节点接收输入。
LLM节点生成一个事件JSON数组。
循环节点遍历每个事件。
HTTP节点通过API创建每个事件。


完整流程结构
{"key": "Structured Output", "value": "Structured Output"}最佳实践
设计指南:
明确输出模式:定义大型语言模型(LLM)输出的预期结构,以确保下游处理的可靠性。
常见用例:
事件处理:收集事件数据并将其发送到日历或事件管理系统。
**批量数据录入:**生成并向数据库或API提交多条记录。
**自动通知:**为列表中的每个项目发送个性化消息或提醒。
Last updated