AI 工作流自动化实战

用 Dify 和 n8n 搭建三个实用 AI 工作流,无需写代码 Maurice | 灵阙学院

前置准备

  • Docker Desktop 已安装
  • 基本的浏览器操作能力
  • 一个 OpenAI / Claude / 国产大模型 API Key

一、AI 工作流工具全景对比

特性 Dify Coze (字节) n8n Make (Zapier)
定位 AI 应用开发平台 AI Bot 平台 通用工作流引擎 通用自动化平台
开源 是(Apache 2.0) 是(Fair-code)
自建部署 Docker 一键 不支持 Docker 一键 不支持
AI 原生 深度集成 深度集成 通过节点接入 通过节点接入
RAG 内置 内置知识库 内置知识库 需外接向量库 需外接
节点数量 AI 专精 AI 专精 400+ 集成 1500+ 集成
中文支持 优秀 优秀 一般 一般
适合场景 AI 应用/RAG 聊天机器人 复杂跨系统集成 营销/CRM 自动化

选型建议:

  • 构建 AI 对话/RAG 应用 --> Dify
  • 连接多个 SaaS 系统 --> n8n(自建) 或 Make(托管)
  • 快速搭建聊天 Bot --> Coze

二、环境搭建

2.1 部署 Dify

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

等待约 2 分钟,访问 http://localhost/install 完成初始化设置。

验证服务正常:

curl -s http://localhost/api/health | python3 -m json.tool

预期输出:

{
    "status": "ok"
}

2.2 部署 n8n

docker run -d --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -e GENERIC_TIMEZONE=Asia/Shanghai \
  n8nio/n8n

访问 http://localhost:5678,创建管理员账号。

2.3 配置 API Key

在 Dify 中:设置 --> 模型供应商 --> 添加 OpenAI/Anthropic Key。

在 n8n 中:Credentials --> Add Credential --> 选择 OpenAI 或 HTTP Header Auth。


三、工作流一:自动摘要邮件(n8n)

目标:定时读取邮箱中的未读邮件,用 AI 生成摘要,发送到飞书/钉钉/Slack。

3.1 创建工作流

在 n8n 中点击 New Workflow,然后按以下步骤添加节点:

节点 1:Schedule Trigger(定时触发)

  • 设置:每 30 分钟执行一次
  • 参数:Rule --> Every 30 minutes

节点 2:IMAP Email(读取邮件)

  • Credential:配置你的邮箱 IMAP 信息
  • 参数:
    • Mailbox: INBOX
    • Mark as Read: true
    • Download Attachments: false

节点 3:OpenAI Chat(AI 摘要)

  • Credential:你的 OpenAI Key
  • Model:gpt-4o-mini
  • System Prompt:
你是一个邮件摘要助手。针对每封邮件输出:
1. 发件人
2. 主题
3. 一句话摘要(不超过 50 字)
4. 优先级(高/中/低)
5. 需要回复:是/否
  • User Message:{{ $json.textPlain }}

节点 4:HTTP Request(发送到飞书 Webhook)

  • Method:POST
  • URL:你的飞书机器人 Webhook 地址
  • Body:
{
  "msg_type": "text",
  "content": {
    "text": "{{ $json.message.content }}"
  }
}

3.2 测试运行

点击 Execute Workflow 按钮,检查每个节点的输出。

预期效果:飞书群中收到类似消息:

邮件摘要:
1. 发件人:wang@company.com
   主题:Q3 季度报告评审
   摘要:请在本周五前完成 Q3 报告的评审并反馈意见
   优先级:高
   需要回复:是

四、工作流二:文档问答机器人(Dify)

目标:上传企业文档,构建知识库,实现精准问答。

4.1 创建知识库

  1. 登录 Dify,进入"知识库"页面
  2. 点击"创建知识库"
  3. 命名为"企业制度手册"
  4. 上传文档(支持 PDF/DOCX/TXT/Markdown)

配置分段策略:

  • 分段方式:自动
  • 分段长度:500 tokens
  • 重叠长度:50 tokens
  • 索引方式:高质量(使用 Embedding 模型)

4.2 创建 AI 应用

  1. 进入"工作室" --> "创建应用"
  2. 选择"聊天助手"
  3. 配置如下:

模型设置

  • 模型:gpt-4o-mini(或 Claude Sonnet)
  • Temperature:0.3(问答场景建议低温度)

提示词

你是企业制度手册的问答助手。
规则:
1. 仅根据知识库中的内容回答,不要编造
2. 如果知识库中没有相关信息,直接说"抱歉,手册中没有相关内容"
3. 回答时引用出处(文档名 + 页码)
4. 回答简洁,控制在 200 字以内

知识库关联

  • 添加刚创建的"企业制度手册"
  • 检索模式:混合检索(关键词 + 语义)
  • Top K:3
  • Score Threshold:0.5

4.3 测试问答

在右侧预览面板输入测试问题:

年假有多少天?

预期输出:

根据《员工休假制度》第三章:
- 工龄 1-10 年:5 天/年
- 工龄 10-20 年:10 天/年
- 工龄 20 年以上:15 天/年

年假可分次使用,但不可跨年累计。

出处:员工休假制度.pdf 第 12 页

4.4 发布为 API

点击"发布" --> "访问 API",获取 API 端点和密钥。

curl -X POST 'http://localhost/v1/chat-messages' \
  -H 'Authorization: Bearer app-your-key' \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {},
    "query": "出差报销流程是什么?",
    "response_mode": "blocking",
    "user": "test-user"
  }'

五、工作流三:社交媒体内容生成流水线(Dify Workflow)

目标:输入一个主题,自动生成小红书文案 + 推文 + LinkedIn 帖子。

5.1 创建 Workflow 应用

  1. 进入"工作室" --> "创建应用" --> 选择"工作流"
  2. 命名为"内容生成流水线"

5.2 编排节点

整体流程如下:

开始 --> 主题研究(LLM) --> 并行生成 --> 合并输出 --> 结束
                           |-- 小红书文案(LLM)
                           |-- Twitter 推文(LLM)
                           |-- LinkedIn 帖子(LLM)

节点 1:开始

  • 输入变量:topic(字符串,用户输入的主题)

节点 2:主题研究(LLM 节点)

  • 模型:gpt-4o-mini
  • 提示词:
针对主题「{{topic}}」,输出:
1. 目标受众画像(一句话)
2. 3 个核心卖点
3. 情感基调(专业/轻松/激励)
4. 5 个相关关键词
用 JSON 格式输出。

节点 3a:小红书文案(LLM 节点)

  • 模型:gpt-4o-mini
  • 提示词:
你是小红书爆款文案专家。基于以下研究结果生成一篇小红书帖子:
{{research_output}}

要求:
- 标题带数字和情绪词(如"绝了""必看")
- 正文 300-500 字,分段清晰
- 文末加 5-8 个话题标签
- 口语化、真实感、有个人体验

节点 3b:Twitter 推文(LLM 节点)

  • 提示词:
基于以下研究结果生成 3 条 Twitter/X 推文(每条不超过 280 字符):
{{research_output}}
要求:简洁有力,包含 1-2 个 hashtag,适合转发。

节点 3c:LinkedIn 帖子(LLM 节点)

  • 提示词:
基于以下研究结果生成一篇 LinkedIn 帖子:
{{research_output}}
要求:专业但不枯燥,有洞察,800 字以内,适合 B2B 受众。

节点 4:合并输出(Template 节点)

===== 小红书文案 =====
{{xiaohongshu_output}}

===== Twitter 推文 =====
{{twitter_output}}

===== LinkedIn 帖子 =====
{{linkedin_output}}

5.3 运行测试

输入主题:AI 编程助手对开发者效率的影响

预期输出包含三个平台的完整内容,各自风格迥异但主题统一。

5.4 通过 API 集成到业务系统

import requests

API_URL = "http://localhost/v1/workflows/run"
API_KEY = "app-your-workflow-key"

response = requests.post(
    API_URL,
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "inputs": {"topic": "2026年 AI Agent 发展趋势"},
        "response_mode": "blocking",
        "user": "content-team"
    }
)

result = response.json()
print(result["data"]["outputs"]["text"])

六、生产化建议

6.1 监控与告警

  • Dify 内置了日志和统计面板,可在"监测"页面查看调用量、延迟、Token 消耗
  • n8n 支持将执行日志发送到外部系统(Slack/邮件/数据库)

6.2 成本控制

成本公式 = 调用次数 x 平均 Token 数 x 单价

实际案例(邮件摘要工作流,每天 50 封邮件):
- 输入:平均 500 tokens/封
- 输出:平均 200 tokens/封
- 模型:gpt-4o-mini($0.15/1M input, $0.60/1M output)
- 日成本:50 x (500 x 0.00000015 + 200 x 0.0000006) = $0.01
- 月成本:约 $0.30

6.3 容错设计

  • 在 n8n 中为每个 AI 节点添加 Error Handler,失败时发送告警
  • 在 Dify Workflow 中使用条件分支节点处理异常情况
  • API 调用添加重试逻辑(最多 3 次,指数退避)

常见问题

Q1: Dify Docker 启动失败? 检查 Docker 内存分配是否 >= 4GB。运行 docker compose logs 查看具体报错。常见原因是端口 80 被占用,修改 .env 中的 EXPOSE_NGINX_PORT

Q2: n8n 中 OpenAI 节点超时? 在节点设置中增加 Timeout 值(默认 60s,建议设为 120s)。也可以在 Credentials 中配置代理。

Q3: 知识库检索结果不准确? 调整分段长度(过长会引入噪音,过短会丢失上下文),通常 300-800 tokens 为佳。同时检查 Embedding 模型是否支持中文。

Q4: 如何在工作流中使用国产模型? Dify 原生支持通义千问、文心一言、智谱等国产模型。n8n 可以通过 HTTP Request 节点调用任意兼容 OpenAI 格式的 API。

Q5: 工作流执行很慢? 检查是否有串行瓶颈。利用并行节点(Dify Workflow 支持并行分支,n8n 支持 Split In Batches)将独立任务并行执行。


Maurice | maurice_wen@proton.me