摘要
随着人工智能技术的快速发展,将AI能力集成到业务流程中已成为提升效率和智能化水平的重要途径。n8n作为一个强大的工作流自动化平台,提供了丰富的AI集成能力,支持多种主流AI模型和服务。本文将详细介绍如何在n8n中使用AI节点构建智能工作流,包括OpenAI、Anthropic Claude等大语言模型的集成,以及如何创建AI代理工作流。
正文
1. n8n中的AI能力概述
n8n原生支持多种AI服务和模型的集成,使其成为一个强大的AI工作流平台。通过内置的AI节点,用户可以轻松地将AI能力嵌入到各种业务流程中。
1.1 支持的AI服务
n8n支持与以下AI服务和模型集成:
- OpenAI(GPT系列模型)
- Anthropic Claude
- Google Vertex AI
- Hugging Face
- Azure OpenAI
- Amazon Bedrock
- 以及其他自定义AI服务
1.2 AI节点类型
n8n提供了多种AI相关的节点:
- AI Language Model:与大语言模型交互
- AI Agent:创建AI代理执行复杂任务
- AI Chain:构建AI处理链
- AI Memory:管理对话历史和上下文
- AI Tool:为AI代理提供特定功能工具
- AI Embeddings:生成文本向量表示
- AI Vector Store:存储和检索向量数据
- AI Document Loader:加载和处理文档
2. 配置OpenAI集成
让我们从最常见的OpenAI集成开始,了解如何在n8n中配置和使用AI服务。
2.1 获取OpenAI API密钥
- 访问 OpenAI平台
- 注册账号并登录
- 进入API Keys页面创建新的密钥
- 保存密钥以备后用
2.2 在n8n中配置OpenAI凭证
- 在n8n界面中,点击左侧的"Credentials"图标
- 点击"Add Credential"按钮
- 搜索并选择"OpenAI"凭证类型
- 输入API密钥并保存
2.3 使用OpenAI节点
创建一个简单的工作流来测试OpenAI集成:
- 添加"Manual Trigger"节点作为触发器
- 添加"OpenAI Chat Model"节点
- 配置节点参数:
- 选择之前创建的OpenAI凭证
- 设置模型为"gpt-3.5-turbo"或"gpt-4"
- 在Messages中添加系统消息和用户消息
示例配置:
{
"messages": [
{
"role": "system",
"content": "你是一个乐于助人的AI助手,请用中文回答问题。"
},
{
"role": "user",
"content": "请为我写一首关于秋天的诗。"
}
]
}
3. 构建AI代理工作流
AI代理是n8n中一个强大的功能,它允许你创建能够执行复杂任务的智能代理。
3.1 创建基础AI代理
- 添加"Manual Chat Trigger"节点作为聊天触发器
- 添加"AI Agent"节点
- 添加"AI Tool Calculator"节点作为计算工具
- 连接节点:Manual Chat Trigger → AI Agent → AI Tool Calculator
3.2 配置AI代理参数
在AI Agent节点中配置以下参数:
- Agent: “Conversational Agent”
- Text: “{{$input[0].json.text}}”
- Has Output Parser: false
3.3 添加语言模型
为AI代理添加OpenAI语言模型:
- 在AI Agent节点中添加"AI Language Model"连接
- 选择之前配置的OpenAI凭证
- 选择合适的模型(如gpt-3.5-turbo)
3.4 测试AI代理
- 点击"Execute Workflow"按钮
- 在弹出的聊天界面中输入问题,如"请计算123乘以456等于多少?"
- AI代理会自动使用计算器工具来完成计算并返回结果
4. 实践案例:智能客服系统
让我们构建一个更复杂的AI应用:智能客服系统,它可以回答常见问题并处理订单查询。
4.1 系统架构设计
4.2 实现FAQ问答模块
- 添加"HTTP Request Trigger"节点接收用户问题
- 添加"Function"节点预处理问题:
// 预处理用户问题
const userQuestion = items[0].json.question;
// 简单的关键词匹配分类
const faqKeywords = ['产品', '价格', '使用', '功能', '帮助'];
const orderKeywords = ['订单', '购买', '发货', '物流', '退款'];
let category = 'faq';
if (orderKeywords.some(keyword => userQuestion.includes(keyword))) {
category = 'order';
} else if (userQuestion.includes('人工') || userQuestion.includes('客服')) {
category = 'human';
}
return [{
json: {
question: userQuestion,
category: category,
userId: items[0].json.userId || 'anonymous'
}
}];
- 添加"Switch"节点根据分类路由到不同模块
- 在FAQ分支添加"OpenAI Chat Model"节点处理问答:
// 构建发送给OpenAI的消息
const question = items[0].json.question;
return [{
json: {
messages: [
{
role: "system",
content: "你是一个智能客服助手,请用中文回答用户问题。只回答与公司产品和服务相关的问题。"
},
{
role: "user",
content: `用户问题:${question}`
}
]
}
}];
4.3 实现订单查询模块
- 添加"Postgres"节点查询订单信息
- 添加"OpenAI Embeddings"节点生成问题向量
- 添加"Postgres PGVector Store"节点进行相似度搜索
- 添加"Function"节点格式化响应:
// 格式化订单查询结果
const orderInfo = items[0].json;
const question = items[0].json.originalQuestion;
return [{
json: {
response: `关于您的问题"${question}",我找到了以下订单信息:
订单号:${orderInfo.orderId}
产品:${orderInfo.productName}
状态:${orderInfo.status}
下单时间:${new Date(orderInfo.createdAt).toLocaleString('zh-CN')}
金额:${orderInfo.amount}元
如有其他问题,请随时询问。`,
type: "order_info"
}
}];
5. AI工作流最佳实践
5.1 提示工程(Prompt Engineering)
良好的提示是获得高质量AI输出的关键:
# 示例:优化提示词
def create_optimized_prompt(user_input, context=None):
"""
创建优化的提示词
Args:
user_input (str): 用户输入
context (dict): 上下文信息
Returns:
str: 优化后的提示词
"""
prompt = f"""
你是一个专业的客服助手,请按照以下要求回答用户问题:
1. 使用中文回答
2. 回答要准确、简洁
3. 如果不确定答案,请说明并建议用户联系人工客服
4. 不要编造信息
用户问题:{user_input}
"""
if context:
prompt += f"上下文信息:{context}\n\n"
prompt += "请回答:"
return prompt
# 使用示例
optimized_prompt = create_optimized_prompt("产品价格是多少?", {"product_id": "12345"})
print(optimized_prompt)
5.2 错误处理和重试机制
在AI工作流中,需要考虑API调用失败的情况:
import time
import openai
from typing import Optional
def call_ai_with_retry(prompt: str, max_retries: int = 3) -> Optional[str]:
"""
带重试机制的AI调用函数
Args:
prompt (str): 提示词
max_retries (int): 最大重试次数
Returns:
Optional[str]: AI生成的文本,失败时返回None
"""
for attempt in range(max_retries):
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
except Exception as e:
print(f"第{attempt + 1}次尝试失败: {e}")
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # 指数退避
else:
print("所有重试都失败了")
return None
# 使用示例
result = call_ai_with_retry("请写一篇关于AI的文章")
if result:
print(result)
else:
print("AI调用失败")
5.3 成本控制
使用AI服务时需要注意成本控制:
- 选择合适的模型(如gpt-3.5-turbo vs gpt-4)
- 合理设置max_tokens参数
- 缓存常见问题的答案
- 监控API使用量和费用
6. 高级AI功能
6.1 使用AI内存管理对话历史
在多轮对话中,保持上下文非常重要:
- 添加"AI Memory"节点(如Buffer Memory)
- 将其连接到AI Agent节点
- 配置会话ID以区分不同用户
6.2 自定义AI工具
创建自定义工具扩展AI代理的能力:
// 示例:创建天气查询工具
// 在n8n的Function节点中实现
return [{
json: {
name: "get_weather",
description: "获取指定城市的天气信息",
parameters: {
type: "object",
properties: {
city: {
type: "string",
description: "城市名称"
}
},
required: ["city"]
}
}
}];
6.3 AI文档处理
使用AI处理文档内容:
- 添加"AI Document Loader"节点加载PDF或文本文件
- 添加"AI Text Splitter"节点分割长文档
- 添加"AI Embeddings"节点生成向量表示
- 添加"AI Vector Store"节点存储向量数据
7. 注意事项和限制
7.1 数据隐私和安全
- 敏感数据不应发送给第三方AI服务
- 遵守相关数据保护法规(如GDPR)
- 在企业环境中考虑使用本地AI模型
7.2 AI输出的可靠性
- AI输出可能存在错误或不准确
- 重要决策不应完全依赖AI输出
- 需要人工审核关键信息
7.3 性能考虑
- AI API调用可能有延迟
- 大量并发请求可能导致成本增加
- 需要适当的错误处理和超时机制
总结
n8n提供了强大的AI集成能力,使开发者能够轻松构建智能自动化工作流。通过本文的介绍,你应该已经掌握了:
- n8n中AI节点的基本使用方法
- 如何配置和使用OpenAI等AI服务
- 如何构建AI代理工作流
- 一个完整的智能客服系统实现案例
- AI工作流的最佳实践和注意事项
通过将AI能力集成到n8n工作流中,你可以创建更加智能和高效的自动化解决方案。在后续的博客中,我们将深入探讨更多高级AI应用场景,如知识库问答系统、智能文档处理等。
1006






