top of page

Langfuseデータセット構築ガイド:UI・CSV・SDKの徹底比較

  • 執筆者の写真: Hiromi Kuwa
    Hiromi Kuwa
  • 6 日前
  • 読了時間: 5分

先日、新規アプリケーションのプロンプトを検討するにあたり、トレースデータ(ログ)が存在しない状態からデータセットを作成する必要がありました。

ある程度のデータ量を用意したかったため、手動入力を避ける方法(SDK や CSV)を調査・検証しました。 本記事では、基本となる UI での登録手順と、今回試した一括登録の手順をそれぞれ整理し、使い勝手や特徴を比較した備忘録として残します。


利用バージョン

  • Langfuse: v3.127.0 OSS

  • Python SDK: 3.9.0


全体の流れ

Dataset が利用できるまでに以下の手続きが必要です。

  1. データセット(dataset)の作成

  2. データセットアイテム(items)の作成


本記事は、公式ドキュメントのこちらの記事を参考に実施しました。


1.データセット(dataset)の作成


UIを利用する方法


Datasets へ遷移し、[+ New Dataset] をクリックすることで新規のデータセットが作成できます。

ree

Name のみ指定し、[Create dataset] で作成完了です。

特に複雑な操作も無く、直感的に作成できました。


SDKを利用する方法


今回はPython SDKを利用したので、Python のサンプルコードとなります。

こちらも既に アプリケーション内で Langfuse を利用したことがある方であれば、特に迷うことなく利用できるのではないかと思います。

langfuse.create_dataset(
    name=[データセット名],
)

name をキーとした UPSERT が行われる仕様のようです。description や metadata を追加で指定したり、既に設定されている値を変更したりすると、データセットが更新されたことを UI 上で確認できました。


ただし、オプション未指定(または None )の場合は更新されず、既に設定されているものがそのまま残る挙動を確認しました。

また、データセット名がキーとなっているため、データセット名自体の変更に SDK は利用できません。名称を変更したい場合は、UI から操作する必要があります。


2,データセット(items)の作成


UIを利用する方法


作成したデータセットに対し、UI または CSV でアイテムの追加が可能です。

追加したいデータセットをクリックすると、デフォルトでは Runs タブが表示されるため、 Items タブに切り替えます。ここで UI での追加と、CSV の追加が行えます。


ree

UIで一つずつ追加する

[+New item] から追加します。

JSON 形式で記述する必要がありますが、ひとまずは Input のみ指定すれば [Add to dataset] で追加できます。

JSON 形式のハードルが高いことを除けば、こちらも複雑な操作は必要なく、概ね直感的な操作で作成出来ました。


CSVを利用して一括で追加する

[Upload CSV] をクリックすると CSV のアップロード画面が表示されます。


ree

CSV を用いたアップロードでは、先の UI 同様、 Input, Expected Output, Metadata のみが登録可能です。なお、CSVアップロードによる一括での UPSERT はできないようです。


CSV 登録の特徴として、「CSV のどの項目を各フィールドに割り当てるか」を UI 上でマッピング出来ることが挙げられます。この機能により、事前に アップロードフォーマットに合わせた CSV 形式への加工や、値をわざわざ JSON 形式に変換する必要が基本的にはない点は大きなメリットです。


例として、以下のような CSV を 作成し、UIから取り込んでみました。

id

name

num

1

apple

100g

2

egg

20


項目をすべて Input にマッピングします。

ree

すると、ヘッダ行と値が適切に設定された JSON として Input に入力されました。

ree

形式をあまり意識せずに登録できるため、既存データの CSVをとりあえず投げ込んでつくる、といった方法も取れます。個人的には、各種CSVアップロードはフォーマットの調整に時間がかかることが多いので、とても嬉しい機能でした。

もちろん、データセットからダウンロードしたファイルもそのままアップできます。Input として、ダウンロードした CSV の Input を割り当てれば、{ input: {...} } のような形式にならず、元のデータセットアイテムと同じ形式で登録されました。


SDKを利用する方法


データセット同様、特に難しい点はありませんでした。

id が省略されている場合は INSERT、指定されている場合は UPSERT となります。

langfuse.create_dataset_item(
    id=[ID],
    dataset_name=[データセット名],
    input=[入力データの内容],
)

id は省略可能ですが、登録時に指定しておいた方が明示的に管理できるため、SDK を利用して作成する場合は、指定しておく方が利便性が高いと思われます。

省略した場合はUIからの登録同様、自動的にランダムな ID が付与されます。


指定する際の注意点

他のデータセットで既に利用している ID は利用できません。

(異なる組織、またはプロジェクトであれば利用可能です)


CSVからの一括更新が出来ないため、実際は ID を指定しての1つずつの処理にはなりますが、データを全てアーカイブしたい場合など、まとめて更新を行うことが想定される場合には SDK を利用すると良さそうです。


まとめ


今回、UI と SDK の両方を触ってみて、データセットアイテムにある程度のデータ量が必要な場合は以下のように使い分けるのが良さそうだと感じました。


  • UI (CSV)

    • データの更新が不要な場合

      • CSV マッピング機能が優秀

    • 時間をかけずにデータを投入したい

      • 登録にあたり一切の開発が不要

  • SDK

    • データの更新が必要な場合

    • データ量が膨大な場合

      • CSV での処理に不安がある量の場合

    • 手元のデータが複雑で、Input 用に何かしらの加工を行う必要がある場合


特に CSV アップロード時のマッピング機能は、データ前処理の手間が省けるので、今後は積極的に使っていきたいと思います。

コメント


bottom of page