@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.
Files changed (134) hide show
  1. package/README.md +214 -47
  2. package/dist/browser.js +562 -1274
  3. package/dist/browser.js.map +55 -60
  4. package/dist/bun.js +562 -1274
  5. package/dist/bun.js.map +55 -60
  6. package/dist/common.d.ts +3 -1
  7. package/dist/common.d.ts.map +1 -1
  8. package/dist/execution/DirectExecutionStrategy.d.ts +20 -0
  9. package/dist/execution/DirectExecutionStrategy.d.ts.map +1 -0
  10. package/dist/execution/IAiExecutionStrategy.d.ts +33 -0
  11. package/dist/execution/IAiExecutionStrategy.d.ts.map +1 -0
  12. package/dist/execution/QueuedExecutionStrategy.d.ts +50 -0
  13. package/dist/execution/QueuedExecutionStrategy.d.ts.map +1 -0
  14. package/dist/job/AiJob.d.ts +6 -0
  15. package/dist/job/AiJob.d.ts.map +1 -1
  16. package/dist/node.js +562 -1274
  17. package/dist/node.js.map +55 -60
  18. package/dist/provider/AiProvider.d.ts +16 -2
  19. package/dist/provider/AiProvider.d.ts.map +1 -1
  20. package/dist/provider/AiProviderRegistry.d.ts +20 -0
  21. package/dist/provider/AiProviderRegistry.d.ts.map +1 -1
  22. package/dist/provider/QueuedAiProvider.d.ts +23 -2
  23. package/dist/provider/QueuedAiProvider.d.ts.map +1 -1
  24. package/dist/task/BackgroundRemovalTask.d.ts +3 -3
  25. package/dist/task/BackgroundRemovalTask.d.ts.map +1 -1
  26. package/dist/task/ChunkRetrievalTask.d.ts +4 -4
  27. package/dist/task/ChunkRetrievalTask.d.ts.map +1 -1
  28. package/dist/task/ChunkToVectorTask.d.ts +4 -4
  29. package/dist/task/ChunkToVectorTask.d.ts.map +1 -1
  30. package/dist/task/ChunkVectorHybridSearchTask.d.ts +4 -4
  31. package/dist/task/ChunkVectorHybridSearchTask.d.ts.map +1 -1
  32. package/dist/task/ChunkVectorSearchTask.d.ts +4 -4
  33. package/dist/task/ChunkVectorSearchTask.d.ts.map +1 -1
  34. package/dist/task/ChunkVectorUpsertTask.d.ts +4 -4
  35. package/dist/task/ChunkVectorUpsertTask.d.ts.map +1 -1
  36. package/dist/task/ContextBuilderTask.d.ts +4 -4
  37. package/dist/task/ContextBuilderTask.d.ts.map +1 -1
  38. package/dist/task/CountTokensTask.d.ts +11 -29
  39. package/dist/task/CountTokensTask.d.ts.map +1 -1
  40. package/dist/task/DocumentEnricherTask.d.ts +4 -4
  41. package/dist/task/DocumentEnricherTask.d.ts.map +1 -1
  42. package/dist/task/DownloadModelTask.d.ts +5 -5
  43. package/dist/task/DownloadModelTask.d.ts.map +1 -1
  44. package/dist/task/FaceDetectorTask.d.ts +4 -4
  45. package/dist/task/FaceDetectorTask.d.ts.map +1 -1
  46. package/dist/task/FaceLandmarkerTask.d.ts +4 -4
  47. package/dist/task/FaceLandmarkerTask.d.ts.map +1 -1
  48. package/dist/task/GestureRecognizerTask.d.ts +4 -4
  49. package/dist/task/GestureRecognizerTask.d.ts.map +1 -1
  50. package/dist/task/HandLandmarkerTask.d.ts +4 -4
  51. package/dist/task/HandLandmarkerTask.d.ts.map +1 -1
  52. package/dist/task/HierarchicalChunkerTask.d.ts +4 -4
  53. package/dist/task/HierarchicalChunkerTask.d.ts.map +1 -1
  54. package/dist/task/HierarchyJoinTask.d.ts +4 -4
  55. package/dist/task/HierarchyJoinTask.d.ts.map +1 -1
  56. package/dist/task/ImageClassificationTask.d.ts +4 -4
  57. package/dist/task/ImageClassificationTask.d.ts.map +1 -1
  58. package/dist/task/ImageEmbeddingTask.d.ts +203 -89
  59. package/dist/task/ImageEmbeddingTask.d.ts.map +1 -1
  60. package/dist/task/ImageSegmentationTask.d.ts +4 -4
  61. package/dist/task/ImageSegmentationTask.d.ts.map +1 -1
  62. package/dist/task/ImageToTextTask.d.ts +4 -4
  63. package/dist/task/ImageToTextTask.d.ts.map +1 -1
  64. package/dist/task/ModelInfoTask.d.ts +5 -5
  65. package/dist/task/ModelInfoTask.d.ts.map +1 -1
  66. package/dist/task/ObjectDetectionTask.d.ts +4 -4
  67. package/dist/task/ObjectDetectionTask.d.ts.map +1 -1
  68. package/dist/task/PoseLandmarkerTask.d.ts +4 -4
  69. package/dist/task/PoseLandmarkerTask.d.ts.map +1 -1
  70. package/dist/task/QueryExpanderTask.d.ts +4 -4
  71. package/dist/task/QueryExpanderTask.d.ts.map +1 -1
  72. package/dist/task/RerankerTask.d.ts +4 -4
  73. package/dist/task/RerankerTask.d.ts.map +1 -1
  74. package/dist/task/StructuralParserTask.d.ts +4 -4
  75. package/dist/task/StructuralParserTask.d.ts.map +1 -1
  76. package/dist/task/StructuredGenerationTask.d.ts +4 -4
  77. package/dist/task/StructuredGenerationTask.d.ts.map +1 -1
  78. package/dist/task/TextChunkerTask.d.ts +4 -4
  79. package/dist/task/TextChunkerTask.d.ts.map +1 -1
  80. package/dist/task/TextClassificationTask.d.ts +24 -62
  81. package/dist/task/TextClassificationTask.d.ts.map +1 -1
  82. package/dist/task/TextEmbeddingTask.d.ts +3 -3
  83. package/dist/task/TextEmbeddingTask.d.ts.map +1 -1
  84. package/dist/task/TextFillMaskTask.d.ts +29 -73
  85. package/dist/task/TextFillMaskTask.d.ts.map +1 -1
  86. package/dist/task/TextGenerationTask.d.ts +13 -32
  87. package/dist/task/TextGenerationTask.d.ts.map +1 -1
  88. package/dist/task/TextLanguageDetectionTask.d.ts +24 -62
  89. package/dist/task/TextLanguageDetectionTask.d.ts.map +1 -1
  90. package/dist/task/TextNamedEntityRecognitionTask.d.ts +29 -73
  91. package/dist/task/TextNamedEntityRecognitionTask.d.ts.map +1 -1
  92. package/dist/task/TextQuestionAnswerTask.d.ts +17 -45
  93. package/dist/task/TextQuestionAnswerTask.d.ts.map +1 -1
  94. package/dist/task/TextRewriterTask.d.ts +12 -31
  95. package/dist/task/TextRewriterTask.d.ts.map +1 -1
  96. package/dist/task/TextSummaryTask.d.ts +12 -31
  97. package/dist/task/TextSummaryTask.d.ts.map +1 -1
  98. package/dist/task/TextTranslationTask.d.ts +12 -31
  99. package/dist/task/TextTranslationTask.d.ts.map +1 -1
  100. package/dist/task/TopicSegmenterTask.d.ts +4 -4
  101. package/dist/task/TopicSegmenterTask.d.ts.map +1 -1
  102. package/dist/task/UnloadModelTask.d.ts +4 -4
  103. package/dist/task/UnloadModelTask.d.ts.map +1 -1
  104. package/dist/task/VectorQuantizeTask.d.ts +4 -4
  105. package/dist/task/VectorQuantizeTask.d.ts.map +1 -1
  106. package/dist/task/VectorSimilarityTask.d.ts +4 -4
  107. package/dist/task/VectorSimilarityTask.d.ts.map +1 -1
  108. package/dist/task/base/AiTask.d.ts +12 -31
  109. package/dist/task/base/AiTask.d.ts.map +1 -1
  110. package/dist/task/base/AiVisionTask.d.ts +7 -12
  111. package/dist/task/base/AiVisionTask.d.ts.map +1 -1
  112. package/dist/task/base/StreamingAiTask.d.ts +7 -4
  113. package/dist/task/base/StreamingAiTask.d.ts.map +1 -1
  114. package/dist/task/index.d.ts +1 -13
  115. package/dist/task/index.d.ts.map +1 -1
  116. package/dist/worker.d.ts +0 -2
  117. package/dist/worker.d.ts.map +1 -1
  118. package/dist/worker.js +217 -233
  119. package/dist/worker.js.map +7 -7
  120. package/package.json +11 -11
  121. package/dist/queue/createDefaultQueue.d.ts +0 -17
  122. package/dist/queue/createDefaultQueue.d.ts.map +0 -1
  123. package/dist/task/AgentTask.d.ts +0 -524
  124. package/dist/task/AgentTask.d.ts.map +0 -1
  125. package/dist/task/AgentTypes.d.ts +0 -181
  126. package/dist/task/AgentTypes.d.ts.map +0 -1
  127. package/dist/task/AgentUtils.d.ts +0 -50
  128. package/dist/task/AgentUtils.d.ts.map +0 -1
  129. package/dist/task/MessageConversion.d.ts +0 -52
  130. package/dist/task/MessageConversion.d.ts.map +0 -1
  131. package/dist/task/ToolCallingTask.d.ts +0 -385
  132. package/dist/task/ToolCallingTask.d.ts.map +0 -1
  133. package/dist/task/ToolCallingUtils.d.ts +0 -65
  134. 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: "onnx:Xenova/gpt2:q8",
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: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
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: "onnx:Falconsai/text_summarization:fp32",
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: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
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: "onnx:Xenova/distilbert-base-uncased-distilled-squad:q8",
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: "onnx:Supabase/gte-small:q8",
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
- modelName: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
233
- modelUrl: "Xenova/LaMini-Flan-T5-783M",
234
- provider: HF_TRANSFORMERS_ONNX,
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: { status: "downloaded", path: "/models/..." }
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
- name: "onnx:Xenova/gpt2:q8",
305
- url: "Xenova/gpt2",
306
- provider: HF_TRANSFORMERS_ONNX,
307
- availableOnBrowser: true,
308
- availableOnServer: true,
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", "onnx:Xenova/gpt2:q8");
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 { TextGenerationTask, TextEmbeddingTask, VectorSimilarityTask } from "@workglow/ai";
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: "onnx:Xenova/gpt2:q8",
486
+ model: gpt2ModelConfig,
389
487
  prompt: "Write about artificial intelligence",
390
488
  })
391
489
  .textEmbedding({
392
- model: "onnx:Supabase/gte-small:q8",
490
+ model: gteSmallConfig,
393
491
  text: workflow.previous().text, // Use previous task output
394
492
  })
395
493
  .similarity({
396
- model: "onnx:Supabase/gte-small:q8",
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
- // Using a model ID (resolved from ModelRepository)
570
- const task1 = new TextGenerationTask({
571
- model: "onnx:Xenova/gpt2:q8",
572
- prompt: "Generate text",
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
- // Both approaches work identically
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: "onnx:Xenova/gpt2:q8", // Must exist in ModelRepository and be connected to TextGenerationTask
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: "onnx:Xenova/gpt2:q8",
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: "onnx:Xenova/gpt2:q8",
808
+ model: gpt2ModelConfig,
642
809
  prompt: "Generate text...",
643
810
  });
644
811