Rapid Eval Service를 사용하면 사용자가 여러 측정항목에서 점 및 쌍으로 LLM 모델을 평가할 수 있습니다. 사용자는 추론 시간 입력, LLM 응답, 추가 매개변수를 제공하고 서비스는 평가 태스크와 관련된 측정항목을 반환합니다. 측정항목에는 모델 기반 측정항목(예: SummarizationQuality)과 메모리 내 계산된 측정항목(예: Rouge, Bleu, 도구/함수 호출 측정항목)이 모두 포함됩니다. 이 서비스는 모델에서 예측 결과를 직접 입력으로 가져오므로 Vertex에서 지원하는 모든 모델을 평가할 수 있습니다.
제한사항
- 모델 기반 측정항목은 text-bison 할당량을 사용합니다. Rapid Eval Service는 text-bison을 기본 중재 모델로 활용하여 모델 기반 측정항목을 계산합니다.
- 서비스 적용이 지연됩니다. 서비스를 처음 호출한 후 몇 분 동안 사용하지 못할 수 있습니다.
구문
- PROJECT_ID =
PROJECT_ID
- REGION =
REGION
- MODEL_ID =
MODEL_ID
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:evaluateInstances
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://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:evaluateInstances' result = google_auth_requests.AuthorizedSession(creds).post(uri, json=data) print(json.dumps(result.json(), indent=2))
매개변수 목록
사용 가능한 측정항목의 전체 목록입니다.
매개변수 | |
---|---|
|
선택사항: 예측이 참조와 정확하게 일치하는지 평가하기 위한 입력입니다. |
|
선택사항: 참조와 예측을 비교하여 BLEU 점수를 계산하기 위한 입력입니다. |
|
선택사항: 참조와 예측을 비교하여 |
|
선택사항: 단일 응답의 언어 숙련도를 평가하기 위한 입력입니다. |
|
선택사항: 일관되고 이해하기 쉬운 답장을 제공하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 단일 응답의 안전 수준을 평가하기 위한 입력입니다. |
|
선택사항: 입력 텍스트에만 포함된 정보를 제공하거나 참조하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 안내를 완전히 이행하는 단일 응답 기능을 평가하는 입력입니다. |
|
선택사항: 텍스트를 요약하는 단일 응답의 전체 기능을 평가하기 위한 입력입니다. |
|
선택사항: 두 응답의 전체 요약 품질을 비교하기 위한 입력입니다. |
|
선택사항: 원본 텍스트를 대체하는 데 필요한 세부정보가 포함된 요약을 제공하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 간결한 요약을 제공하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 참조할 텍스트 본문에 따라 질문에 답하는 단일 응답 전체 기능을 평가하기 위한 입력입니다. |
|
선택사항: 참조할 텍스트 본문에 따라 질문에 답하는 두 응답의 전체 기능을 비교하기 위한 입력입니다. |
|
선택사항: 질문할 때 관련 정보로 응답하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 질문에 답할 때 주요 세부정보를 제공하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 질문에 올바르게 답변하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 유효한 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 올바른 도구 이름으로 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 올바른 매개변수 이름으로 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다. |
|
선택사항: 올바른 매개변수 이름과 값으로 도구 호출을 예측하는 단일 응답 기능을 평가하기 위한 입력입니다. |
ExactMatchInput
{ "exact_match_input: { "metric_spec": {}, "instances": [ { "prediction": string, "reference": string } ] } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답과 참조로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 참조를 위한 특별한 LLM 응답입니다. |
ExactMatchResults
{ "exact_match_results: { "exact_match_metric_values": [ { "score": float } ] } }
출력 | |
---|---|
|
인스턴스 입력당 평가 결과입니다. |
|
다음 필드 중 하나는 사용해야 합니다.
|
BleuInput
{ "bleu_input: { "metric_spec": {}, "instances": [ { "prediction": string, "reference": string } ] } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답과 참조로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 참조를 위한 특별한 LLM 응답입니다. |
BleuResults
{ "bleu_results: { "bleu_metric_values": [ { "score": float } ] } }
출력 | |
---|---|
|
인스턴스 입력당 평가 결과입니다. |
|
|
RougeInput
{ "rouge_input: { "metric_spec": { "rouge_type": string, "use_stemmer": bool, "split_summaries": bool }, "instances": [ { "prediction": string, "reference": string } ] } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 사용 가능한 값은 다음과 같습니다.
|
|
선택사항: 일치를 개선하기 위해 포터 스테머를 사용하여 단어 서픽스를 제거해야 하는지 여부입니다. |
|
선택사항: rougeLsum의 문장 사이에 줄바꿈을 추가할지 여부입니다. |
|
선택사항: LLM 응답과 참조로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 참조를 위한 특별한 LLM 응답입니다. |
RougeResults
{ "rouge_results: { "rouge_metric_values": [ { "score": float } ] } }
출력 | |
---|---|
|
인스턴스 입력당 평가 결과입니다. |
|
|
FluencyInput
{ "fluency_input: { "metric_spec": {}, "instance": { "prediction": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
FluencyResult
{ "fluency_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
CoherenceInput
{ "coherence_input: { "metric_spec": {}, "instance": { "prediction": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
CoherenceResult
{ "coherence_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
SafetyInput
{ "safety_input: { "metric_spec": {}, "instance": { "prediction": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
SafetyResult
{ "safety_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
GroundednessInput
{ "groundedness_input: { "metric_spec": {}, "instance": { "prediction": string, "context": string } } }
매개변수 |
설명 |
|
선택사항: GroundednessSpec 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: GroundednessInstance 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
GroundednessResult
{ "groundedness_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
FulfillmentInput
{ "fulfillment_input: { "metric_spec": {}, "instance": { "prediction": string, "instruction": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
FulfillmentResult
{ "fulfillment_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
SummarizationQualityInput
{ "summarization_quality_input: { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
SummarizationQualityResult
{ "summarization_quality_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
PairwiseSummarizationQualityInput
{ "pairwise_summarization_quality_input: { "metric_spec": {}, "instance": { "baseline_prediction": string, "prediction": string, "instruction": string, "context": string, } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: 기준 모델 LLM 응답입니다. |
|
선택사항: 후보 모델 LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
PairwiseSummarizationQualityResult
{ "pairwise_summarization_quality_result: { "pairwise_choice": PairwiseChoice, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
SummarizationHelpfulnessInput
{ "summarization_helpfulness_input: { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
SummarizationHelpfulnessResult
{ "summarization_helpfulness_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
SummarizationVerbosityInput
{ "summarization_verbosity_input: { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
SummarizationVerbosityResult
{ "summarization_verbosity_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringQualityInput
{ "question_answering_quality_input: { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
QuestionAnsweringQualityResult
{ "question_answering_quality_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
PairwiseQuestionAnsweringQualityInput
{ "question_answering_quality_input: { "metric_spec": {}, "instance": { "baseline_prediction": string, "prediction": string, "instruction": string, "context": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: 기준 모델 LLM 응답입니다. |
|
선택사항: 후보 모델 LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
PairwiseQuestionAnsweringQualityResult
{ "pairwise_question_answering_quality_result: { "pairwise_choice": PairwiseChoice, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringRelevanceInput
{ "question_answering_quality_input: { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
QuestionAnsweringRelevancyResult
{ "question_answering_relevancy_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringHelpfulnessInput
{ "question_answering_helpfulness_input: { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
QuestionAnsweringHelpfulnessResult
{ "question_answering_helpfulness_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringCorrectnessInput
{ "question_answering_correctness_input: { "metric_spec": { "use_reference": bool }, "instance": { "prediction": string, "reference": string, "instruction": string, "context": string } } }
매개변수 | |
---|---|
|
선택사항: |
|
선택사항: 참조가 평가에 사용되는지 여부입니다. |
|
선택사항: 추론 입력과 해당 응답으로 구성된 평가 입력입니다. |
|
선택사항: LLM 응답입니다. |
|
선택사항: 참조를 위한 특별한 LLM 응답입니다. |
|
선택사항: 추론 시 사용되는 안내입니다. |
|
선택사항: LLM 응답에 사용할 수 있는 모든 정보가 포함된 추론 시간 텍스트입니다. |
QuestionAnsweringCorrectnessResult
{ "question_answering_correctness_result: { "score": float, "explanation": string, "confidence": float } }
출력 | |
---|---|
|
|
|
|
|
|
ToolCallValidInput
{ "tool_call_valid_input: { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답과 참조로 구성된 평가 입력입니다. |
|
선택사항:
{ "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" } } ] } |
|
선택사항: 예측과 동일한 형식의 특별한 모델 출력입니다. |
ToolCallValidResults
{ "tool_call_valid_results: { "tool_call_valid_metric_values": [ { "score": float } ] } }
출력 | |
---|---|
|
반복 |
|
|
ToolNameMatchInput
{ "tool_name_match_input: { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답과 참조로 구성된 평가 입력입니다. |
|
선택사항:
|
|
선택사항: 예측과 동일한 형식의 특별한 모델 출력입니다. |
ToolNameMatchResults
{ "tool_name_match_results: { "tool_name_match_metric_values": [ { "score": float } ] } }
출력 | |
---|---|
|
반복 |
|
|
ToolParameterKeyMatchInput
{ "tool_parameter_key_match_input: { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답과 참조로 구성된 평가 입력입니다. |
|
선택사항:
|
|
선택사항: 예측과 동일한 형식의 특별한 모델 출력입니다. |
ToolParameterKeyMatchResults
{ "tool_parameter_key_match_results: { "tool_parameter_key_match_metric_values": [ { "score": float } ] } }
출력 | |
---|---|
|
반복 |
|
|
ToolParameterKVMatchInput
{ "tool_parameter_kv_match_input: { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
매개변수 | |
---|---|
|
선택사항: 측정항목 동작을 정의하는 측정항목 사양입니다. |
|
선택사항: LLM 응답과 참조로 구성된 평가 입력입니다. |
|
선택사항:
|
|
선택사항: 예측과 동일한 형식의 특별한 모델 출력입니다. |
ToolParameterKVMatchResults
{ "tool_parameter_kv_match_results: { "tool_parameter_kv_match_metric_values": [ { "score": float } ] } }
출력 | |
---|---|
|
반복 |
|
|
예시
- PROJECT_ID =
PROJECT_ID
- REGION =
REGION
쌍 요약 품질
여기에서는 Rapid Eval API를 호출하여 LLM 출력을 평가하는 방법을 보여줍니다. 이 경우 쌍 요약 품질 비교를 수행합니다.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:evaluateInstances \ -d '{ "pairwise_summarization_quality_input": { "metric_spec": {}, "instance": { "prediction": "France is a country located in Western Europe.", "baseline_prediction": "France is a country.", "instruction": "Summarize the context.", "context": "France is a country located in Western Europe. It'\''s bordered by Belgium, Luxembourg, Germany, Switzerland, Italy, Monaco, Spain, and Andorra. France'\''s coastline stretches along the English Channel, the North Sea, the Atlantic Ocean, and the Mediterranean Sea. Known for its rich history, iconic landmarks like the Eiffel Tower, and delicious cuisine, France is a major cultural and economic power in Europe and throughout the world.", } } }'
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 = { "pairwise_summarization_quality_input": { "metric_spec": {}, "instance": { "prediction": "France is a country located in Western Europe.", "baseline_prediction": "France is a country.", "instruction": "Summarize the context.", "context": ( "France is a country located in Western Europe. It's bordered by " "Belgium, Luxembourg, Germany, Switzerland, Italy, Monaco, Spain, " "and Andorra. France's coastline stretches along the English " "Channel, the North Sea, the Atlantic Ocean, and the Mediterranean " "Sea. Known for its rich history, iconic landmarks like the Eiffel " "Tower, and delicious cuisine, France is a major cultural and " "economic power in Europe and throughout the world." ), } } } uri = f'https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:evaluateInstances' result = google_auth_requests.AuthorizedSession(creds).post(uri, json=data) print(json.dumps(result.json(), indent=2))
ROUGE
다음으로, API를 호출하여 참조에 따라 예측의 ROUGE 점수를 가져옵니다.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:evaluateInstances \ -d '{ "rouge_input": { "instances": { "prediction": "A fast brown fox leaps over a lazy dog.", "reference": "The quick brown fox jumps over the lazy dog.", }, "instances": { "prediction": "A quick brown fox jumps over the lazy canine.", "reference": "The quick brown fox jumps over the lazy dog.", }, "instances": { "prediction": "The speedy brown fox jumps over the lazy dog.", "reference": "The quick brown fox jumps over the lazy dog.", }, "metric_spec": { "rouge_type": "rougeLsum", "use_stemmer": true, "split_summaries": true } } }'
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 = { "rouge_input": { "metric_spec": { "rouge_type": "rougeLsum", "use_stemmer": True, "split_summaries": True }, "instances": [ { "prediction": "A fast brown fox leaps over a lazy dog.", "reference": "The quick brown fox jumps over the lazy dog.", }, { "prediction": "A quick brown fox jumps over the lazy canine.", "reference": "The quick brown fox jumps over the lazy dog.", }, { "prediction": "The speedy brown fox jumps over the lazy dog.", "reference": "The quick brown fox jumps over the lazy dog.", } ] } } uri = f'https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:evaluateInstances' result = google_auth_requests.AuthorizedSession(creds).post(uri, json=data) print(json.dumps(result.json(), indent=2))