Rapid Evaluation API

Rapid Evaluation 서비스를 사용하면 여러 측정항목에서 점별 및 쌍별 대규모 언어 모델(LLM)을 평가할 수 있습니다. 추론 시간 입력, LLM 응답, 추가 매개변수를 제공할 수 있으며 평가 서비스는 평가 태스크와 관련된 측정항목을 반환합니다.

측정항목에는 SummarizationQuality와 같은 모델 기반 측정항목과 rouge, bleu와 같은 메모리 내 계산된 측정항목 및 도구 함수 호출 측정항목이 포함됩니다. 이 서비스는 모델에서 예측 결과를 직접 입력으로 가져오므로 평가 서비스는 Vertex AI에서 지원하는 모든 모델에 대한 추론 및 후속 평가를 모두 수행할 수 있습니다.

모델 평가에 대한 자세한 내용은 생성형 AI 평가 서비스 개요를 참조하세요.

제한사항

평가 서비스의 제한사항은 다음과 같습니다.

  • 모델 기반 측정항목은 text-bison 할당량을 사용합니다. Rapid Evaluation 서비스는 text-bison을 기본 중재 모델로 활용하여 모델 기반 측정항목을 계산합니다.
  • 평가 서비스 적용이 지연됩니다. 서비스를 처음 호출한 후 몇 분 동안 사용하지 못할 수 있습니다.

예시 문법

평가 호출을 전송하는 문법입니다.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances \
-d '{
  "contents": [{
    ...
  }],
  "tools": [{
    "function_declarations": [
      {
        ...
      }
    ]
  }]
}'

Python

import json

from google import auth
from google.api_core import exceptions
from google.auth.transport import requests as google_auth_requests

creds, _ = auth.default(
    scopes=['https://www.googleapis.com/auth/cloud-platform'])

data = {
  ...
}

uri = f'https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances'
result = google_auth_requests.AuthorizedSession(creds).post(uri, json=data)

print(json.dumps(result.json(), indent=2))

매개변수 목록

매개변수

exact_match_input

(선택사항) ExactMatchInput

예측이 참조와 정확하게 일치하는지 평가하기 위한 입력입니다.

bleu_input

(선택사항) BleuInput

참조와 예측을 비교하여 BLEU 점수를 계산하기 위한 입력입니다.

rouge_input

(선택사항) RougeInput

참조와 예측을 비교하여 rouge 점수를 계산하기 위한 입력입니다. rouge_type에서 다른 rouge 점수를 지원합니다.

fluency_input

(선택사항) FluencyInput

단일 응답의 언어 숙련도를 평가하기 위한 입력입니다.

coherence_input

(선택사항) CoherenceInput

일관되고 이해하기 쉬운 답장을 제공하는 단일 응답 기능을 평가하기 위한 입력입니다.

safety_input

(선택사항) SafetyInput

단일 응답의 안전 수준을 평가하기 위한 입력입니다.

groundedness_input

(선택사항) GroundednessInput

입력 텍스트에만 포함된 정보를 제공하거나 참조하는 단일 응답 기능을 평가하기 위한 입력입니다.

fulfillment_input

(선택사항) FulfillmentInput

안내를 완전히 이행하는 단일 응답 기능을 평가하는 입력입니다.

summarization_quality_input

(선택사항) SummarizationQualityInput

텍스트를 요약하는 단일 응답의 전체 기능을 평가하기 위한 입력입니다.

pairwise_summarization_quality_input

(선택사항) PairwiseSummarizationQualityInput

두 응답의 전체 요약 품질을 비교하기 위한 입력입니다.

summarization_helpfulness_input

(선택사항) SummarizationHelpfulnessInput

원본 텍스트를 대체하는 데 필요한 세부정보가 포함된 요약을 제공하는 단일 응답 기능을 평가하기 위한 입력입니다.

summarization_verbosity_input

(선택사항) SummarizationVerbosityInput

간결한 요약을 제공하는 단일 응답 기능을 평가하기 위한 입력입니다.

question_answering_quality_input

(선택사항) QuestionAnsweringQualityInput

참조할 텍스트 본문에 따라 질문에 답하는 단일 응답 전체 기능을 평가하기 위한 입력입니다.

pairwise_question_answering_quality_input

(선택사항) PairwiseQuestionAnsweringQualityInput

참조할 텍스트 본문에 따라 질문에 답하는 두 응답의 전체 기능을 비교하기 위한 입력입니다.

question_answering_relevance_input

(선택사항) QuestionAnsweringRelevanceInput

질문할 때 관련 정보로 응답하는 단일 응답 기능을 평가하기 위한 입력입니다.

question_answering_helpfulness_input

(선택사항) QuestionAnsweringHelpfulnessInput

질문에 답할 때 주요 세부정보를 제공하는 단일 응답 기능을 평가하기 위한 입력입니다.

question_answering_correctness_input

(선택사항) QuestionAnsweringCorrectnessInput

질문에 올바르게 답변하는 단일 응답 기능을 평가하기 위한 입력입니다.

tool_call_valid_input

(선택사항) ToolCallValidInput

유효한 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다.

tool_name_match_input

(선택사항) ToolNameMatchInput

올바른 도구 이름으로 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다.

tool_parameter_key_match_input

(선택사항) ToolParameterKeyMatchInput

올바른 매개변수 이름으로 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다.

tool_parameter_kv_match_input

(선택사항) ToolParameterKvMatchInput

올바른 매개변수 이름과 값으로 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다.

ExactMatchInput

{
  "exact_match_input": {
    "metric_spec": {},
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
매개변수

metric_spec

(선택사항) ExactMatchSpec.

측정항목 동작을 정의하는 측정항목 사양입니다.

instances

(선택사항) ExactMatchInstance[]

LLM 응답과 참조로 구성된 평가 입력입니다.

instances.prediction

(선택사항) string

LLM 응답입니다.

instances.reference

(선택사항) string

참조를 위한 특별한 LLM 응답입니다.

ExactMatchResults

{
  "exact_match_results": {
    "exact_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
출력

exact_match_metric_values

ExactMatchMetricValue[]

인스턴스 입력당 평가 결과입니다.

exact_match_metric_values.score

float

다음 필드 중 하나는 사용해야 합니다.

  • 0: 인스턴스가 일치검색이 아닙니다.
  • 1: 일치검색

BleuInput

{
  "bleu_input": {
    "metric_spec": {
      "use_effective_order": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
매개변수

metric_spec

(선택사항) BleuSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

metric_spec.use_effective_order

선택사항: bool

일치 항목이 없는 N-그램 순서를 고려할지 여부입니다.

instances

선택사항: BleuInstance[]

LLM 응답과 참조로 구성된 평가 입력입니다.

instances.prediction

(선택사항) string

LLM 응답입니다.

instances.reference

(선택사항) string

참조를 위한 특별한 LLM 응답입니다.

BleuResults

{
  "bleu_results": {
    "bleu_metric_values": [
      {
        "score": float
      }
    ]
  }
}
출력

bleu_metric_values

BleuMetricValue[]

인스턴스 입력당 평가 결과입니다.

bleu_metric_values.score

float: [0, 1]. 점수가 높을수록 예측이 참조와 더 비슷해집니다.

RougeInput

{
  "rouge_input": {
    "metric_spec": {
      "rouge_type": string,
      "use_stemmer": bool,
      "split_summaries": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
매개변수

metric_spec

(선택사항) RougeSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

metric_spec.rouge_type

(선택사항) string

사용 가능한 값은 다음과 같습니다.

  • rougen[1-9]: 예측과 참조 간의 n-gram 중복을 기준으로 rouge 점수를 계산합니다.
  • rougeL: 예측과 참조 간의 최장 공통 부분 수열(LCS)을 기반으로 rouge 점수를 계산합니다.
  • rougeLsum: 먼저 예측과 참조를 문장으로 분할한 후 각 튜플의 LCS를 계산합니다. 최종 rougeLsum 점수는 이러한 개별 LCS 점수의 평균입니다.

metric_spec.use_stemmer

(선택사항) bool

일치를 개선하기 위해 포터 스테머를 사용하여 단어 서픽스를 제거해야 하는지 여부입니다.

metric_spec.split_summaries

(선택사항) bool

rougeLsum의 문장 사이에 줄바꿈을 추가할지 여부입니다.

instances

(선택사항) RougeInstance[]

LLM 응답과 참조로 구성된 평가 입력입니다.

instances.prediction

(선택사항) string

LLM 응답입니다.

instances.reference

(선택사항) string

참조를 위한 특별한 LLM 응답입니다.

RougeResults

{
  "rouge_results": {
    "rouge_metric_values": [
      {
        "score": float
      }
    ]
  }
}
출력

rouge_metric_values

RougeValue[]

인스턴스 입력당 평가 결과입니다.

rouge_metric_values.score

float: [0, 1]. 점수가 높을수록 예측이 참조와 더 비슷해집니다.

FluencyInput

{
  "fluency_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
매개변수

metric_spec

(선택사항) FluencySpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) FluencyInstance

LLM 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

FluencyResult

{
  "fluency_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: 명확하지 않음
  • 2: 다소 명확하지 않음
  • 3: 중립적
  • 4: 다소 유창함
  • 5: 유창함

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

CoherenceInput

{
  "coherence_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
매개변수

metric_spec

(선택사항) CoherenceSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) CoherenceInstance

LLM 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

CoherenceResult

{
  "coherence_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: 일관성이 없음
  • 2: 다소 일관성이 없음
  • 3: 중립적
  • 4: 다소 일관성이 있음
  • 5: 일관성이 있음

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

SafetyInput

{
  "safety_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
매개변수

metric_spec

(선택사항) SafetySpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) SafetyInstance

LLM 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

SafetyResult

{
  "safety_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 0: 안전하지 않음
  • 1: 안전함

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

GroundednessInput

{
  "groundedness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "context": string
    }
  }
}

매개변수

설명

metric_spec

(선택사항) GroundednessSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) GroundednessInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

GroundednessResult

{
  "groundedness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 0: 그라운딩되지 않음
  • 1: 그라운딩됨

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

FulfillmentInput

{
  "fulfillment_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string
    }
  }
}
매개변수

metric_spec

(선택사항) FulfillmentSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) FulfillmentInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

FulfillmentResult

{
  "fulfillment_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: fulfillment 없음
  • 2: 불량한 fulfillment
  • 3: 일부 fulfillment
  • 4: 양호한 fulfillment
  • 5: fulfillment 완료

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

SummarizationQualityInput

{
  "summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
매개변수

metric_spec

(선택사항) SummarizationQualitySpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) SummarizationQualityInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

SummarizationQualityResult

{
  "summarization_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: 매우 나쁨
  • 2: 나쁨
  • 3: 양호
  • 4: 우수
  • 5: 매우 우수

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

PairwiseSummarizationQualityInput

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
매개변수

metric_spec

(선택사항) PairwiseSummarizationQualitySpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) PairwiseSummarizationQualityInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.baseline_prediction

(선택사항) string

기준 모델 LLM 응답입니다.

instance.prediction

(선택사항) string

후보 모델 LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

PairwiseSummarizationQualityResult

{
  "pairwise_summarization_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
출력

pairwise_choice

PairwiseChoice: 다음과 같은 양의 값이 있는 enum입니다.

  • BASELINE: 기준 예측이 더 우수함
  • CANDIDATE: 후보 예측이 더 우수함
  • TIE: 기준 예측과 후보 예측 간의 관계입니다.

explanation

string: pairwise_choice 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

SummarizationHelpfulnessInput

{
  "summarization_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
매개변수

metric_spec

(선택사항) SummarizationHelpfulnessSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) SummarizationHelpfulnessInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

SummarizationHelpfulnessResult

{
  "summarization_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: 유용하지 않음
  • 2: 다소 유용하지 않음
  • 3: 중립적
  • 4: 다소 유용함
  • 5: 유용함

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

SummarizationVerbosityInput

{
  "summarization_verbosity_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
매개변수

metric_spec

(선택사항) SummarizationVerbositySpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) SummarizationVerbosityInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

SummarizationVerbosityResult

{
  "summarization_verbosity_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float. 다음 필드 중 하나입니다.

  • -2: 간결함
  • -1: 다소 간결함
  • 0: 최적
  • 1: 다소 상세함
  • 2: 상세함

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

QuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
매개변수

metric_spec

(선택사항) QuestionAnsweringQualitySpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) QuestionAnsweringQualityInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

QuestionAnsweringQualityResult

{
  "question_answering_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: 매우 나쁨
  • 2: 나쁨
  • 3: 양호
  • 4: 우수
  • 5: 매우 우수

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

PairwiseQuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
매개변수

metric_spec

(선택사항) QuestionAnsweringQualitySpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) QuestionAnsweringQualityInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.baseline_prediction

(선택사항) string

기준 모델 LLM 응답입니다.

instance.prediction

(선택사항) string

후보 모델 LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

PairwiseQuestionAnsweringQualityResult

{
  "pairwise_question_answering_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
출력

pairwise_choice

PairwiseChoice: 다음과 같은 양의 값이 있는 enum입니다.

  • BASELINE: 기준 예측이 더 우수함
  • CANDIDATE: 후보 예측이 더 우수함
  • TIE: 기준 예측과 후보 예측 간의 관계입니다.

explanation

string: pairwise_choice 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

QuestionAnsweringRelevanceInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
매개변수

metric_spec

(선택사항) QuestionAnsweringRelevanceSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) QuestionAnsweringRelevanceInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

QuestionAnsweringRelevancyResult

{
  "question_answering_relevancy_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: 관련성이 없음
  • 2: 다소 관련성이 없음
  • 3: 중립적
  • 4: 다소 관련성이 있음
  • 5: 관련성이 있음

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

QuestionAnsweringHelpfulnessInput

{
  "question_answering_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
매개변수

metric_spec

(선택사항) QuestionAnsweringHelpfulnessSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) QuestionAnsweringHelpfulnessInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

QuestionAnsweringHelpfulnessResult

{
  "question_answering_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 1: 유용하지 않음
  • 2: 다소 유용하지 않음
  • 3: 중립적
  • 4: 다소 유용함
  • 5: 유용함

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

QuestionAnsweringCorrectnessInput

{
  "question_answering_correctness_input": {
    "metric_spec": {
      "use_reference": bool
    },
    "instance": {
      "prediction": string,
      "reference": string,
      "instruction": string,
      "context": string
    }
  }
}
매개변수

metric_spec

(선택사항) QuestionAnsweringCorrectnessSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

metric_spec.use_reference

(선택사항) bool

참조가 평가에 사용되는지 여부입니다.

instance

(선택사항) QuestionAnsweringCorrectnessInstance

추론 입력과 해당 응답으로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

LLM 응답입니다.

instance.reference

(선택사항) string

참조를 위한 특별한 LLM 응답입니다.

instance.instruction

(선택사항) string

추론 시 사용되는 안내입니다.

instance.context

(선택사항) string

LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다.

QuestionAnsweringCorrectnessResult

{
  "question_answering_correctness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
출력

score

float: 다음 중 하나입니다.

  • 0: 오답
  • 1: 정답

explanation

string: 점수 할당 근거입니다.

confidence

float: [0, 1] 결과의 신뢰도 점수입니다.

ToolCallValidInput

{
  "tool_call_valid_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
매개변수

metric_spec

(선택사항) ToolCallValidSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) ToolCallValidInstance

LLM 응답과 참조로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

contenttool_calls 키가 포함된 JSON 직렬화된 문자열인 후보 모델 LLM 응답입니다. content 값은 모델의 텍스트 출력입니다. tool_call 값은 도구 호출 목록의 JSON 직렬화된 문자열입니다. 예를 들면 다음과 같습니다.

{
  "content": "",
  "tool_calls": [
    {
      "name": "book_tickets",
      "arguments": {
        "movie": "Mission Impossible Dead Reckoning Part 1",
        "theater": "Regal Edwards 14",
        "location": "Mountain View CA",
        "showtime": "7:30",
        "date": "2024-03-30",
        "num_tix": "2"
      }
    }
  ]
}

instance.reference

(선택사항) string

예측과 동일한 형식의 특별한 모델 출력입니다.

ToolCallValidResults

{
  "tool_call_valid_results": {
    "tool_call_valid_metric_values": [
      {
        "score": float
      }
    ]
  }
}
출력

tool_call_valid_metric_values

반복 ToolCallValidMetricValue: 인스턴스 입력당 평가 결과입니다.

tool_call_valid_metric_values.score

float: 다음 중 하나입니다.

  • 0: 잘못된 도구 호출
  • 1: 유효한 도구 호출

ToolNameMatchInput

{
  "tool_name_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
매개변수

metric_spec

(선택사항) ToolNameMatchSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) ToolNameMatchInstance

LLM 응답과 참조로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

contenttool_calls 키가 포함된 JSON 직렬화된 문자열인 후보 모델 LLM 응답입니다. content 값은 모델의 텍스트 출력입니다. tool_call 값은 도구 호출 목록의 JSON 직렬화된 문자열입니다.

instance.reference

(선택사항) string

예측과 동일한 형식의 특별한 모델 출력입니다.

ToolNameMatchResults

{
  "tool_name_match_results": {
    "tool_name_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
출력

tool_name_match_metric_values

반복 ToolNameMatchMetricValue: 인스턴스 입력당 평가 결과입니다.

tool_name_match_metric_values.score

float: 다음 중 하나입니다.

  • 0: 도구 호출 이름이 참조와 일치하지 않습니다.
  • 1: 도구 호출 이름이 참조와 일치합니다.

ToolParameterKeyMatchInput

{
  "tool_parameter_key_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
매개변수

metric_spec

(선택사항) ToolParameterKeyMatchSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) ToolParameterKeyMatchInstance

LLM 응답과 참조로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

contenttool_calls 키가 포함된 JSON 직렬화된 문자열인 후보 모델 LLM 응답입니다. content 값은 모델의 텍스트 출력입니다. tool_call 값은 도구 호출 목록의 JSON 직렬화된 문자열입니다.

instance.reference

(선택사항) string

예측과 동일한 형식의 특별한 모델 출력입니다.

ToolParameterKeyMatchResults

{
  "tool_parameter_key_match_results": {
    "tool_parameter_key_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
출력

tool_parameter_key_match_metric_values

반복 ToolParameterKeyMatchMetricValue: 인스턴스 입력당 평가 결과입니다.

tool_parameter_key_match_metric_values.score

float: [0, 1]. 점수가 높을수록 참조 매개변수 이름과 일치하는 매개변수가 많아집니다.

ToolParameterKVMatchInput

{
  "tool_parameter_kv_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
매개변수

metric_spec

(선택사항) ToolParameterKVMatchSpec

측정항목 동작을 정의하는 측정항목 사양입니다.

instance

(선택사항) ToolParameterKVMatchInstance

LLM 응답과 참조로 구성된 평가 입력입니다.

instance.prediction

(선택사항) string

contenttool_calls 키가 포함된 JSON 직렬화된 문자열인 후보 모델 LLM 응답입니다. content 값은 모델의 텍스트 출력입니다. tool_call 값은 도구 호출 목록의 JSON 직렬화된 문자열입니다.

instance.reference

(선택사항) string

예측과 동일한 형식의 특별한 모델 출력입니다.

ToolParameterKVMatchResults

{
  "tool_parameter_kv_match_results": {
    "tool_parameter_kv_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
출력

tool_parameter_kv_match_metric_values

반복 ToolParameterKVMatchMetricValue: 인스턴스 입력당 평가 결과입니다.

tool_parameter_kv_match_metric_values.score

float: [0, 1]. 점수가 높을수록 참조 매개변수의 이름 및 값과 일치하는 매개변수가 많아집니다.

예시

출력 평가

다음 예시에서는 다음을 포함한 다양한 평가 측정항목을 사용하여 LLM 출력을 평가하기 위해 Rapid Evaluation API를 호출하는 방법을 보여줍니다.

  • summarization_quality
  • groundedness
  • fulfillment
  • summarization_helpfulnes
  • summarization_verbosity

Python

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask
from vertexai.generative_models import GenerativeModel

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"

vertexai.init(project=project_id, location="us-central1")

eval_dataset = pd.DataFrame(
    {
        "instruction": [
            "Summarize the text in one sentence.",
            "Summarize the text such that a five-year-old can understand.",
        ],
        "context": [
            """As part of a comprehensive initiative to tackle urban congestion and foster
            sustainable urban living, a major city has revealed ambitious plans for an
            extensive overhaul of its public transportation system. The project aims not
            only to improve the efficiency and reliability of public transit but also to
            reduce the city\'s carbon footprint and promote eco-friendly commuting options.
            City officials anticipate that this strategic investment will enhance
            accessibility for residents and visitors alike, ushering in a new era of
            efficient, environmentally conscious urban transportation.""",
            """A team of archaeologists has unearthed ancient artifacts shedding light on a
            previously unknown civilization. The findings challenge existing historical
            narratives and provide valuable insights into human history.""",
        ],
        "response": [
            "A major city is revamping its public transportation system to fight congestion, reduce emissions, and make getting around greener and easier.",
            "Some people who dig for old things found some very special tools and objects that tell us about people who lived a long, long time ago! What they found is like a new puzzle piece that helps us understand how people used to live.",
        ],
    }
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[
        "summarization_quality",
        "groundedness",
        "fulfillment",
        "summarization_helpfulness",
        "summarization_verbosity",
    ],
)

model = GenerativeModel("gemini-1.5-flash-001")

prompt_template = (
    "Instruction: {instruction}. Article: {context}. Summary: {response}"
)
result = eval_task.evaluate(model=model, prompt_template=prompt_template)

print("Summary Metrics:\n")

for key, value in result.summary_metrics.items():
    print(f"{key}: \t{value}")

print("\n\nMetrics Table:\n")
print(result.metrics_table)

출력 평가: 쌍 요약 품질

다음 예시에서는 Rapid Evaluation API를 호출하여 쌍 요약 품질 비교를 통해 LLM의 출력을 평가하는 방법을 보여줍니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • LOCATION: 요청을 처리하는 리전
  • PREDICTION: LLM 응답
  • BASELINE_PREDICTION: 기준 모델 LLM 응답
  • INSTRUCTION: 추론 시간에 사용되는 명령
  • CONTEXT: LLM 응답에 사용할 수 있는 모든 관련 정보가 포함된 추론 시간 텍스트

HTTP 메서드 및 URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \

JSON 요청 본문:

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": "PREDICTION",
      "baseline_prediction": "BASELINE_PREDICTION",
      "instruction": "INSTRUCTION",
      "context": "CONTEXT",
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \" | Select-Object -Expand Content

Rouge 점수 가져오기

다음 예시는 Rapid Evaluation API를 호출하여 여러 입력으로 생성된 예측의 Rouge 점수를 가져옵니다. Rouge 입력은 측정항목 동작을 결정하는 metric_spec을 사용합니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • LOCATION: 요청을 처리하는 리전
  • PREDICTION: LLM 응답
  • REFERENCE: 참조를 위한 특별한 LLM 응답
  • ROUGE_TYPE: Rouge 점수를 결정하는 데 사용되는 계산. 허용되는 값은 metric_spec.rouge_type을 참조하세요.
  • USE_STEMMER: 일치를 개선하기 위해 포터 스테머를 사용하여 단어 서픽스를 제거할지 여부를 결정합니다. 허용되는 값은 metric_spec.use_stemmer를 참조하세요.
  • SPLIT_SUMMARIES: rougeLsum 문장 사이에 새 줄을 추가할지 여부를 결정합니다. 허용되는 값은 metric_spec.split_summaries를 참조하세요.

HTTP 메서드 및 URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \

JSON 요청 본문:

{
  "rouge_input": {
    "instances": {
      "prediction": "PREDICTION",
      "reference": "REFERENCE.",
    },
    "metric_spec": {
      "rouge_type": "ROUGE_TYPE",
      "use_stemmer": USE_STEMMER,
      "split_summaries": SPLIT_SUMMARIES,
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \" | Select-Object -Expand Content

다음 단계