Source code for openfactcheck.solvers.tutorial.chatgpt_worthiness_filter

from argparse import Namespace

from .utils.prompt_base import CHECK_WORTHINESS_LABEL_ONLY_PROMPT
from .utils.api import chatgpt

from openfactcheck import FactCheckerState, StandardTaskSolver, Solver

[docs] @Solver.register("chatgpt_worthiness_filter", "claims", "claims") class ChatGPTWorthinessFilter(StandardTaskSolver):
[docs] def __init__(self, args: Namespace): super().__init__(args)
# string to format labels def convert_checkworthy_output_to_labels(self, label: str) -> bool: # factual_labels, checkworthy_labels = [], [] # for label in labels: # # factual_labels.append(opinion_vs_factual) # checkworthy_labels.append(checkworthy) # # print(factual_labels) # print(checkworthy_labels) label = label.lower() if label[-1] == ".": label = label[:-1] opinion_vs_factual, checkworthy = label.split(",") if "fact" in opinion_vs_factual: opinion_vs_factual = "factual" else: opinion_vs_factual = "opinion" if "not" in checkworthy or opinion_vs_factual == "opinion": checkworthy = False else: checkworthy = True return checkworthy def __call__(self, state: FactCheckerState, *args, **kwargs): claims = state.get(self.input_name) valid_claims = [] for claim in claims: response = chatgpt(CHECK_WORTHINESS_LABEL_ONLY_PROMPT + claim) if self.convert_checkworthy_output_to_labels(response): valid_claims.append(claim) state.set(self.output_name, valid_claims) return True, state