에이전트를 개발한 후 Gen AI Evaluation Service를 사용하여 특정 사용 사례의 태스크와 목표를 완료하는 에이전트의 기능을 평가할 수 있습니다.
평가 측정항목 정의
빈 측정항목 목록(예: metrics = []
)으로 시작하고 여기에 관련 측정항목을 추가합니다. 측정항목을 추가하려면 다음 안내를 따르세요.
최종 응답
최종 응답 평가는 모델 기반 평가와 동일한 프로세스를 따릅니다. 자세한 내용은 평가 측정항목 정의를 참고하세요.
완전 일치
metrics.append("trajectory_exact_match")
예측된 궤적이 참조 궤적과 동일하고 동일한 순서로 동일한 도구 호출이 수행되면 trajectory_exact_match
측정항목은 점수 1
을 반환하고, 그렇지 않으면 0
을 반환합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
순서 일치
metrics.append("trajectory_in_order_match")
예측된 궤적에 참조 궤적의 모든 도구 호출이 동일한 순서로 포함되어 있고 추가 도구 호출이 포함될 수도 있는 경우 trajectory_in_order_match
측정항목은 점수 1
을 반환하고, 그렇지 않은 경우에는 점수 0
을 반환합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 예측된 궤적입니다.reference_trajectory
: 에이전트가 쿼리를 충족하기 위해 예상되는 예측된 궤적입니다.
순서가 정해져 있지 않은 일치
metrics.append("trajectory_any_order_match")
예측된 궤적에 참조 궤적의 모든 도구 호출이 포함되어 있지만 순서가 중요하지 않고 추가 도구 호출이 포함될 수 있는 경우 trajectory_any_order_match
측정항목은 점수 1
을 반환하고, 그렇지 않은 경우에는 점수 0
을 반환합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
Precision
metrics.append("trajectory_precision")
trajectory_precision
측정항목은 예측된 궤적의 도구 호출 중 참조 궤적에 따라 실제로 관련이 있거나 올바른 호출의 수를 측정합니다. [0, 1]
범위의 float
값입니다. 점수가 높을수록 예측된 궤적이 더 정확합니다.
정밀도는 다음과 같이 계산됩니다. 예측된 궤적의 작업 중 참조 궤적에 표시되는 작업 수를 셉니다. 이 수를 예측된 궤적의 총 작업 수로 나눕니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
재현율
metrics.append("trajectory_recall")
trajectory_recall
측정항목은 참조 궤적의 필수 도구 호출 중 예측된 궤적에 실제로 캡처된 호출 수를 측정합니다. [0, 1]
범위의 float
값입니다. 점수가 높을수록 예측된 궤적의 재현율이 높습니다.
재현율은 다음과 같이 계산됩니다. 참조 궤적의 작업 중 예측된 궤적에 표시되는 작업 수를 셉니다. 이 수를 참조 궤적의 총 작업 수로 나눕니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
단일 도구 사용
from vertexai.preview.evaluation import metrics
metrics.append(metrics.TrajectorySingleToolUse(tool_name='tool_name'))
trajectory_single_tool_use
측정항목은 측정항목 사양에 지정된 특정 도구가 예측된 궤적에 사용되는지 확인합니다. 도구 호출 순서나 도구 사용 횟수는 확인하지 않고 도구가 있는지 여부만 확인합니다. 도구가 없는 경우 0
이고 그렇지 않은 경우 1
입니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.
커스텀
다음과 같이 커스텀 측정항목을 정의할 수 있습니다.
from vertexai.preview.evaluation import metrics
def word_count(instance):
response = instance["response"]
score = len(response.split(" "))
return {"word_count": score}
metrics.append(
metrics.CustomMetric(name="word_count", metric_function=word_count)
)
다음 두 가지 성능 측정항목은 항상 결과에 포함됩니다. EvalTask
에서는 다음을 지정할 필요가 없습니다.
latency
(float
): 에이전트가 응답하는 데 걸린 시간(초)입니다.failure
(bool
): 에이전트 호출에 성공한 경우0
이고 실패한 경우1
입니다.
평가 데이터 세트 준비
최종 응답 또는 궤적 평가를 위해 데이터 세트를 준비하려면 다음 단계를 따르세요.
최종 응답
최종 응답 평가의 데이터 스키마는 모델 응답 평가의 스키마와 유사합니다.
완전 일치
평가 데이터 세트는 다음 입력을 제공해야 합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
순서 일치
평가 데이터 세트는 다음 입력을 제공해야 합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 예측된 궤적입니다.reference_trajectory
: 에이전트가 쿼리를 충족하기 위해 예상되는 예측된 궤적입니다.
순서가 정해져 있지 않은 일치
평가 데이터 세트는 다음 입력을 제공해야 합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
Precision
평가 데이터 세트는 다음 입력을 제공해야 합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
재현율
평가 데이터 세트는 다음 입력을 제공해야 합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.reference_trajectory
: 에이전트가 쿼리를 충족하는 데 사용할 것으로 예상되는 도구입니다.
단일 도구 사용
평가 데이터 세트는 다음 입력을 제공해야 합니다.
입력 파라미터:
predicted_trajectory
: 에이전트가 최종 응답에 도달하는 데 사용하는 도구 호출 목록입니다.
다음은 평가 데이터 세트의 예시입니다.
import pandas as pd
eval_dataset = pd.DataFrame({
"predicted_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_3", "updates": {"status": "OFF"}}
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_z"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
]
],
"reference_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_2", "updates": {"status": "OFF"}},
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_y"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
],
],
})
데이터 세트 예시
에이전트를 평가하는 방법을 보여주기 위해 다음과 같은 데이터 세트 예시를 제공했습니다.
"on-device"
: 온디바이스 Home Assistant의 평가 데이터 세트입니다. 에이전트는 '침실 에어컨이 오후 11시에서 오전 8시 사이에 켜지고 그 외 시간에는 꺼지도록 예약해 줘.'와 같은 쿼리를 지원합니다."customer-support"
: 고객 지원 에이전트의 평가 데이터 세트입니다. 에이전트는 '대기 중인 주문을 취소하고 미해결 지원 티켓을 에스컬레이션해 주시겠어요?'와 같은 문의를 지원합니다."content-creation"
: 마케팅 콘텐츠 제작 에이전트의 평가 데이터 세트입니다. 에이전트는 '2024년 12월 25일에만 예산을 50% 줄여 소셜 미디어 사이트 Y에서 일회성 캠페인으로 캠페인 X 일정을 변경해줘.'와 같은 쿼리를 지원합니다.
예시 데이터 세트를 가져오려면 다음 단계를 따르세요.
평가 데이터 세트를 다운로드합니다.
기기
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/on-device/eval_dataset.json .
고객 지원
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/customer-support/eval_dataset.json .
콘텐츠 생성
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/content-creation/eval_dataset.json .
데이터 세트 예시 로드
import json eval_dataset = json.loads(open('eval_dataset.json').read())
평가 결과 생성
평가 결과를 생성하려면 다음 코드를 실행합니다.
from vertexai.preview.evaluation import EvalTask
eval_task = EvalTask(dataset=eval_dataset, metrics=metrics)
eval_result = eval_task.evaluate(runnable=agent)
결과 보기 및 해석
평가 결과는 다음과 같이 표시됩니다.
평가 결과에는 다음 정보가 포함됩니다.
최종 응답 측정항목
행별 측정항목:
response
: 에이전트가 생성한 최종 응답입니다.latency_in_seconds
: 응답을 생성하는 데 걸린 시간(초)입니다.failure
: 유효한 응답이 생성되었는지 여부를 나타냅니다.score
: 측정항목 사양에 지정된 응답에 대해 계산된 점수입니다.explanation
: 측정항목 사양에 지정된 점수에 대한 설명입니다.
요약 측정항목:
mean
: 모든 인스턴스의 평균 점수입니다.standard deviation
: 모든 점수의 표준 편차입니다.
궤적 측정항목
행별 측정항목:
predicted_trajectory
: 에이전트가 최종 응답에 도달하기 위해 따르는 도구 호출 시퀀스입니다.reference_trajectory
: 예상되는 도구 호출 시퀀스입니다.score
: 측정항목 사양에 지정된 예측된 궤적과 참조 궤적에 대해 계산된 점수입니다.latency_in_seconds
: 응답을 생성하는 데 걸린 시간(초)입니다.failure
: 유효한 응답이 생성되었는지 여부를 나타냅니다.
요약 측정항목:
mean
: 모든 인스턴스의 평균 점수입니다.standard deviation
: 모든 점수의 표준 편차입니다.
다음 단계
다음 노트북을 사용해 보세요.