n8n 是一款强大的开源低代码自动化工具,它允许你通过可视化节点的方式,将不同的服务和 API 串联起来,构建复杂的自动化工作流。与传统的自动化平台相比,n8n 拥有极高的自由度和扩展性,支持自托管部署,能够确保数据的完全私有化。

在集成 AI 能力时,n8n 丰富的节点生态可以轻松对接 GPUStack 部署的本地大模型。这种组合不仅消除了昂贵的 API 调用费用,还确保了企业敏感数据在处理过程中始终留在本地,是构建私有化 AI 智能体的理想选择。接下来,我们将通过一个实战案例,演示如何将两者结合使用。

🛠️ 演示环境

  1. GPUStack v2.0.3:请参考官方文档 https://docs.gpustack.ai 进行安装部署。
  2. n8n 最新版:推荐使用 Docker 快速部署,请参考官方指引 https://docs.n8n.io/hosting/installation/docker 。
  3. gpt-oss-120b:在 GPUStack 中部署,具备优秀并发能力。

📖 工作流搭建

1. 获取模型 API 凭证

首先,我们需要获取模型的调用地址。在 GPUStack 的 Deployments 列表找到目标模型,通过右侧菜单点击 API Access Info。系统会弹出详细的接入信息,若尚未配置密钥,可直接点击窗口内的链接跳转至创建页。


创建 API Key

成功创建后,生成的 API Key 将作为 n8n 访问本地模型的安全凭证。由于 Key 仅在创建时显示一次,建议立即将其妥善保存。

2. 配置 n8n 模型连接

由于 GPUStack 兼容 OpenAI 协议,我们在 n8n 中直接添加一个 OpenAI API 类型的凭证即可。


在配置窗口,填入刚才获取的 API Key 和 GPUStack 的接入地址。如果填入凭据信息无误,点击 Save 会提示 Connection tested successfully


关闭凭据配置窗口后,勾选 Limit models,指定该凭证仅使用特定的本地模型。

3. 编排自动化工作流

本节目标是搭建一个自动化链路:每天早上八点半定时触发,自动采集 RSS 源信息,并调用 AI 提取摘要发送至指定邮箱。

  1. 创建空白 Workflow

  1. 设置工作流的 First step nodeOn a schedule 类型

配置触发时间为每天早上八点半

  1. 添加 RSS Read 节点,这里以 https://36kr.com/feed 为例


点击测试按钮,验证 RSS Read 节点是否正常工作


双击 RSS Read 节点可查看执行日志和数据

  1. 添加 Basic LLM Chain 节点,用于提取信息摘要

在弹出的配置窗口中,配置 Source for Prompt (User Message)Define below,然后拖动左侧面板 contentSnippet 字段到 Prompt (User Message) 输入框中


继续在下方配置 System Prompt -> 你是一个资深科技编辑。请阅读下方的文章内容,提取摘要,要求字数精炼,直击本质。

  1. 配置 LLM Model


  1. 添加 Send Email 节点


添加 Email 凭据,如下如所示,点击 Create new credential 会弹出配置窗口。

此界面仅为示例,具体的 SMTP 配置信息(如服务器地址、端口、授权码)请参照你所使用邮箱服务的官方说明。

配置收件人地址及邮件正文。作为初步演示,我们直接将模型输出的原始文本作为邮件内容。

表达式无需手写,将字段拖拽到输入框即可。

📊 效果验证

点击 Execute Workflow 手动触发一次工作流。n8n 将抓取最新的 RSS 资讯,调用 GPUStack 进行推理生成摘要,最后通过 Send Email 节点发送邮件。

注意:这一步不要着急实操,否则将一次性收到 30 封邮件!🤣

执行完成如图所示:

邮箱截图:

💡 工作流优化

上述流程中我们注意到,工作流每完整执行一次就会发送 30 封邮件,这显然不符合预期。我们期望将每条资讯压缩为一句话摘要,再将所有摘要汇总为一个列表,以单封邮件的形式发送,并对展示样式进行统一美化。

  1. 修改 Basic LLM Chain 节点上的系统提示词,指导其直接输出一个 list item
你是一个资深科技编辑。请将用户输入的文章内容总结为一条简练的 HTML 列表项(<li>...</li>),包含标题和核心要点。

格式示例:
<li><b>标题</b>:核心要点摘要</li>

要求:
1. 仅输出 <li> 标签及其内容,不要包含 <ul> 或其他 markdown 格式。
2. 摘要控制在 50 字以内。

  1. Basic LLM ChainSend Email 节点之间插入一个 Code 节点,用于将分散的摘要聚合为美观的 HTML 格式。

在后续弹出的菜单中,根据自己偏好选择 Code in JavaScript / Code in Python (Native)

本文以 Code in JavaScript 为例。

在弹出的配置面板中,填入如下 JavaScript Code

⚠️ 注意:在微信公众号中直接复制以下代码时,普通空格可能会被替换成不换行空格 (NBSP),粘贴后请务必检查并手动替换回普通空格!

// 获取所有 LLM 节点的输出项
const items = $input.all();

// 定义 CSS 样式
const style = {
  container: "font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; background-color: #f9f9f9; border-radius: 10px; border: 1px solid #e0e0e0;",
  header: "color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; margin-bottom: 20px; font-size: 24px;",
  list: "list-style-type: none; padding: 0;",
  listItem: "background-color: #ffffff; margin-bottom: 15px; padding: 15px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.05); line-height: 1.6; color: #555;",
  footer: "margin-top: 30px; font-size: 12px; color: #999; text-align: center; border-top: 1px solid #e0e0e0; padding-top: 10px;"
};

// 构建 HTML 内容
let htmlContent = `<div style="${style.container}">`;
htmlContent += `<h2 style="${style.header}">📅 每日科技资讯摘要</h2>`;
htmlContent += `<ul style="${style.list}">`;

for (const item of items) {
  if (item.json.text) {
    // 为 item 添加样式
    let styledItem = item.json.text.replace('<li>', `<li style="${style.listItem}">`);
    htmlContent += styledItem + "\n";
  }
}

htmlContent += `</ul>`;
htmlContent += `<div style="${style.footer}">Generated by n8n & GPUStack • ${new Date().toLocaleDateString()}</div>`;
htmlContent += `</div>`;

// 返回合并后的单一结果供邮件节点使用
return [{
  json: {
    email_content: htmlContent
  }
}];

  1. 更新 Send Email 节点

n8n 支持在 {{ }} 中编写 JavaScript 表达式。这里我们使用 {{ $now.format('yyyy-MM-dd') }},以便在邮件主题中自动附带当天的日期信息。

  1. 最终效果

修改完成,重新运行,最终效果如下所示

  1. 保存工作流并发布

至此,工作流部署完成。只要 n8n 服务保持运行,系统将按照预设在每天早上 8:30 触发执行,并在处理完成后自动发送资讯摘要邮件。

📈 总结

通过本文的实战,我们成功利用 n8n 和 GPUStack 搭建了一套全自动、零成本的 AI 资讯助手。从 RSS 抓取到 AI 摘要再到邮件推送,整个流程完全运行在本地环境中,既保护了数据隐私,又规避了高昂的 API 调用成本。

最后,别忘了打开 GPUStack Dashboard 概览页。你可以直观地查看指定模型在一段时间内的 Token 消耗详情(包括 Prompt 和 Completion)以及 API 请求总数,真正掌握 AI 服务的运行状况。

🙌 欢迎加入我们的社区

如果二维码失效,大家可前往 GPUStack 项目获取最新入群二维码 https://github.com/gpustack/gpustack/blob/main/docs/assets/wechat-group-qrcode.jpg

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐