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 文件
wgethttps://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
#OpenAILLM访问密钥
SEAFILE_AI_LLM_KEY=****
如果使用其他模型:
#addseafile-ai.yml
COMPOSE_FILE='...,seafile-ai.yml'

ENABLE_SEAFILE_AI=true
SEAFILE_AI_LLM_TYPE=other
#yourLLMAPIendpoint
SEAFILE_AI_LLM_URL=https://api.openai.com
#LLM访问密钥
SEAFILE_AI_LLM_KEY=*******
#yourmodelid
SEAFILE_AI_LLM_MODEL=gpt-4o-mini
关于使用自定义模型
Seafile AI 支持使用自定义大模型,但必须满足以下条件:
1.支持 OpenAI 兼容的 API
2.大模型支持多模态(例如支持图像等)
3.重启 Seafile 服务器
dockercomposedown
dockercomposeup-d
在另一台主机部署 Seafile AI
1.下载 Seafile AI Docker Compose 文件和环境配置
wgethttps://manual.seafile.com/13.0/repo/docker/seafile-ai/seafile-ai.yml
wget-O.envhttps://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 服务器
dockercomposeup-d
4.修改部署了 Seafile 的主机的 .env 文件
SEAFILE_AI_SERVER_URL=http://<你的SeafileAI主机>:8888
5.重启 Seafile 服务器
dockercomposedown&&dockercomposeup-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-Oface-embedding.ymlhttps://manual.seafile.com/13.0/repo/docker/face-embedding/cuda.yml
CPU 模式:
wget-Oface-embedding.ymlhttps://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 服务器
dockercomposedown
dockercomposeup-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://<yourfaceembeddingservicehost>:8886
确保 .env 文件中设置了 JWT_PRIVATE_KEY,并且与 Seafile 服务器保持一致。
重启 Seafile 服务器:
dockercomposedown
dockercomposeup-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=<yourcustomizingaccesskeys>
重启 Seafile 服务器:
dockercomposedown
dockercomposeup-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$