You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在n8n中通过OpenAI获取带自定义提取字段的结构化JSON输出?

在n8n中用OpenAI提取结构化信息的实现方案

一、核心Prompt编写要点

Prompt必须明确任务规则、输出结构和异常处理逻辑,示例如下:

你需要从用户的消息中提取姓名(Name)、城市(City)信息,严格按照以下固定JSON格式返回结果:
{
  "output": "给用户的回复语:信息不全时询问缺失字段,信息齐全时返回确认语",
  "custom_fields_values": [
    {
      "field_name": "City",
      "values": [{ "value": "提取到的城市,无则为空字符串" }]
    },
    {
      "field_name": "Name",
      "values": [{ "value": "提取到的姓名,无则为空字符串" }]
    }
  ]
}
强制规则:
1. 必须严格遵循上述JSON结构,不得修改字段名、层级或格式
2. 只返回JSON内容,禁止添加任何解释、说明、注释或额外文本
3. 若用户消息中无对应信息,将该字段的value设为"",同时在output中询问用户补充该信息
4. 若所有信息已提取完整,output返回确认类语句,例如"已记录你的信息:姓名XX,城市XX"

可补充1-2个具体示例帮助模型理解场景:

示例1(信息齐全):
用户消息:我叫Ana,来自Curitiba
返回:
{
"output": "已记录你的信息:姓名Ana,城市Curitiba",
"custom_fields_values": [
{
"field_name": "City",
"values": [{ "value": "Curitiba" }]
},
{
"field_name": "Name",
"values": [{ "value": "Ana" }]
}
]
}
示例2(缺失城市):
用户消息:我叫Ana
返回:
{
"output": "请问你来自哪个城市?",
"custom_fields_values": [
{
"field_name": "City",
"values": [{ "value": "" }]
},
{
"field_name": "Name",
"values": [{ "value": "Ana" }]
}
]
}

二、n8n中OpenAI节点配置步骤

  1. 模型选择:优先选用gpt-3.5-turbo-1106或gpt-4-1106-preview,这类版本原生支持JSON模式,结构化输出稳定性更高
  2. Prompt配置:
    • 选择「Custom Prompt」类型
    • 将编写好的Prompt粘贴到输入框,同时通过变量引入客户消息,例如{{$json["customer_message"]}}(替换为你实际的消息字段路径)
  3. 开启JSON强制模式:
    • 在节点的「Advanced Options」中,找到「JSON Mode」并勾选,强制模型仅输出合法JSON
  4. 调整温度参数:将「Temperature」设为0或0.1,彻底降低输出随机性,保证格式一致性
  5. 响应解析:在OpenAI节点后添加「JSON Parse」节点,将模型返回的文本解析为JSON对象,方便后续流程调用

三、保证输出可靠的关键技巧

  • 使用JSON模式:依赖模型原生的JSON输出约束,避免模型生成多余内容
  • 函数调用增强(可选):若使用支持函数调用的模型,可定义提取信息的函数结构,让模型严格按照参数格式返回,示例函数定义:
    {
      "name": "extract_customer_info",
      "description": "提取用户消息中的姓名和城市信息",
      "parameters": {
        "type": "object",
        "properties": {
          "output": {
            "type": "string",
            "description": "给用户的回复语"
          },
          "custom_fields_values": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field_name": {
                  "type": "string",
                  "enum": ["City", "Name"]
                },
                "values": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "required": ["output", "custom_fields_values"]
      }
    }
    
    在n8n节点中开启「Function Calling」并导入上述结构,模型会严格按照参数返回JSON
  • 输出校验:在「JSON Parse」节点后添加错误处理逻辑,若解析失败(如模型输出非JSON内容),触发重试或抛出告警
  • 重复强调规则:在Prompt中多次明确要求仅返回JSON,禁止任何额外内容,强化模型的输出约束

内容的提问来源于stack exchange,提问作者Marcus Vinícius Afixar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:44:55