プロンプトからメトリクスまでのAIエージェント評価

著者

Shalini Harkar

Lead AI Advocate

AIエージェントとは

AIエージェントとは、独自のワークフローを開発し、必要に応じて外部ツールを使用することで、ユーザーや別のシステムに代わって自律的にタスクを実行できるソフトウェア・システムを指します。

エージェントは、単純な言語処理や理解をはるかに超えた性能を有し、意思決定、問題解決、環境との対話、そして目標達成を追求する行動ができます。

AIエージェントは、ITオートメーションやソフトウェア・エンジニアリングから会話型インターフェイスやコード生成の実装まで、現在さまざまなエンタープライズ・ソリューションに組み込まれています。大規模言語モデル(LLM)を活用することで、AIエージェントは複雑な指示を理解し、ステップに分割し、外部ソースのリソースと対話することで、タスクの達成に役立つ特定のツールやサービスをいつデプロイすべきかを知る認知能力を持つことができます。

エージェントの評価が重要なの理由

エージェント評価は、エージェントが割り当てられたタスクをどの程度うまく実行し、意思決定を行い、ユーザーや環境と対話しているのか測定するため、自律型AIシステムを作成およびデプロイする際に重要な手順です。これにより、エージェントが意図したユースケースで確実に、効率的かつ倫理的に動作するようになります。

エージェント評価を行う主な理由は次のとおりです。

  • 機能の検証:このステップは、特定の条件におけるエージェントの動作とアクション、および定義された制約における目的の完了を検証する際に役立ちます。
  • 設計最適化:エージェントの推論、計画、またはツールの使用における欠点や非効率性を特定し、エージェントのアーキテクチャーとフローを反復的に改善することを可能にします。
  • 堅牢性:エッジ・ケース、敵対的インプット、または最適以下の条件に対するエージェントの能力を評価することで、フォールト・トレランスとレジリエンスを向上させることができます。
  • 性能とリソース・メトリクス:レイテンシー、スループット、トークン消費、メモリー、その他のシステム・メトリクスの観察を追跡することで、ランタイム効率を判断し、運用コストを最小限に抑えることができます。
  • ユーザー・インタラクションの質:エージェントの応答の明確さ、有用性、一貫性、および関連性を測定し、ユーザー満足度または会話の有効性の指標として評価します。
  • 目標完了分析:成功基準または特定のタスクベースのベンチマークを使用することで、エージェントがどの程度確実かつ正確に目標を完了したかを評価できます。
  • 倫理および安全に関する考慮事項:エージェントの出力は、公平性、偏り、潜在的な危害、および安全手順の遵守について評価できます。

AIエージェントの評価メトリクス

AIエージェントのパフォーマンスを評価するには、精度、応答時間(速度)、使用されたリソースのコストなど、いくつかのパフォーマンス・クラスに形式上分類されたメトリクスを使用します。精度は、エージェントが正しく適切な応答をどの程度提供するか、および意図した機能を完了するエージェントの能力を表します。応答時間は、エージェントがインプットを処理してアウトプットを生成する際に要する速度を測定します。レイテンシーを最小限に抑えることは、対話型プログラムやリアルタイム・プログラムでは特に重要であり、トークンの使用、アプリケーション・プログラミング・インターフェース(API)への呼び出し、システム時間など、エージェントが消費する計算リソースのコストを測定します。これらのメトリクスは、システムの性能を向上させ、運用コストを制限するためのガイドラインを提供します。

正確性有用性一貫性などの主要なメトリクスは精度に該当しますが、応答時間(レイテンシー)は、スループット平均レイテンシータイムアウト遅延などのメトリクスを測定します。コスト・メトリクスには、トークンの使用量演算処理時間API呼び出し数メモリ消費量が含まれます。

このチュートリアルでは、正確性、有用性、一貫性の主なメトリクスを、精度に分類します。

  • 正確性:正確性は、入力プロンプトまたはタスクからのエージェントの応答が事実上正確で論理的に真実であるかどうかを評価します。このメトリクスは、特に医療、法的アドバイス、技術サポートなどの分野では、多くの場合、最も基本的な尺度です。
  • 有用性:有用性では、エージェントの応答がユーザーの意図に対してどの程度有用または実用的であるかを評価します。回答が事実上正しいとしても、解決策や次のステップに対処していなければ、有用ではない可能性があります。
  • 一貫性:論理的および文脈的な流れと関連します。これは、マルチターンの対話や、複数のステップにわたって推論が行われる対話において重要です。一貫性とは、エージェントが最初から最後まで「筋が通っている」かどうかを指します。

旅行エージェントを開発し、「LLM-as-a-judge」を使用してその性能を評価しましょう。

前提条件

  1. watsonx.ai®プロジェクトを作成するには、IBM Cloudのアカウントが必要です。

  2. また、Python バージョン 3.12.7も必要です

ステップ

ステップ1. 環境を設定する

いくつかのツールから選択することはできますが、このチュートリアルでは、Jupyter Notebookを使用するためにIBMアカウントを設定する方法について説明します。

  1. IBM Cloudアカウントを使用して、watsonx.aiにログインします。

  2. watsonx.aiプロジェクトを作成します。プロジェクトIDはプロジェクト内から取得できます。「管理」タブをクリックし、「全般」ページの「詳細」セクションからプロジェクトIDをコピーしてください。このチュートリアルではこのIDが必要になります。

  3. Jupyter Notebookを作成します。この手順でJupyter Notebook環境が開き、このチュートリアルのコードをコピーできます。または、このノートブックをローカルシステムにダウンロードし、watsonx.aiプロジェクトにアセットとしてアップロードすることもできます。IBM Graniteに関するその他のチュートリアルを表示するには、IBM Granite Communityをご覧ください。

ステップ2. watsonx.ai RuntimenoインスタンスとAPIキーを設定する

  1. watsonx.ai Runtimeサービス・インスタンスを作成します(適切なリージョンを選択し、無料インスタンスであるLiteプランを選択)。

  2. アプリケーション・プログラミング・インターフェース(API)キーを生成します。

  3. watsonx.ai Runtimeサービス・インスタンスを、 watsonx.aiで作成したプロジェクトに関連付けます。

ステップ3. 関連ライブラリーをインストールしてインポートし、認証情報を設定する

このチュートリアルには、いくつかのライブラリとモジュールが必要です。以下のコンポーネントを必ずインポートしてください。インストールされていない場合は、迅速なpipインストールで問題が解決されます。

注:このチュートリアルはPython 3.12.7を使用して構築されています。

!pip install -q langchain langchain-ibm langchain_experimental langchain-text-splitters langchain_chroma transformers bs4 langchain_huggingface sentence-transformers
import os
import getpass
import requests
import random
import json
from typing import Type
from typing import Dict, List
from langchain_ibm import WatsonxLLM
from langchain_ibm import ChatWatsonx
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from langchain_ibm import WatsonxEmbeddings
from langchain.vectorstores import Chroma
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.agents.agent_types import AgentType
from langchain.prompts import ChatPromptTemplate
from langchain.evaluation import load_evaluator
from langchain.agents import initialize_agent, Tool

資格情報を設定するには、ステップ1で生成したWATSONX_APIKEYおよびWATSONX_PROJECT_IDが必要です。また、APIのエンドポイントとして機能するURLも設定します。APIエンドポイントは、地理的な場所によって異なる場合があります。

WATSONX_APIKEY = getpass.getpass("Please enter your watsonx.ai Runtime API key (hit enter): ")
WATSONX_PROJECT_ID = getpass.getpass("Please enter your project ID (hit enter): ")
URL = "https://us-south.ml.cloud.ibm.com"

ステップ 4. LLMを初期化する

このチュートリアルでは、Granite 3 -8B Instructモデルを使用します。LLMを初期化するには、モデル・パラメーターを設定する必要があります。最小・最大トークン制限などのモデル・パラメータの詳細については、ドキュメンテーションを参照してください。

llm = ChatWatsonx(model_id="ibm/granite-3-8b-instruct",
url = URL,
apikey = WATSONX_APIKEY,
project_id = WATSONX_PROJECT_ID,
params = {"decoding_method": "greedy","temperature": 0, "min_new_tokens": 5,
"max_new_tokens": 2000})

ステップ5. 旅行探索エージェント(バディ)を作成する

ユーザーの旅行計画や旅行の情報収集をサポートする、旅行計画パートナーを構築しましょう。

外部の旅行APIに接続し、ユーザーの問い合わせに応じて航空会社やホテルの情報を取得できるシンプルな旅行アシスタント・アプリケーションを作成します。AIエージェントと統合して動的な旅行計画を実行するために、APIクエリを作成し、それをツールにまとめる単純な機能を搭載します。

def travel_api(query: str) -> str:
# Example of connecting to a real travel API
response = requests.get("https://www.partners.skyscanner.net", params={"query": query})
if response.status_code == 200:
return response.json().get("result", "No results found.")
return "Error contacting travel API."

travel_tool = Tool(
name="TravelPlannerTool",
func=travel_api,
description="Connects to a travel API to find flights and hotels for a given city and date"
)
agent = initialize_agent(
tools=[travel_tool],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors= "Check your output and make sure it conforms! Do not output an action and a final answer at the same time."
)
query = "What are the best places to visit in India during winters?"
response = agent.invoke(query)
print("\n--- Travel Agent Response ---")
print(response)

ステップ 6. 評価を実行してスコアを取得する

最後に、評価を実行し、最終的な評価スコアを出力します。3つの異なる基準(正確性、有用性、一貫性)を使用して旅行プランナーを評価するために、LLM評価者用に構造化された評価プロンプトが作成されます。

from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

evaluation_prompt = PromptTemplate(
input_variables=["input", "prediction"],
template="""
You are an evaluation agent.

### User Input:
{input}

### Agent's Response:
{prediction}

Evaluate this response based on:
- Correctness (Is the information factually accurate?)
- Helpfulness (Is it useful and actionable?)
- Coherence (Is it well-written and logically structured?)

Reply in this format:
Correctness: <score>/5 - <reason>
Helpfulness: <score>/5 - <reason>
Coherence: <score>/5 - <reason>
"""
)
eval_input = evaluation_prompt.format(input=query, prediction=response)
evaluation_result = agent.invoke(eval_input)

出力には、正確性、有用性、一貫性の3つの基準を使用して生成された旅行プランナーの定性的および定量的評価が示されます。

エージェントの出力におけるコンテキストで、各スコアとメトリクスが何を意味するのかを分類してみましょう。

  • 正確性は、回答が事実的に正確で論理的であるかどうかを示します。前の例では、事実の内容が正しいため、正確性のスコアは(5点満点中5点)です。
  • 有用性は、ユーザーのニーズに対して回答がどれほど有効かつ適切であるかを測定したものです。このシナリオでのスコア(5点満点中5点)は、AIによる旅行計画が有用であり、細部まで行き届いた構成であることを意味します。このスコアは、冬にインドを初めて訪問する際に最適な場所を探している人にとって、エージェントが役立つことを示しています。
  • 一貫性は、プランナーが論理的に整理されており、読みやすいかどうかを示します。私たちの例では、5という高い一貫性スコアを獲得しました。

 

まとめ

ユーザーのニーズに本質的に応えるエージェントの能力を評価する際には、一貫性、有用性、正確性などの基準が中心的な役割を果たします。OpenAI、IBM Granite®、またはその他のLLM-as-a-Serviceモデルを使用しているかどうかにかかわらず、最終的な出力を包括的にテストするには、評価データセット、ベンチマーク、注釈、グラウンド・トゥルースなどの構造化された評価方法を活用することが重要です。チャットボットやRAGベースのカスタマー・サポートなどの実際のユースケースでは、LangGraphのようなオープンソース・フレームワークが非常に役立ちます。スケーラブルなオートメーション、信頼性の高いルーティングをサポートし、迅速なイテレーション・サイクルを可能にします。これらのテクノロジーにより、生成AIシステムの強化、動作のデバッグ、複雑なワークフローの最適化・構成も容易になります。テスト・ケースを慎重に定義し、計算コスト、価格、レイテンシーなどのオブザーバビリティー・メトリクスを監視することで、チームは一貫してシステム性能を向上させることができます。最終的には、信頼性が高く反復可能な評価アプローチを適用することで、機械学習システムに厳格さが生じ、時間の経過とともにその信頼性が強化されます。

関連ソリューション
ビジネス向けAIエージェント

生成AIを使用してワークフローとプロセスを自動化する強力なAIアシスタントとエージェントを構築、デプロイ、管理しましょう。

    watsonx Orchestrateの詳細はこちら
    IBM AIエージェント・ソリューション

    信頼できるAIソリューションでビジネスの未来を構築します。

    AIエージェント・ソリューションの詳細はこちら
    IBM®コンサルティング AIサービス

    IBMコンサルティングAIサービスは、企業がAIをトランスフォーメーションに活用する方法を再考するのに役立ちます。

    人工知能サービスの詳細はこちら
    次のステップ

    事前構築済みのアプリケーションとスキルをカスタマイズする場合でも、AIスタジオを使用してカスタム・エージェント・サービスを構築し、デプロイする場合でも、IBM watsonxプラットフォームが対応します。

    watsonx Orchestrateの詳細はこちら watsonx.aiの詳細はこちら