@workglow/ai 0.0.126 → 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 +214 -47
- package/dist/browser.js +562 -1274
- package/dist/browser.js.map +55 -60
- package/dist/bun.js +562 -1274
- package/dist/bun.js.map +55 -60
- 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.js +562 -1274
- package/dist/node.js.map +55 -60
- 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/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 +11 -11
- 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/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
|
|
@@ -299,18 +369,27 @@ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
|
299
369
|
|
|
300
370
|
const modelRepo = getGlobalModelRepository();
|
|
301
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
|
+
|
|
302
382
|
// Add an ONNX model from Hugging Face
|
|
303
383
|
await modelRepo.addModel({
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
contextWindow: 8192,
|
|
384
|
+
...gpt2ModelRecord,
|
|
385
|
+
tasks: ["TextGenerationTask"],
|
|
386
|
+
title: "GPT-2",
|
|
387
|
+
description: "GPT-2 ONNX",
|
|
388
|
+
metadata: {},
|
|
310
389
|
});
|
|
311
390
|
|
|
312
391
|
// Connect model to specific tasks
|
|
313
|
-
await modelRepo.connectTaskToModel("TextGenerationTask",
|
|
392
|
+
await modelRepo.connectTaskToModel("TextGenerationTask", gpt2ModelRecord.model_id);
|
|
314
393
|
|
|
315
394
|
// Find models for a specific task
|
|
316
395
|
const textGenModels = await modelRepo.findModelsByTask("TextGenerationTask");
|
|
@@ -378,22 +457,41 @@ AI tasks integrate seamlessly with Workglow workflows:
|
|
|
378
457
|
|
|
379
458
|
```typescript
|
|
380
459
|
import { Workflow } from "@workglow/task-graph";
|
|
381
|
-
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;
|
|
382
480
|
|
|
383
481
|
const workflow = new Workflow();
|
|
384
482
|
|
|
385
483
|
// Chain AI tasks together
|
|
386
484
|
const result = await workflow
|
|
387
485
|
.textGeneration({
|
|
388
|
-
model:
|
|
486
|
+
model: gpt2ModelConfig,
|
|
389
487
|
prompt: "Write about artificial intelligence",
|
|
390
488
|
})
|
|
391
489
|
.textEmbedding({
|
|
392
|
-
model:
|
|
490
|
+
model: gteSmallConfig,
|
|
393
491
|
text: workflow.previous().text, // Use previous task output
|
|
394
492
|
})
|
|
395
493
|
.similarity({
|
|
396
|
-
model:
|
|
494
|
+
model: gteSmallConfig,
|
|
397
495
|
text1: "artificial intelligence",
|
|
398
496
|
embedding2: workflow.previous().vector, // Use embedding from previous task
|
|
399
497
|
})
|
|
@@ -441,6 +539,41 @@ The AI package provides a comprehensive set of tasks for building RAG pipelines.
|
|
|
441
539
|
```typescript
|
|
442
540
|
import { Workflow } from "@workglow/task-graph";
|
|
443
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
|
+
});
|
|
444
577
|
|
|
445
578
|
// Create a KnowledgeBase (auto-registers globally as "my-kb")
|
|
446
579
|
const kb = await createKnowledgeBase({
|
|
@@ -465,7 +598,7 @@ await new Workflow()
|
|
|
465
598
|
strategy: "hierarchical",
|
|
466
599
|
})
|
|
467
600
|
.textEmbedding({
|
|
468
|
-
model: "Xenova/all-MiniLM-L6-v2",
|
|
601
|
+
model: "onnx:Xenova/all-MiniLM-L6-v2:q8",
|
|
469
602
|
})
|
|
470
603
|
.chunkToVector()
|
|
471
604
|
.chunkVectorUpsert({
|
|
@@ -478,7 +611,7 @@ const result = await new Workflow()
|
|
|
478
611
|
.chunkRetrieval({
|
|
479
612
|
knowledgeBase: "my-kb",
|
|
480
613
|
query: "What is transfer learning?",
|
|
481
|
-
model: "Xenova/all-MiniLM-L6-v2",
|
|
614
|
+
model: "onnx:Xenova/all-MiniLM-L6-v2:q8",
|
|
482
615
|
topK: 10,
|
|
483
616
|
})
|
|
484
617
|
.reranker({
|
|
@@ -491,7 +624,7 @@ const result = await new Workflow()
|
|
|
491
624
|
})
|
|
492
625
|
.textQuestionAnswer({
|
|
493
626
|
question: "What is transfer learning?",
|
|
494
|
-
model: "Xenova/LaMini-Flan-T5-783M",
|
|
627
|
+
model: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
|
|
495
628
|
})
|
|
496
629
|
.run();
|
|
497
630
|
```
|
|
@@ -565,26 +698,24 @@ AI tasks accept model inputs as either string identifiers or direct `ModelConfig
|
|
|
565
698
|
|
|
566
699
|
```typescript
|
|
567
700
|
import { TextGenerationTask } from "@workglow/ai";
|
|
701
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
|
|
568
702
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
// Using a direct ModelConfig object
|
|
576
|
-
const task2 = new TextGenerationTask({
|
|
577
|
-
model: {
|
|
578
|
-
model_id: "onnx:Xenova/gpt2:q8",
|
|
579
|
-
provider: "hf-transformers-onnx",
|
|
580
|
-
tasks: ["TextGenerationTask"],
|
|
581
|
-
title: "GPT-2",
|
|
582
|
-
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",
|
|
583
709
|
},
|
|
710
|
+
} as const;
|
|
711
|
+
|
|
712
|
+
// Inline ModelConfig (provider + provider_config)
|
|
713
|
+
const task = new TextGenerationTask({
|
|
714
|
+
model: gpt2ModelConfig,
|
|
584
715
|
prompt: "Generate text",
|
|
585
716
|
});
|
|
586
717
|
|
|
587
|
-
//
|
|
718
|
+
// Registered model_id strings (e.g. onnx:org/model:q8) are still resolved via ModelRepository when you pass a string instead
|
|
588
719
|
```
|
|
589
720
|
|
|
590
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.
|
|
@@ -604,9 +735,21 @@ This resolution is handled by the input resolver system, which inspects schema `
|
|
|
604
735
|
Tasks automatically validate that specified models exist and are compatible:
|
|
605
736
|
|
|
606
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
|
+
|
|
607
750
|
// Models are validated before task execution
|
|
608
751
|
const task = new TextGenerationTask({
|
|
609
|
-
model:
|
|
752
|
+
model: gpt2ModelConfig,
|
|
610
753
|
prompt: "Generate text",
|
|
611
754
|
});
|
|
612
755
|
|
|
@@ -618,8 +761,20 @@ const task = new TextGenerationTask({
|
|
|
618
761
|
Monitor AI task progress:
|
|
619
762
|
|
|
620
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
|
+
|
|
621
776
|
const task = new TextGenerationTask({
|
|
622
|
-
model:
|
|
777
|
+
model: gpt2ModelConfig,
|
|
623
778
|
prompt: "Long generation task...",
|
|
624
779
|
});
|
|
625
780
|
|
|
@@ -635,10 +790,22 @@ const result = await task.run();
|
|
|
635
790
|
All AI tasks support cancellation via AbortSignal:
|
|
636
791
|
|
|
637
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
|
+
|
|
638
805
|
const controller = new AbortController();
|
|
639
806
|
|
|
640
807
|
const task = new TextGenerationTask({
|
|
641
|
-
model:
|
|
808
|
+
model: gpt2ModelConfig,
|
|
642
809
|
prompt: "Generate text...",
|
|
643
810
|
});
|
|
644
811
|
|