展开本页目录
开始前准备什么
- 自己的 n8n 实例和独立 Google 测试表;节点结构参考 n8n 2.42.3。
- Google Sheets 凭据及表格访问权限,与 apizt Key 分开配置。
- 可用 Chat 型号;首次只处理一行,不启用定时批量写入。
- 建立固定行 ID
- 读取原文
- 生成分类摘要
- 检查版本
- 人工审核回写
3 条虚构留言,含固定 qr_id、原文与输入版本。
只有手动触发与 Code 节点,无 API 调用、凭据或表格回写;未做实例导入验收。
检查来源 ID、分类、版本与重复处理,始终保留人工确认。
Google 权限、HTTP 凭据、映射、RAW 写入和恢复步骤。
一行一个固定 ID,排序后仍能找回来
教学任务把客服留言分为配送、退款、其他,再生成不超过 80 字的摘要。qr_id 是不可修改的业务键;input_revision 在原文修改时递增,processed_revision 记录已经处理的版本。行号会随插行、排序和删除变化,不用它充当业务键。
| 列 | 用途 | 由谁填写 |
|---|---|---|
| qr_id | 唯一且长期不变的行 ID | 应用或表格负责人 |
| input_text / input_revision | 原文及当前版本 | 输入方 |
| ai_category / ai_summary | 3 类分类与 80 字以内摘要 | 模型生成,人工审核 |
| processed_revision / ai_status | 处理版本与状态 | 流程回读确认后填写 |
| human_approved | 人工审批,不接收模型决定 | 你的审批流程 |
- 列
- qr_id
- 用途
- 唯一且长期不变的行 ID
- 由谁填写
- 应用或表格负责人
- 列
- input_text / input_revision
- 用途
- 原文及当前版本
- 由谁填写
- 输入方
- 列
- ai_category / ai_summary
- 用途
- 3 类分类与 80 字以内摘要
- 由谁填写
- 模型生成,人工审核
- 列
- processed_revision / ai_status
- 用途
- 处理版本与状态
- 由谁填写
- 流程回读确认后填写
- 列
- human_approved
- 用途
- 人工审批,不接收模型决定
- 由谁填写
- 你的审批流程
Google 与模型使用两套凭据,读取时保留全部匹配
Google OAuth 或服务账户用于访问表格,apizt Key 用于调用模型。两套凭据分别保存在 n8n,服务账户还需获得目标测试表访问权限。首次只读一行并核对原文,再连接模型;Code 节点负责数据校验,不在其中联网。
先记录 n8n 版本和 Google Sheets 节点的 typeVersion。教材参考 n8n 2.42.3,但同一软件版本可包含不同节点版本,不能只看软件版本或节点内部的 V2 名称判断字段。下面两种读取选项按你的节点版本选择,目标都是取得该 qr_id 的全部匹配。
- 读取后按本次 qr_id 汇总匹配:恰好一条才继续,零条停止,多条按重复键停止;多个 items 不能各自直接进入模型。
- Get Row(s) 无匹配时可能不向下游输出 item。为缺失情况保留明确停止或记录出口;节点没有输出不能当作任务已完成。
- 更新的 Cell Format 选 Let n8n format;直接使用 Google HTTP API 时明确 valueInputOption=RAW,避免把生成的文本按表格输入规则解析。
| 节点或版本 | 关键设置 | 第一次核对 |
|---|---|---|
| Google Sheets → Get Row(s) | Document、Sheet、Google 凭据;Filters 按 qr_id 查询 | 返回值的原文和业务键属于同一条测试资料 |
| Sheets typeVersion < 4.5 | Options → When Filter Has Multiple Matches → Return All Matches | 旧版默认首个匹配,不能据此证明键唯一 |
| Sheets typeVersion ≥ 4.5 | Return only First Matching Row 保持关闭 | 固定 2.42.3 源码的 returnFirstMatch 默认 false;仍核对实际设置 |
| HTTP Request | POST https://api.apizt.com/v1/chat/completions;独立 Header Auth | Authorization: Bearer 后接自己的 Key,先完成一个非流式文字请求 |
| JSON Body | 准确 model、messages 对象数组 | 从原文构造对象,不拼接 JSON 字符串;保留来源快照 |
| Google Sheets → Update Row | Map Each Column Manually;匹配列 qr_id | 只映射目标 AI 列,不用缺键时会新增行的 Append or Update |
- 节点或版本
- Google Sheets → Get Row(s)
- 关键设置
- Document、Sheet、Google 凭据;Filters 按 qr_id 查询
- 第一次核对
- 返回值的原文和业务键属于同一条测试资料
- 节点或版本
- Sheets typeVersion < 4.5
- 关键设置
- Options → When Filter Has Multiple Matches → Return All Matches
- 第一次核对
- 旧版默认首个匹配,不能据此证明键唯一
- 节点或版本
- Sheets typeVersion ≥ 4.5
- 关键设置
- Return only First Matching Row 保持关闭
- 第一次核对
- 固定 2.42.3 源码的 returnFirstMatch 默认 false;仍核对实际设置
- 节点或版本
- HTTP Request
- 关键设置
- POST https://api.apizt.com/v1/chat/completions;独立 Header Auth
- 第一次核对
- Authorization: Bearer 后接自己的 Key,先完成一个非流式文字请求
- 节点或版本
- JSON Body
- 关键设置
- 准确 model、messages 对象数组
- 第一次核对
- 从原文构造对象,不拼接 JSON 字符串;保留来源快照
- 节点或版本
- Google Sheets → Update Row
- 关键设置
- Map Each Column Manually;匹配列 qr_id
- 第一次核对
- 只映射目标 AI 列,不用缺键时会新增行的 Append or Update
分类摘要返回后,仍须保留原始行
Prompt 只允许这三个字段,category 只能使用规定分类。将真实 choices[0].message.content 解析为 JSON 后,按 qr_id 和原快照比较;HTTP 返回会改变当前节点的数据,不能把新 $json 当作先前的表格行。
保留 {source,current,model_output}:source 是读取快照,current 是生成后再读取的同一行,model_output 是真实解析结果。下载函数检查结构、ID、版本与长度;摘要是否忠于原文仍由人核对。
模型输出示例 · 人工模拟
{
"qr_id": "QR-SHEET-A",
"category": "配送",
"summary": "查询已发货订单的配送进度。"
}3 条离线资料,先看审核分支
下载 workflow 参考官方 n8n 2.42.3 的 Manual Trigger v1 和 Code v2。它只有手动触发、离线资料和审核三个节点,未连接 Google 或模型;model_output 是人工模拟值。源码核对与离线运行通过,不等于真实 n8n 导入或端到端实测通过。
- Code 选择 Run Once for All Items;输出 pairedItem 与原输入逐项对应。
- 重复 qr_id、模型改 ID 或多出审批字段会停止检查。
- 教学限制为最多 100 行、每条 4000 字符,不能当作平台或模型上限。
先跑通一行,再用反例验收可复用流程
换表复用时保留 qr_id、原文和版本契约,另行绑定 Document、Sheet 与凭据,并重新核对列名、分类范围及 prompt 版本。固定 ID 负责对应来源,不能代替内容审核,也不能保证请求幂等。
这些是你在独立测试表上需要执行的验收条件,不能用人工填好的预期代替运行结果。最后一次读取与更新之间仍存在并发竞争;先用单并发验证,正式流程需要自己的持久化台账与协调策略。离线审核函数不提供原子锁或自动审批。
- 生成前先确认目标键只命中一行,保留 source 原文快照;模型只生成分类与摘要,不决定业务 ID、版本或人工批准。
- 解析真实返回值后,检查 JSON 字段、来源 ID、分类和长度,再人工回读摘要是否忠于原文。
- 批准绑定 qr_id + input_revision。更新前再次读取同键全部匹配,确认仍只有一行、原文及版本未变,且本版尚未完成。
- 只更新白名单 AI 字段;随后再次 Get Row(s) 回读同键,对照分类、摘要和处理版本,确认一致才在任务记录中标为完成。
| 测试输入 | 应有结果 | 没有通过时先查 |
|---|---|---|
| 唯一键的一行正常资料 | 正确分类与摘要,经批准后回读一致 | 真实节点输入、来源快照与目标列 |
| 插行或排序后的同一资料 | 仍按相同 qr_id 对应原文 | 是否把行号或输出顺序当业务键 |
| 两个相同 qr_id/目标键已删除 | 分别停止为重复/缺失,不调用模型或回写 | 全部匹配设置及唯一性判断 |
| 生成后修改原文或递增版本 | 旧摘要停止,不覆盖新版输入 | 当前原文与 source 快照比较 |
| 本版已有完成记录/回写超时 | 前者跳过;后者先回读确认实际状态 | processed_revision、执行记录与同键 AI 字段 |
- 测试输入
- 唯一键的一行正常资料
- 应有结果
- 正确分类与摘要,经批准后回读一致
- 没有通过时先查
- 真实节点输入、来源快照与目标列
- 测试输入
- 插行或排序后的同一资料
- 应有结果
- 仍按相同 qr_id 对应原文
- 没有通过时先查
- 是否把行号或输出顺序当业务键
- 测试输入
- 两个相同 qr_id/目标键已删除
- 应有结果
- 分别停止为重复/缺失,不调用模型或回写
- 没有通过时先查
- 全部匹配设置及唯一性判断
- 测试输入
- 生成后修改原文或递增版本
- 应有结果
- 旧摘要停止,不覆盖新版输入
- 没有通过时先查
- 当前原文与 source 快照比较
- 测试输入
- 本版已有完成记录/回写超时
- 应有结果
- 前者跳过;后者先回读确认实际状态
- 没有通过时先查
- processed_revision、执行记录与同键 AI 字段
请求超时和写入超时分别恢复
正式批量上限要依据你的 n8n 运行资源、Google 配额和目标模型实际限制分别设置。记录每行模型请求、人工审核与回写状态,不把 n8n 节点绿灯当作内容已正确。
| 现象 | 先检查什么 | 恢复方式 |
|---|---|---|
| 401 或没有表格权限 | 实际失败节点及所用凭据 | Google 与模型权限分开修复 |
| 摘要属于另一行 | 来源 qr_id、模型回传 ID、pairedItem | 停止整批,按固定键重建映射 |
| 原文已修改 | input_revision 与真实原文 | 旧结果进入待处理,不覆盖新内容 |
| 模型请求超时 | n8n 执行与平台用量 | 先核对 unknown,不自动重复生成 |
| 回写超时 | 同 qr_id 的当前 AI 字段 | 先回读确认,不再次追加行 |
- 现象
- 401 或没有表格权限
- 先检查什么
- 实际失败节点及所用凭据
- 恢复方式
- Google 与模型权限分开修复
- 现象
- 摘要属于另一行
- 先检查什么
- 来源 qr_id、模型回传 ID、pairedItem
- 恢复方式
- 停止整批,按固定键重建映射
- 现象
- 原文已修改
- 先检查什么
- input_revision 与真实原文
- 恢复方式
- 旧结果进入待处理,不覆盖新内容
- 现象
- 模型请求超时
- 先检查什么
- n8n 执行与平台用量
- 恢复方式
- 先核对 unknown,不自动重复生成
- 现象
- 回写超时
- 先检查什么
- 同 qr_id 的当前 AI 字段
- 恢复方式
- 先回读确认,不再次追加行
分开估算模型、工作流和表格访问成本
Google 当前文档说明标准 Sheets API 使用无额外费用,同时提示 2026 年后续的超额收费计划。批量前核对官方当前配额和费用说明;遇到 429 只恢复相应表格步骤,不因此重跑已成功的模型生成。
本页于 2026-10-23 核对官方文档与 n8n 2.42.3 源码,没有新增 Google 授权、原生导入、模型调用或真实回写。已有下载仍是无网络离线教材。站内 CSV 案例的 n8n 2.16.0 六次历史请求与 USD 0.004806 账单,仅证明那个固定样本,不能作为本表流程已实测或当前每行报价。
| 部分 | 怎样记录 | 限制 |
|---|---|---|
| apizt 模型请求 | 所选模型、完整输入输出 usage、请求次数与实际扣费 | 原文、提示词、重试和额外验证都可能产生用量;max_tokens 不当作费用封顶 |
| n8n | 自己的 Cloud 套餐或自托管计算、存储和运行记录 | 本页模板不能代替第三方服务订阅,也不提供无限执行额度 |
| Google Sheets API | 读写次数、当前项目配额和实际错误 | 2026-10-23 官方文档列读写各 300 次/分/项目、60 次/分/用户/项目;以实际项目额度为准 |
- 部分
- apizt 模型请求
- 怎样记录
- 所选模型、完整输入输出 usage、请求次数与实际扣费
- 限制
- 原文、提示词、重试和额外验证都可能产生用量;max_tokens 不当作费用封顶
- 部分
- n8n
- 怎样记录
- 自己的 Cloud 套餐或自托管计算、存储和运行记录
- 限制
- 本页模板不能代替第三方服务订阅,也不提供无限执行额度
- 部分
- Google Sheets API
- 怎样记录
- 读写次数、当前项目配额和实际错误
- 限制
- 2026-10-23 官方文档列读写各 300 次/分/项目、60 次/分/用户/项目;以实际项目额度为准
怎样确认已经完成
- 按 Sheets 节点版本取得全部匹配;目标 qr_id 恰好命中一行。
- 分类和摘要忠于原文,不改变输入列;排序后仍对应同一个业务键。
- 重复键、缺失键、过期原文和已处理版本分别进入停止或跳过分支。
- 审批绑定输入版本,更新仅映射白名单列,写入后真实回读一致。
- 模型 usage、实扣和 n8n/Google 运行记录分别可查。
常见问题
下载流程可以直接联通 Google Sheets 吗?
这是无凭据、无网络的离线教学流程。真实连接需在自己的 n8n 添加 Sheets 与 HTTP 节点并完成权限、请求和回写验收。
为什么不直接按行号更新?
插行、排序或删除会改变位置。用不可变 qr_id 匹配行,再比较原文版本;找不到或重复时停止写入。
生成 JSON 成功就能回写吗?
还需检查来源、分类、摘要语义和输入版本,再由人确认。JSON 结构正确不证明事实或审批正确。