Seafile AI 扩展

从 Seafile 13 开始,用户可以启用 Seafile AI,支持以下功能:
  • 文件标签、文件和图片摘要、文本翻译、SDoc 写作辅助
  • 根据图片生成对应标签(包括对象、天气、颜色等)
  • 检测图片中的人脸并进行编码
  • 检测图片中的文本(OCR)
Seafile 中的 AIGC 声明
借助大语言模型、面部识别模型和算法开发,Seafile AI 支持图像识别和文本生成。 生成的内容具有多样性和随机性,用户需要自行判断生成内容的可靠性。 Seafile 对 AI 生成内容(AIGC)不承担责任。
同时,Seafile AI 支持使用自定义 LLM 和面部识别模型。不同的大语言模型对 AIGC 的影响不同(包括功能和性能),因此 Seafile 不对以下内容负责: 1. 生成速度(tokens/s); 2. Token 消耗; 3. 生成内容。 包括但不限于:
1. 基础模型(包括模型基础算法)
2. 参数数量
3. 量化等级
当用户使用自己的 OpenAI 兼容 API LLM 服务(如 LM Studio、Ollama)并使用自裁剪或删减模型时,Seafile 不对可能出现的错误负责(如无限循环输出无意义内容)。 同时,Seafile 不建议使用 SeaDoc 等文档来评估删减模型的性能。
部署 Seafile AI 基础服务
在主机上与 Seafile 一起部署 Seafile AI
Seafile AI 基础服务通过 API 调用外部大语言模型服务,实现以下功能: 文件标签、 文件和图片摘要、 文本翻译和 SDoc 写作辅助
Seafile AI 需要使用 Redis 作为缓存。 .env 文件中设置: CACHE_PROVIDER=redis 并正确配置 Redis 相关信息。
1. 下载 Seafile AI Docker Compose 文件
            
                
                
wget https://manual.seafile.com/13.0/repo/docker/seafile-ai.yml
2. 修改 .env 文件
插入或修改以下字段:
如果使用 gpt-4o-mini 模型:
            
                
                
# 添加 seafile-ai.yml
COMPOSE_FILE='...,seafile-ai.yml'
ENABLE_SEAFILE_AI=true
# OpenAI LLM 访问密钥
SEAFILE_AI_LLM_KEY=****
如果使用其他模型:
            
                
                
# add seafile-ai.yml
COMPOSE_FILE='...,seafile-ai.yml'

ENABLE_SEAFILE_AI=true
SEAFILE_AI_LLM_TYPE=other
# your LLM API endpoint
SEAFILE_AI_LLM_URL=https://api.openai.com
# LLM 访问密钥
SEAFILE_AI_LLM_KEY=*******
# your model id
SEAFILE_AI_LLM_MODEL=gpt-4o-mini
关于使用 自定义模型
Seafile AI 支持使用自定义大模型,但必须满足以下条件:
1. 支持 OpenAI 兼容的 API
2. 大模型支持多模态(例如支持图像等)
3. 重启 Seafile 服务器
            
                
                
docker compose down
docker compose up -d
在另一台主机部署 Seafile AI
1. 下载 Seafile AI Docker Compose 文件和环境配置
            
                
                
wget https://manual.seafile.com/13.0/repo/docker/seafile-ai/seafile-ai.yml
wget -O .env https://manual.seafile.com/13.0/repo/docker/seafile-ai/env
2. 修改 .env 文件
根据下表配置相关字段:
变量
描述
SEAFILE_VOLUME
Seafile AI 服务数据的卷目录
JWT_PRIVATE_KEY
JWT 密钥,与 Seafile .env 文件中的配置相同
INNER_SEAHUB_SERVICE_URL
内网访问 Seahub 组件的 URL,例如 http://<你的 Seafile 服务器内网 IP>
REDIS_HOST
Redis 服务器地址
REDIS_PORT
Redis 服务器端口
REDIS_PASSWORD
Redis 服务器密码
SEAFILE_AI_LLM_TYPE
大语言模型类型。 openai (默认)使用 OpenAI 的 gpt-4o-mini 模型, other 用于用户自定义的多模态模型
SEAFILE_AI_LLM_URL
LLM API 接口地址,仅当 SEAFILE_AI_LLM_TYPE=other 时需要指定,默认值为 https://api.openai.com/v1
SEAFILE_AI_LLM_KEY
LLM API 密钥
FACE_EMBEDDING_SERVICE_URL
人脸嵌入服务的 URL
SEAFILE_AI_LLM_MODEL
LLM 模型 ID(或名称),仅当 SEAFILE_AI_LLM_TYPE=other 时需要指定,默认值为 gpt-4o-mini
3. 启动 Seafile AI 服务器
            
                
                
docker compose up -d
4. 修改部署了 Seafile 的主机的 .env 文件
            
                
                
SEAFILE_AI_SERVER_URL=http://<你的 Seafile AI 主机>:8888
5. 重启 Seafile 服务器
            
                
                
docker compose down && docker compose up -d
部署人脸嵌入服务(可选)
人脸嵌入服务用于检测并编码图像中的人脸,是 Seafile AI 的扩展组件。一般建议在具备 GPU 的机器上部署,并且需要显卡驱动支持 OnnxRuntime(因此也可以在不同于 Seafile AI 基础服务的机器上单独部署)。目前,Seafile AI 人脸嵌入服务仅支持以下两种模式:
  • Nvidia GPU 模式:使用 CUDA 12.4 加速环境(至少需要 Nvidia Geforce 531.18 驱动),并且需要安装 Nvidia Container Toolkit。
  • 纯 CPU 模式。
如果你计划在 GPU 环境中部署人脸嵌入服务,需要确保显卡在加速环境支持范围内(例如支持 CUDA 12.4),并且正确映射到 /dev/dri 目录。因此,在部分情况下,某些云服务器和特定驱动版本下的 WSL 可能不被支持。
1. 下载 Docker Compose 文件
CUDA 模式:
            
                
                
wget -O face-embedding.yml https://manual.seafile.com/13.0/repo/docker/face-embedding/cuda.yml
CPU 模式:
            
                
                
wget -O face-embedding.yml https://manual.seafile.com/13.0/repo/docker/face-embedding/cpu.yml
2. 修改 .env 文件
插入或修改以下字段:
            
                
                
# 添加 face-embedding.yml
COMPOSE_FILE='...,face-embedding.yml'
FACE_EMBEDDING_VOLUME=/opt/face_embedding
3. 重启 Seafile 服务器
            
                
                
docker compose down
docker compose up -d
4. 在资料库设置中启用人脸识别
进入资料库设置,开启人脸识别功能
在与 Seafile AI 基础服务不同的机器上部署人脸嵌入服务
由于人脸嵌入服务可能需要部署在带有 GPU 的主机上,因此它可能无法与 Seafile AI 基础服务部署在同一台机器上。这时,你需要对 Docker Compose 文件进行一些修改,以确保服务能够正常访问。
修改 .yml 文件,删除注释掉的行以暴露服务端口:
            
                
                
services:
     face-embedding:
     ...
     ports:
         - 8886:8886
修改部署了Seafile的机器上的.env文件:
            
                
                
ENABLE_FACE_RECOGNITION=true
修改部署了 Seafile AI 的机器上的 .env 文件:
            
                
                
FACE_EMBEDDING_SERVICE_URL=http://<your face embedding service host>:8886
确保 .env 文件中设置了 JWT_PRIVATE_KEY ,并且与 Seafile 服务器保持一致。
重启 Seafile 服务器:
            
                
                
docker compose down
docker compose up -d
持久化存储卷和模型管理
默认情况下,持久化存储卷路径是 /opt/face_embedding ,它包含两个子目录:
  • /opt/face_embedding/logs :包含人脸嵌入的启动日志和访问日志
  • /opt/face_embedding/models :包含人脸嵌入的模型文件。每次启动时会自动获取最新可用模型,这些模型托管在 Hugging Face 仓库。当然,你也可以手动将自己的模型下载到此目录(如果自动拉取模型失败,也可以手动下载)。
自定义模型服务访问密钥
默认情况下,人脸嵌入服务使用的访问密钥与 Seafile 服务器相同,即 JWT_PRIVATE_KEY 。但出于安全原因,有时需要修改。如果你需要为人脸嵌入自定义访问密钥,可以执行以下步骤:
修改人脸嵌入服务和 Seafile AI 的 .env 文件:
            
                
                
FACE_EMBEDDING_SERVICE_KEY=<your customizing access keys>
重启 Seafile 服务器:
            
                
                
docker compose down
docker compose up -d
高级操作
启用 AI 使用统计
Seafile 支持统计用户的 AI 使用情况(例如消耗了多少 tokens),并支持为用户设置每月 AI 配额。
打开 $SEAFILE_VOLUME/seafile/conf/seahub_settings.py ,并添加 AI 价格信息(即每个 token 的费用):
            
                
                
AI_PRICES = {
     "gpt-4o-mini": { # 将 gpt-4o-mini 替换为你的模型名称
         "input_tokens_1k": 0.0011, # 每 1000 个输入 token 的价格
         "output_tokens_1k": 0.0044 # 每 1000 个输出 token 的价格
     }
}
参考 角色和权限 来指定 monthly_ai_credit_per_user (-1 表示无限制),其单位应与 AI_PRICES 中的保持一致。
组织用户的 monthly_ai_credit_per_user
对于组织团队用户, monthly_ai_credit_per_user 将应用到整个团队。例如,如果 monthly_ai_credit_per_user 设置为 2(比如以美元为单位),团队中有 10 个成员,那么团队的总配额就是:2 × 10 = 20$