使用GPT进行AI编程#
自托管版本不可用。
不支持Python。
在代码节点中使用AI#
功能可用性
代码节点中的AI辅助功能仅向云用户开放,自托管版n8n不可用。
AI生成代码会覆盖原有代码
若您已在代码标签页编写代码,AI生成的代码将直接覆盖原有内容。n8n建议将AI作为创建初始代码的起点,随后按需编辑。
通过ChatGPT在代码节点生成代码的步骤:
- 在代码节点中将语言设置为JavaScript
- 选择询问AI标签页
- 输入您的需求描述
- 点击生成代码。n8n将您的需求发送至ChatGPT,并在代码标签页显示生成结果
使用限制#
试用阶段无使用限制。若该功能转为正式版,可能会根据付费套餐设置使用限制。
功能限制#
n8n中集成的ChatGPT存在以下限制:
- AI仅编写用于处理n8n工作流数据的代码,无法要求其从其他来源获取数据
- AI仅了解数据结构而非具体数据值,因此需明确指示如何定位目标数据或检测空值
- 执行AI查询前,代码节点前的所有节点必须完成执行并向代码节点传递数据
- 无法处理大型输入数据架构
- 当代码节点前存在大量节点时可能出现异常
编写优质提示词#
优质的提示词能显著提高生成可用代码的概率。
通用建议:
- 提供示例:尽可能给出预期输出样本,帮助AI准确理解目标数据转换逻辑
- 描述处理步骤:按顺序列出需要应用于数据的具体处理步骤,例如:"先筛选所有18岁以下用户,再按姓氏排序剩余用户"
- 避免歧义:清晰直接的指令能确保生成代码的准确性。例如使 用"筛选60岁及以上用户"替代"获取年长用户"
- 明确输出预期:说明需要数据转换、筛选、聚合还是排序等操作,提供尽可能详细的说明
n8n特定指导:
- 考虑输入数据:确保ChatGPT知晓需要访问的数据字段及其含义,可能需要告知n8n内置方法和变量的可用性
- 声明节点间交互:若逻辑涉及多节点数据,需明确交互方式。例如:"根据'userID'属性合并'节点A'与'节点B'的输出",或"仅处理'采购'节点数据,忽略'退款'节点"
- 确保输出兼容n8n,参考数据结构了解n8n所需数据结构
提示词示例#
以下示例展示多种可能的提示词与任务类型。
示例1:在第二数据集中查找数据#
下载示例工作流并导入n8n即可亲身体验。
在第三个代码节点中输入此提示词:
Slack数据仅包含单条项目。输入数据代表所有Notion用户。存储邮箱的person属性可能为空。需要查找Slack用户对应的notionId并返回。
观察AI生成的代码。
所需JavaScript代码如下:
const slackUser = $("Mock Slack").all()[0];
const notionUsers = $input.all();
const slackUserEmail = slackUser.json.email;
const notionUser = notionUsers.find(
(user) => user.json.person && user.json.person.email === slackUserEmail
);
return notionUser ? [{ json: { notionId: notionUser.json.id } }] : [];
示例2:数据转换#
若要亲自尝试此示例,请下载示例工作流并将其导入n8n。
在合并项代码节点中输入以下提示:
返回包含所有用户名的单行文本,用户名需用逗号分隔,且每个用户名需用双引号括起。
查看AI生成的代码。
您所需的JavaScript代码如下:
const items = $input.all();
const usernames = items.map((item) => `"${item.json.username}"`);
const result = usernames.join(", ");
return [{ json: { usernames: result } }];
示例三:汇总数据并创建Slack消息#
若要亲自尝试此示例,请下载示例工作流并将其导入n8n。
在汇总代码节点中输入以下提示:
查看AI生成的代码。
以下是所需的JavaScript代码:
const submissions = $input.all();
// Count the number of ideas, features, and bugs
let ideaCount = 0;
let featureCount = 0;
let bugCount = 0;
submissions.forEach((submission) => {
switch (submission.json.property_type[0]) {
case "Idea":
ideaCount++;
break;
case "Feature":
featureCount++;
break;
case "Bug":
bugCount++;
break;
}
});
// Sort submissions by votes and take the top 5
const topSubmissions = submissions
.sort((a, b) => b.json.property_votes - a.json.property_votes)
.slice(0, 5);
let topSubmissionText = "";
topSubmissions.forEach((submission) => {
topSubmissionText += `<${submission.json.url}|${submission.json.name}> with ${submission.json.property_votes} votes\n`;
});
// Construct the Slack message
const slackMessage = `*Summary of Submissions*\n
Ideas: ${ideaCount}\n
Features: ${featureCount}\n
Bugs: ${bugCount}\n
Top 5 Submissions:\n
${topSubmissionText}`;
return [{ json: { slackMessage } }];
显式引用输入节点数据#
若输入数据包含嵌套字段,使用点标记法进行引用可帮助AI理解所需数据。
