Spaces:
Sleeping
Sleeping
from transformers import pipeline | |
# TODO: move to a config file | |
DEFAULT_MODEL = "Hello-SimpleAI/chatgpt-detector-roberta" | |
MODEL_HUMAN_LABEL = {DEFAULT_MODEL: "Human"} | |
HUMAN = "HUMAN" | |
MACHINE = "MACHINE" | |
UNKNOWN = "UNKNOWN" | |
PARAPHRASE = "PARAPHRASE" | |
NON_PARAPHRASE = "NON_PARAPHRASE" | |
def detect_text_by_ai_model( | |
input_text: str, | |
model: str = DEFAULT_MODEL, | |
max_length: int = 512, | |
) -> tuple: | |
""" | |
Model: chatgpt_detector_roberta | |
Ref: https://huggingface.co/Hello-SimpleAI/chatgpt-detector-roberta | |
Detects if text is human or machine generated. | |
Returns: | |
tuple: (label, confidence_score) | |
where label is HUMAN or MACHINE. | |
""" | |
try: | |
pipe = pipeline( | |
"text-classification", | |
model=model, | |
tokenizer=model, | |
max_length=max_length, | |
truncation=True, | |
device_map="auto", # good for GPU usage | |
) | |
result = pipe(input_text)[0] | |
confidence_score = result["score"] | |
if result["label"] == MODEL_HUMAN_LABEL[model]: | |
label = HUMAN | |
else: | |
label = MACHINE | |
return label, confidence_score | |
except Exception as e: # Add exception handling | |
print(f"Error in Roberta model inference: {e}") | |
return UNKNOWN, 50 # Return UNKNOWN and 0.0 confidence if error | |