LangStudio のワークフローは、ユーザーからのファイルを受け入れ、処理ノードを経由してルーティングし、ファイル出力を返すことができます。これにより、ファイル処理のインフラストラクチャを一から構築する必要がありません。ファイルタイプの変数を使用して、開始ノードでのファイルアップロードを Python ノードまたはドキュメント解析ノードに接続し、処理済みのファイルを終了ノードから返します。
前提条件
開始する前に、以下をご確認ください:
-
少なくとも開始ノードと終了ノードを含む LangStudio アプリケーションフロー
-
OSS バケットへの読み取りおよび書き込み権限 (
Fileタイプのすべての操作に必要です)
開始ノードでのファイルアップロードの受付
開始ノード でファイルタイプの入力変数を定義して、ワークフローの開始時にユーザーからのファイルを受け付けます。
LangStudio は、開始ノードの入力として、以下のファイルタイプをサポートしています。
-
ドキュメントタイプ: 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
ファイルタイプ変数を定義すると、ユーザーは会話パネルから [パラメータ設定] を使用してファイルをアップロードできるようになります。 2 つのアップロード方法が利用可能です:
-
[Upload From Local]:ユーザーのデバイスから直接ファイルをアップロードします。
-
[Enter URL]:ファイルを指す URL を指定します。2 つの URL 形式に対応しています:
-
OSS URI: Alibaba Cloud OSS 内のファイルパス。例:
oss://bucket-name/path/to/file.pdf -
HTTP/HTTPS リンク: パブリックにアクセス可能なダウンロードリンク。例:
https://example.com/file.docx
-
ファイルの処理
開始ノードはファイルを収集するだけで、コンテンツの読み取りや解析は行いません。処理のために、ファイルを下流のノードに渡します。
アプローチの選択
| シナリオ | 推奨アプローチ |
|---|---|
| LLM 処理のために、標準的なドキュメント形式 (PDF、DOCX、TXT など) からテキストを抽出する | ドキュメント解析ノード |
| カスタムのバイナリ処理、形式変換、またはプログラムによる新規ファイルの生成 | Python ノード |
ドキュメント解析ノード
アップロードされたドキュメントをドキュメント解析ノードにルーティングしてテキストコンテンツを抽出し、LLM ノードで使用します。詳細については、「ドキュメント解析」をご参照ください。
一般的なシナリオ: ユーザーが PDF をアップロードし、ドキュメント解析ノードがテキストを抽出し、LLM ノードがそのコンテンツに基づいて質問に回答します。
Python ノード
Python ノードでは、ファイルタイプの変数をノード入力として参照したり、File オブジェクトをノード出力として生成したりできます。
File は、LangStudio でファイルを表すためのコアタイプです。from langstudio.types import File でインポートします。
LangStudio は、File オブジェクトを構築するために 5 つのメソッドを提供しています。
直接構築
File() を使用して、既存のファイルを場所を指定して参照します。これは最も簡単な方法で、すでに OSS に保存されているか、URL 経由でアクセス可能なファイルで使用できます。
| パラメーター | タイプ | 必須 | 説明 | 例 |
|---|---|---|---|---|
source_uri |
str |
はい | ファイルの場所。HTTP/HTTPS URL、OSS URI (oss://)、またはコンテナーのマウントパス内のローカルパスを受け付けます。 |
"https://files.example.com/report.pdf" |
download_url |
str |
いいえ | ダウンロード可能な HTTP/HTTPS リンク。指定しない場合、システムが自動的に生成します。OSS URI の場合、7 日間有効な署名付き URL が生成されます。有効期限が切れた後は、File.get_download_url() を呼び出して更新します。 |
"https://oss-cn-beijing.aliyuncs.com/my-bucket/...?Expires=...&OSSAccessKeyId=..." |
file_id |
str |
いいえ | ファイルの一意の識別子。指定しない場合、システムは 8 桁の汎用一意識別子 (UUID) を生成します。 | "a1b2c3d4" |
file_name |
str |
いいえ | ファイル名。指定しない場合、システムは source_uri から推測します。 |
"annual_summary_report.docx" |
file_type |
str |
いいえ | Multipurpose Internet Mail Extensions (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() を使用して、文字列コンテンツからファイルを作成します。このメソッドは、Markdown、TXT、CSV などのテキストベースのファイルの生成に適しています。
| パラメーター | タイプ | 必須 | 説明 | 例 |
|---|---|---|---|---|
content |
str |
はい | 保存する文字列コンテンツ。コンテンツはアップロード前に UTF-8 でエンコードされます。 | "# レポートの生成\nこのコンテンツはシステムによって自動生成されます。" |
file_name |
str |
はい | 生成されるファイルの名前。 | "report.md" |
from langstudio.types import File
content = "# Generate Report\nThis content is automatically generated by the system."
file = File.from_content(content=content, file_name="report.md")
バイトシーケンスからの構築
File.from_bytes() を使用して、バイナリデータからファイルを作成します。このメソッドは、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 |
str |
はい | ローカルファイルシステム内のファイルのパス。 | "/tmp/report.docx" |
file_name |
str |
いいえ | 生成されるファイルの名前。指定しない場合、local_path のファイル名が使用されます。 |
"final_report.docx" |
from langstudio.types import File
# ファイルは /tmp/output.pptx に既に存在しています
file = File.from_local_file(local_path="/tmp/output.pptx", file_name="presentation.pptx")
データストリームからの構築
File.from_stream() を使用して、ストリームソースからファイルを作成します。このメソッドは、大きなファイルや、データがネットワークストリーム、BytesIO オブジェクト、または他のイテラブルとして渡される場合に適しています。
| パラメーター | タイプ | 必須 | 説明 | 例 |
|---|---|---|---|---|
stream |
str | bytes | BinaryIO | Iterator[bytes] |
はい | データソース。HTTP/HTTPS URL 文字列、bytes オブジェクト、io.BytesIO ストリーム、stream=True を指定した requests.Response オブジェクト、または任意のバイトのイテラブルを受け付けます。 |
"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 オブジェクトを End ノードの出力として使用します。会話パネルで [その他の出力を表示] をクリックすると、出力ファイルを表示およびダウンロードできます。


OSS 権限の設定
すべての File タイプの操作には、OSS バケットへの読み取りおよび書き込みアクセス権限が必要です。ランタイムの作成時およびアプリケーションフローのデプロイ時に、以下の設定を行います:
-
デフォルトのワークスペースパスを現在の作業パスとして選択します。

-
[インスタンス RAM ロール] には、[PAI デフォルトロール] を選択します。 代わりに [カスタムロール] を選択した場合は、カスタムロールに
AliyunOSSFullAccess権限を付与します。 この権限がないと、LangStudio はファイルの入出力操作を実行できません。ランタイムの作成:

アプリケーションフローのデプロイ:
