""" Command-line interface for health-function-lm. Usage ----- health-fn "Log my blood pressure as 120/80" health-fn --pretty "What is my resting heart rate?" echo "Log weight 70kg" | health-fn """ import argparse import json import sys from .model import HealthFunctionLM def main(): parser = argparse.ArgumentParser( prog="health-fn", description="Run a health query through the function-calling model.", ) parser.add_argument( "query", nargs="?", help="Natural-language health query. Reads from stdin if omitted.", ) parser.add_argument( "--pretty", action="store_true", default=True, help="Pretty-print JSON output (default: on).", ) parser.add_argument( "--repo-id", default="ramgovindv/health_function_call_llama3.2_3b_gguf", help="Hugging Face repo ID.", ) parser.add_argument( "--filename", default="Llama-3.2-3B-Instruct.Q4_K_M.gguf", help="GGUF filename inside the repo.", ) parser.add_argument( "--n-ctx", type=int, default=2048, help="Context window size." ) parser.add_argument( "--n-threads", type=int, default=4, help="Number of CPU threads." ) args = parser.parse_args() query = args.query or sys.stdin.read().strip() if not query: parser.error("Provide a query as an argument or via stdin.") lm = HealthFunctionLM( repo_id=args.repo_id, filename=args.filename, n_ctx=args.n_ctx, n_threads=args.n_threads, ) result = lm.query(query) indent = 2 if args.pretty else None print(json.dumps(result, indent=indent)) if __name__ == "__main__": main()