跳到主要内容

管理文件

每个 SkillFlaw 服务都自带文件管理系统,你可以把想在流程中使用的文件统一存放在这里。

上传到 SkillFlaw 文件管理中的文件,会存储在 SkillFlaw 的 存储后端(本地或 AWS S3) 中,并且对你所有流程都可用。

把文件上传到 SkillFlaw 文件管理后,文件就有了统一存放位置,也可以在不同流程之间复用,而不必每次都手动重复上传。

使用文件管理界面

你可以通过文件管理界面,把本地文件上传到自己的 SkillFlaw 服务中,也可以集中管理已经上传到服务器上的所有文件。

  1. 进入 SkillFlaw 文件管理:

    • SkillFlaw Desktop:在 SkillFlaw 的 Projects 页面 中,在项目列表下方点击 My Files
    • SkillFlaw OSS:在浏览器中访问你的 SkillFlaw 服务 /files 端点,例如 http://localhost:7860/files。请根据你的实际部署修改基础地址。
    • 仅后端模式:如果你只做程序化文件管理,请直接使用 SkillFlaw API 的文件端点。不过下面的步骤默认你使用的是图形界面。
  2. My Files 页面中点击 Upload

  3. 选择一个或多个文件进行上传。

上传后,你可以在文件管理界面中对文件进行重命名、下载、复制或删除。 若要删除文件,把鼠标悬停在文件图标上并选中它,然后点击 Delete。 你可以一次删除多个文件。 若要下载文件,把鼠标悬停在文件图标上并选中它,然后点击 Download。 如果一次下载多个文件,它们会被打包成 zip 文件保存。

使用 SkillFlaw API 上传和管理文件

通过 SkillFlaw API,你既可以管理 SkillFlaw 文件系统中的文件,也可以在运行时以程序方式把文件发送给流程。

更多说明与示例,请参阅 Files endpoints创建可摄取文件的聊天机器人

设置最大文件大小

默认最大文件大小为 1024 MB。 如果要修改这个值,请调整 SKILLFLAW_MAX_FILE_SIZE_UPLOAD 环境变量

在流程中使用文件

如果要在流程中使用 SkillFlaw 文件管理中的文件,请向流程中添加能够接收文件输入的组件,例如 Read File 组件。

例如,你可以向流程中加入 Read File 组件,点击 Select files,然后从 My Files 列表中选择文件。

该列表会显示服务器文件管理系统中的所有文件,但你只能选择 Read File 组件支持的文件类型。 如果你要用的文件类型不受支持,就必须改用支持该类型的其他组件,或者先把文件转换成支持的格式后再上传。

关于 Read File 与其他数据加载组件,请参阅 Read File 组件

在运行时加载文件

如果你的流程接受文件输入,那么你既可以使用预加载文件,也可以在运行时动态注入文件。 如需在流程中启用文件输入,请执行以下步骤:

  1. 向流程中添加一个 Read File 组件

  2. 点击 Share,选择 API access,然后点击 Input Schema,以便把 tweaks 加入自动生成的请求代码片段中。

  3. 展开 File 区域,找到 Files 行,开启 Expose Input,允许这个参数在运行时通过 SkillFlaw API 动态设置。

  4. 关闭 Input Schema 面板返回 API access。 此时代码片段中的 payload 会包含 tweaks,其中包含你的 Read File 组件 ID 以及刚刚暴露的 path 键:


    _10
    "tweaks": {
    _10
    "File-qYD5w": {
    _10
    "path": []
    _10
    }
    _10
    }

  5. 当你以程序方式运行这个流程时,脚本必须先把文件上传到 SkillFlaw 文件管理,然后把返回的 file_path 传给 /run 请求中的 path tweak:


    _10
    "tweaks": {
    _10
    "FILE_COMPONENT_ID": {
    _10
    "path": [ "file_path" ]
    _10
    }
    _10
    }

    完整示例请参阅 创建可摄取文件的聊天机器人Files endpoints

    如果你要上传多个文件,可以在 path 数组中传多个 file_path,例如 [ "path1", "path2" ]

上传图片

SkillFlaw 支持以下格式的 base64 图片:

  • PNG
  • JPG/JPEG
  • GIF
  • BMP
  • WebP

你既可以在 Playground 聊天界面上传图片,也可以通过 SkillFlaw API 在运行时传入图片。

  • Playground 中,你可以直接把图片拖到聊天输入区域,或点击 Attach image 图标选择图片上传。

  • 当你通过 /api/v1/run/$FLOW_ID 触发流程时,可以用 files 参数传入 base64 编码的图片数据:


    _10
    curl -X POST "http://$SKILLFLAW_SERVER_ADDRESS/api/v1/run/$FLOW_ID" \
    _10
    -H "Content-Type: application/json" \
    _10
    -H "x-api-key: $SKILLFLAW_API_KEY" \
    _10
    -d '{
    _10
    "session_id": "custom_session_123",
    _10
    "input_value": "What is in this image?",
    _10
    "input_type": "chat",
    _10
    "output_type": "chat",
    _10
    "files": ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."]
    _10
    }'

如果你需要更专业的图像处理能力,可以查看 [Bundles] 或 自行创建组件

处理视频文件

关于视频,请参阅 Twelve LabsYouTube Bundles

配置文件存储

SkillFlaw 的文件管理支持两种存储后端。

  • 本地存储:SkillFlaw 默认存储后端。文件保存在 SkillFlaw 配置目录 本地。设置 SKILLFLAW_STORAGE_TYPE=local,或者不设置该变量时,就会使用本地存储。

  • S3 存储:文件保存在 AWS S3 bucket 中。 SkillFlaw 通过 boto3 与 S3 交互。

如果要把 S3 作为文件存储后端,请在 .env 中加入以下配置:


_10
# S3 存储配置
_10
SKILLFLAW_STORAGE_TYPE=s3
_10
SKILLFLAW_OBJECT_STORAGE_BUCKET_NAME=S3_BUCKET_NAME
_10
SKILLFLAW_OBJECT_STORAGE_PREFIX=S3_BUCKET_DIRECTORY
_10
_10
# AWS 凭据(S3 必填)
_10
AWS_ACCESS_KEY_ID=S3_ACCESS_KEY
_10
AWS_SECRET_ACCESS_KEY=S3_ACCESS_SECRET_KEY
_10
AWS_DEFAULT_REGION=S3_REGION

请将这些占位值替换为你的实际 S3 信息:

  • S3_BUCKET_NAME:S3 bucket 名称。
  • S3_BUCKET_DIRECTORY:bucket 内可选目录,例如 s3://S3_BUCKET_NAME/S3_BUCKET_DIRECTORY
  • S3_ACCESS_KEY:AWS Access Key ID。
  • S3_ACCESS_SECRET_KEY:AWS Secret Access Key。
  • S3_REGION:bucket 所在 AWS 区域,例如 us-east-2

你的 AWS 凭据必须具备实际场景所需的权限,例如读取、写入、删除对象等。 下面这个示例策略可提供基本 CRUD 权限:


_20
{
_20
"Version": "2012-10-17",
_20
"Statement": [
_20
{
_20
"Sid": "SkillFlawS3StorageAccess",
_20
"Effect": "Allow",
_20
"Action": [
_20
"s3:PutObject",
_20
"s3:GetObject",
_20
"s3:DeleteObject",
_20
"s3:ListBucket",
_20
"s3:PutObjectTagging"
_20
],
_20
"Resource": [
_20
"arn:aws:s3:::S3_BUCKET_NAME",
_20
"arn:aws:s3:::S3_BUCKET_NAME/S3_BUCKET_DIRECTORY/*"
_20
]
_20
}
_20
]
_20
}

请将下面占位值替换为你自己的实际值:

  • S3_BUCKET_NAME:bucket 名称。
  • S3_BUCKET_DIRECTORY:bucket 内可选目录。

更多 IAM 权限说明,请参阅 AWS 官方文档

Google Drive 存储可通过 Read FileWrite file 组件使用,但不能通过环境变量直接配置。

文件存储环境变量

以下环境变量用于配置 SkillFlaw 文件管理系统的文件存储后端:

变量格式默认值说明
SKILLFLAW_STORAGE_TYPEStringlocal设置文件存储后端。支持 local(文件存储在 SkillFlaw 配置目录)与 s3(文件存储在 AWS S3)。若使用 S3,还必须配置 AWS 凭据与 bucket 信息。
SKILLFLAW_OBJECT_STORAGE_BUCKET_NAMEString未设置S3 bucket 名称。当 SKILLFLAW_STORAGE_TYPE=s3 时必填。
SKILLFLAW_OBJECT_STORAGE_PREFIXString未设置S3 bucket 内可选目录前缀。如果未设置,文件会直接存放在 bucket 根目录。
SKILLFLAW_OBJECT_STORAGE_TAGSJSON object未设置SKILLFLAW_STORAGE_TYPE=s3 时,可为写入对象附加的可选 S3 Tag。对本地存储无效。格式为 JSON 键值映射,例如 {"env": "prod", "owner": "data-team"}

另请参阅