mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-07-29 15:23:51 +00:00
validate scorer input
This commit is contained in:
parent
0ee82571a8
commit
59c93548bc
2 changed files with 23 additions and 0 deletions
|
@ -25,6 +25,11 @@ class EqualityScorer(BaseScorer):
|
||||||
)
|
)
|
||||||
|
|
||||||
def score_row(self, input_row: Dict[str, Any]) -> ScoringResult:
|
def score_row(self, input_row: Dict[str, Any]) -> ScoringResult:
|
||||||
|
assert "expected_answer" in input_row, "Expected answer not found in input row."
|
||||||
|
assert (
|
||||||
|
"generated_answer" in input_row
|
||||||
|
), "Generated answer not found in input row."
|
||||||
|
|
||||||
expected_answer = input_row["expected_answer"]
|
expected_answer = input_row["expected_answer"]
|
||||||
generated_answer = input_row["generated_answer"]
|
generated_answer = input_row["generated_answer"]
|
||||||
score = 1.0 if expected_answer == generated_answer else 0.0
|
score = 1.0 if expected_answer == generated_answer else 0.0
|
||||||
|
|
|
@ -49,12 +49,30 @@ class MetaReferenceScoringImpl(Scoring, ScoringFunctionsProtocolPrivate):
|
||||||
"Dynamically registering scoring functions is not supported"
|
"Dynamically registering scoring functions is not supported"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def validate_scoring_input_dataset_schema(self, dataset_id: str) -> None:
|
||||||
|
dataset_def = await self.datasets_api.get_dataset(dataset_identifier=dataset_id)
|
||||||
|
if not dataset_def.dataset_schema or len(dataset_def.dataset_schema) == 0:
|
||||||
|
raise ValueError(
|
||||||
|
f"Dataset {dataset_id} does not have a schema defined. Please define a schema for the dataset."
|
||||||
|
)
|
||||||
|
|
||||||
|
for required_column in ["generated_answer", "expected_answer", "input_query"]:
|
||||||
|
if required_column not in dataset_def.dataset_schema:
|
||||||
|
raise ValueError(
|
||||||
|
f"Dataset {dataset_id} does not have a '{required_column}' column. Please make sure '{required_column}' column is in the dataset."
|
||||||
|
)
|
||||||
|
if dataset_def.dataset_schema[required_column].type != "string":
|
||||||
|
raise ValueError(
|
||||||
|
f"Dataset {dataset_id} does not have a '{required_column}' column of type 'string'. Please make sure '{required_column}' column is of type 'string'."
|
||||||
|
)
|
||||||
|
|
||||||
async def score_batch(
|
async def score_batch(
|
||||||
self,
|
self,
|
||||||
dataset_id: str,
|
dataset_id: str,
|
||||||
scoring_functions: List[str],
|
scoring_functions: List[str],
|
||||||
save_results_dataset: bool = False,
|
save_results_dataset: bool = False,
|
||||||
) -> ScoreBatchResponse:
|
) -> ScoreBatchResponse:
|
||||||
|
await self.validate_scoring_input_dataset_schema(dataset_id=dataset_id)
|
||||||
rows_paginated = await self.datasetio_api.get_rows_paginated(
|
rows_paginated = await self.datasetio_api.get_rows_paginated(
|
||||||
dataset_id=dataset_id,
|
dataset_id=dataset_id,
|
||||||
rows_in_page=-1,
|
rows_in_page=-1,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue