文件类型输入输出

LangStudio中,可以使用文件类型的变量接收和输出文件,通过文档解析节点或Python节点处理文件。

一、开始节点输入

开始节点中,可以定义类型为 File(文件) 的输入变量,用于接收用户上传的文件,并作为工作流的初始输入。

image

  • 支持的文件类型包括:

    • 文档类:PDF, DOCX, PPTX, XLSX, XLS, TXT, MD, CSV, JSONL, HTML, HTM

    • 图片类:JPG, JPEG, PNG, BMP, TIFF

    • 音频类:MP3, WAV, AAC

    • 视频类:MP4, MOV, AVI, MKV, M4V, WMV, FLV, ASF, QT

  • 文件上传方式:在开始节点定义文件类型变量后,在对话面板中单击参数配置,可通过从本地上传输入URL两种方式上传文件。其中,通过输入URL方式上传时,支持类型包括:

    • OSS URI:符合阿里云 OSS 规范的文件存储路径,例如:oss://bucket-name/path/to/file.pdf

    • HTTP/HTTPS链接:可通过公网访问的可下载链接,例如:https://example.com/file.docx

    image

二、文件处理

文件类型的输入可通过文档解析节点以及Python节点2种方式处理。

2.1. 文档解析节点

使用文档解析节点,参见文档解析

2.2. Python节点中自定义使用方式

Python节点中,可以引用文件类型变量作为节点输入,或生成文件类型对象作为节点输出。

说明

File是 LangStudio 中用于表示文件的核心类型,需要通过from langstudio.types import File引入依赖包。

LangStudio中提供了多种方式来构建File类型对象,并上传至用户的OSS存储路径中。

直接构造

直接创建一个 File 对象。这是最基础的构造方式,适用于引用已有文件。

参数

类型

描述

示例值

source_uri

str

必填。文件的原始位置。支持以下格式:

  • HTTP/HTTPS URLhttps://example.com/doc.pdf

  • OSS URIoss://my-bucket/path/file.txt

  • 容器挂载路径下的文件本地路径

"https://files.example.com/report.pdf"

download_url

str, optional

可下载的 HTTP/HTTPS 链接。

  • 若未提供,系统自动生成。

  • 如为 OSS URI,则生成时效7天的预签名链接,若链接过期,可通过File.get_download_url()刷新并获取最新的预签名URL。

"https://oss-cn-beijing.aliyuncs.com/my-bucket/...?Expires=...&OSSAccessKeyId=..."

file_id

str, optional

文件的唯一标识符。若未提供,系统将生成 8 位 UUID。

"a1b2c3d4"

file_name

str, optional

文件名。若未提供,系统会从source_uri中自动推断。

"年度总结报告.docx"

file_type

str, optional

文件的 MIME 类型(如application/pdf)。若未提供,系统会根据文件扩展名自动推断。

"application/vnd.openxmlformats-officedocument.wordprocessingml.document"

示例代码:

from langstudio.types import File
file = File(source_uri="https://example.com/report.pdf")
file = File(source_uri="oss://my-bucket/docs/file.docx")

从字符串构造

File.from_content()方法支持用户从字符串内容创建File类型对象,适用于生成文本类文件(如 Markdown、TXT、CSV)。

参数

类型

描述

示例值

content

str

必填。要保存的字符串内容,将被 UTF-8 编码后上传。

"# 生成报告\n这是系统自动生成的内容。"

file_name

str

必填。生成的文件名。

"report.md"

示例代码

from langstudio.types import File
content = "# 生成报告\n这是由系统自动生成的内容。"
file = File.from_content(content=content, file_name="report.md")

从字节序列构造

File.from_bytes(content, file_name)方法,支持用户从一个字节序列创建File类型对象,适用于处理二进制文件(如 PDF、图片、Office 文档)。

参数

类型

描述

示例值

content

bytes

必填。要保存的二进制数据。

b"%PDF-1.4\n1 0 obj\n<< /Type /Catalog >>\nendobj\n"

file_name

str

必填。生成的文件名。

"test.pdf"

示例代码:

from langstudio.types import File
# 假设 `pdf_data` 是一个 bytes 对象
file = File.from_bytes(content=pdf_data, file_name="test.pdf")

从本地文件构造

File.from_local_file(local_path, file_name)支持用户上传一个挂载路径中的本地文件,并创建 File 类型对象,适用于容器内本地文件。

参数

类型

描述

示例值

local_path

str

必填。本地文件系统的路径。

"/tmp/report.docx"

file_name

str, optional

生成的文件名。如果未提供,则使用local_path的文件名。

"final_report.docx"

示例代码:

from langstudio.types import File
# 假设 /tmp/ 目录下已存在该文件
file = File.from_local_file(local_path="/tmp/output.pptx", file_name="presentation.pptx")

从数据流构造

File.from_stream(stream, file_name)支持用户从一个数据流(如网络流、BytesIO 或可迭代对象)上传内容并创建 File 对象,适用于大文件或流式处理。

参数

类型

描述

示例值

stream

str | bytes | BinaryIO | Iterator[bytes]

必填。数据源。可以是:

  • HTTP/HTTPS URL 字符串

  • bytes对象

  • io.BytesIO

  • requests.Response对象(需stream=True

  • 任何可迭代的字节对象

"https://example.com/large-video.mp4"

file_name

str

必填。生成的文件名。

"downloaded_video.mp4"

示例代码:

import io
from langstudio.types import File

url = "https://example.com/data.jsonl"
file = File.from_stream(stream=url, file_name="data.jsonl")

三、 结束节点输出

在结束节点中,支持将File类型对象作为工作流的输出结果。查看时,可通过点击对话面板中的“查看其他输出”,可以对工作流的输出文件进行查看和下载。

image

image

image

四、 权限点注意

涉及 File 类型的操作需要对 OSS 存储空间进行读写访问。在新建运行时及部署应用流时,请注意

  • 选择工作空间默认工作路径作为当前的工作路径。

  • 实例RAM角色推荐选择PAI默认角色;若选择自定义角色,需给该自定义角色授予 AliyunOSSFullAccess 权限,否则将无法在LangStudio实现文件类型输入、输出。

如下查看工作空间默认工作路径:

image

新建运行时:

image

部署应用流:

image