使用 n8n 和 OpenRouter 构建 AI 驱动的 CRM 聊天助手

发布: (2026年3月10日 GMT+8 18:50)
4 分钟阅读
原文: Dev.to

Source: Dev.to

技术栈

  • n8n – 自托管工作流自动化
  • OpenRouter – AI 模型 API 网关
  • CRM – 任意具备 REST API 的 CRM
  • Docker – 容器运行时
  • Claude Sonnet 4.6(通过 OpenRouter) – 为代理提供动力的 LLM

架构

[Employee] → n8n Chat UI → [AI Agent (Claude via OpenRouter)]
                                ├── Tool: Search API
                                └── Tool: Search API

                                 [CRM API]

                        [AI generates response in Japanese]

                          [Employee receives answer]

关键思路是让 AI 代理根据用户的自然语言查询决定调用哪个 CRM API

第 1 步 — 使用 Docker 运行 n8n

在本地启动 n8n 只需一条命令:

docker run -d \
  --name n8n \
  --restart always \
  -p 5678:5678 \
  -e WEBHOOK_URL=http://YOUR_IP:5678/ \
  -e N8N_EDITOR_BASE_URL=http://YOUR_IP:5678/ \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n

关键收获

  • 认证方式已更改 – 旧指南中提到的 N8N_BASIC_AUTH_* 已废弃。n8n 现在在首次启动时通过网页 UI 使用基于邮箱的账户设置。
  • 局域网访问需要正确的环境变量 – 若未设置 WEBHOOK_URLN8N_EDITOR_BASE_URL,聊天 UI 可能会调用 localhost,导致其他网络用户出现 CORS 错误。

第 2 步 — 构建 AI 代理

与下面这种简单流水线不同:

Chat → HTTP Request → AI

我实现了一个 具备工具的 AI 代理,让 LLM 自主选择正确的 CRM 端点

工作流结构:

Chat Trigger → AI Agent
                ├── Tool: search
                └── Tool: search

每个工具调用特定的 CRM 端点。动态查询示例:

{{ $json.query }}

第 3 步 — 系统提示(最关键的部分)

系统提示 决定了代理的可靠性。请仔细编写,以:

  • 定义代理的角色和能力。
  • 列出可用工具及其预期的输入/输出。
  • 设置防护措施(例如,“绝不要在未进行摘要的情况下返回原始数据”。)

(为简洁起见,具体提示文本已省略。)

第 4 步 — 在局域网共享

获取本机 IP 地址:

ipconfig getifaddr en0

将聊天链接分享给团队成员:

http://YOUR_IP:5678/webhook/xxxxx/chat

为安全起见启用 Basic Auth。

挑战与经验教训

Token 限制爆炸

对 CRM 进行无过滤查询会返回整个数据集,导致 超过 800 万 token

解决方案

  • 强制使用搜索条件。
  • 阻止空查询。

成本

组件成本
n8n(自托管)$0
OpenRouter(Claude Sonnet)~ $26 / 月
基础设施$0

支持大约 10 位用户 × 每日 5 次查询

结论

使用 n8n + OpenRouter,我在 不到一天的时间 内构建了可用的 AI CRM 助手。
最大收获是:系统提示的设计至关重要。有了合适的防护措施,你可以将任何基于 API 的系统转变为 自然语言接口

0 浏览
Back to Blog

相关文章

阅读更多 »

LLMs 可能会让人感到疲惫

有些日子,我在与 Claude 或 Codex 进行了一场痛苦的 4‑5 小时会话后上床,想知道到底发生了什么。很容易把责任归咎于模型——有些……