OpenLIT解説:Get started編

に公開

今回はOpenLITについて、Get startedを試してみたので共有しようと思います。

OpenLITとは?

OpenLITは、Generative AIとLLMにおけるAI開発ワークフローを簡素化するための仕組みを提供するものとなります。LLMの実験やプロンプトの整理とバージョン管理、APIキーのセキュアな取り扱いといった様々な重要なタスクを効率化して運用することができます。また、OpenTelemetryネイティブの可観測性を実現し、LLM、ベクターデータベース、GPUを含むフルスタックのモニタリングを実現でき、開発者はAI機能やアプリケーションを構築し、テストから本番環境への移行をスムーズに行うことができます。

主な特徴は以下のようなものがあります。

  • 分析ダッシュボード:メトリクス、コスト、ユーザーインタラクションを追跡する詳細なダッシュボードを使用して、AI アプリケーションの健全性とパフォーマンスを監視し、全体的な効率性を明確に把握可能
  • OpenTelemetryネイティブのオブザーバビリティSDKの提供:ベンダーに依存しないSDKで、既存のオブザーバビリティツールにトレースとメトリクスを送信可能
  • カスタムモデルと微調整モデルのコスト追跡:カスタム価格設定ファイルを利用し、特定のモデルのコスト見積もりを調整し、正確な予算編成を実現
  • 例外監視ダッシュボード:専用の監視ダッシュボードによって一般的な例外とエラーを追跡し、問題を迅速に特定して解決に利用できる
  • プロンプト管理:Prompt Hubを使用してプロンプトを管理およびバージョン管理することで、アプリケーション間で一貫性のある簡単なアクセスを実現
  • APIキーとシークレットの管理:APIキーとシークレットを一元的に安全に管理し、安全でないプラクティスを回避
  • さまざまなLLMを試す: OpenGroundを使用し、さまざまなLLMを並べて探索、テスト、比較できる

https://docs.openlit.io/latest/introduction

使ってみた

今回は以下のGet startedを対象に進めてみます。このチュートリアルではLLMアプリケーション監視のためのOpenTelemetry Auto Instrumentationの構築手順を学ぶことができます。少ない手順でLLMアプリケーションのパフォーマンスなどを計測できます。またOpenTelemetryに則った形で実装することができます。

https://docs.openlit.io/latest/quickstart-observability

環境構築

uvを利用して以下のようにPython環境を構築します。

uv init openlit_get_started -p 3.12 
cd openlit_get_started
uv add openlit openai

OpenLITサーバの立ち上げ

今回はローカル環境でdockerを用いてOpenLITサーバを立ち上げます。以下のようにOpenLITの公式レポジトリを取得して起動することができます。

git clone git@github.com:openlit/openlit.git
cd openlit
docker compose up -d

簡単なプロンプトの実行

それではOpenAIを利用して簡単なプロンプトを実行させてみます。以下のようなサンプルコードを作成します。

simple-prompt.py
from openai import OpenAI
import openlit

openlit.init(otlp_endpoint="http://127.0.0.1:4318")

client = OpenAI(
    api_key="<OpenAI API Key>",
)

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "What is LLM Observability?",
        }
    ],
    model="gpt-3.5-turbo",
)

まずは先程立ち上げたOpenLITサーバに対して記録が残るように設定します。

import openlit

openlit.init(otlp_endpoint="http://127.0.0.1:4318")

その後、OpenAIのクライアントでプロンプトを登録します。まずはこちらのコードを実行します。

uv run simple-prompt.py

実行後にhttp://127.0.0.1:3000にアクセスするとOpenLITのUIにアクセスできます。ユーザ名とパスワードはデフォルトでuser@openlit.ioopenlituserということなのでそれを入力すると以下のような画面が表示されます。画面上ではいくつもの指標が表示されてますが、初めての実行だったので記録されているリクエスト数は1であり、上記のコードの実行によるコストは$0.000127ということも計算されていることがわかります。

次にリクエストの記録の詳細をみてみましょう。左のメニューからRequestsを選択すると以下のような画面が表示されます。

OpenTelemetryに則った形式で以下のようにスパンやイベントなどのアトリビュートが記録されていることも確認できます。



また、画面上で呼び出しのヒエラルキも表示されていることが確認できます。

まとめ

今回はOpenLITのGet startedを使って簡単なチャットの記録方法を体験しました。次回はより複雑なツール(例えばLangChainなど)を用いたシステムを導入してその可視化などを確認したいと思います。

Discussion