zerogpu-cli 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +304 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +22 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/chat.d.ts +3 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +62 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/chatThinking.d.ts +3 -0
- package/dist/commands/chatThinking.d.ts.map +1 -0
- package/dist/commands/chatThinking.js +59 -0
- package/dist/commands/chatThinking.js.map +1 -0
- package/dist/commands/classifyIab.d.ts +3 -0
- package/dist/commands/classifyIab.d.ts.map +1 -0
- package/dist/commands/classifyIab.js +58 -0
- package/dist/commands/classifyIab.js.map +1 -0
- package/dist/commands/classifyIabEnriched.d.ts.map +1 -1
- package/dist/commands/classifyIabEnriched.js +2 -2
- package/dist/commands/classifyIabEnriched.js.map +1 -1
- package/dist/commands/classifyStructured.d.ts +3 -0
- package/dist/commands/classifyStructured.d.ts.map +1 -0
- package/dist/commands/classifyStructured.js +73 -0
- package/dist/commands/classifyStructured.js.map +1 -0
- package/dist/commands/classifyZeroShot.d.ts +3 -0
- package/dist/commands/classifyZeroShot.d.ts.map +1 -0
- package/dist/commands/classifyZeroShot.js +75 -0
- package/dist/commands/classifyZeroShot.js.map +1 -0
- package/dist/commands/extractEntities.d.ts +3 -0
- package/dist/commands/extractEntities.d.ts.map +1 -0
- package/dist/commands/extractEntities.js +85 -0
- package/dist/commands/extractEntities.js.map +1 -0
- package/dist/commands/extractJson.d.ts +3 -0
- package/dist/commands/extractJson.d.ts.map +1 -0
- package/dist/commands/extractJson.js +72 -0
- package/dist/commands/extractJson.js.map +1 -0
- package/dist/commands/extractPii.d.ts +3 -0
- package/dist/commands/extractPii.d.ts.map +1 -0
- package/dist/commands/extractPii.js +77 -0
- package/dist/commands/extractPii.js.map +1 -0
- package/dist/commands/generateFollowups.d.ts +3 -0
- package/dist/commands/generateFollowups.d.ts.map +1 -0
- package/dist/commands/generateFollowups.js +58 -0
- package/dist/commands/generateFollowups.js.map +1 -0
- package/dist/commands/redactPii.d.ts +3 -0
- package/dist/commands/redactPii.d.ts.map +1 -0
- package/dist/commands/redactPii.js +62 -0
- package/dist/commands/redactPii.js.map +1 -0
- package/dist/commands/summarize.d.ts +3 -0
- package/dist/commands/summarize.d.ts.map +1 -0
- package/dist/commands/summarize.js +58 -0
- package/dist/commands/summarize.js.map +1 -0
- package/dist/lib/responses.d.ts +10 -0
- package/dist/lib/responses.d.ts.map +1 -0
- package/dist/lib/responses.js +2 -0
- package/dist/lib/responses.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { getApiKey, getProjectId } from "../lib/auth.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, } from "../lib/responses.js";
|
|
3
|
+
const MODEL = "gliner2-base-v1";
|
|
4
|
+
export function registerClassifyStructuredCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("classify_structured <text>")
|
|
7
|
+
.description("Classify text against a structured schema of categories and labels.")
|
|
8
|
+
.requiredOption("-s, --schema <json>", 'JSON object mapping category name to allowed labels, e.g. \'{"sentiment":["positive","negative","neutral"]}\'')
|
|
9
|
+
.action(async (text, opts) => {
|
|
10
|
+
const apiKey = getApiKey();
|
|
11
|
+
const projectId = getProjectId();
|
|
12
|
+
if (!apiKey || !projectId) {
|
|
13
|
+
console.error("You're not fully signed in yet. Run 'zerogpu login' to set your API key and project ID.");
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
let schema;
|
|
17
|
+
try {
|
|
18
|
+
schema = JSON.parse(opts.schema);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
22
|
+
console.error(`Invalid --schema JSON: ${message}`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
let response;
|
|
26
|
+
try {
|
|
27
|
+
response = await fetch(RESPONSES_ENDPOINT, {
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers: {
|
|
30
|
+
"content-type": "application/json",
|
|
31
|
+
"x-api-key": apiKey.apiKey,
|
|
32
|
+
"x-project-id": projectId.projectId,
|
|
33
|
+
},
|
|
34
|
+
body: JSON.stringify({
|
|
35
|
+
model: MODEL,
|
|
36
|
+
input: text,
|
|
37
|
+
metadata: {
|
|
38
|
+
schema,
|
|
39
|
+
usecase: "classification",
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
46
|
+
console.error(`Request failed: ${message}`);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
const body = await response.text();
|
|
51
|
+
console.error(`Request failed with status ${response.status}.`);
|
|
52
|
+
if (body)
|
|
53
|
+
console.error(body);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
const data = (await response.json());
|
|
57
|
+
const content = data.output?.[0]?.content?.find((c) => c.type === "output_text")
|
|
58
|
+
?.text ?? data.output?.[0]?.content?.[0]?.text;
|
|
59
|
+
if (!content) {
|
|
60
|
+
console.error("Response did not contain any classification content.");
|
|
61
|
+
console.error(JSON.stringify(data, null, 2));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const parsed = JSON.parse(content);
|
|
66
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
console.log(content);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=classifyStructured.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifyStructured.js","sourceRoot":"","sources":["../../src/commands/classifyStructured.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifyZeroShot.d.ts","sourceRoot":"","sources":["../../src/commands/classifyZeroShot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4FtE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { getApiKey, getProjectId } from "../lib/auth.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, } from "../lib/responses.js";
|
|
3
|
+
const MODEL = "deberta-v3-small";
|
|
4
|
+
function collectLabel(value, previous) {
|
|
5
|
+
return previous.concat([value]);
|
|
6
|
+
}
|
|
7
|
+
export function registerClassifyZeroShotCommand(program) {
|
|
8
|
+
program
|
|
9
|
+
.command("classify_zero_shot <text>")
|
|
10
|
+
.description("Zero-shot classify text against a set of candidate labels using DeBERTa v3.")
|
|
11
|
+
.option("-l, --label <label>", "Candidate label (repeatable).", collectLabel, [])
|
|
12
|
+
.option("--labels <labels>", "Comma-separated list of candidate labels (alternative to repeating --label).")
|
|
13
|
+
.action(async (text, opts) => {
|
|
14
|
+
const apiKey = getApiKey();
|
|
15
|
+
const projectId = getProjectId();
|
|
16
|
+
if (!apiKey || !projectId) {
|
|
17
|
+
console.error("You're not fully signed in yet. Run 'zerogpu login' to set your API key and project ID.");
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
const labels = [
|
|
21
|
+
...opts.label,
|
|
22
|
+
...(opts.labels
|
|
23
|
+
? opts.labels.split(",").map((l) => l.trim()).filter(Boolean)
|
|
24
|
+
: []),
|
|
25
|
+
];
|
|
26
|
+
if (labels.length === 0) {
|
|
27
|
+
console.error("At least one label is required. Use --label <name> (repeatable) or --labels a,b,c.");
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const instructions = `[${labels.join(", ")}]`;
|
|
31
|
+
let response;
|
|
32
|
+
try {
|
|
33
|
+
response = await fetch(RESPONSES_ENDPOINT, {
|
|
34
|
+
method: "POST",
|
|
35
|
+
headers: {
|
|
36
|
+
"content-type": "application/json",
|
|
37
|
+
"x-api-key": apiKey.apiKey,
|
|
38
|
+
"x-project-id": projectId.projectId,
|
|
39
|
+
},
|
|
40
|
+
body: JSON.stringify({
|
|
41
|
+
model: MODEL,
|
|
42
|
+
input: text,
|
|
43
|
+
instructions,
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
49
|
+
console.error(`Request failed: ${message}`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
const body = await response.text();
|
|
54
|
+
console.error(`Request failed with status ${response.status}.`);
|
|
55
|
+
if (body)
|
|
56
|
+
console.error(body);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const data = (await response.json());
|
|
60
|
+
const content = data.output?.[0]?.content?.find((c) => c.type === "output_text")?.text ?? data.output?.[0]?.content?.[0]?.text;
|
|
61
|
+
if (!content) {
|
|
62
|
+
console.error("Response did not contain any classification content.");
|
|
63
|
+
console.error(JSON.stringify(data, null, 2));
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const parsed = JSON.parse(content);
|
|
68
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
console.log(content);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=classifyZeroShot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifyZeroShot.js","sourceRoot":"","sources":["../../src/commands/classifyZeroShot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractEntities.d.ts","sourceRoot":"","sources":["../../src/commands/extractEntities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyGrE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { getApiKey, getProjectId } from "../lib/auth.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, } from "../lib/responses.js";
|
|
3
|
+
const MODEL = "gliner2-base-v1";
|
|
4
|
+
const DEFAULT_THRESHOLD = 0.3;
|
|
5
|
+
function collectLabel(value, previous) {
|
|
6
|
+
return previous.concat([value]);
|
|
7
|
+
}
|
|
8
|
+
export function registerExtractEntitiesCommand(program) {
|
|
9
|
+
program
|
|
10
|
+
.command("extract_entities <text>")
|
|
11
|
+
.description("Extract named entities from text using the GLiNER2 model with custom labels.")
|
|
12
|
+
.option("-l, --label <label>", "Entity label to extract (repeatable).", collectLabel, [])
|
|
13
|
+
.option("--labels <labels>", "Comma-separated list of entity labels (alternative to repeating --label).")
|
|
14
|
+
.option("-t, --threshold <number>", "Confidence threshold between 0 and 1.", `${DEFAULT_THRESHOLD}`)
|
|
15
|
+
.action(async (text, opts) => {
|
|
16
|
+
const apiKey = getApiKey();
|
|
17
|
+
const projectId = getProjectId();
|
|
18
|
+
if (!apiKey || !projectId) {
|
|
19
|
+
console.error("You're not fully signed in yet. Run 'zerogpu login' to set your API key and project ID.");
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
const labels = [
|
|
23
|
+
...opts.label,
|
|
24
|
+
...(opts.labels
|
|
25
|
+
? opts.labels.split(",").map((l) => l.trim()).filter(Boolean)
|
|
26
|
+
: []),
|
|
27
|
+
];
|
|
28
|
+
if (labels.length === 0) {
|
|
29
|
+
console.error("At least one label is required. Use --label <name> (repeatable) or --labels a,b,c.");
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
const threshold = Number(opts.threshold);
|
|
33
|
+
if (!Number.isFinite(threshold) || threshold < 0 || threshold > 1) {
|
|
34
|
+
console.error("--threshold must be a number between 0 and 1.");
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
let response;
|
|
38
|
+
try {
|
|
39
|
+
response = await fetch(RESPONSES_ENDPOINT, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: {
|
|
42
|
+
"content-type": "application/json",
|
|
43
|
+
"x-api-key": apiKey.apiKey,
|
|
44
|
+
"x-project-id": projectId.projectId,
|
|
45
|
+
},
|
|
46
|
+
body: JSON.stringify({
|
|
47
|
+
model: MODEL,
|
|
48
|
+
input: text,
|
|
49
|
+
metadata: {
|
|
50
|
+
labels,
|
|
51
|
+
usecase: "ner",
|
|
52
|
+
threshold,
|
|
53
|
+
},
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
59
|
+
console.error(`Request failed: ${message}`);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
const body = await response.text();
|
|
64
|
+
console.error(`Request failed with status ${response.status}.`);
|
|
65
|
+
if (body)
|
|
66
|
+
console.error(body);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const data = (await response.json());
|
|
70
|
+
const content = data.output?.[0]?.content?.find((c) => c.type === "output_text")?.text ?? data.output?.[0]?.content?.[0]?.text;
|
|
71
|
+
if (!content) {
|
|
72
|
+
console.error("Response did not contain any entity content.");
|
|
73
|
+
console.error(JSON.stringify(data, null, 2));
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const parsed = JSON.parse(content);
|
|
78
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
console.log(content);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=extractEntities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractEntities.js","sourceRoot":"","sources":["../../src/commands/extractEntities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractJson.d.ts","sourceRoot":"","sources":["../../src/commands/extractJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8EjE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { getApiKey, getProjectId } from "../lib/auth.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, } from "../lib/responses.js";
|
|
3
|
+
const MODEL = "gliner2-base-v1";
|
|
4
|
+
export function registerExtractJsonCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("extract_json <text>")
|
|
7
|
+
.description("Extract structured JSON from text according to a provided schema.")
|
|
8
|
+
.requiredOption("-s, --schema <json>", 'Schema as a JSON string, e.g. \'{"contact":["name::str::Full name","email::str::Email address"]}\'')
|
|
9
|
+
.action(async (text, options) => {
|
|
10
|
+
const apiKey = getApiKey();
|
|
11
|
+
const projectId = getProjectId();
|
|
12
|
+
if (!apiKey || !projectId) {
|
|
13
|
+
console.error("You're not fully signed in yet. Run 'zerogpu login' to set your API key and project ID.");
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
let schema;
|
|
17
|
+
try {
|
|
18
|
+
schema = JSON.parse(options.schema);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
22
|
+
console.error(`Invalid --schema JSON: ${message}`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
let response;
|
|
26
|
+
try {
|
|
27
|
+
response = await fetch(RESPONSES_ENDPOINT, {
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers: {
|
|
30
|
+
"content-type": "application/json",
|
|
31
|
+
"x-api-key": apiKey.apiKey,
|
|
32
|
+
"x-project-id": projectId.projectId,
|
|
33
|
+
},
|
|
34
|
+
body: JSON.stringify({
|
|
35
|
+
model: MODEL,
|
|
36
|
+
input: text,
|
|
37
|
+
metadata: {
|
|
38
|
+
schema,
|
|
39
|
+
usecase: "json",
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
46
|
+
console.error(`Request failed: ${message}`);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
const body = await response.text();
|
|
51
|
+
console.error(`Request failed with status ${response.status}.`);
|
|
52
|
+
if (body)
|
|
53
|
+
console.error(body);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
const data = (await response.json());
|
|
57
|
+
const content = data.output?.[0]?.content?.find((c) => c.type === "output_text")?.text ?? data.output?.[0]?.content?.[0]?.text;
|
|
58
|
+
if (!content) {
|
|
59
|
+
console.error("Response did not contain any extraction content.");
|
|
60
|
+
console.error(JSON.stringify(data, null, 2));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const parsed = JSON.parse(content);
|
|
65
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
console.log(content);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=extractJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractJson.js","sourceRoot":"","sources":["../../src/commands/extractJson.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractPii.d.ts","sourceRoot":"","sources":["../../src/commands/extractPii.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2FhE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { getApiKey, getProjectId } from "../lib/auth.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, } from "../lib/responses.js";
|
|
3
|
+
const MODEL = "gliner-multi-pii-v1";
|
|
4
|
+
const DEFAULT_THRESHOLD = 0.5;
|
|
5
|
+
const DEFAULT_CATEGORIES = ["identity", "contact"];
|
|
6
|
+
export function registerExtractPiiCommand(program) {
|
|
7
|
+
program
|
|
8
|
+
.command("extract_pii <text>")
|
|
9
|
+
.description("Extract PII entities from text (persons, emails, phone numbers, etc.).")
|
|
10
|
+
.option("-t, --threshold <number>", "Confidence threshold for entity extraction.", String(DEFAULT_THRESHOLD))
|
|
11
|
+
.option("-c, --categories <list>", "Comma-separated list of PII categories to extract.", DEFAULT_CATEGORIES.join(","))
|
|
12
|
+
.action(async (text, opts) => {
|
|
13
|
+
const apiKey = getApiKey();
|
|
14
|
+
const projectId = getProjectId();
|
|
15
|
+
if (!apiKey || !projectId) {
|
|
16
|
+
console.error("You're not fully signed in yet. Run 'zerogpu login' to set your API key and project ID.");
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
const threshold = Number(opts.threshold);
|
|
20
|
+
if (!Number.isFinite(threshold)) {
|
|
21
|
+
console.error(`Invalid threshold: ${opts.threshold}`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const categories = opts.categories
|
|
25
|
+
.split(",")
|
|
26
|
+
.map((c) => c.trim())
|
|
27
|
+
.filter((c) => c.length > 0);
|
|
28
|
+
let response;
|
|
29
|
+
try {
|
|
30
|
+
response = await fetch(RESPONSES_ENDPOINT, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers: {
|
|
33
|
+
"content-type": "application/json",
|
|
34
|
+
"x-api-key": apiKey.apiKey,
|
|
35
|
+
"x-project-id": projectId.projectId,
|
|
36
|
+
},
|
|
37
|
+
body: JSON.stringify({
|
|
38
|
+
model: MODEL,
|
|
39
|
+
input: text,
|
|
40
|
+
metadata: {
|
|
41
|
+
usecase: "extract-pii",
|
|
42
|
+
threshold,
|
|
43
|
+
categories,
|
|
44
|
+
},
|
|
45
|
+
}),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
50
|
+
console.error(`Request failed: ${message}`);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
const body = await response.text();
|
|
55
|
+
console.error(`Request failed with status ${response.status}.`);
|
|
56
|
+
if (body)
|
|
57
|
+
console.error(body);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
const data = (await response.json());
|
|
61
|
+
const content = data.output?.[0]?.content?.find((c) => c.type === "output_text")
|
|
62
|
+
?.text ?? data.output?.[0]?.content?.[0]?.text;
|
|
63
|
+
if (!content) {
|
|
64
|
+
console.error("Response did not contain any extraction content.");
|
|
65
|
+
console.error(JSON.stringify(data, null, 2));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const parsed = JSON.parse(content);
|
|
70
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
console.log(content);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=extractPii.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractPii.js","sourceRoot":"","sources":["../../src/commands/extractPii.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateFollowups.d.ts","sourceRoot":"","sources":["../../src/commands/generateFollowups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6DvE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { getApiKey, getProjectId } from "../lib/auth.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, } from "../lib/responses.js";
|
|
3
|
+
const MODEL = "zlm-v1-followup-questions-edge";
|
|
4
|
+
export function registerGenerateFollowupsCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("generate_followups <text>")
|
|
7
|
+
.description("Generate contextual follow-up questions with the ZeroGPU followup edge model.")
|
|
8
|
+
.action(async (text) => {
|
|
9
|
+
const apiKey = getApiKey();
|
|
10
|
+
const projectId = getProjectId();
|
|
11
|
+
if (!apiKey || !projectId) {
|
|
12
|
+
console.error("You're not fully signed in yet. Run 'zerogpu login' to set your API key and project ID.");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
let response;
|
|
16
|
+
try {
|
|
17
|
+
response = await fetch(RESPONSES_ENDPOINT, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: {
|
|
20
|
+
"content-type": "application/json",
|
|
21
|
+
"x-api-key": apiKey.apiKey,
|
|
22
|
+
"x-project-id": projectId.projectId,
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
model: MODEL,
|
|
26
|
+
input: text,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
32
|
+
console.error(`Request failed: ${message}`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
const body = await response.text();
|
|
37
|
+
console.error(`Request failed with status ${response.status}.`);
|
|
38
|
+
if (body)
|
|
39
|
+
console.error(body);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
const data = (await response.json());
|
|
43
|
+
const content = data.output?.[0]?.content?.find((c) => c.type === "output_text")?.text ?? data.output?.[0]?.content?.[0]?.text;
|
|
44
|
+
if (!content) {
|
|
45
|
+
console.error("Response did not contain any follow-up content.");
|
|
46
|
+
console.error(JSON.stringify(data, null, 2));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const parsed = JSON.parse(content);
|
|
51
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
console.log(content);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=generateFollowups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateFollowups.js","sourceRoot":"","sources":["../../src/commands/generateFollowups.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redactPii.d.ts","sourceRoot":"","sources":["../../src/commands/redactPii.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE/D"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { getApiKey, getProjectId } from "../lib/auth.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, } from "../lib/responses.js";
|
|
3
|
+
const MODEL = "gliner-multi-pii-v1";
|
|
4
|
+
export function registerRedactPiiCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("redact_pii <text>")
|
|
7
|
+
.description("Detect and redact PII entities in text (persons, phone numbers, emails, etc.).")
|
|
8
|
+
.action(async (text) => {
|
|
9
|
+
const apiKey = getApiKey();
|
|
10
|
+
const projectId = getProjectId();
|
|
11
|
+
if (!apiKey || !projectId) {
|
|
12
|
+
console.error("You're not fully signed in yet. Run 'zerogpu login' to set your API key and project ID.");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
let response;
|
|
16
|
+
try {
|
|
17
|
+
response = await fetch(RESPONSES_ENDPOINT, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: {
|
|
20
|
+
"content-type": "application/json",
|
|
21
|
+
"x-api-key": apiKey.apiKey,
|
|
22
|
+
"x-project-id": projectId.projectId,
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
model: MODEL,
|
|
26
|
+
input: text,
|
|
27
|
+
metadata: {
|
|
28
|
+
mask: "label",
|
|
29
|
+
usecase: "redact",
|
|
30
|
+
},
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
36
|
+
console.error(`Request failed: ${message}`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const body = await response.text();
|
|
41
|
+
console.error(`Request failed with status ${response.status}.`);
|
|
42
|
+
if (body)
|
|
43
|
+
console.error(body);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const data = (await response.json());
|
|
47
|
+
const content = data.output?.[0]?.content?.find((c) => c.type === "output_text")?.text ?? data.output?.[0]?.content?.[0]?.text;
|
|
48
|
+
if (!content) {
|
|
49
|
+
console.error("Response did not contain any redaction content.");
|
|
50
|
+
console.error(JSON.stringify(data, null, 2));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const parsed = JSON.parse(content);
|
|
55
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
console.log(content);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=redactPii.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redactPii.js","sourceRoot":"","sources":["../../src/commands/redactPii.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,KAAK,GAAG,qBAAqB,CAAC;AAEpC,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CACV,gFAAgF,CACjF;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QAEjC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CACX,yFAAyF,CAC1F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;gBACzC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,MAAM,CAAC,MAAM;oBAC1B,cAAc,EAAE,SAAS,CAAC,SAAS;iBACpC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE;wBACR,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,QAAQ;qBAClB;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAChE,IAAI,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAChC,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../src/commands/summarize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2D/D"}
|