평가 가이드

배포된 Agent에 대한 Gen AI 에이전트 평가 생성

Agent Engine에 배포된 에이전트를 평가하는 방법을 설명합니다. Gen AI 에이전트 평가를 통해 에이전트의 품질과 응답의 정확성을 측정할 수 있습니다.


목차

  1. 평가 개요
  2. 환경 설정
  3. 에이전트 데이터셋 준비
  4. 에이전트 추론 실행
  5. Gen AI 에이전트 평가 실행
  6. 평가 결과 분석

1. 평가 개요

평가 프로세스

  1. Run Agent Inference: 에이전트 추론을 실행하여 배포된 에이전트에서 실제 응답 및 추적을 검색
  2. Create Evaluation Run: 평가 실행을 생성하여 Gen AI 에이전트 평가 수행

평가 지표

측정항목 설명
FINAL_RESPONSE_QUALITY 최종 응답의 품질
TOOL_USE_QUALITY 도구 사용의 적절성
HALLUCINATION 환각(허위 정보) 여부
SAFETY 안전성

2. 환경 설정

필수 패키지 설치

pip install --upgrade --force-reinstall -q google-cloud-aiplatform[evaluation]

Google Cloud 프로젝트 설정

import vertexai
from google.cloud import storage
from google.genai import types as genai_types
from vertexai import Client

# 설정
PROJECT_ID = 'your-project-id'
LOCATION = 'us-central1'
GCS_DEST = "your-gcs-bucket"
AGENT = 'projects/your-project/locations/us-central1/reasoningEngines/your-agent-id'

# SDK 초기화
vertexai.init(project=PROJECT_ID, location=LOCATION)

client = Client(
    project=PROJECT_ID,
    location=LOCATION,
    http_options=genai_types.HttpOptions(api_version="v1beta1"),
)

3. 에이전트 데이터셋 준비

Agent Info 정의

agent_info = types.AgentInfo(
    name="bigquery_nl2sql_agent",
    instruction="You are a BigQuery data analysis expert.",
    tool_declarations=[
        list_dataset_ids,
        list_table_ids,
        get_table_info,
        execute_sql,
    ]
)

데이터셋 정의

session_inputs = types.evals.SessionInput(
    user_id="eval_user",
    state={},
)

agent_prompts = [
    "어떤 데이터셋이 있나요?",
    "요일별 택시 이용 패턴 분석 (주중 vs. 주말)",
    "전월 대비 택시 이용 건수 증감률 분석",
]

agent_dataset = pd.DataFrame(
    {
        "prompt": agent_prompts,
        "session_inputs": [session_inputs] * len(agent_prompts),
    }
)

4. 에이전트 추론 실행

agent_dataset_with_inference = client.evals.run_inference(
    agent=AGENT,
    src=agent_dataset,
)

# 에이전트 추론 결과 표시
agent_dataset_with_inference.show()

5. Gen AI 에이전트 평가 실행

evaluation_run = client.evals.create_evaluation_run(
    dataset=agent_dataset_with_inference,
    agent_info=agent_info,
    metrics=[
        types.RubricMetric.FINAL_RESPONSE_QUALITY,
        types.RubricMetric.TOOL_USE_QUALITY,
        types.RubricMetric.HALLUCINATION,
        types.RubricMetric.SAFETY,
    ],
    dest=GCS_DEST,
)

# 평가 실행 상태 및 결과 표시
evaluation_run.show()

6. 평가 결과 분석

Summary Metrics

Metric Mean Score Std. Dev.
final_response_quality_v1 0.6667 0.4714
hallucination_v1 0.6667 0.4714
safety_v1 1.0000 0.0000
tool_use_quality_v1 0.2500 0.2041

품질 개선 포인트 식별

# 낮은 점수의 케이스 필터링
low_quality_cases = evaluation_results[
    evaluation_results['final_response_quality_v1'] < 0.5
]

for case in low_quality_cases:
    print(f"Prompt: {case['prompt']}")
    print(f"Score: {case['final_response_quality_v1']}")

7. 참고 자료