コンテンツにスキップ

Mairaの評価

概要

Mairaは、会話の正確さに基づいて評価を行い、スコアを付けることができます。

会話の評価を実行する方法は2つあります。

  1. 各会話の後に自動的に評価を実行する
  2. 指定された会話に対して手動で評価を実行する

会話とは?

POST /v1/gpt/ask にクエリとともにリクエストを送信し、応答を受け取ると、それが1つの 会話 と見なされます。各会話には conversation_idqueryresponseがその他の多くの情報とともにあります。

conversation_idを見つける方法

conversation_idを取得する方法は2つあります。:

  1. エンドポイント POST/ v1/gpt/ask または POST/ v1/gpt/ask/vision にアクセスすると、レスポンスボディ内にその会話の conversation_id を見つけることができます。
  2. エンドポイント /v1/gpt/conversations にアクセスすると、指定された時間範囲とフィルターに基づくすべての会話のリストとその詳細が返され、その中にconversation_idも含まれます。このチュートリアルの下部にある例を参照してください。

評価の仕組み

Maira Integrationのチュートリアルで見たように、会話には2つのタイプがあります:

  1. question - 与えられたクエリや質問に対して、以前のコンテキストや会話を考慮せずに回答します。
  2. chat - 以前のコンテキストや会話を考慮して、クエリに回答します。

questionタイプの会話を評価する際、評価スコアはクエリと応答生成に使用されたドキュメントとの関連性に基づいて提供されます。

chatタイプの会話を評価する際、評価スコアはクエリと応答生成に使用されたドキュメントとの関連性に加え、以前のコンテキストや会話との関連性にも基づいて提供されます。

したがって、回答生成のために参照された各ドキュメントに対してスコアが提供されます(下部の例を参照)。

自動評価

各会話の評価を自動的に実行するには、プロフィール設定で "is_auto_evaluation": trueと設定する必要があります(「プロフィール」チュートリアルを参照)。その後、そのプロフィールの profile_id を使用して POST/v1/gpt/ask にリクエストを送ると(Maira 統合チュートリアルを参照)、会話が自動的にトレーニングされます。

マニュアル評価

会話の評価をマニュアルで実行するには、エンドポイントPOST/v1/gpt/conversations/evaluationsを使用します。

このエンドポイントのリクエストボディ例は以下の通りです。

{
  "conversation_id": "string",
  "start_date": "2032-01-01",
  "end_date": "2032-12-31"
}

注意

  • 単一の会話を評価するには:conversation_idを提供します。
  • 日付範囲内で複数の会話を評価するには:start_dateend_dateの両方を提供します。
  • conversation_idまたはstart_dateend_dateの両方のいずれかを提供します。
  • 両方の提供があった場合、日付範囲のフィルタリングが優先されます。

「会話」と「評価スコア」の例

以下は、GET /v1/gpt/conversations/{conversation_id} エンドポイントのレスポンス例です。

request_bodyセクションの下に、POST /v1/gpt/askまたはPOST /v1/gpt/ask/visionを通じてMairaに送信された完全な"プロンプト"が表示されており、"クエリ"と"プロフィールの詳細"が含まれています。

次に、レスポンスが表示され、どの"セクション"がこのレスポンスを生成するための参照として使用されたかが示されています。

次に、referencesセクションでは、この応答生成のために参照された各ドキュメントとその詳細が表示されます。ここには similarity_score というパラメータがあり、これは "評価"の結果です。このスコアは、どの程度の類似性あるかを示しています。

{
  "detail": {
    "response": {
      "process_time": 16.089167355006794,
      "request_body": {
            "user_id": "008da05175a82d8686e7a04fe2db7393",
            "member_id": "232",
            "query": "これはサンプルクエリです。",
            "conversation_type": "question",
            "gpt_profile_id": "19473b2d-8d96-488d-9d37-6480d4fe5b81",
            "context_preference": {
            "preferred": {
                "project_id": "12345",
                "client_id": "22"
            }
            },
            "conversation_metadata": {
            "project_id": "12345",
            "client_id": "22"
            },
            "result_includes": [],
            "top_k": 20,
            "keyword_ngram": 3,
            "is_keyword_enabled": true,
            "name": "社内情報",
            "intro": "提供されたコンテキストを基に、同じ言語で、できるだけ正確に答えてください。不正確な回答をするくらいなら、短い回答や無回答の方が良いです。",
            "system": "あなたは会社ABCとその製品の専門家です。",
            "model": "gpt-40",
            "temperature": 0,
            "top_p": 1,
            "frequency_penalty": 0,
            "presence_penalty": 0,
            "stop": [
            "AI:",
            "Human:"
            ],
            "response_format": null,
            "search_max_token": 5000,
            "completion_token": 2500,
            "vision_settings": {
            "resolution": "low",
            "is_image_context_enabled": true
            },
            "chat_history_length": 3,
            "is_personalizer_only": false,
            "dataset_tags": null,
            "is_auto_evaluation": false,
            "intro_token": 44,
            "system_token": 34
      },
      "request_url": "/v1/gpt/ask",
      "response_status": 200,
      "response": "これはサンプル質問に対するサンプルレスポンスです。",
      "sections": [
        "sample_idx_1",
        "sample_idx_12",
        "sample_idx_17",
        "sample_idx_55"
      ],
      "references": [
        {
          "section_id": "sample_idx_1",
          "index": "idx",
          "content": "会社に関する多くの情報を含むサンプルデータ",
          "payload": {},
          "similarity_score": "85.09",
          "dataset_id": "91bf8ad4-e3c2-4988-8985-51499672557a"
        },
        {
          "section_id": "sample_idx_12",
          "index": "idx",
          "content": "パーソナライザーの技術仕様書",
          "payload": {},
          "similarity_score": "80.45",
          "dataset_id": "d9f8cabc-3b3d-4ef8-bd88-abcde34f7298"
        },
        {
          "section_id": "sample_idx_17",
          "index": "idx",
          "content": "一般的な問題に対する詳細なトラブルシューティングガイド",
          "payload": {},
          "similarity_score": "75.67",
          "dataset_id": "67cd90df-dcba-4bb6-9f12-a71b9cfa8291"
        },
        {
          "section_id": "sample_idx_55",
          "index": "idx",
          "content": "お客様の声",
          "payload": {},
          "similarity_score": "72.35",
          "dataset_id": "fc74efab-2171-4e67-b8e1-3b6d8e67f5f1"
        }
      ],
      "tokens": 5588,
      "usage": {
        "completion_tokens": 460,
        "prompt_tokens": 5128,
        "total_tokens": 5588,
        "completion_tokens_details": {
          "reasoning_tokens": 0
        },
        "query_tokens": 168
      },
      "conversation_id": "fdc20c1a-0761-425b-a2a0-b0621786e8a2",
      "gpt_profile_id": "19473b2d-8d96-488d-9d37-6480d4fe5b81",
      "conversation_context": [],
      "created_at": "2024-09-22T13:16:36.274173+09:00"
    }
  }
}