展开本页目录
开始前准备什么
- n8n 2.16.0 或先验证兼容的版本;HTTP Request 与 Code 节点可用。
- apizt Key、可用的 glm-5.3 令牌分组;实例必须能访问目标 API。
- 导入 JSON 后,在 HTTP Request 节点新建 Header Auth:Name 为 Authorization,Value 为 Bearer 后接自己的 Key。下载文件不含凭据。
- 固定 CSV
- 逐行调用
- 校验 JSON
- 保留状态
- 导出与对账
导入后选择自己的 Header Auth 凭据,模型请求按行执行;自动重试关闭。
三条中文客服样本,row_id 保留到最终记录。
按行保存实际输出、usage、执行时间和账单核对状态。
工作流只有四个清晰阶段
Manual Trigger → CSV fixture → apizt classify → Validate and record。CSV fixture 内置三行固定资料,便于第一次导入就能复现;不是任意 CSV 格式的解析器。
处理你自己的文件时,用 Extract From File 节点解析 CSV,映射成 row_id 与 text,再接到相同的 HTTP 节点。行号必须唯一;不要用正文内容作为唯一标识。
| 节点 | 输入与输出 | 用途 |
|---|---|---|
| CSV fixture | row_id + text | 固定输入,可对照预期结果 |
| HTTP Request | 单行 → 一份 Chat 响应 | 按原顺序逐行调用,有限超时 |
| Validate and record | 内容 → accepted / failed | 校验 ID、分类枚举,保留 usage 与错误 |
- 节点
- CSV fixture
- 输入与输出
- row_id + text
- 用途
- 固定输入,可对照预期结果
- 节点
- HTTP Request
- 输入与输出
- 单行 → 一份 Chat 响应
- 用途
- 按原顺序逐行调用,有限超时
- 节点
- Validate and record
- 输入与输出
- 内容 → accepted / failed
- 用途
- 校验 ID、分类枚举,保留 usage 与错误
认证单独保存,端点填写完整 URL
本页使用通用 HTTP Request 节点。它填写 https://api.apizt.com/v1/chat/completions 这个完整地址,和 SDK 的 /v1 基础地址不同。
公开模板使用 Header Auth 凭据,导入后替换占位凭据 ID。创建凭据后只在对应节点选中它,不把密钥粘贴进工作流 JSON、Code 节点或执行结果。
HTTP Request 节点设置
Method: POST
URL: https://api.apizt.com/v1/chat/completions
Authentication: Generic Credential Type → Header Auth
Header Name: Authorization
Header Value: Bearer YOUR_tokenba_API_KEY
Body Content Type: JSON
Timeout: 60000 ms
Retry On Fail: off限定分类与 ID,再校验实际输出
提示词明确只返回 row_id 和 category,分类限定 billing、account、sales。正文用 JSON.stringify 包装,避免把客户输入拼成代码。
模型输出即使是合法 JSON,也可能分类错误。Validate and record 同时核对行 ID 与分类枚举,再与固定样本的期望值比较;生产环境需要人工标注样本集。
一行请求示意(真实 workflow 使用表达式填入)
{
"model": "glm-5.3",
"messages": [
{
"role": "system",
"content": "Classify support messages. Return only a JSON object with row_id and category. Allowed category values: billing, account, sales. Preserve row_id exactly. No tools."
},
{
"role": "user",
"content": "{\"row_id\":\"A01\",\"text\":\"退款迟迟未到账\"}"
}
],
"max_tokens": 80
}实际样本:三条消息都通过逐行验收
2026-10-07 在固定版本 Docker 镜像中运行了初次环境变量认证及公开模板对应的 Header Auth 认证两次流程。公开证据分别保存两次结果;两次均为真实网关请求,不能把其中一次从成本记录中删掉。下载模板的终态与 unknown 校验随后经离线故障样本加固,并用这 6 份真实响应回放验收,没有追加在线请求。
- HTTP 节点按行保存完整响应,校验节点保留 request_id 与 usage。
- 工作流完成并不等于每行成功;必须检查 accepted / failed / unknown、finish_reason 和 correct。
- 本次 3 条固定样本不覆盖歧义、多语言、超长文本与复杂 CSV。
| row_id | 消息 | 实际分类 / 期望 |
|---|---|---|
| A01 | 退款迟迟未到账 | billing / billing |
| A02 | 如何修改登录密码 | account / account |
| A03 | 想了解企业版价格 | sales / sales |
- row_id
- A01
- 消息
- 退款迟迟未到账
- 实际分类 / 期望
- billing / billing
- row_id
- A02
- 消息
- 如何修改登录密码
- 实际分类 / 期望
- account / account
- row_id
- A03
- 消息
- 想了解企业版价格
- 实际分类 / 期望
- sales / sales
失败行留在结果里,恢复时不要重发全部
HTTP 节点设置 Continue using regular output,失败信息进入校验节点。只有 finish_reason 为 stop、JSON 有效、ID 一致且分类在枚举内才 accepted。截断或明确拒绝标记 failed;超时、断连和 5xx 保守标记 unknown,保留脱敏 error_type,先核对日志再决定恢复。
恢复流程应将结果持久化到你自己的表格或数据库。再次执行前只选择确认未完成的行;如果请求超时且服务端结果未知,先核对日志和实扣,不能直接认为未执行。这个示例没有提供跨机器的自动去重或 exactly-once 保证。
| 结果 | 保留内容 | 下一步 |
|---|---|---|
| accepted | row_id、category、usage、请求记录 | 导出,不重复分类 |
| failed:明确拒绝 | 行 ID、状态与脱敏错误 | 修正后仅处理拒绝行 |
| 超时或断连 | 行 ID、时间与 unknown 状态 | 核对后台后人工决定是否再提交 |
- 结果
- accepted
- 保留内容
- row_id、category、usage、请求记录
- 下一步
- 导出,不重复分类
- 结果
- failed:明确拒绝
- 保留内容
- 行 ID、状态与脱敏错误
- 下一步
- 修正后仅处理拒绝行
- 结果
- 超时或断连
- 保留内容
- 行 ID、时间与 unknown 状态
- 下一步
- 核对后台后人工决定是否再提交
输出限制与费用都看实际记录
初次流程返回的输入 usage 共 185、输出共 1,061 tokens,其中包含 reasoning。虽然请求 max_tokens 为 80,实际输出计数高于这个值;当前通道行为不能将该参数当作已经验证的消费上限。
两次运行共 6 行请求,已按型号、时间与输入/输出 token 匹配全部消费记录,实扣合计 $0.004806。首次运行 $0.002464,按公开模板的 Header Auth 复跑 $0.002342;两次费用均计入,不丢弃验证成本。这只是固定三行样本的观察值,不是批量任务平均价格。
扩到生产批量前,从小样本确认参数语义与实际耗费,设置平台可用的消费控制,并观察失败与重复提交。
怎样确认已经完成
- 导入后手动选择自己的凭据,下载文件内没有真实 Key。
- 每条输入保留唯一 row_id,最终结果能逐行对应。
- 三条固定分类与预期一致;错误行仍出现在结果中。
- 仅在核对日志后恢复失败或结果未知的行,不盲目重跑整个 CSV。
- 保存两次测试全部用量与账单,不能把工作流 success 当成每行正确。
常见问题
能直接上传任意大 CSV 吗?
内置节点仅用于三条固定样本。真实文件应使用 CSV 解析节点,保留唯一 row_id,并配置分批、持久化记录和恢复机制;先小批量验收。
这份工作流会自动保证不重复扣费吗?
不会。关闭自动重试只减少重复风险;超时仍可能已经执行。示例保留逐行状态,生产恢复需对账和持久化记录。