SuperAPI AI 工具集

n8n-code-tool

智能体与模型

查看项目

更新于 10-25 02:02

技能介绍

用途

n8n-code-tool 是一个技能指南,专门用于为 n8n 中可由 AI Agent 调用的 Custom Code Tool 编写和调试代码。该节点在编辑器里看起来像普通的 Code 节点,但在节点类型、所属包和运行时约定上完全不同:普通 Code 节点的节点类型是 n8n-nodes-base.code,按 item 流输入、返回 [{json: {...}}] 数组;Custom Code Tool 的节点类型是 @n8n/n8n-nodes-langchain.toolCode,由 LangChain AI Agent 调用,输入是 query(JS)或 _query(Python),返回值必须是一个字符串。如果按 Code 节点的方式来写,就会报错。

主要能力与规则

  • 支持 JavaScript 与 Python 两种语言。
  • 返回字符串;数字会自动转成字符串,其他类型(对象、数组、[{json: ...}])会抛出 “The response property should be a string, but it is an object” 或 “Wrong output type returned”。结构化输出建议用 JSON.stringify()。
  • 输入变量固定为 query(JS)/ _query(Python),不可重命名。
  • 沙盒中不可用 $fromAI()(会抛 “No execution data available”)、$input、$json、$binary、$node[...]、this.helpers.httpRequest()、$jmespath()、this.getContext(...)、$getWorkflowStaticData(...);Luxon 的 DateTime 在 JS 沙盒中可用。因此该工具适合纯计算;需要 HTTP 调用、跨调用状态或凭证时,应改用 HTTP Request Tool、toolWorkflow(Call Sub-workflow Tool)或 MCP/数据库工具。

使用方式

两种输入模式:

  1. 无结构模式(默认,specifyInputSchema: false):AI 传入单个字符串 query,多个字段需自行解析(常见做法是让 LLM 传 JSON 字符串再 JSON.parse)。优点是简单,缺点是没有 schema 校验。
  2. 结构化模式(specifyInputSchema: true):工具变为 LangChain DynamicStructuredTool,LLM 按类型 schema 传对象,可直接 query.price。schema 可通过 schemaType: "fromJson" + jsonSchemaExample(n8n v≥1.3)或 schemaType: "manual" + 完整 JSON Schema 定义。

工具名称需匹配 [A-Za-z0-9_]+(v1.1+),建议用动词性描述名(如 calculate_car_loan);描述字段是 LLM 判断是否调用的依据,应写明触发场景,无结构模式下附带 JSON 示例。错误会回传给 LLM 供其修正重试,因此错误信息应说明哪里错了以及合法调用长什么样。

适用场景

  • 纯确定性计算(数学、解析、格式化、校验)。
  • 不应交给 LLM 自行完成的轻量转换(精度运算、正则)。
  • 希望代码内联在工作流中而非拆到子工作流。

限制

沙盒与可用全局变量可能随 n8n 版本变化,需核对已安装节点版本;Type/schema 提示不强制业务约束,需在代码中校验有限值、正整数月份等;静态审查无法确认运行时权限与网络可达性。示例中的车贷计算为名义年金/尾款测算,非法定 APR 或借贷建议。