Spaces:
Running
Running
| from transformers import pipeline | |
| # Load model once when file is imported | |
| nli_model = pipeline( | |
| "text-classification", | |
| model="cross-encoder/nli-deberta-v3-small" | |
| ) | |
| def evaluate_nli(context: str, llm_response: str) -> dict: | |
| # Combine context and response for NLI model | |
| input_text = f"{context} [SEP] {llm_response}" | |
| # Get prediction | |
| result = nli_model(input_text) | |
| label = result[0]["label"].lower() | |
| score = round(result[0]["score"], 4) | |
| # Map NLI label to verdict | |
| if label == "entailment": | |
| verdict = "Faithful" | |
| elif label == "contradiction": | |
| verdict = "Hallucinated" | |
| else: | |
| verdict = "Unverifiable" | |
| return { | |
| "label": label, | |
| "score": score, | |
| "verdict": verdict | |
| } | |
| if __name__ == "__main__": | |
| # Should catch contradiction | |
| result1 = evaluate_nli( | |
| context="Photosynthesis is the process by which plants convert sunlight into glucose.", | |
| llm_response="Plants use moonlight to produce glucose through photosynthesis." | |
| ) | |
| print("Moonlight test:", result1) | |
| # Should be faithful | |
| result2 = evaluate_nli( | |
| context="Photosynthesis is the process by which plants convert sunlight into glucose.", | |
| llm_response="Plants use sunlight to produce glucose through photosynthesis." | |
| ) | |
| print("Sunlight test:", result2) |