👏

PromptfooでRAG評価の自動化を行おうとしたら断念した話

2024/07/26に公開

はじめに

PromptfooはLLMの評価周りのサポートしているライブラリです。LLMOpsをしていく上で自動化が必要なため利用してみました。しかし、NodeJSで記述されていることで環境構築が手間であることととカスタマイズ性が低くむしろ作業量が増えてしまったため断念しました。その経験をもとに感じたメリデメを残しておきます。

Promptfooを検討している皆さんに向けて判断の一助になれば良いと思います

あくまでも2024/07/26時点の感想で、改善している可能性もありますが、個人的な日記としてまとめます。

Promptfooのメリット

  • yamlで記述することができる
  • PromptやLLMモデルを切り替えて評価指標で比較することができる

Promptfooのデメリット

  • ドキュメントの記載とhelpコマンドの内容が異なる
  • 環境変数は特定の文字列でないと引っ張ってこれない
  • 複雑な処理のLLMを記述しようとすると手間が増える
    • TypeScriptで記述されていて、NodeJSによるインストール・実行を前提としている
      • Pythonで予め記述されているコードとの相性が悪い(既存実装にくっつけたい用途には合わない)
    • RAGを実現するためにはPythonで記述する必要がある
      • yamlで定義できるのかと思いきや出来ない
      • 環境構築の際に、NodeJSとPython環境どちらも用意する必要がある(面倒)
      • NodeJSと分けていることで、RefineやMapReduceなどの評価を実装するのが難しい

感想&使用用途

開発途中でドキュメントの整備がされてないのとPythonとNodeJS両方の環境を用意するのが手間だなと感じました。RAGを実現するのにPythonを書くなら、最初からPythonで良くない?JS側のエラーログを元にPythonコードを修正する体験はあまりよろしくない。

想定される使用用途しては、複数のPromptやLLMで検証する、かつRAGやMixture of Expertなどの複雑なことをしない前提でなら簡易に試せて良いんだろうなと感じました。

今回は、なんとか開発し終えましたが、Pythonで既に実装済みのRAGに適用したかったので用途には合わなかったと感じてます。
今度からpytestとStreamlitを併せて自前実装しようかと思います。

Discussion