@workglow/ai 0.0.125 → 0.1.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 +218 -47
- package/dist/browser.d.ts +7 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +565 -1277
- package/dist/browser.js.map +56 -61
- package/dist/{types.d.ts → bun.d.ts} +1 -1
- package/dist/bun.d.ts.map +1 -0
- package/dist/bun.js +565 -1277
- package/dist/bun.js.map +56 -61
- package/dist/common.d.ts +3 -1
- package/dist/common.d.ts.map +1 -1
- package/dist/execution/DirectExecutionStrategy.d.ts +20 -0
- package/dist/execution/DirectExecutionStrategy.d.ts.map +1 -0
- package/dist/execution/IAiExecutionStrategy.d.ts +33 -0
- package/dist/execution/IAiExecutionStrategy.d.ts.map +1 -0
- package/dist/execution/QueuedExecutionStrategy.d.ts +50 -0
- package/dist/execution/QueuedExecutionStrategy.d.ts.map +1 -0
- package/dist/job/AiJob.d.ts +6 -0
- package/dist/job/AiJob.d.ts.map +1 -1
- package/dist/node.d.ts +7 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +565 -1277
- package/dist/node.js.map +56 -61
- package/dist/provider/AiProvider.d.ts +16 -2
- package/dist/provider/AiProvider.d.ts.map +1 -1
- package/dist/provider/AiProviderRegistry.d.ts +20 -0
- package/dist/provider/AiProviderRegistry.d.ts.map +1 -1
- package/dist/provider/QueuedAiProvider.d.ts +23 -2
- package/dist/provider/QueuedAiProvider.d.ts.map +1 -1
- package/dist/task/BackgroundRemovalTask.d.ts +3 -3
- package/dist/task/BackgroundRemovalTask.d.ts.map +1 -1
- package/dist/task/ChunkRetrievalTask.d.ts +4 -4
- package/dist/task/ChunkRetrievalTask.d.ts.map +1 -1
- package/dist/task/ChunkToVectorTask.d.ts +4 -4
- package/dist/task/ChunkToVectorTask.d.ts.map +1 -1
- package/dist/task/ChunkVectorHybridSearchTask.d.ts +4 -4
- package/dist/task/ChunkVectorHybridSearchTask.d.ts.map +1 -1
- package/dist/task/ChunkVectorSearchTask.d.ts +4 -4
- package/dist/task/ChunkVectorSearchTask.d.ts.map +1 -1
- package/dist/task/ChunkVectorUpsertTask.d.ts +4 -4
- package/dist/task/ChunkVectorUpsertTask.d.ts.map +1 -1
- package/dist/task/ContextBuilderTask.d.ts +4 -4
- package/dist/task/ContextBuilderTask.d.ts.map +1 -1
- package/dist/task/CountTokensTask.d.ts +11 -29
- package/dist/task/CountTokensTask.d.ts.map +1 -1
- package/dist/task/DocumentEnricherTask.d.ts +4 -4
- package/dist/task/DocumentEnricherTask.d.ts.map +1 -1
- package/dist/task/DownloadModelTask.d.ts +5 -5
- package/dist/task/DownloadModelTask.d.ts.map +1 -1
- package/dist/task/FaceDetectorTask.d.ts +4 -4
- package/dist/task/FaceDetectorTask.d.ts.map +1 -1
- package/dist/task/FaceLandmarkerTask.d.ts +4 -4
- package/dist/task/FaceLandmarkerTask.d.ts.map +1 -1
- package/dist/task/GestureRecognizerTask.d.ts +4 -4
- package/dist/task/GestureRecognizerTask.d.ts.map +1 -1
- package/dist/task/HandLandmarkerTask.d.ts +4 -4
- package/dist/task/HandLandmarkerTask.d.ts.map +1 -1
- package/dist/task/HierarchicalChunkerTask.d.ts +4 -4
- package/dist/task/HierarchicalChunkerTask.d.ts.map +1 -1
- package/dist/task/HierarchyJoinTask.d.ts +4 -4
- package/dist/task/HierarchyJoinTask.d.ts.map +1 -1
- package/dist/task/ImageClassificationTask.d.ts +4 -4
- package/dist/task/ImageClassificationTask.d.ts.map +1 -1
- package/dist/task/ImageEmbeddingTask.d.ts +203 -89
- package/dist/task/ImageEmbeddingTask.d.ts.map +1 -1
- package/dist/task/ImageSegmentationTask.d.ts +4 -4
- package/dist/task/ImageSegmentationTask.d.ts.map +1 -1
- package/dist/task/ImageToTextTask.d.ts +4 -4
- package/dist/task/ImageToTextTask.d.ts.map +1 -1
- package/dist/task/ModelInfoTask.d.ts +5 -5
- package/dist/task/ModelInfoTask.d.ts.map +1 -1
- package/dist/task/ModelSearchTask.d.ts +3 -3
- package/dist/task/ModelSearchTask.d.ts.map +1 -1
- package/dist/task/ObjectDetectionTask.d.ts +4 -4
- package/dist/task/ObjectDetectionTask.d.ts.map +1 -1
- package/dist/task/PoseLandmarkerTask.d.ts +4 -4
- package/dist/task/PoseLandmarkerTask.d.ts.map +1 -1
- package/dist/task/QueryExpanderTask.d.ts +4 -4
- package/dist/task/QueryExpanderTask.d.ts.map +1 -1
- package/dist/task/RerankerTask.d.ts +4 -4
- package/dist/task/RerankerTask.d.ts.map +1 -1
- package/dist/task/StructuralParserTask.d.ts +4 -4
- package/dist/task/StructuralParserTask.d.ts.map +1 -1
- package/dist/task/StructuredGenerationTask.d.ts +4 -4
- package/dist/task/StructuredGenerationTask.d.ts.map +1 -1
- package/dist/task/TextChunkerTask.d.ts +4 -4
- package/dist/task/TextChunkerTask.d.ts.map +1 -1
- package/dist/task/TextClassificationTask.d.ts +24 -62
- package/dist/task/TextClassificationTask.d.ts.map +1 -1
- package/dist/task/TextEmbeddingTask.d.ts +3 -3
- package/dist/task/TextEmbeddingTask.d.ts.map +1 -1
- package/dist/task/TextFillMaskTask.d.ts +29 -73
- package/dist/task/TextFillMaskTask.d.ts.map +1 -1
- package/dist/task/TextGenerationTask.d.ts +13 -32
- package/dist/task/TextGenerationTask.d.ts.map +1 -1
- package/dist/task/TextLanguageDetectionTask.d.ts +24 -62
- package/dist/task/TextLanguageDetectionTask.d.ts.map +1 -1
- package/dist/task/TextNamedEntityRecognitionTask.d.ts +29 -73
- package/dist/task/TextNamedEntityRecognitionTask.d.ts.map +1 -1
- package/dist/task/TextQuestionAnswerTask.d.ts +17 -45
- package/dist/task/TextQuestionAnswerTask.d.ts.map +1 -1
- package/dist/task/TextRewriterTask.d.ts +12 -31
- package/dist/task/TextRewriterTask.d.ts.map +1 -1
- package/dist/task/TextSummaryTask.d.ts +12 -31
- package/dist/task/TextSummaryTask.d.ts.map +1 -1
- package/dist/task/TextTranslationTask.d.ts +12 -31
- package/dist/task/TextTranslationTask.d.ts.map +1 -1
- package/dist/task/TopicSegmenterTask.d.ts +4 -4
- package/dist/task/TopicSegmenterTask.d.ts.map +1 -1
- package/dist/task/UnloadModelTask.d.ts +4 -4
- package/dist/task/UnloadModelTask.d.ts.map +1 -1
- package/dist/task/VectorQuantizeTask.d.ts +4 -4
- package/dist/task/VectorQuantizeTask.d.ts.map +1 -1
- package/dist/task/VectorSimilarityTask.d.ts +4 -4
- package/dist/task/VectorSimilarityTask.d.ts.map +1 -1
- package/dist/task/base/AiTask.d.ts +12 -31
- package/dist/task/base/AiTask.d.ts.map +1 -1
- package/dist/task/base/AiVisionTask.d.ts +7 -12
- package/dist/task/base/AiVisionTask.d.ts.map +1 -1
- package/dist/task/base/StreamingAiTask.d.ts +7 -4
- package/dist/task/base/StreamingAiTask.d.ts.map +1 -1
- package/dist/task/index.d.ts +1 -13
- package/dist/task/index.d.ts.map +1 -1
- package/dist/worker.d.ts +0 -2
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +217 -233
- package/dist/worker.js.map +7 -7
- package/package.json +24 -15
- package/dist/queue/createDefaultQueue.d.ts +0 -17
- package/dist/queue/createDefaultQueue.d.ts.map +0 -1
- package/dist/task/AgentTask.d.ts +0 -524
- package/dist/task/AgentTask.d.ts.map +0 -1
- package/dist/task/AgentTypes.d.ts +0 -181
- package/dist/task/AgentTypes.d.ts.map +0 -1
- package/dist/task/AgentUtils.d.ts +0 -50
- package/dist/task/AgentUtils.d.ts.map +0 -1
- package/dist/task/MessageConversion.d.ts +0 -52
- package/dist/task/MessageConversion.d.ts.map +0 -1
- package/dist/task/ToolCallingTask.d.ts +0 -385
- package/dist/task/ToolCallingTask.d.ts.map +0 -1
- package/dist/task/ToolCallingUtils.d.ts +0 -65
- package/dist/task/ToolCallingUtils.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -45,15 +45,19 @@ const modelRepo = new InMemoryModelRepository();
|
|
|
45
45
|
setGlobalModelRepository(modelRepo);
|
|
46
46
|
|
|
47
47
|
// 2. Add a local ONNX model (Hugging Face Transformers)
|
|
48
|
+
|
|
48
49
|
await modelRepo.addModel({
|
|
49
50
|
model_id: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
|
|
50
|
-
tasks: ["TextGenerationTask","TextRewriterTask"],
|
|
51
|
-
title: "LaMini-Flan-T5-783M",
|
|
52
|
-
description: "LaMini-Flan-T5-783M quantized to 8bit",
|
|
53
51
|
provider: HF_TRANSFORMERS_ONNX,
|
|
54
52
|
provider_config: {
|
|
55
53
|
pipeline: "text2text-generation",
|
|
56
|
-
model_path: "Xenova/LaMini-Flan-T5-783M"
|
|
54
|
+
model_path: "Xenova/LaMini-Flan-T5-783M",
|
|
55
|
+
dtype: "q8",
|
|
56
|
+
},
|
|
57
|
+
tasks: ["TextGenerationTask", "TextRewriterTask"],
|
|
58
|
+
title: "LaMini-Flan-T5-783M",
|
|
59
|
+
description: "LaMini-Flan-T5-783M quantized to 8bit",
|
|
60
|
+
metadata: {},
|
|
57
61
|
});
|
|
58
62
|
|
|
59
63
|
// 3. Register provider (inline: full ONNX stack in this bundle; creates queue automatically)
|
|
@@ -103,9 +107,19 @@ Generates text based on prompts using language models.
|
|
|
103
107
|
|
|
104
108
|
```typescript
|
|
105
109
|
import { TextGenerationTask } from "@workglow/ai";
|
|
110
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
111
|
+
|
|
112
|
+
const gpt2ModelConfig = {
|
|
113
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
114
|
+
provider_config: {
|
|
115
|
+
pipeline: "text-generation",
|
|
116
|
+
model_path: "Xenova/gpt2",
|
|
117
|
+
dtype: "q8",
|
|
118
|
+
},
|
|
119
|
+
} as const;
|
|
106
120
|
|
|
107
121
|
const task = new TextGenerationTask({
|
|
108
|
-
model:
|
|
122
|
+
model: gpt2ModelConfig,
|
|
109
123
|
prompt: "Explain quantum computing in simple terms",
|
|
110
124
|
});
|
|
111
125
|
|
|
@@ -119,9 +133,20 @@ Generates vector embeddings for text using embedding models.
|
|
|
119
133
|
|
|
120
134
|
```typescript
|
|
121
135
|
import { TextEmbeddingTask } from "@workglow/ai";
|
|
136
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
137
|
+
|
|
138
|
+
const embeddingModelConfig = {
|
|
139
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
140
|
+
provider_config: {
|
|
141
|
+
pipeline: "feature-extraction",
|
|
142
|
+
model_path: "Xenova/LaMini-Flan-T5-783M",
|
|
143
|
+
dtype: "q8",
|
|
144
|
+
native_dimensions: 384,
|
|
145
|
+
},
|
|
146
|
+
} as const;
|
|
122
147
|
|
|
123
148
|
const task = new TextEmbeddingTask({
|
|
124
|
-
model:
|
|
149
|
+
model: embeddingModelConfig,
|
|
125
150
|
text: "This is a sample text for embedding",
|
|
126
151
|
});
|
|
127
152
|
|
|
@@ -153,9 +178,19 @@ Generates summaries of longer text content.
|
|
|
153
178
|
|
|
154
179
|
```typescript
|
|
155
180
|
import { TextSummaryTask } from "@workglow/ai";
|
|
181
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
182
|
+
|
|
183
|
+
const summarizationModelConfig = {
|
|
184
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
185
|
+
provider_config: {
|
|
186
|
+
pipeline: "summarization",
|
|
187
|
+
model_path: "Falconsai/text_summarization",
|
|
188
|
+
dtype: "fp32",
|
|
189
|
+
},
|
|
190
|
+
} as const;
|
|
156
191
|
|
|
157
192
|
const task = new TextSummaryTask({
|
|
158
|
-
model:
|
|
193
|
+
model: summarizationModelConfig,
|
|
159
194
|
text: "Long article content here...",
|
|
160
195
|
maxLength: 100,
|
|
161
196
|
});
|
|
@@ -170,9 +205,19 @@ Rewrites text in different styles or tones.
|
|
|
170
205
|
|
|
171
206
|
```typescript
|
|
172
207
|
import { TextRewriterTask } from "@workglow/ai";
|
|
208
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
209
|
+
|
|
210
|
+
const laMiniModelConfig = {
|
|
211
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
212
|
+
provider_config: {
|
|
213
|
+
pipeline: "text2text-generation",
|
|
214
|
+
model_path: "Xenova/LaMini-Flan-T5-783M",
|
|
215
|
+
dtype: "q8",
|
|
216
|
+
},
|
|
217
|
+
} as const;
|
|
173
218
|
|
|
174
219
|
const task = new TextRewriterTask({
|
|
175
|
-
model:
|
|
220
|
+
model: laMiniModelConfig,
|
|
176
221
|
text: "This is a formal business proposal.",
|
|
177
222
|
style: "casual",
|
|
178
223
|
});
|
|
@@ -187,9 +232,19 @@ Answers questions based on provided context.
|
|
|
187
232
|
|
|
188
233
|
```typescript
|
|
189
234
|
import { TextQuestionAnswerTask } from "@workglow/ai";
|
|
235
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
236
|
+
|
|
237
|
+
const squadModelConfig = {
|
|
238
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
239
|
+
provider_config: {
|
|
240
|
+
pipeline: "question-answering",
|
|
241
|
+
model_path: "Xenova/distilbert-base-uncased-distilled-squad",
|
|
242
|
+
dtype: "q8",
|
|
243
|
+
},
|
|
244
|
+
} as const;
|
|
190
245
|
|
|
191
246
|
const task = new TextQuestionAnswerTask({
|
|
192
|
-
model:
|
|
247
|
+
model: squadModelConfig,
|
|
193
248
|
context: "The capital of France is Paris. It has a population of about 2.1 million.",
|
|
194
249
|
question: "What is the population of Paris?",
|
|
195
250
|
});
|
|
@@ -206,9 +261,20 @@ Computes similarity between texts or embeddings.
|
|
|
206
261
|
|
|
207
262
|
```typescript
|
|
208
263
|
import { VectorSimilarityTask } from "@workglow/ai";
|
|
264
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
265
|
+
|
|
266
|
+
const gteSmallConfig = {
|
|
267
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
268
|
+
provider_config: {
|
|
269
|
+
pipeline: "feature-extraction",
|
|
270
|
+
model_path: "Supabase/gte-small",
|
|
271
|
+
dtype: "q8",
|
|
272
|
+
native_dimensions: 384,
|
|
273
|
+
},
|
|
274
|
+
} as const;
|
|
209
275
|
|
|
210
276
|
const task = new VectorSimilarityTask({
|
|
211
|
-
model:
|
|
277
|
+
model: gteSmallConfig,
|
|
212
278
|
text1: "I love programming",
|
|
213
279
|
text2: "Coding is my passion",
|
|
214
280
|
});
|
|
@@ -225,17 +291,21 @@ Downloads and prepares AI models for use.
|
|
|
225
291
|
|
|
226
292
|
```typescript
|
|
227
293
|
import { DownloadModelTask } from "@workglow/ai";
|
|
228
|
-
|
|
229
294
|
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
230
295
|
|
|
231
296
|
const task = new DownloadModelTask({
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
297
|
+
model: {
|
|
298
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
299
|
+
provider_config: {
|
|
300
|
+
pipeline: "text2text-generation",
|
|
301
|
+
model_path: "Xenova/LaMini-Flan-T5-783M",
|
|
302
|
+
dtype: "q8",
|
|
303
|
+
},
|
|
304
|
+
},
|
|
235
305
|
});
|
|
236
306
|
|
|
237
307
|
const result = await task.run();
|
|
238
|
-
// Output
|
|
308
|
+
// Output includes resolved model config after download
|
|
239
309
|
```
|
|
240
310
|
|
|
241
311
|
## Model Management
|
|
@@ -266,7 +336,9 @@ setGlobalModelRepository(modelRepo);
|
|
|
266
336
|
|
|
267
337
|
```typescript
|
|
268
338
|
import { SqliteModelRepository, setGlobalModelRepository } from "@workglow/ai";
|
|
339
|
+
import { Sqlite } from "@workglow/storage/sqlite";
|
|
269
340
|
|
|
341
|
+
await Sqlite.init();
|
|
270
342
|
const modelRepo = new SqliteModelRepository("./models.db");
|
|
271
343
|
setGlobalModelRepository(modelRepo);
|
|
272
344
|
```
|
|
@@ -297,18 +369,27 @@ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
|
297
369
|
|
|
298
370
|
const modelRepo = getGlobalModelRepository();
|
|
299
371
|
|
|
372
|
+
const gpt2ModelRecord = {
|
|
373
|
+
model_id: "onnx:Xenova/gpt2:q8",
|
|
374
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
375
|
+
provider_config: {
|
|
376
|
+
pipeline: "text-generation",
|
|
377
|
+
model_path: "Xenova/gpt2",
|
|
378
|
+
dtype: "q8",
|
|
379
|
+
},
|
|
380
|
+
} as const;
|
|
381
|
+
|
|
300
382
|
// Add an ONNX model from Hugging Face
|
|
301
383
|
await modelRepo.addModel({
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
contextWindow: 8192,
|
|
384
|
+
...gpt2ModelRecord,
|
|
385
|
+
tasks: ["TextGenerationTask"],
|
|
386
|
+
title: "GPT-2",
|
|
387
|
+
description: "GPT-2 ONNX",
|
|
388
|
+
metadata: {},
|
|
308
389
|
});
|
|
309
390
|
|
|
310
391
|
// Connect model to specific tasks
|
|
311
|
-
await modelRepo.connectTaskToModel("TextGenerationTask",
|
|
392
|
+
await modelRepo.connectTaskToModel("TextGenerationTask", gpt2ModelRecord.model_id);
|
|
312
393
|
|
|
313
394
|
// Find models for a specific task
|
|
314
395
|
const textGenModels = await modelRepo.findModelsByTask("TextGenerationTask");
|
|
@@ -376,22 +457,41 @@ AI tasks integrate seamlessly with Workglow workflows:
|
|
|
376
457
|
|
|
377
458
|
```typescript
|
|
378
459
|
import { Workflow } from "@workglow/task-graph";
|
|
379
|
-
import {
|
|
460
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
461
|
+
|
|
462
|
+
const gpt2ModelConfig = {
|
|
463
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
464
|
+
provider_config: {
|
|
465
|
+
pipeline: "text-generation",
|
|
466
|
+
model_path: "Xenova/gpt2",
|
|
467
|
+
dtype: "q8",
|
|
468
|
+
},
|
|
469
|
+
} as const;
|
|
470
|
+
|
|
471
|
+
const gteSmallConfig = {
|
|
472
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
473
|
+
provider_config: {
|
|
474
|
+
pipeline: "feature-extraction",
|
|
475
|
+
model_path: "Supabase/gte-small",
|
|
476
|
+
dtype: "q8",
|
|
477
|
+
native_dimensions: 384,
|
|
478
|
+
},
|
|
479
|
+
} as const;
|
|
380
480
|
|
|
381
481
|
const workflow = new Workflow();
|
|
382
482
|
|
|
383
483
|
// Chain AI tasks together
|
|
384
484
|
const result = await workflow
|
|
385
485
|
.textGeneration({
|
|
386
|
-
model:
|
|
486
|
+
model: gpt2ModelConfig,
|
|
387
487
|
prompt: "Write about artificial intelligence",
|
|
388
488
|
})
|
|
389
489
|
.textEmbedding({
|
|
390
|
-
model:
|
|
490
|
+
model: gteSmallConfig,
|
|
391
491
|
text: workflow.previous().text, // Use previous task output
|
|
392
492
|
})
|
|
393
493
|
.similarity({
|
|
394
|
-
model:
|
|
494
|
+
model: gteSmallConfig,
|
|
395
495
|
text1: "artificial intelligence",
|
|
396
496
|
embedding2: workflow.previous().vector, // Use embedding from previous task
|
|
397
497
|
})
|
|
@@ -439,6 +539,41 @@ The AI package provides a comprehensive set of tasks for building RAG pipelines.
|
|
|
439
539
|
```typescript
|
|
440
540
|
import { Workflow } from "@workglow/task-graph";
|
|
441
541
|
import { createKnowledgeBase } from "@workglow/knowledge-base";
|
|
542
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
543
|
+
|
|
544
|
+
// 1. Set up a model repository
|
|
545
|
+
const modelRepo = new InMemoryModelRepository();
|
|
546
|
+
setGlobalModelRepository(modelRepo);
|
|
547
|
+
|
|
548
|
+
// 2. Add a local ONNX model (Hugging Face Transformers)
|
|
549
|
+
await modelRepo.addModel({
|
|
550
|
+
model_id: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
|
|
551
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
552
|
+
provider_config: {
|
|
553
|
+
pipeline: "text2text-generation",
|
|
554
|
+
model_path: "Xenova/LaMini-Flan-T5-783M",
|
|
555
|
+
dtype: "q8",
|
|
556
|
+
},
|
|
557
|
+
tasks: ["TextGenerationTask", "TextRewriterTask"],
|
|
558
|
+
title: "LaMini-Flan-T5-783M",
|
|
559
|
+
description: "LaMini-Flan-T5-783M quantized to 8bit",
|
|
560
|
+
metadata: {},
|
|
561
|
+
});
|
|
562
|
+
|
|
563
|
+
await modelRepo.addModel({
|
|
564
|
+
model_id: "onnx:Xenova/all-MiniLM-L6-v2:q8",
|
|
565
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
566
|
+
provider_config: {
|
|
567
|
+
pipeline: "feature-extraction",
|
|
568
|
+
model_path: "Xenova/all-MiniLM-L6-v2",
|
|
569
|
+
dtype: "q8",
|
|
570
|
+
native_dimensions: 384,
|
|
571
|
+
},
|
|
572
|
+
tasks: ["TextEmbeddingTask"],
|
|
573
|
+
title: "All MiniLM L6 V2 384D",
|
|
574
|
+
description: "Xenova/all-MiniLM-L6-v2",
|
|
575
|
+
metadata: {},
|
|
576
|
+
});
|
|
442
577
|
|
|
443
578
|
// Create a KnowledgeBase (auto-registers globally as "my-kb")
|
|
444
579
|
const kb = await createKnowledgeBase({
|
|
@@ -463,7 +598,7 @@ await new Workflow()
|
|
|
463
598
|
strategy: "hierarchical",
|
|
464
599
|
})
|
|
465
600
|
.textEmbedding({
|
|
466
|
-
model: "Xenova/all-MiniLM-L6-v2",
|
|
601
|
+
model: "onnx:Xenova/all-MiniLM-L6-v2:q8",
|
|
467
602
|
})
|
|
468
603
|
.chunkToVector()
|
|
469
604
|
.chunkVectorUpsert({
|
|
@@ -476,7 +611,7 @@ const result = await new Workflow()
|
|
|
476
611
|
.chunkRetrieval({
|
|
477
612
|
knowledgeBase: "my-kb",
|
|
478
613
|
query: "What is transfer learning?",
|
|
479
|
-
model: "Xenova/all-MiniLM-L6-v2",
|
|
614
|
+
model: "onnx:Xenova/all-MiniLM-L6-v2:q8",
|
|
480
615
|
topK: 10,
|
|
481
616
|
})
|
|
482
617
|
.reranker({
|
|
@@ -489,7 +624,7 @@ const result = await new Workflow()
|
|
|
489
624
|
})
|
|
490
625
|
.textQuestionAnswer({
|
|
491
626
|
question: "What is transfer learning?",
|
|
492
|
-
model: "Xenova/LaMini-Flan-T5-783M",
|
|
627
|
+
model: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
|
|
493
628
|
})
|
|
494
629
|
.run();
|
|
495
630
|
```
|
|
@@ -563,26 +698,24 @@ AI tasks accept model inputs as either string identifiers or direct `ModelConfig
|
|
|
563
698
|
|
|
564
699
|
```typescript
|
|
565
700
|
import { TextGenerationTask } from "@workglow/ai";
|
|
701
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
566
702
|
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
// Using a direct ModelConfig object
|
|
574
|
-
const task2 = new TextGenerationTask({
|
|
575
|
-
model: {
|
|
576
|
-
model_id: "onnx:Xenova/gpt2:q8",
|
|
577
|
-
provider: "hf-transformers-onnx",
|
|
578
|
-
tasks: ["TextGenerationTask"],
|
|
579
|
-
title: "GPT-2",
|
|
580
|
-
provider_config: { pipeline: "text-generation" },
|
|
703
|
+
const gpt2ModelConfig = {
|
|
704
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
705
|
+
provider_config: {
|
|
706
|
+
pipeline: "text-generation",
|
|
707
|
+
model_path: "Xenova/gpt2",
|
|
708
|
+
dtype: "q8",
|
|
581
709
|
},
|
|
710
|
+
} as const;
|
|
711
|
+
|
|
712
|
+
// Inline ModelConfig (provider + provider_config)
|
|
713
|
+
const task = new TextGenerationTask({
|
|
714
|
+
model: gpt2ModelConfig,
|
|
582
715
|
prompt: "Generate text",
|
|
583
716
|
});
|
|
584
717
|
|
|
585
|
-
//
|
|
718
|
+
// Registered model_id strings (e.g. onnx:org/model:q8) are still resolved via ModelRepository when you pass a string instead
|
|
586
719
|
```
|
|
587
720
|
|
|
588
721
|
This resolution is handled by the input resolver system, which inspects schema `format` annotations (like `"model"` or `"model:TextGenerationTask"`) to determine how string values should be resolved.
|
|
@@ -602,9 +735,21 @@ This resolution is handled by the input resolver system, which inspects schema `
|
|
|
602
735
|
Tasks automatically validate that specified models exist and are compatible:
|
|
603
736
|
|
|
604
737
|
```typescript
|
|
738
|
+
import { TextGenerationTask } from "@workglow/ai";
|
|
739
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
740
|
+
|
|
741
|
+
const gpt2ModelConfig = {
|
|
742
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
743
|
+
provider_config: {
|
|
744
|
+
pipeline: "text-generation",
|
|
745
|
+
model_path: "Xenova/gpt2",
|
|
746
|
+
dtype: "q8",
|
|
747
|
+
},
|
|
748
|
+
} as const;
|
|
749
|
+
|
|
605
750
|
// Models are validated before task execution
|
|
606
751
|
const task = new TextGenerationTask({
|
|
607
|
-
model:
|
|
752
|
+
model: gpt2ModelConfig,
|
|
608
753
|
prompt: "Generate text",
|
|
609
754
|
});
|
|
610
755
|
|
|
@@ -616,8 +761,20 @@ const task = new TextGenerationTask({
|
|
|
616
761
|
Monitor AI task progress:
|
|
617
762
|
|
|
618
763
|
```typescript
|
|
764
|
+
import { TextGenerationTask } from "@workglow/ai";
|
|
765
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
766
|
+
|
|
767
|
+
const gpt2ModelConfig = {
|
|
768
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
769
|
+
provider_config: {
|
|
770
|
+
pipeline: "text-generation",
|
|
771
|
+
model_path: "Xenova/gpt2",
|
|
772
|
+
dtype: "q8",
|
|
773
|
+
},
|
|
774
|
+
} as const;
|
|
775
|
+
|
|
619
776
|
const task = new TextGenerationTask({
|
|
620
|
-
model:
|
|
777
|
+
model: gpt2ModelConfig,
|
|
621
778
|
prompt: "Long generation task...",
|
|
622
779
|
});
|
|
623
780
|
|
|
@@ -633,10 +790,22 @@ const result = await task.run();
|
|
|
633
790
|
All AI tasks support cancellation via AbortSignal:
|
|
634
791
|
|
|
635
792
|
```typescript
|
|
793
|
+
import { TextGenerationTask } from "@workglow/ai";
|
|
794
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
795
|
+
|
|
796
|
+
const gpt2ModelConfig = {
|
|
797
|
+
provider: HF_TRANSFORMERS_ONNX,
|
|
798
|
+
provider_config: {
|
|
799
|
+
pipeline: "text-generation",
|
|
800
|
+
model_path: "Xenova/gpt2",
|
|
801
|
+
dtype: "q8",
|
|
802
|
+
},
|
|
803
|
+
} as const;
|
|
804
|
+
|
|
636
805
|
const controller = new AbortController();
|
|
637
806
|
|
|
638
807
|
const task = new TextGenerationTask({
|
|
639
|
-
model:
|
|
808
|
+
model: gpt2ModelConfig,
|
|
640
809
|
prompt: "Generate text...",
|
|
641
810
|
});
|
|
642
811
|
|
|
@@ -667,7 +836,9 @@ const modelRepo = new IndexedDbModelRepository();
|
|
|
667
836
|
|
|
668
837
|
```typescript
|
|
669
838
|
import { SqliteModelRepository } from "@workglow/ai";
|
|
839
|
+
import { Sqlite } from "@workglow/storage/sqlite";
|
|
670
840
|
|
|
841
|
+
await Sqlite.init();
|
|
671
842
|
// Use SQLite for server-side storage
|
|
672
843
|
const modelRepo = new SqliteModelRepository("./models.db");
|
|
673
844
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC"}
|