Skip to content

Commit 32b9e1b

Browse files
Merge pull request #2073 from Giskard-AI/feature/gsk-3940-keyerror-user_input-when-calculating-ragas-metric
[GSK-3940] Make RagasMetric compatible with Ragas v0.2
2 parents 0eec026 + af63db8 commit 32b9e1b

File tree

1 file changed

+27
-7
lines changed

1 file changed

+27
-7
lines changed

giskard/rag/metrics/ragas_metrics.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import logging
44

5+
import ragas
6+
57
from ...llm.client import ChatMessage, LLMClient, get_default_client
68
from ...llm.embeddings import BaseEmbedding, get_default_embedding
79
from ..base import AgentAnswer
@@ -104,20 +106,38 @@ def __call__(self, question_sample: dict, answer: AgentAnswer) -> dict:
104106

105107
self.metric.init(run_config)
106108
if self.requires_context and answer.documents is None:
107-
logger.warn(
109+
logger.warning(
108110
f"No retrieved documents are passed to the evaluation function, computation of {self.name} cannot be done without it."
109111
"Make sure you pass 'retrieved_documents' to the evaluate function or that the 'answer_fn' return documents alongside the answer."
110112
)
111113
return {self.name: 0}
112114

113-
ragas_sample = {
114-
"question": question_sample["question"],
115-
"answer": answer.message,
116-
"contexts": answer.documents,
117-
"ground_truth": question_sample["reference_answer"],
118-
}
115+
ragas_sample = self.prepare_ragas_sample(question_sample, answer)
116+
119117
return {self.name: self.metric.score(ragas_sample)}
120118

119+
@staticmethod
120+
def prepare_ragas_sample(question_sample: dict, answer: AgentAnswer) -> dict:
121+
if ragas.__version__.startswith("0.1"):
122+
logger.warning(
123+
f"{DeprecationWarning.__name__}: You are using an older version (v0.1) of `ragas` package. "
124+
"Support for v0.1 is deprecated and may be removed in future versions. "
125+
"Please consider updating `ragas` to a later version."
126+
)
127+
return {
128+
"question": question_sample["question"],
129+
"answer": answer.message,
130+
"contexts": answer.documents,
131+
"ground_truth": question_sample["reference_answer"],
132+
}
133+
134+
return {
135+
"user_input": question_sample["question"],
136+
"response": answer.message,
137+
"retrieved_contexts": answer.documents,
138+
"reference": question_sample["reference_answer"],
139+
}
140+
121141

122142
ragas_context_precision = RagasMetric(name="RAGAS Context Precision", metric=context_precision, requires_context=True)
123143
ragas_faithfulness = RagasMetric(name="RAGAS Faithfulness", metric=faithfulness, requires_context=True)

0 commit comments

Comments
 (0)