メインコンテンツまでスキップ

トレースを使用して品質を評価および改善する

トレースはデバッグのためだけのものではなく、生成AI アプリケーションの体系的な品質向上を促進するための貴重な情報が含まれています。このガイドでは、トレースを分析して品質の問題を特定する方法、トレースデータから評価データセットを作成する方法、ターゲットを絞った改善を実装する方法、および変更の影響を測定する方法について説明します。

トレースを分析して品質問題を特定する

トレースは、アプリケーションがユーザーリクエストをどのように処理するかについての詳細な知見を提供します。 これらのトレースを分析することで、品質問題のパターンを特定できます。

定量分析

  1. MLflow UI を使用して 、同様の特性を持つトレースをフィルター処理およびグループ化します。

    • 特定のタグ(例: tag.issue_type = "hallucination")でフィルタリングする
    • 特定の入力または出力を含むトレースの検索
    • レイテンシーやトークン使用量などのメタデータで並べ替える
  2. プログラムでトレースをクエリして 、より高度な分析を実行します。

Python
import mlflow
import pandas as pd

# Search for traces with potential quality issues
traces_df = mlflow.search_traces(
filter_string="tag.quality_score < 0.7",
max_results=100,
extract_fields=["span.end_time", "span.inputs.messages", "span.outputs.choices", "span.attributes.usage.total_tokens"]
)

# Analyze patterns
# For example, check if quality issues correlate with token usage
correlation = traces_df["span.attributes.usage.total_tokens"].corr(traces_df["tag.quality_score"])
print(f"Correlation between token usage and quality: {correlation}")

定性分析

  1. 一般的な障害モードを表す 個々のトレースを確認します

    • 低品質の出力につながった入力を調べる
    • アプリケーションがこれらのケースをどのように処理したかのパターンを探します
    • 欠落しているコンテキストまたは誤った推論を特定する
  2. 高品質のトレースと低品質のトレースを比較し ます。

    • これらの異なる入力をアプリケーションで処理する方法には、どのような違いがありますか?
    • 品質の問題に一貫してつながる特定の種類のクエリはありますか?

トレースデータからの評価データセットの作成

代表的なトレースを特定したら、それらを評価データセットにキュレーションして体系的なテストを行うことができます。

  1. トレースをデータセットにエクスポート します。
Python
import mlflow
import pandas as pd

# Query traces that represent important test cases
traces_df = mlflow.search_traces(
filter_string="trace.timestamp > '2023-07-01'",
max_results=500,
extract_fields=["span.inputs.messages", "span.outputs.choices"]
)

# Prepare dataset format
eval_data = []
for _, row in traces_df.iterrows():
# Extract user query from messages
messages = row["span.inputs.messages"]
user_query = next((msg["content"] for msg in messages if msg["role"] == "user"), None)

# Extract model response
response = row["span.outputs.choices"][0]["message"]["content"] if row["span.outputs.choices"] else None

if user_query and response:
eval_data.append({"input": user_query, "output": response})

# Create evaluation dataset
eval_df = pd.DataFrame(eval_data)
eval_df.to_csv("evaluation_dataset.csv", index=False)
  1. グラウンドトゥルースまたは期待される出力を追加します

    • トレースごとに、正しい出力または予想される出力を追加します
    • 評価する品質指標または特定の側面を含めます
    • ドメインの専門家を活用してデータセットをレビューし、注釈を付けることを検討してください
  2. MLflowでデータセットを登録する :

Python
import mlflow

# Log the evaluation dataset
with mlflow.start_run() as run:
mlflow.log_artifact("evaluation_dataset.csv", "evaluation_datasets")

的を絞った改善の実施

特定された問題と評価データセットを手元に用意すると、的を絞った改善を行うことができます。

迅速なエンジニアリング

  1. 特定の障害パターンに対処するために 、システムプロンプトを改良します

    • エッジケースの処理に関するより明確なガイドラインを追加します
    • 問題のある入力の処理方法を示す例を含めます
    • トーンやスタイルを調整して、ユーザーの期待に応えます
  2. 一般的な品質問題を防ぐために ガードレールを追加します

    • アプリケーションロジックに検証手順を実装する
    • ユーザーに出力を表示する前に、出力を確認するための後処理を追加します

アプリケーションアーキテクチャの改善

  1. 関連ドキュメントが見つからない場合は、 取得メカニズムを強化します

    • トレース内の取得範囲を調べて、取得されている内容を確認します
    • 埋め込みモデルまたは取得アルゴリズムの改善
    • ドキュメントセグメントが最適でない場合は、チャンク戦略を検討してください
  2. 複雑な意思決定プロセスに 推論ステップを追加します

    • 複雑なタスクを複数のスパンに分割
    • 思考の連鎖やその他の推論手法を実装する
    • 重要な出力の検証手順を追加する

品質改善の測定

変更を実装した後、MLflow を使用してその影響を測定します。

  1. キュレーションされたデータセットを使用して 体系的な評価を実行します
Python
import mlflow
from mlflow.evaluators import evaluate

# Compare the original and improved models on your dataset
results = mlflow.evaluate(
data="evaluation_dataset.csv",
model=improved_model, # Your improved model/application
baseline_model=original_model, # The original version for comparison
evaluators=["mlflow_model"],
evaluator_config={
"custom_metrics": [
# Define your quality metrics here
]
}
)

# View the results
print(results.metrics)
  1. 改善をデプロイした後の 本番運用トレースの監視:
    • ダッシュボードを設定して、品質メトリクスを経時的に追跡する
    • リグレッションや予期しない動作を監視する
    • 新しいトレースを継続的に収集して、新たな問題を特定します

次のステップ

これらの推奨アクションとチュートリアルで旅を続けてください。

リファレンスガイド

このガイドで説明されている概念と機能の詳細なドキュメントをご覧ください。

ヒント

品質改善は反復的なプロセスです。最も重要な品質問題から始めて、的を絞った改善を実施し、その影響を測定し、繰り返します。