337 lines
8.1 KiB
Markdown
337 lines
8.1 KiB
Markdown
# Langflow
|
||
|
||
Langflow 是一个低代码可视化框架,用于构建 AI 应用。它基于 Python,与任何模型、API 或数据库无关,可轻松构建 RAG 应用、多智能体系统和自定义 AI 工作流。
|
||
|
||
## 功能特点
|
||
|
||
- **可视化流构建器**:拖放界面构建 AI 应用
|
||
- **多模型支持**:支持 OpenAI、Anthropic、Google、HuggingFace 等
|
||
- **RAG 组件**:内置向量数据库和检索支持
|
||
- **自定义组件**:创建您自己的 Python 组件
|
||
- **智能体支持**:构建具有记忆和工具的多智能体系统
|
||
- **实时监控**:跟踪执行并调试流程
|
||
- **API 集成**:用于编程访问的 REST API
|
||
|
||
## 快速开始
|
||
|
||
1. 复制 `.env.example` 到 `.env`:
|
||
|
||
```bash
|
||
copy .env.example .env
|
||
```
|
||
|
||
2. (可选)编辑 `.env` 自定义设置:
|
||
- 为生产环境生成安全的 `LANGFLOW_SECRET_KEY`
|
||
- 设置 `LANGFLOW_AUTO_LOGIN=false` 以要求身份验证
|
||
- 配置超级用户凭证
|
||
- 为 LLM 提供商添加 API 密钥
|
||
|
||
3. 启动 Langflow:
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
4. 等待服务就绪(通常需要 1-2 分钟)
|
||
|
||
5. 访问 Langflow UI:`http://localhost:7860`
|
||
|
||
6. 开始构建您的 AI 应用!
|
||
|
||
## 默认配置
|
||
|
||
| 服务 | 端口 | 说明 |
|
||
| ---------- | ---- | -------------- |
|
||
| Langflow | 7860 | Web UI 和 API |
|
||
| PostgreSQL | 5432 | 数据库(内部) |
|
||
|
||
**默认凭证**(如果启用了身份验证):
|
||
|
||
- 用户名:`langflow`
|
||
- 密码:`langflow`
|
||
|
||
## 环境变量
|
||
|
||
主要环境变量(完整列表请参阅 `.env.example`):
|
||
|
||
| 变量 | 说明 | 默认值 |
|
||
| ----------------------------- | ------------------------------ | ---------- |
|
||
| `LANGFLOW_VERSION` | Langflow 镜像版本 | `1.1.1` |
|
||
| `LANGFLOW_PORT_OVERRIDE` | UI 的主机端口 | `7860` |
|
||
| `POSTGRES_PASSWORD` | 数据库密码 | `langflow` |
|
||
| `LANGFLOW_AUTO_LOGIN` | 自动登录(禁用以启用身份验证) | `true` |
|
||
| `LANGFLOW_SUPERUSER` | 超级用户用户名 | `langflow` |
|
||
| `LANGFLOW_SUPERUSER_PASSWORD` | 超级用户密码 | `langflow` |
|
||
| `LANGFLOW_SECRET_KEY` | 会话密钥 | (空) |
|
||
| `LANGFLOW_COMPONENTS_PATH` | 自定义组件目录 | (空) |
|
||
| `LANGFLOW_LOAD_FLOWS_PATH` | 自动加载流目录 | (空) |
|
||
| `TZ` | 时区 | `UTC` |
|
||
|
||
## 资源需求
|
||
|
||
**最低要求**:
|
||
|
||
- CPU:1 核心
|
||
- 内存:1GB
|
||
- 磁盘:5GB
|
||
|
||
**推荐配置**:
|
||
|
||
- CPU:2+ 核心
|
||
- 内存:2GB+
|
||
- 磁盘:20GB+
|
||
|
||
## 数据卷
|
||
|
||
- `postgres_data`:PostgreSQL 数据库数据
|
||
- `langflow_data`:Langflow 配置、流和日志
|
||
|
||
## 使用 Langflow
|
||
|
||
### 构建您的第一个流
|
||
|
||
1. 访问 UI:`http://localhost:7860`
|
||
2. 点击 "New Flow" 或使用模板
|
||
3. 从侧边栏拖动组件到画布
|
||
4. 通过在端口之间拖动来连接组件
|
||
5. 配置组件参数
|
||
6. 点击 "Run" 测试您的流
|
||
7. 使用 API 或与您的应用集成
|
||
|
||
### 添加 LLM 提供商
|
||
|
||
要使用外部 LLM 提供商,请配置其 API 密钥:
|
||
|
||
1. 在 Langflow UI 中,转到 Settings > Global Variables
|
||
2. 添加您的 API 密钥(例如,`OPENAI_API_KEY`、`ANTHROPIC_API_KEY`)
|
||
3. 在您的流组件中引用这些变量
|
||
|
||
或者,将它们添加到您的 `.env` 文件并重启:
|
||
|
||
```bash
|
||
# LLM API 密钥示例(添加到 .env)
|
||
OPENAI_API_KEY=sk-...
|
||
ANTHROPIC_API_KEY=sk-ant-...
|
||
GOOGLE_API_KEY=...
|
||
```
|
||
|
||
### 自定义组件
|
||
|
||
要添加自定义组件:
|
||
|
||
1. 为您的组件创建一个目录(例如,`./custom_components`)
|
||
2. 更新 `.env`:
|
||
|
||
```bash
|
||
LANGFLOW_COMPONENTS_PATH=/app/langflow/custom_components
|
||
```
|
||
|
||
3. 在 `docker-compose.yaml` 中挂载目录:
|
||
|
||
```yaml
|
||
volumes:
|
||
- ./custom_components:/app/langflow/custom_components
|
||
```
|
||
|
||
4. 重启 Langflow
|
||
|
||
### 自动加载流
|
||
|
||
要在启动时自动加载流:
|
||
|
||
1. 将您的流导出为 JSON 文件
|
||
2. 创建一个目录(例如,`./flows`)
|
||
3. 更新 `.env`:
|
||
|
||
```bash
|
||
LANGFLOW_LOAD_FLOWS_PATH=/app/langflow/flows
|
||
```
|
||
|
||
4. 在 `docker-compose.yaml` 中挂载目录:
|
||
|
||
```yaml
|
||
volumes:
|
||
- ./flows:/app/langflow/flows
|
||
```
|
||
|
||
5. 重启 Langflow
|
||
|
||
## API 使用
|
||
|
||
Langflow 提供 REST API 用于以编程方式运行流。
|
||
|
||
### 获取流 ID
|
||
|
||
1. 在 UI 中打开您的流
|
||
2. 流 ID 在 URL 中:`http://localhost:7860/flow/{flow_id}`
|
||
|
||
### 通过 API 运行流
|
||
|
||
```bash
|
||
curl -X POST http://localhost:7860/api/v1/run/{flow_id} \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"inputs": {
|
||
"input_field": "your input value"
|
||
}
|
||
}'
|
||
```
|
||
|
||
### 使用身份验证
|
||
|
||
如果启用了身份验证,首先获取令牌:
|
||
|
||
```bash
|
||
# 登录
|
||
curl -X POST http://localhost:7860/api/v1/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "langflow",
|
||
"password": "langflow"
|
||
}'
|
||
|
||
# 在后续请求中使用令牌
|
||
curl -X POST http://localhost:7860/api/v1/run/{flow_id} \
|
||
-H "Authorization: Bearer {token}" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"inputs": {
|
||
"input_field": "your input value"
|
||
}
|
||
}'
|
||
```
|
||
|
||
## 生产部署
|
||
|
||
对于生产部署:
|
||
|
||
1. **启用身份验证**:
|
||
|
||
```bash
|
||
LANGFLOW_AUTO_LOGIN=false
|
||
LANGFLOW_SUPERUSER=admin
|
||
LANGFLOW_SUPERUSER_PASSWORD=<强密码>
|
||
```
|
||
|
||
2. **设置密钥**:
|
||
|
||
```bash
|
||
# 生成安全密钥
|
||
python -c "from secrets import token_urlsafe; print(token_urlsafe(32))"
|
||
|
||
# 添加到 .env
|
||
LANGFLOW_SECRET_KEY=<生成的密钥>
|
||
```
|
||
|
||
3. **使用强数据库密码**:
|
||
|
||
```bash
|
||
POSTGRES_PASSWORD=<强密码>
|
||
```
|
||
|
||
4. **启用 SSL/TLS**:使用带有 SSL 证书的反向代理(nginx、traefik)
|
||
|
||
5. **配置资源限制**:根据您的工作负载调整 CPU 和内存限制
|
||
|
||
6. **备份数据库**:定期备份 PostgreSQL 数据卷
|
||
|
||
## 故障排除
|
||
|
||
### Langflow 无法启动
|
||
|
||
- 查看日志:`docker compose logs langflow`
|
||
- 确保 PostgreSQL 健康:`docker compose ps postgres`
|
||
- 验证端口 7860 未被使用
|
||
|
||
### 组件未加载
|
||
|
||
- 检查自定义组件路径是否正确
|
||
- 确保在自定义组件中安装了 Python 依赖项
|
||
- 检查日志中的组件错误
|
||
|
||
### 性能缓慢
|
||
|
||
- 在 `.env` 中增加资源限制
|
||
- 如果内存不足,减少 `LANGFLOW_WORKERS`
|
||
- 优化您的流(减少不必要的组件)
|
||
|
||
### 数据库连接错误
|
||
|
||
- 验证 PostgreSQL 正在运行:`docker compose ps postgres`
|
||
- 检查 `.env` 中的数据库凭证
|
||
- 确保 `LANGFLOW_DATABASE_URL` 正确
|
||
|
||
## 维护
|
||
|
||
### 备份
|
||
|
||
备份数据卷:
|
||
|
||
```bash
|
||
docker compose down
|
||
docker run --rm -v compose-anything_postgres_data:/data -v $(pwd):/backup alpine tar czf /backup/postgres-backup.tar.gz -C /data .
|
||
docker run --rm -v compose-anything_langflow_data:/data -v $(pwd):/backup alpine tar czf /backup/langflow-backup.tar.gz -C /data .
|
||
docker compose up -d
|
||
```
|
||
|
||
### 恢复
|
||
|
||
从备份恢复:
|
||
|
||
```bash
|
||
docker compose down
|
||
docker run --rm -v compose-anything_postgres_data:/data -v $(pwd):/backup alpine sh -c "cd /data && tar xzf /backup/postgres-backup.tar.gz"
|
||
docker run --rm -v compose-anything_langflow_data:/data -v $(pwd):/backup alpine sh -c "cd /data && tar xzf /backup/langflow-backup.tar.gz"
|
||
docker compose up -d
|
||
```
|
||
|
||
### 升级
|
||
|
||
升级 Langflow:
|
||
|
||
1. 在 `.env` 中更新版本:
|
||
|
||
```bash
|
||
LANGFLOW_VERSION=1.2.0
|
||
```
|
||
|
||
2. 拉取新镜像并重启:
|
||
|
||
```bash
|
||
docker compose pull
|
||
docker compose up -d
|
||
```
|
||
|
||
3. 检查发布说明中的重大更改
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
# 查看日志
|
||
docker compose logs -f langflow
|
||
|
||
# 重启 Langflow
|
||
docker compose restart langflow
|
||
|
||
# 访问 PostgreSQL
|
||
docker compose exec postgres psql -U langflow -d langflow
|
||
|
||
# 检查资源使用
|
||
docker stats
|
||
|
||
# 清理
|
||
docker compose down -v # 警告:删除所有数据
|
||
```
|
||
|
||
## 参考资料
|
||
|
||
- [官方文档](https://docs.langflow.org/)
|
||
- [GitHub 仓库](https://github.com/langflow-ai/langflow)
|
||
- [组件文档](https://docs.langflow.org/components/)
|
||
- [API 文档](https://docs.langflow.org/api/)
|
||
- [社区 Discord](https://discord.gg/langflow)
|
||
|
||
## 许可证
|
||
|
||
MIT - 查看 [LICENSE](https://github.com/langflow-ai/langflow/blob/main/LICENSE)
|