AQIT 0.1.0
Loading...
Searching...
No Matches
cli.py
Go to the documentation of this file.
1# Copyright (c) 2025-present Aquin Labs Private Limited
2# SPDX-License-Identifier: Apache-2.0
3
4"""AQIT CLI: Recipe, train, EvalGate, inspect, SAE, patch."""
5
6from __future__ import annotations
7
8import sys
9
10# Everything shipped in this tree is AQIT (Aquin framework is from-scratch later).
11AQIT_VERBS = frozenset({
12 "train",
13 "load",
14 "unload",
15 "prompt",
16 "prompting",
17 "trace",
18 "inspect",
19 "feature",
20 "feature-logits",
21 "feature-neighbors",
22 "extract-steer-vector",
23 "diff",
24 "sae",
25 "capture-activations",
26 "sweep",
27 "activations",
28 "find-feature",
29 "sae-stats",
30 "confidence-analysis",
31 "check",
32 "eval",
33 "check-weights",
34 "umap",
35 "audit",
36 "consistency-eval",
37 "suppression-eval",
38 "suppress-eval",
39 "boundary-eval",
40 "attention",
41 "features",
42 "attribution",
43 "perturbation",
44 "contrastive",
45 "browser",
46 "graph",
47 "circuit",
48 "absorption",
49 "polysemy",
50 "faithfulness",
51 "replay",
52 "list",
53 "info",
54 "red-team",
55 "steer",
56 "multi-steer",
57 "simulate",
58 "benchmark",
59 "benchmarks",
60})
61
62
63def _print_help() -> None:
64 print("AQIT Aquin Interp Tooling")
65 print("Recipe, train, EvalGate, inspect, SAE, patch. (Aquin framework is separate.)")
66 print("")
67 print("Usage: aqit <command> ...")
68 print("")
69 print(" train <recipe.yaml> DataRevision → train → Checkpoint → EvalGate")
70 print(" load model <id> / unload / prompt")
71 print(" eval custom|consistency|suppress|boundary")
72 print(" check attention|layer|perturbation|weight|confidence|trajectory")
73 print(" diff weight|sae|residue")
74 print(" trace / benchmark / --umap")
75 print(" sae train|align info sae / load sae")
76 print(" feature locate|logit|neighbor")
77 print(" steer / sweep / multi-steer")
78 print(" activations capture|replay features compare")
79 print(" simulate / list simulation / replay simulation / compare simulation")
80 print("")
81 print("SDK: import aqit")
82 print(" aqit.train.run(\"recipe.yaml\")")
83 print(" aqit.inspect.trace(...)")
84 print(" aqit.patch.steer(...)")
85
86
87def dispatch(argv: list[str]) -> None:
88 """Run one AQIT command (argv includes the verb)."""
89 if not argv or argv[0] in ("-h", "--help", "help"):
91 return
92
93 cmd = argv[0]
94 rest = argv[1:]
95
96 from aquin import cli as aquin_cli
97
98 if cmd == "train":
99 from aquin.train_cli import cmd_train
100
101 cmd_train(rest)
102 elif cmd == "load":
103 aquin_cli.cmd_load(rest)
104 elif cmd == "unload":
105 aquin_cli.cmd_unload(rest)
106 elif cmd in ("prompt", "prompting"):
107 aquin_cli.cmd_prompt(rest)
108 elif cmd == "trace":
109 aquin_cli.cmd_trace(rest)
110 elif cmd == "inspect":
111 print("Use: aqit trace", file=sys.stderr)
112 sys.exit(1)
113 elif cmd == "feature":
114 from aquin.feature_cli import cmd_feature
115
116 cmd_feature(rest)
117 elif cmd == "feature-logits":
118 print("Use: aqit feature logit", file=sys.stderr)
119 sys.exit(1)
120 elif cmd == "feature-neighbors":
121 print("Use: aqit feature neighbor", file=sys.stderr)
122 sys.exit(1)
123 elif cmd == "extract-steer-vector":
124 print("Use: aqit steer --feature_idx <n> --save <path>", file=sys.stderr)
125 sys.exit(1)
126 elif cmd == "replay":
127 from aquin.replay_cli import cmd_replay
128
129 cmd_replay(rest)
130 elif cmd == "list":
131 aquin_cli.cmd_list(rest)
132 elif cmd == "info":
133 aquin_cli.cmd_info(rest)
134 elif cmd == "diff":
135 from aquin.diff_cli import cmd_diff
136
137 cmd_diff(rest)
138 elif cmd == "sae":
139 from aquin.sae_cli import cmd_sae
140
141 cmd_sae(rest)
142 elif cmd == "capture-activations":
143 from aquin.capture_cli import cmd_capture_activations
144
145 cmd_capture_activations(rest)
146 elif cmd == "sweep":
147 from aquin.sweep_cli import cmd_sweep
148
149 cmd_sweep(rest)
150 elif cmd == "activations":
151 from aquin.activations_cli import cmd_activations
152
153 cmd_activations(rest)
154 elif cmd == "find-feature":
155 print("Use: aqit feature locate", file=sys.stderr)
156 sys.exit(1)
157 elif cmd == "sae-stats":
158 from aquin.sae_stats_cli import cmd_sae_stats
159
160 cmd_sae_stats(rest)
161 elif cmd == "confidence-analysis":
162 print("Use: aqit check confidence", file=sys.stderr)
163 sys.exit(1)
164 elif cmd == "check":
165 from aquin.check_cli import cmd_check
166
167 cmd_check(rest)
168 elif cmd == "eval":
169 from aquin.eval_cli import cmd_eval
170
171 cmd_eval(rest)
172 elif cmd == "check-weights":
173 print("Use: aqit check weight", file=sys.stderr)
174 sys.exit(1)
175 elif cmd == "umap":
176 print("Use: aqit <cmd> --umap (e.g. aqit feature locate --umap)", file=sys.stderr)
177 sys.exit(1)
178 elif cmd == "audit":
179 print("Use: aqit eval consistency | suppress | boundary", file=sys.stderr)
180 sys.exit(1)
181 elif cmd == "consistency-eval":
182 print("Use: aqit eval consistency", file=sys.stderr)
183 sys.exit(1)
184 elif cmd in ("suppression-eval", "suppress-eval"):
185 print("Use: aqit eval suppress", file=sys.stderr)
186 sys.exit(1)
187 elif cmd == "boundary-eval":
188 print("Use: aqit eval boundary", file=sys.stderr)
189 sys.exit(1)
190 elif cmd == "attention":
191 print("Use: aqit check attention", file=sys.stderr)
192 sys.exit(1)
193 elif cmd == "features":
194 from aquin.features_cli import cmd_features
195
196 cmd_features(rest)
197 elif cmd in (
198 "attribution",
199 "perturbation",
200 "contrastive",
201 "browser",
202 "graph",
203 "circuit",
204 "absorption",
205 "polysemy",
206 "faithfulness",
207 ):
208 print(f"Use: aqit check {cmd}", file=sys.stderr)
209 sys.exit(1)
210 elif cmd in aquin_cli._active_cli_tool_map():
211 aquin_cli.cmd_tool(cmd, rest)
212 else:
213 print(f"Unknown AQIT command: {cmd}")
214 print("Run aqit help")
215 sys.exit(1)
216
217
218def is_aqit_verb(cmd: str) -> bool:
219 if cmd in AQIT_VERBS:
220 return True
221 from aquin.cli import _active_cli_tool_map
223 return cmd in _active_cli_tool_map()
224
225
226def main() -> None:
227 dispatch(sys.argv[1:])
None main()
Definition cli.py:230
None _print_help()
Definition cli.py:67
None dispatch(list[str] argv)
Definition cli.py:91
bool is_aqit_verb(str cmd)
Definition cli.py:222