"""Simple inference CLI using Hugging Face transformers.pipeline. This module exposes `predict(text, model_name, task)` for programmatic use and a CLI entrypoint. """ from typing import Any, Dict import argparse import json from transformers import pipeline def predict(text: str, model_name: str = "distilbert-base-uncased-finetuned-sst-2-english", task: str = "sentiment-analysis") -> Dict[str, Any]: """Run a transformers pipeline on the given text. Inputs: - text: input string - model_name: model id or path - task: transformers task name Returns a dict with keys: text, model, task, result """ if not isinstance(text, str): raise TypeError("text must be a string") pipe = pipeline(task, model=model_name) result = pipe(text) return { "text": text, "model": model_name, "task": task, "result": result, } def _cli(): parser = argparse.ArgumentParser(description="Minimal transformer inference CLI") parser.add_argument("--text", type=str, required=True, help="Input text to analyze") parser.add_argument("--model", type=str, default="distilbert-base-uncased-finetuned-sst-2-english", help="Model name or path") parser.add_argument("--task", type=str, default="sentiment-analysis", help="Transformers task (default: sentiment-analysis)") args = parser.parse_args() out = predict(args.text, model_name=args.model, task=args.task) print(json.dumps(out, indent=2)) if __name__ == "__main__": _cli()