1. 项目背景与目标
最近在折腾一个有意思的小项目——用n8n搭建一个"彩虹屁生成器"的AI代理。这个想法源于我平时工作中需要频繁写各种文案,有时候真的需要点创意灵感来活跃气氛。n8n作为一款开源的工作流自动化工具,配合现在强大的AI能力,完全可以实现这个有趣的功能。
这个项目的核心目标很简单:通过n8n搭建一个自动化工作流,接收用户输入的主题或场景,然后调用AI模型生成各种风格夸张、幽默的赞美语句(也就是俗称的"彩虹屁")。虽然看起来是个小玩具,但实际开发过程中涉及到的工作流设计、AI提示词工程、API调用等环节,都是非常实用的技术点。
2. 技术栈选型与准备
2.1 为什么选择n8n?
n8n是一款基于Node.js的开源工作流自动化工具,它有几个特别吸引我的特点:
- 可视化编排:通过拖拽节点就能构建复杂的工作流,不需要写大量代码
- 丰富的节点库:内置了各种常用服务的连接器,包括AI相关的节点
- 自托管能力:可以部署在自己的服务器上,数据更安全
- 扩展性强:支持自定义节点开发,满足特殊需求
对于这个项目来说,n8n的AI Agent节点和Chat Model节点正好能满足我们的需求。
2.2 AI模型的选择
在AI模型方面,我主要考虑了以下几个选项:
- OpenAI系列:GPT-4o或GPT-3.5,生成质量稳定,但需要API Key
- DeepSeek:国内可用,性价比高,中文处理能力强
- 本地模型:通过Ollama运行Mistral或Llama3等开源模型,数据更私密
经过测试,我发现对于"彩虹屁"这种需要创意和幽默感的任务,GPT-4o的表现最好,DeepSeek也不错,而本地模型虽然隐私性好,但生成的内容往往不够生动。
2.3 其他工具准备
- Trae:字节跳动的AI IDE,用于调试和测试AI提示词
- 飞书开放平台:如果需要将生成结果发送到飞书,可以用它的API
- Postman:用于测试API调用
3. n8n安装与基础配置
3.1 安装n8n
n8n的安装非常简单,有以下几种方式:
- Docker安装(推荐):
bash复制docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
- npm安装:
bash复制npm install n8n -g
n8n
- 直接下载可执行文件:从GitHub Releases页面下载对应平台的版本
安装完成后,访问http://localhost:5678就能看到n8n的界面了。
3.2 初始设置
第一次使用时,建议进行以下配置:
- 设置管理员账号:在config文件中配置或首次登录时设置
- 配置数据库:默认使用SQLite,生产环境建议换成PostgreSQL
- 设置Webhook URL:如果需要从外部触发工作流
- 配置SMTP:用于发送通知邮件
提示:如果是生产环境使用,务必配置HTTPS和适当的访问控制,n8n默认没有身份验证。
4. 构建彩虹屁生成器工作流
4.1 工作流设计思路
整个工作流的逻辑很简单:
- 接收用户输入(通过聊天界面或API)
- 将输入传递给AI Agent
- AI Agent根据预设的提示词生成彩虹屁
- 返回生成结果给用户
用节点表示就是:
code复制Chat Trigger → AI Agent → 输出响应
↓
Chat Model
4.2 详细配置步骤
4.2.1 创建新工作流
- 登录n8n后,点击"Workflows" → "Add workflow"
- 给工作流起个名字,比如"彩虹屁生成器"
4.2.2 添加Chat Trigger节点
- 点击"+"按钮添加节点
- 搜索"Chat Trigger"并选择
- 配置节点:
- Mode: Chat
- 其他保持默认
这个节点将作为用户输入的入口。
4.2.3 添加AI Agent节点
- 从Chat Trigger节点的输出拖拽到空白处,选择"AI Agent"
- 配置AI Agent节点:
System Message(核心配置):
code复制你是一个专业的"彩虹屁生成器"AI助手。
你的任务是根据用户提供的主题或场景,生成富有创意、幽默、夸张的赞美语句(俗称"彩虹屁")。
## 角色设定
- 你是一个热情洋溢、语言风趣的赞美大师
- 善于运用比喻、夸张、排比等修辞手法
- 语言风格:温暖、幽默、略带夸张但不失真诚
## 输出规则
1. 每次生成3-5条不同风格的彩虹屁
2. 每条彩虹屁用序号标注
3. 可以根据用户指定的风格调整(如:文艺风、搞笑风、职场风等)
4. 如果用户没有提供主题,随机选择一个常见场景
## 示例输出格式
为您生成专属彩虹屁:
1. 【文艺风】你的存在就像清晨的第一缕阳光,温暖而不刺眼,照亮了整个世界。
2. 【搞笑风】你的智商高到连爱因斯坦都要从棺材里爬出来给你点赞!
3. 【职场风】你的工作效率简直是开了挂,老板看到你都觉得自己的公司要上市了!
请开始你的表演吧!
4.2.4 配置AI模型子节点
AI Agent需要连接一个实际的AI模型,这里以OpenAI为例:
- 在AI Agent节点下方点击"+"添加子节点
- 搜索"OpenAI Chat Model"并选择
- 配置节点:
- 创建新的OpenAI凭证,输入你的API Key
- Model: gpt-4o 或 gpt-3.5-turbo
- Temperature: 0.8(增加创意性)
- Max Tokens: 500
4.2.5 添加输出节点
最后,我们需要把生成的结果返回给用户:
- 从AI Agent节点的输出拖拽到空白处,选择"HTTP Request"
- 配置节点:
- Method: POST
- URL: 你的接收端地址(如果是聊天界面可以跳过)
- 在"Response"部分选择"Respond to Webhook"
5. 高级功能与优化
5.1 添加记忆功能
为了让AI能记住对话上下文,可以添加记忆节点:
- 在AI Agent节点下方点击"+"添加子节点
- 搜索"Window Buffer Memory"并选择
- 配置节点:
- Memory Key: chat_history
- Input Key: input
- Output Key: output
- Human Prefix: User
- AI Prefix: AI
- Memory Size: 6(记住最近6轮对话)
这样用户就可以说"再来几条"或"换个风格",AI会根据之前的对话继续生成。
5.2 自定义模板库
如果需要更可控的输出,可以创建自定义模板库:
- 添加一个"Function"节点
- 编写JavaScript代码:
javascript复制const templates = {
"文艺风": [
"你的{主题}如同{比喻},让人{感受}",
"见到你的{主题},仿佛{场景}",
"你的{主题}是{赞美词}的完美诠释"
],
"搞笑风": [
"你的{主题}厉害到连{夸张对象}都自愧不如!",
"如果{主题}有比赛,你肯定是宇宙冠军!",
"你的{主题}已经突破了人类理解的极限!"
],
"职场风": [
"你的{主题}能力让团队效率提升了{百分比}",
"这种{主题}水平,明年升职加薪稳了!",
"你的{主题}是我们部门的标杆!"
]
};
const fillTemplate = (template, theme) => {
// 这里可以添加更复杂的替换逻辑
return template
.replace("{主题}", theme)
.replace("{比喻}", "春天的微风")
.replace("{感受}", "心旷神怡")
.replace("{场景}", "置身仙境")
.replace("{赞美词}", "优雅")
.replace("{夸张对象}", "爱因斯坦")
.replace("{百分比}", "300%");
};
const selectedTemplates = templates[input.style] || templates["文艺风"];
const results = selectedTemplates.map(t => fillTemplate(t, input.theme));
return {
json: {
results: results.map((r, i) => `${i+1}. ${r}`)
}
};
- 将这个节点的输出连接到AI Agent的输入
5.3 多平台集成
生成的彩虹屁可以发送到各种平台:
-
飞书机器人:
- 添加"Feishu"节点
- 配置机器人Webhook
- 将生成结果发送到指定聊天群
-
微信公众号:
- 添加"HTTP Request"节点
- 调用微信公众平台API
- 将彩虹屁作为图文消息发送
-
邮件发送:
- 添加"Email"节点
- 配置SMTP
- 将生成结果作为邮件内容发送
6. 测试与调试
6.1 基础测试
- 点击右上角的"Execute Workflow"按钮
- 在Chat界面输入测试内容,比如:
- "夸夸我的代码"
- "给老板写几句彩虹屁"
- "用搞笑风格夸我的猫"
- 检查输出是否符合预期
6.2 常见问题排查
-
AI不按格式输出:
- 检查System Message是否明确规定了输出格式
- 降低Temperature值(比如从0.8降到0.6)
- 在提示词中增加更具体的示例
-
响应速度慢:
- 换用更轻量的模型(如gpt-3.5-turbo)
- 减少Max Tokens值
- 检查网络连接
-
内容不够有趣:
- 提高Temperature值(最高到1.0)
- 在提示词中强调"幽默"、"夸张"等要求
- 提供更多示例风格
6.3 性能优化建议
-
缓存机制:
- 对常见主题的生成结果进行缓存
- 添加"Cache"节点存储历史生成内容
-
批量处理:
- 支持一次生成多个主题的彩虹屁
- 使用"Split In Batches"节点并行处理
-
限流控制:
- 添加"Rate Limit"节点防止API被过度调用
- 设置合理的并发限制
7. 实际应用场景
虽然这个项目看起来像是个玩具,但其实有很多实际应用场景:
-
社交媒体运营:
- 自动生成有趣的互动内容
- 增加粉丝参与度
-
团队建设:
- 在内部群组中发送同事间的趣味赞美
- 活跃团队气氛
-
客户服务:
- 在客户完成购买或留下好评后发送创意感谢
- 提升客户体验
-
内容创作:
- 为文章或视频生成创意开头或结尾
- 提供写作灵感
8. 安全与隐私考虑
在使用这类AI工具时,需要注意以下几点:
-
数据隐私:
- 敏感信息不要通过公开API发送
- 考虑使用本地模型处理私密数据
-
内容审核:
- 添加内容过滤节点
- 避免生成不当内容
-
API安全:
- 保护好API密钥
- 设置使用限额
-
用户权限:
- 控制谁可以访问工作流
- 记录操作日志
9. 扩展思路
这个基础框架可以扩展出更多有趣的功能:
-
多语言支持:
- 添加翻译节点
- 支持生成英文、日文等版本的彩虹屁
-
情感分析:
- 先分析输入文本的情感倾向
- 根据情绪调整生成风格
-
个性化学习:
- 记录用户喜欢的风格
- 逐渐优化生成结果
-
多媒体输出:
- 结合DALL·E生成配图
- 输出图文并茂的彩虹屁
10. 经验总结
在开发这个项目的过程中,我总结了一些关键经验:
-
提示词工程很重要:
- 好的System Message能显著改善输出质量
- 示例比描述更有效
-
温度参数很关键:
- 对于创意任务,0.7-0.9的Temperature效果最好
- 太低会太死板,太高会太离谱
-
工作流要模块化:
- 每个节点只做一件事
- 方便后期维护和扩展
-
测试要全面:
- 覆盖各种输入情况
- 特别是边界案例
这个项目虽然不大,但涵盖了从工具安装、工作流设计、AI集成到优化调试的完整流程,对于想学习n8n和AI应用开发的朋友来说是个很好的练手项目。