Shahzaib98's picture
Upload 11 files
d2ff6a7 verified
from typing import List
from huggingface_hub import InferenceClient
from openai import OpenAI
def detect_abstain(text: str, api: str, model: str):
if api == "openai":
client = OpenAI()
elif api == "hf":
client = InferenceClient()
else:
raise ValueError(f"Invalid API: {api}")
detect_abstain_prompt = f"""
You are given a piece of text that is a part of a biography of an entity.
Text: {text}
If the text claims a lack of knowledge about the topic, return "Abstain".
Otherwise, return "Not abstain".
"""
completion = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": detect_abstain_prompt},
],
)
return completion.choices[0].message.content.strip()
def calculate_factf1_at_k(
supported_facts: List[str], unsupported_facts: List[str], k: int
) -> float:
"""
Calculate the F1 score at k for supported and unsupported facts
"""
if len(supported_facts) == 0:
return 0
precision = len(supported_facts) / (len(supported_facts) + len(unsupported_facts))
recall = min(len(supported_facts) / k, 1)
f1 = 2 * precision * recall / (precision + recall)
return f1