Spaces:
Sleeping
Sleeping
| """ | |
| Main Module. | |
| Command-line interface for the Hybrid LLM Hallucination Detection System. | |
| """ | |
| import argparse | |
| from datasets import load_dataset | |
| from analyzer import HallucinationAnalyzer | |
| def main(): | |
| """Main entry point for the hallucination detection system.""" | |
| parser = argparse.ArgumentParser( | |
| description="Hybrid LLM Hallucination Detection System" | |
| ) | |
| parser.add_argument( | |
| "--prompt", | |
| type=str, | |
| default=None, | |
| help="Optional single prompt to analyze (if not using full dataset)", | |
| ) | |
| parser.add_argument( | |
| "--use-dataset", | |
| action="store_true", | |
| help="Run evaluation on the TruthfulQA validation set", | |
| ) | |
| parser.add_argument( | |
| "--num-responses", | |
| type=int, | |
| default=5, | |
| help="Number of responses to generate (default: 5)", | |
| ) | |
| parser.add_argument( | |
| "--max-length", | |
| type=int, | |
| default=50, | |
| help="Maximum generation length (default: 50)", | |
| ) | |
| parser.add_argument( | |
| "--temperature", | |
| type=float, | |
| default=0.8, | |
| help="Sampling temperature (default: 0.8)", | |
| ) | |
| parser.add_argument( | |
| "--model", | |
| type=str, | |
| default="gpt2", | |
| help="GPT-2 model variant (default: gpt2)", | |
| ) | |
| parser.add_argument( | |
| "--alpha", | |
| type=float, | |
| default=0.6, | |
| help="Weight for internal risk in final score (default: 0.6)", | |
| ) | |
| parser.add_argument( | |
| "--beta", | |
| type=float, | |
| default=0.4, | |
| help="Weight for external risk in final score (default: 0.4)", | |
| ) | |
| parser.add_argument( | |
| "--semantic-threshold", | |
| type=float, | |
| default=0.80, | |
| help="Min cosine similarity to match a TruthfulQA question (default: 0.80)", | |
| ) | |
| args = parser.parse_args() | |
| analyzer = HallucinationAnalyzer( | |
| model_name=args.model, | |
| semantic_threshold=args.semantic_threshold, | |
| ) | |
| if args.use_dataset: | |
| dataset = load_dataset("truthful_qa", "generation") | |
| data = dataset["validation"] | |
| for example in data: | |
| question = example["question"] | |
| print("\n" + "=" * 30) | |
| print(f"Question: {question}") | |
| print("=" * 30) | |
| results = analyzer.analyze( | |
| prompt=question, | |
| num_responses=args.num_responses, | |
| max_length=args.max_length, | |
| temperature=args.temperature, | |
| alpha=args.alpha, | |
| beta=args.beta, | |
| ) | |
| analyzer.print_summary(results) | |
| elif args.prompt: | |
| results = analyzer.analyze( | |
| prompt=args.prompt, | |
| num_responses=args.num_responses, | |
| max_length=args.max_length, | |
| temperature=args.temperature, | |
| alpha=args.alpha, | |
| beta=args.beta, | |
| ) | |
| analyzer.print_summary(results) | |
| else: | |
| print("Provide --prompt or --use-dataset") | |
| if __name__ == "__main__": | |
| main() | |