ramgovindv commited on
Commit
356d161
·
verified ·
1 Parent(s): cdc9db4

Create cli.py

Browse files
Files changed (1) hide show
  1. health_function_lm/cli.py +70 -0
health_function_lm/cli.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Command-line interface for health-function-lm.
3
+
4
+ Usage
5
+ -----
6
+ health-fn "Log my blood pressure as 120/80"
7
+ health-fn --pretty "What is my resting heart rate?"
8
+ echo "Log weight 70kg" | health-fn
9
+ """
10
+
11
+ import argparse
12
+ import json
13
+ import sys
14
+
15
+ from .model import HealthFunctionLM
16
+
17
+
18
+ def main():
19
+ parser = argparse.ArgumentParser(
20
+ prog="health-fn",
21
+ description="Run a health query through the function-calling model.",
22
+ )
23
+ parser.add_argument(
24
+ "query",
25
+ nargs="?",
26
+ help="Natural-language health query. Reads from stdin if omitted.",
27
+ )
28
+ parser.add_argument(
29
+ "--pretty",
30
+ action="store_true",
31
+ default=True,
32
+ help="Pretty-print JSON output (default: on).",
33
+ )
34
+ parser.add_argument(
35
+ "--repo-id",
36
+ default="ramgovindv/health_function_call_llama3.2_3b_gguf",
37
+ help="Hugging Face repo ID.",
38
+ )
39
+ parser.add_argument(
40
+ "--filename",
41
+ default="Llama-3.2-3B-Instruct.Q4_K_M.gguf",
42
+ help="GGUF filename inside the repo.",
43
+ )
44
+ parser.add_argument(
45
+ "--n-ctx", type=int, default=2048, help="Context window size."
46
+ )
47
+ parser.add_argument(
48
+ "--n-threads", type=int, default=4, help="Number of CPU threads."
49
+ )
50
+
51
+ args = parser.parse_args()
52
+
53
+ query = args.query or sys.stdin.read().strip()
54
+ if not query:
55
+ parser.error("Provide a query as an argument or via stdin.")
56
+
57
+ lm = HealthFunctionLM(
58
+ repo_id=args.repo_id,
59
+ filename=args.filename,
60
+ n_ctx=args.n_ctx,
61
+ n_threads=args.n_threads,
62
+ )
63
+
64
+ result = lm.query(query)
65
+ indent = 2 if args.pretty else None
66
+ print(json.dumps(result, indent=indent))
67
+
68
+
69
+ if __name__ == "__main__":
70
+ main()