
こんにちは。R&Dを担当している浅野です。
ユニファではマルチモーダルLLMを活用したアプリ開発を積極的に行っています。LLMを一度callして終わりではなく、複数のステップを直列や並列で組み合わせて処理を行う場合や、LLMに処理ステップから考えさせる場合は、最終のアウトプットだけでなく中間ステップの内容を確認することが重要です。通常のWebアプリ用のロギングツールを使ってそれを行うことも可能ですが、LLMアプリに特化したサービスを使うと、LLM callのLatency、消費トークン、コストなども把握できますし、プロンプト管理や評価機能がついているものもあり、かなり便利です。
私たちのチームではLLMアプリのロジック記述にLangChainを使っています。LangChainを使うことを前提にした場合、使いやすいトレーシングサービスとしてLangSmithとLangfuseの2つがあります。LangSmithはLangChainが提供している有償サービスで、環境変数をセットするだけでLangChainで実行したchainのトレースが自動的にLangSmithサーバーに送られるので、非常に手軽に利用できます。
もう一方のLangfuse(OSS)も、LangSmithほど簡単ではないものの、ほんの数行のコードでトレーシングを行うことができます。
サードパーティーのサーバー上にトレースが残らないようにSelf hostすることを考えると、LangSmithは記事執筆時点でEnterpriseライセンスが必要なため、コストの観点からLangfuseを選択しました。この記事では、Langfuseで画像とテキストを扱うマルチモーダルLLMアプリのトレーシングを行う際に、無駄なコストが発生しないように工夫した点について記載します。
続きを読む




