Custom Instruct#

Custom Instruct is not like pre-defined metrics. It have to initialize with the given configuration before using the metric. We can give custom instructions for the evaluations. It can be both binary metric or Non-binary metric.

Hint

  • question:

  • context:

  • response:

  • configured instructions:

  • score:

Importing the neccessory packages and modules

from ragrank.dataset import DataNode
from ragrank import evaluate
from ragrank.metric import CustomInstruct, InstructConfig
from ragrank.metric.base import MetricType

Setting up the instructions.

grammar_checker = CustomInstruct(
    config=InstructConfig(
        metric_type=MetricType.NON_BINARY,
        name="grammar checker",
        instructions="Give a score for grammar in the response",
        examples=[
            {
                "question": "how are you ?",
                "response": "I am fine, Thank you for asking",
                "score": 0.99
            },
            {
                "question": "how are you ?",
                "response": "I fine, thank in asking",
                "score": 0.03,
            }
        ],
        input_fields=["question", "response"],
        output_field="score",
    )
)

Performing the evaluation

# defining the data node
data = DataNode(
    question="What is the tallest mountain in the world?",
    context=[
        "Mount Everest is the tallest mountain above sea level.",
        "It is located in the Himalayas.",
    ],
    response="The tallest mountain in the world is Mount Everest.",
)

result = evaluate(
    data ,
    metrics=[grammar_checker],
)
print(result)