12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import typing as t
- from datasets import load_dataset
- import dspy
- from .datatypes import TaskDatasets
- from .helpers import train_val_test_split
- def datasets(
- train_size: float = 0.1,
- validation_size: float = 0.2,
- ) -> TaskDatasets:
- """
- TODO:
- Load dataset, dataset should be datasets.Dataset type (NOT DatasetDict, OR split the dataset yourself how you want)
- """
- dataset = load_dataset("TODO")
- return train_val_test_split(dataset, _task_doc_example, train_size, validation_size)
- class TaskDoc(t.TypedDict):
- problem: str
- gold: str
- inputs = ["problem"]
- outputs = ["answer"]
- def _task_doc_example(doc: TaskDoc) -> dspy.Example:
- return dspy.Example(
- problem=doc["problem"],
- answer=doc["gold"],
- ).with_inputs(*inputs)
- def signature(instructions: str = "") -> dspy.Signature:
- class MMLUPro(dspy.Signature):
- __doc__ = instructions
- problem: str = dspy.InputField()
- answer: str = dspy.OutputField()
- return MMLUPro
- def metric(gold: dspy.Example, pred: dspy.Example, trace=False) -> bool:
- return gold.answer == pred.answer
|