AI 平台与自动化
AI 平台和自动化工具帮助你快速构建 AI 应用、搭建自动化工作流,将大语言模型的能力集成到实际业务中。本文将介绍 Dify、n8n 和 LangChain/LangGraph 在 Ubuntu 26.04 上的部署与使用。
Dify
Dify 是一个开源的 LLM 应用开发平台,提供可视化的 Prompt 编排、RAG(检索增强生成)、Agent 工作流等功能,支持多种模型提供商。
系统要求
- Docker 和 Docker Compose
- 至少 4GB 内存
- 至少 20GB 磁盘空间
Docker Compose 部署
# 安装 Docker(如果尚未安装)
sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER
newgrp docker
# 克隆 Dify 仓库
git clone https://github.com/langgenius/dify.git
cd dify/docker
# 复制环境变量配置文件
cp .env.example .env
# 编辑配置文件(按需修改)
nano .env关键配置项:
# .env 文件中的重要配置
# 密钥(务必修改为随机值)
SECRET_KEY=your-random-secret-key-here
# 数据库配置
DB_USERNAME=postgres
DB_PASSWORD=your-secure-password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify
# Redis 配置
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=your-redis-password
# 存储配置
STORAGE_TYPE=local
STORAGE_LOCAL_PATH=storage
# Web 配置
WEB_API_URL=http://localhost/api# 启动 Dify
docker compose up -d
# 查看启动状态
docker compose ps
# 查看日志
docker compose logs -f
# 等待所有服务启动完成(约 1-2 分钟)访问 Dify
# Dify Web 界面默认端口为 80
# 打开浏览器访问
# http://localhost
# 首次访问需要设置管理员账号
# 设置邮箱和密码后即可登录基本使用
Dify 的主要功能模块:
-
应用(Apps) — 创建和管理 AI 应用
- 对话助手 — 构建聊天机器人
- 文本生成 — 创建文本生成应用
- Agent — 创建自主 AI 代理
- 工作流 — 可视化编排复杂的 AI 流程
-
知识库(Knowledge) — RAG 功能
- 上传文档(PDF、Word、Markdown 等)
- 自动分段和向量化
- 在对话中引用知识库内容
-
模型提供商(Model Providers) — 配置 AI 模型
配置模型提供商
在 Dify 设置中添加模型:
# 连接 OpenAI
# Settings > Model Providers > OpenAI > 输入 API Key
# 连接 Anthropic (Claude)
# Settings > Model Providers > Anthropic > 输入 API Key
# 连接本地 Ollama
# Settings > Model Providers > Ollama
# 模型名称: qwen2.5:14b
# Base URL: http://host.docker.internal:11434
# (Docker 环境中使用 host.docker.internal 访问宿主机)如果 Ollama 在宿主机上运行,需要配置允许 Docker 容器访问:
# 修改 Ollama 监听地址
sudo systemctl edit ollama
# 添加:
# [Service]
# Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl restart ollama更新 Dify
cd ~/dify/docker
# 拉取最新代码
git pull origin main
# 更新镜像并重启
docker compose pull
docker compose down
docker compose up -d备份数据
# 备份 Dify 数据(数据库和存储)
cd ~/dify/docker
# 停止服务
docker compose down
# 备份数据卷
sudo tar -czf ~/dify-backup-$(date +%Y%m%d).tar.gz \
./volumes/
# 重启服务
docker compose up -dDify 支持通过 API 调用你创建的应用。在应用设置中可以获取 API 密钥和调用示例。这意味着你可以用 Dify 可视化地构建 AI 应用,然后通过 API 集成到自己的产品中。
n8n
n8n 是一款强大的可视化工作流自动化工具,支持数百个集成节点,包括 AI 相关节点(OpenAI、Ollama、向量数据库等),可以轻松构建 AI 自动化工作流。
安装 n8n
方法一:Docker 安装(推荐)
# 创建数据目录
mkdir -p ~/.n8n
# 使用 Docker 运行 n8n
docker run -d \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
-e N8N_SECURE_COOKIE=false \
--restart always \
n8nio/n8n方法二:Docker Compose 安装
mkdir -p ~/n8n && cd ~/n8n
cat > docker-compose.yml << 'EOF'
services:
n8n:
image: n8nio/n8n
container_name: n8n
ports:
- "5678:5678"
environment:
- N8N_SECURE_COOKIE=false
- GENERIC_TIMEZONE=Asia/Shanghai
volumes:
- n8n_data:/home/node/.n8n
extra_hosts:
- "host.docker.internal:host-gateway"
restart: always
volumes:
n8n_data:
EOF
docker compose up -d方法三:npm 全局安装
# 安装 Node.js
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt install -y nodejs
# 全局安装 n8n
npm install -g n8n
# 启动 n8n
n8n start
# 或在后台运行
n8n start &访问 n8n
# 打开浏览器
# http://localhost:5678
# 首次访问需要创建账号AI 工作流示例
n8n 内置了多个 AI 节点,可以构建强大的 AI 自动化流程。
示例 1:AI 客服自动回复
工作流节点连接:
Webhook 触发 → AI Agent(Claude/GPT) → 知识库检索 → 生成回复 → 发送响应示例 2:文档自动摘要
文件监控 → 读取文件 → AI 摘要生成 → 保存结果 → 邮件通知示例 3:连接本地 Ollama
在 n8n 中配置 Ollama 连接:
- 在工作流中添加 “Ollama Chat Model” 节点
- 创建 Ollama 凭证:
- Base URL:
http://host.docker.internal:11434(Docker 环境) - 或
http://localhost:11434(本地安装)
- Base URL:
- 选择模型(如
qwen2.5:14b)
n8n 中的 AI 节点
| 节点类型 | 用途 |
|---|---|
| AI Agent | 创建自主 AI 代理 |
| OpenAI Chat Model | 连接 OpenAI/兼容 API |
| Ollama Chat Model | 连接本地 Ollama |
| Anthropic Chat Model | 连接 Claude |
| Vector Store | 向量数据库操作 |
| Text Splitter | 文本分割 |
| Embeddings | 文本向量化 |
| Memory | 对话记忆管理 |
| Tool | 自定义 AI 工具 |
创建 AI Agent 工作流
1. 添加 "When chat message received" 触发器
2. 添加 "AI Agent" 节点
3. 连接模型:添加 "Ollama Chat Model" 子节点
4. 添加工具:
- "Calculator" — 数学计算
- "Code" — 执行代码
- "HTTP Request" — 调用 API
- "Wikipedia" — 搜索维基百科
5. 添加记忆:连接 "Window Buffer Memory" 节点
6. 保存并激活工作流n8n 社区版(self-hosted)完全免费,包含所有 AI 节点。n8n Cloud 版提供托管服务和额外功能。对于个人和小团队,自部署版本已经足够强大。
LangChain / LangGraph
LangChain 是构建 LLM 应用的主流开发框架,LangGraph 是其子项目,专注于构建有状态的多步骤 AI 代理工作流。
安装 LangChain
# 创建项目虚拟环境
mkdir -p ~/langchain-project && cd ~/langchain-project
python3 -m venv venv
source venv/bin/activate
# 安装 LangChain 核心包
pip install langchain langchain-core
# 安装模型提供商包
pip install langchain-anthropic # Claude
pip install langchain-openai # OpenAI
pip install langchain-ollama # Ollama(本地模型)
# 安装 LangGraph
pip install langgraph
# 安装常用工具
pip install langchain-community # 社区集成
pip install langchain-chroma # Chroma 向量数据库
pip install langchain-text-splitters # 文本分割LangChain 基础示例
# basic_chain.py
from langchain_ollama import ChatOllama
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# 使用本地 Ollama 模型
llm = ChatOllama(model="qwen2.5:14b", base_url="http://localhost:11434")
# 创建提示模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是一位 Ubuntu Linux 专家,擅长解答系统管理问题。"),
("human", "{question}")
])
# 构建链
chain = prompt | llm | StrOutputParser()
# 调用链
response = chain.invoke({"question": "如何查看 Ubuntu 的磁盘使用情况?"})
print(response)# 运行示例
python basic_chain.pyRAG 示例(检索增强生成)
# rag_example.py
from langchain_ollama import ChatOllama, OllamaEmbeddings
from langchain_chroma import Chroma
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
# 1. 准备文档
documents = [
"Ubuntu 26.04 LTS 代号 Resolute Raccoon,计划于 2026 年 4 月 23 日发布。",
"Ubuntu 使用 APT 作为包管理器,可以通过 apt install 安装软件。",
"Ubuntu 的默认桌面环境是 GNOME,也支持 KDE、XFCE 等。",
"Ubuntu Server 版本不包含图形界面,适合服务器部署。",
]
# 2. 文本分割
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=200, chunk_overlap=50
)
splits = text_splitter.create_documents(documents)
# 3. 创建向量数据库
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(splits, embeddings)
retriever = vectorstore.as_retriever()
# 4. 构建 RAG 链
llm = ChatOllama(model="qwen2.5:14b")
prompt = ChatPromptTemplate.from_template("""
根据以下上下文回答问题。如果上下文中没有答案,请说不知道。
上下文: {context}
问题: {question}
""")
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
# 5. 查询
result = rag_chain.invoke("Ubuntu 26.04 的代号是什么?")
print(result)# 安装额外依赖并运行
pip install chromadb
python rag_example.pyLangGraph Agent 示例
# agent_example.py
from langchain_ollama import ChatOllama
from langgraph.prebuilt import create_react_agent
from langchain_core.tools import tool
# 定义工具
@tool
def search_docs(query: str) -> str:
"""搜索 Ubuntu 文档获取信息"""
docs = {
"apt": "APT 是 Ubuntu 的包管理工具,使用 apt install 安装软件",
"systemd": "systemd 是 Ubuntu 的服务管理系统,使用 systemctl 管理服务",
}
for key, value in docs.items():
if key in query.lower():
return value
return "未找到相关文档"
@tool
def run_command(command: str) -> str:
"""模拟运行 Linux 命令并返回结果"""
return f"命令 '{command}' 已执行(模拟)"
# 创建 Agent
llm = ChatOllama(model="qwen2.5:14b")
agent = create_react_agent(llm, [search_docs, run_command])
# 运行 Agent
result = agent.invoke({
"messages": [{"role": "user", "content": "如何在 Ubuntu 上安装 nginx?"}]
})
for message in result["messages"]:
print(f"[{message.type}]: {message.content}")LangSmith 调试(可选)
# LangSmith 提供 LangChain 应用的可视化调试和监控
# 注册 https://smith.langchain.com 获取 API 密钥
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="your-langsmith-api-key"
export LANGCHAIN_PROJECT="my-ubuntu-project"
# 之后运行的 LangChain 代码会自动上报调用链数据到 LangSmithLangChain 的生态非常庞大,新手建议从简单的 Chain 开始学习,然后逐步过渡到 RAG 和 Agent。LangGraph 适合构建复杂的多步骤代理,如果只需要简单的对话应用,使用 LangChain 的基础 Chain 就足够了。
平台对比
| 特性 | Dify | n8n | LangChain |
|---|---|---|---|
| 类型 | 可视化平台 | 工作流自动化 | 开发框架 |
| 使用方式 | Web 界面 | Web 界面 | Python 代码 |
| 学习曲线 | 低 | 中等 | 较高 |
| 灵活性 | 中等 | 高 | 极高 |
| RAG 支持 | 内置 | 通过节点 | 通过代码 |
| Agent 支持 | 内置 | 通过 AI 节点 | LangGraph |
| 部署方式 | Docker | Docker/npm | pip |
| 适合人群 | 非技术用户 | 自动化爱好者 | 开发者 |
| 开源 | 是 | 是(社区版) | 是 |
选择建议
- 想快速构建 AI 应用、不想写代码 → 选择 Dify
- 需要将 AI 集成到自动化工作流中 → 选择 n8n
- 需要完全自定义的 AI 应用、熟悉 Python → 选择 LangChain/LangGraph
- 可以组合使用:用 Dify 快速原型,用 n8n 做自动化调度,用 LangChain 开发核心逻辑