跳转至

使用 GPT 进行 AI 编程#

自托管版本不可用。

不支持 Python。 ///

在代码节点中使用 AI#

功能可用性

Code 节点中的 AI 辅助功能仅对 Cloud 用户可用。在自托管的 n8n 中不可用。

AI 生成的代码会覆盖您的代码

如果您已经在 代码 选项卡中编写了一些代码,AI 生成的代码将会替换它们。n8n 建议使用 AI 作为起点来创建您的初始代码,然后根据需要进行编辑。

在 Code 节点中使用 ChatGPT 生成代码:

  1. 在 Code 节点中,将 语言 设置为 JavaScript
  2. 选择 询问 AI 选项卡。
  3. 编写您的查询。
  4. 选择 生成代码。n8n 将您的查询发送给 ChatGPT,然后在 代码 选项卡中显示结果。

使用限制#

在试用阶段没有使用限制。如果 n8n 将此功能设为永久功能,可能会根据您的定价层级设置使用限制。

功能限制#

n8n 中的 ChatGPT 实现有以下限制:

  • AI 编写的代码操作来自 n8n 工作流的数据。您不能要求它从其他来源提取数据。
  • AI 不了解您的数据,只知道架构,因此您需要告诉它诸如如何找到要提取的数据或如何检查空值之类的信息。
  • 代码节点之前的节点必须执行并将数据传递给代码节点,然后您才能运行 AI 查询。
  • 不适用于大型传入数据架构。
  • 如果代码节点之前有很多节点,可能会出现问题。

编写良好的提示词#

编写良好的提示词可以增加获得有用代码的机会。

一些通用提示:

  • 提供示例:如果可能,给出预期输出的样本。这有助于 AI 更好地理解您所要实现的转换或逻辑。
  • 描述处理步骤:如果有应用于数据的特定处理步骤或逻辑,请按序列出。例如:"首先,过滤掉所有 18 岁以下的用户。然后,按姓氏对剩余的用户进行排序。"
  • 避免模糊性:虽然 AI 理解各种指令,但明确和直接可确保您获得最准确的代码。不要说“获取较老的用户”,您可以说“过滤 60 岁及以上的用户”。
  • 明确您对输出的期望。您希望数据被转换、过滤、聚合还是排序?请尽可能提供详细信息。

以及一些 n8n 特定的指导:

  • 考虑输入数据:确保 ChatGPT 知道您要访问数据的哪些部分,以及传入数据代表什么。您可能需要告诉 ChatGPT 关于 n8n 内置方法和变量的可用性。
  • 声明节点间的交互:如果您的逻辑涉及来自多个节点的数据,请指定它们应如何交互。“根据 'userID' 属性合并 '节点 A' 和 '节点 B' 的输出”。如果您希望数据来自特定节点或忽略其他节点,请明确说明:“仅考虑来自 '购买' 节点的数据,忽略 '退款' 节点”。
  • 确保输出与 n8n 兼容。有关 n8n 所需数据结构的更多信息,请参阅数据结构

示例提示词#

这些示例展示了可能的提示词和任务的范围。

示例 1:在第二个数据集中查找数据#

要自己尝试这个示例,下载示例工作流并将其导入 n8n。

在第三个代码节点中,输入这个提示词:

Slack 数据只包含一个项目。输入数据代表所有 Notion 用户。有时保存电子邮件的 person 属性可能为 null。我想找到 Slack 用户的 notionId 并返回它。

查看 AI 生成的代码。

这是您所需的 JavaScript:

1
2
3
4
5
6
7
8
9
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:

1
2
3
4
const items = $input.all();
const usernames = items.map((item) => `"${item.json.username}"`);
const result = usernames.join(", ");
return [{ json: { usernames: result } }];

示例 3:汇总数据并创建 Slack 消息#

要自己尝试这个示例,下载示例工作流并将其导入 n8n。

总结 代码节点中,输入这个提示词:

为 Slack 创建一个 markdown 文本,计算提交了多少个想法、功能和错误。提交类型保存在 property_type 字段中。功能的属性是 "Feature",错误的属性是 "Bug",想法的属性是 "Bug"。另外,在该消息中列出投票排名前五的提交。使用 "" 作为链接的 markdown 格式。

查看 AI 生成的代码。

这是您所需的 JavaScript:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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 理解您想要的数据。

"Screenshot of an n8n code node, highlighting how to reference data with dot notation in an AI query"

要自己尝试这个示例,下载示例工作流并将其导入 n8n。

在第二个代码节点中,输入这个提示词:

"Mock data" 中的数据代表一个人员列表。对于每个人,返回一个包含 personal_info.first_name 和 work_info.job_title 的新项目。

这是您所需的 JavaScript:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const items = $input.all();
const newItems = items.map((item) => {
  const firstName = item.json.personal_info.first_name;
  const jobTitle = item.json.work_info.job_title;
  return {
    json: {
      firstName,
      jobTitle,
    },
  };
});
return newItems;

相关资源#

Pluralsight 提供了一个关于如何使用 ChatGPT 编写代码的简短指南,其中包含示例提示词。

修复代码#

AI 生成的代码可能不经任何修改就能工作,但您可能必须编辑它。您需要了解 n8n 的数据结构。您可能也会发现 n8n 的内置方法和变量很有用。

此页面是否
💬 微信

🚀 与作者交流

关注公众号
n8n实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持