尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

n8n 自动化跑 876 次实验,TaoToken 塞进 HTTP 节点

n8n 自动化跑 876 次实验,TaoToken 塞进 HTTP 节点 1. 从 n8n HTTP 节点 401 说起TaoToken 接进定时研究评测如果你用 n8n 的 Schedule Trigger 定时跑研究评测最容易被 HTTP Request 节点卡住的不是模型能力而是 401Header 里 Key 没带对或者 Base URL 写成了默认域名。先把 TaoToken 的 Key 拿到手https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_http_node_intro 。后面所有 n8n 节点都围绕两件事Base URL 用https://taotoken.net/apiKey 先用YOUR_API_KEY占位导入后再换成自己的真实 Key。最近 DAIR.AI 转发的那类 agent swarm 评测被反复讨论真正落地时的问题很具体几百次实验、多个智能体群、定时触发、结果归档、失败重跑。n8n 很适合做这种“研究评测流水线”Schedule Trigger 定时拉起Code 节点生成实验矩阵HTTP Request 节点请求模型再把结果写到本地文件或本地数据库。本文不讨论论文细节只讨论一个自动化工程师最关心的事——怎么把 TaoToken 塞进 n8n 的 HTTP 节点并且让 876 次量级的实验可以分批、可重试、可恢复地跑完。先给整体骨架Schedule Trigger → Set 节点写死 baseUrl、model、batchSize、runId → Code 节点生成实验矩阵 → Split In Batches每批 20~30 条 → HTTP RequestPOST https://taotoken.net/api/v1/chat/completions → Code 节点解析 choices / usage / error → Write Binary File 或本地 SQLite → 回到 Split In Batches 下一批这个骨架里最核心的是 HTTP Request 节点。n8n 的 HTTP Request v4.2 支持自定义 Header、JSON Body、超时、重试。只要认证头、URL、Body 三件事写对TaoToken 就和普通 OpenAI 兼容接口一样用。下面从定时触发开始把每个节点的 JSON 和排障点拆开讲。2. Schedule Trigger 配置876 次实验怎么切成分片n8n 的 Schedule Trigger 节点适合做“定时研究评测”。不要一上来就跑全量建议先用手动触发验证 2~3 条再把 Cron 打开。比如每 4 小时跑一批每批 20~30 条这样 876 次实验不会一次性把 n8n 执行队列打满。Schedule Trigger 节点 JSON 可以这样写{ parameters: { rule: { interval: [ { field: cronExpression, expression: 0 */4 * * * } ] } }, type: n8n-nodes-base.scheduleTrigger, typeVersion: 1.2, position: [0, 300], id: schedule-eval, name: Schedule Trigger - 每4小时 }这段配置表示每小时的第 0 分钟、每 4 小时触发一次。Cron 表达式0 */4 * * *比固定间隔更好控制因为你可以在晚上低峰期跑大批判在白天跑小批量验证。记得在 n8n 工作流设置里把时区改成Asia/Shanghai{ settings: { timezone: Asia/Shanghai, saveManualExecutions: true, callerPolicy: workflowsFromSameOwner } }然后加一个 Set 节点把全局变量固定下来。不要让 Key、Base URL、模型 ID 散落在每个 HTTP 节点里。统一变量之后后面换模型、换批次、换运行 ID 都只改一个地方。{ parameters: { mode: manual, duplicateItem: false, assignments: { assignments: [ { id: 1, name: baseUrl, value: https://taotoken.net/api, type: string }, { id: 2, name: model, value: 你的模型ID, type: string }, { id: 3, name: batchSize, value: 25, type: number }, { id: 4, name: runId, value: {{ $now.toFormat(yyyyLLdd-HHmmss) }}, type: string } ] }, options: {} }, type: n8n-nodes-base.set, typeVersion: 3.4, position: [220, 300], id: set-eval-vars, name: Set - 评测变量 }这里baseUrl固定为https://taotoken.net/api不是带/v1的完整地址。HTTP 节点里再拼/v1/chat/completions。如果你用 n8n Credential 管理 Key可以再建一个 Header Auth CredentialHeader 名写Authorization值写Bearer YOUR_API_KEY。这样工作流导出给别人时不会把 Key 写进 JSON。如果你还没有 Key去 TaoToken 官网拿https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_schedule_trigger 。拿到后先放在本地环境变量或 n8n Credential 里不要直接提交到 Git。分批的核心不是 Schedule Trigger而是后面的 Split In Batches。Schedule Trigger 只负责“什么时候开始”Split In Batches 负责“每次跑多少”。876 次实验可以拆成 30 批左右每批 25~30 条。每批跑完写一次结果失败只重跑当前批。这样比一次性全量更稳。3. HTTP Request 节点 JSONBase URL、认证、Body 一次填对n8n 的 HTTP Request 节点最容易出错的地方是 URL 拼接。Base URL 是https://taotoken.net/apiOpenAI 兼容的 chat completions 路径是/v1/chat/completions所以完整 URL 是https://taotoken.net/api/v1/chat/completions不要写成https://taotoken.net/api/api/v1/...也不要漏掉/v1。先用本地 curl 验证一次再导入 n8n。以下命令由你在本地终端执行Key 换成自己的curl -sS https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer YOUR_API_KEY \ -H Content-Type: application/json \ -d { model: 你的模型ID, messages: [ { role: user, content: 只回复 pong } ], temperature: 0 }如果本地 curl 返回 JSON并且有choices字段说明 Key、Base URL、模型 ID 都没问题。再把同样的配置搬进 n8n HTTP Request 节点。完整节点 JSON 如下{ parameters: { method: POST, url: https://taotoken.net/api/v1/chat/completions, authentication: none, sendHeaders: true, headerParameters: { parameters: [ { name: Authorization, value: Bearer YOUR_API_KEY }, { name: Content-Type, value: application/json } ] }, sendBody: true, specifyBody: json, jsonBody: {\n \model\: \{{ $json.model }}\,\n \messages\: [\n {\n \role\: \user\,\n \content\: \{{ $json.prompt }}\\n }\n ],\n \temperature\: 0.2\n}, options: { timeout: 120000, response: { response: { fullResponse: false, neverError: false } } } }, type: n8n-nodes-base.httpRequest, typeVersion: 4.2, position: [620, 300], id: taotoken-http, name: HTTP Request - TaoToken, retryOnFail: true, maxTries: 3, waitBetweenTries: 5000 }几个关键点url必须是https://taotoken.net/api/v1/chat/completions。Authorization的值是Bearer YOUR_API_KEYBearer 和 Key 之间有一个空格。Content-Type必须是application/json。jsonBody里用 n8n 表达式读取上游 Code 节点生成的model和prompt。timeout建议 120000 毫秒。研究评测的 prompt 可能比较长超时太短会误判失败。节点级别开启retryOnFail最多 3 次每次间隔 5000 毫秒。429 和临时网络错误可以自动重试。如果你不想把 Key 明文写在节点 JSON 里可以删掉AuthorizationHeader改成 n8n Credential{ credentials: { httpHeaderAuth: { id: REPLACE_WITH_CREDENTIAL_ID, name: TaoToken Header Auth } } }Credential 的 Header 名仍然填Authorization值填Bearer YOUR_API_KEY。这样工作流 JSON 可以安全分享。Body 里的model和prompt来自上游实验矩阵。下一步我们用 Code 节点生成这些字段。4. Code 节点从实验矩阵到 876 次请求的拆批与解析n8n 的 Code 节点适合生成实验矩阵。你不需要手动建 876 条数据而是用循环生成模型、智能体群、重复次数、seed、prompt 组合。下面这段 JavaScript 放在 Code 节点里模式选Run Once for All Items// n8n Code 节点生成实验矩阵 const runs []; // 你的模型 ID 列表按实际 TaoToken 控制台里的模型名填写 const models [ 你的模型ID-A, 你的模型ID-B ]; // 智能体群编号按评测规模调整 const groups Array.from({ length: 30 }, (_, i) group-${String(i 1).padStart(3, 0)} ); const prompts [ 你是评测环境中的一个智能体。请根据当前目标输出下一步动作只返回 JSON字段为 action、reason。, 记录本轮协作状态返回 JSON字段为 groupId、step、result、confidence。, 观察当前任务上下文返回 JSON字段为 action、target、payload。 ]; // 每个群重复次数按目标总量调整 const repeats 15; let seq 0; for (const model of models) { for (const groupId of groups) { for (let r 0; r repeats; r) { const prompt prompts[(seq r) % prompts.length]; seq 1; runs.push({ json: { runId: $now.toFormat(yyyyLLdd-HHmmss), experimentId: exp-${String(seq).padStart(4, 0)}, groupId, model, prompt, seed: 1000 seq, baseUrl: https://taotoken.net/api } }); } } } return runs;把models.length * groups.length * repeats调成你需要的量级即可。不要一次性把全部数据塞进 HTTP 节点后面接一个 Split In Batches 节点{ parameters: { batchSize: 25, options: {} }, type: n8n-nodes-base.splitInBatches, typeVersion: 3, position: [420, 300], id: split-batches, name: Split In Batches - 每批25条 }Split In Batches 的loop输出接 HTTP Request 节点HTTP Request 节点接解析节点解析节点再接回 Split In Batches。这样每批 25 条跑完自动下一批。中途失败时只需要重新执行当前批不会从头再来。HTTP Request 返回后用 Code 节点解析响应。TaoToken 如果走 OpenAI 兼容格式响应通常有choices[0].message.content和usage// n8n Code 节点解析 TaoToken 响应 const out []; for (const item of items) { const res item.json; const choice res.choices res.choices[0]; const content choice choice.message ? choice.message.content : ; const usage res.usage || null; const error res.error || null; out.push({ json: { content, usage, status: error ? error : ok, rawError: error, parsedAt: new Date().toISOString() } }); } return out;如果你需要严格保留experimentId、groupId建议在 HTTP 节点后加一个 Merge 节点按位置与上游实验矩阵合并或者在 prompt 里要求模型回显experimentId解析时再从content里提取。n8n 节点输出是按条目顺序处理的位置合并通常够用。结果落盘可以用本地文件或本地 SQLite。不要在自动化工作流里直连生产库。下面 SQL 只建议在你自己本地数据库执行-- 在本地 SQLite/Postgres 中执行不要在生产库直接跑 CREATE TABLE IF NOT EXISTS eval_runs ( run_id TEXT, experiment_id TEXT, group_id TEXT, model TEXT, status TEXT, content TEXT, usage_json TEXT, created_at TEXT ); INSERT INTO eval_runs ( run_id, experiment_id, group_id, model, status, content, usage_json, created_at ) VALUES ( run-001, exp-0001, group-001, 你的模型ID, ok, 模型返回内容, {}, 2026-01-01T00:00:00Z ); -- 找出失败实验方便下一批重跑 SELECT experiment_id, group_id, model FROM eval_runs WHERE status error ORDER BY created_at DESC;这样做的价值是876 次实验不再是“脚本跑完就散”而是有 runId、experimentId、groupId、模型、状态、usage 的结构化记录。后面写分析报告、复现实验、对比模型都能直接从本地表里查。5. Claude Code / Codex / CC Switch同一把 Key 的本地配置边界n8n 负责服务端定时跑评测本地编码工具则负责你调试 prompt、看模型返回、快速改脚本。TaoToken 的 Key 和 Base URL 可以复用但不同工具的配置文件完全不一样。先把官网入口放这里方便对照控制台https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_claude_code_home 。Claude Code 用settings.json和ANTHROPIC_*环境变量。可以在项目目录下建.claude/settings.json或者放到用户级配置目录。示例{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: 你的模型ID } }如果你的 Claude Code 版本要求使用ANTHROPIC_API_KEY就把ANTHROPIC_AUTH_TOKEN换成ANTHROPIC_API_KEY值仍然是YOUR_API_KEY。重点是Claude Code 只认ANTHROPIC_*不要把 Codex 的配置混进去。Codex 用config.toml不要套用ANTHROPIC_*。典型写法model 你的模型ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api/v1 env_key TAOTOKEN_API_KEY wire_api chat然后在本地终端导出环境变量export TAOTOKEN_API_KEYYOUR_API_KEY codex这里base_url用https://taotoken.net/api/v1因为 Codex 的 provider 通常需要 OpenAI 兼容的 v1 基址。如果你用 n8n HTTP 节点URL 则写完整的https://taotoken.net/api/v1/chat/completions。两者不要混淆。CC Switch 可以理解为本地多工具配置切换器。所谓“三件套”实操上就是三件事Provider / Base URL填https://taotoken.net/api如果工具要求 v1 基址则填https://taotoken.net/api/v1。API Key / Token填YOUR_API_KEY。Model填你在 TaoToken 控制台看到的模型 ID。CC Switch 最终写回的文件通常还是 Claude Code 的settings.json和 Codex 的config.toml。切到 Claude 时检查ANTHROPIC_BASE_URL切到 Codex 时检查model_providers.taotoken.base_url。不要把 Claude Code 的ANTHROPIC_*复制到 Codex 的config.toml也不要把 Codex 的env_key写进 Claude Code 的 settings。如果你还没有创建 Key可以在控制台创建https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_api_keys 。创建后先本地 curl 验证再填入 n8n Credential 和本地工具配置。6. 排障与 CTA401、404、429、超时、JSON 解析失败n8n 自动化跑评测时报错通常集中在五类。下面是一个快速排查表现象常见原因处理方式401 UnauthorizedHeader 没带 Authorization或 Bearer 后 Key 错检查Authorization: Bearer YOUR_API_KEYBearer 后有一个空格404 Not FoundURL 少/v1/chat/completions或 Base URL 重复拼/api确认完整 URL 是https://taotoken.net/api/v1/chat/completions429 Too Many Requests并发太高批次太大把 Split In Batches 的 batchSize 降到 10~20加 Wait 节点timeoutprompt 太长或网络波动HTTP 节点 timeout 调到 120000开启 retryOnFailJSON 解析失败响应不是预期结构或模型返回了非 JSON 文本先打印$json再在 Code 节点里做 try/catch如果 429 频繁出现可以在 HTTP 节点前加一个 Wait 节点{ parameters: { amount: 2, unit: seconds }, type: n8n-nodes-base.wait, typeVersion: 1.1, position: [520, 300], id: wait-rate-limit, name: Wait - 限速2秒 }如果 401 和 404 都已排除但结果不对先看 HTTP 节点返回的完整 JSON。把fullResponse改成true或者在 Code 节点里输出Object.keys($json)。不要凭感觉猜字段。n8n 的表达式报错通常也会给出具体节点和字段名照着改即可。最后是文末 CTA。按转化路径走先验证模型对话再决定是否长期跑评测然后创建 Key最后配置 Claude Code想先验证模型返回格式模型对话https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_chat_validate准备长期跑 876 次量级评测或本地编码Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_coding_plan创建并管理 API KeyAPI Keyshttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_api_keys配置 Claude Code 接入文档Claude Code 文档https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentn8n_claude_code_doc把 Base URL 固定为https://taotoken.net/api把 Key 放进 n8n Credential把重试、分批、落盘做进工作流876 次实验才会从一次性脚本变成可恢复的定时评测流水线。
返回列表