@workglow/ai 0.2.30 → 0.2.32
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 +21 -21
- package/dist/browser.js +39 -22
- package/dist/browser.js.map +5 -5
- package/dist/bun.js +39 -22
- package/dist/bun.js.map +5 -5
- package/dist/model/ModelRegistry.d.ts +14 -6
- package/dist/model/ModelRegistry.d.ts.map +1 -1
- package/dist/node.js +39 -22
- package/dist/node.js.map +5 -5
- package/dist/provider/AiProviderRegistry.d.ts +21 -3
- package/dist/provider/AiProviderRegistry.d.ts.map +1 -1
- package/dist/provider-utils/BaseCloudProvider.d.ts +46 -0
- package/dist/provider-utils/BaseCloudProvider.d.ts.map +1 -0
- package/dist/provider-utils/CloudProviderClient.d.ts +40 -0
- package/dist/provider-utils/CloudProviderClient.d.ts.map +1 -0
- package/dist/provider-utils/HfModelSearch.d.ts +33 -0
- package/dist/provider-utils/HfModelSearch.d.ts.map +1 -0
- package/dist/provider-utils/OpenAIShapedChat.d.ts +71 -0
- package/dist/provider-utils/OpenAIShapedChat.d.ts.map +1 -0
- package/dist/provider-utils/PipelineTaskMapping.d.ts +12 -0
- package/dist/provider-utils/PipelineTaskMapping.d.ts.map +1 -0
- package/dist/provider-utils/ToolCallParsers.d.ts +252 -0
- package/dist/provider-utils/ToolCallParsers.d.ts.map +1 -0
- package/dist/provider-utils/imageOutputHelpers.d.ts +60 -0
- package/dist/provider-utils/imageOutputHelpers.d.ts.map +1 -0
- package/dist/provider-utils/modelSearchQuery.d.ts +23 -0
- package/dist/provider-utils/modelSearchQuery.d.ts.map +1 -0
- package/dist/provider-utils/registerProvider.d.ts +43 -0
- package/dist/provider-utils/registerProvider.d.ts.map +1 -0
- package/dist/provider-utils.d.ts +23 -0
- package/dist/provider-utils.d.ts.map +1 -0
- package/dist/provider-utils.js +1247 -0
- package/dist/provider-utils.js.map +19 -0
- package/dist/task/VectorSimilarityTask.d.ts +1 -1
- package/dist/task/VectorSimilarityTask.d.ts.map +1 -1
- package/dist/worker.js +17 -8
- package/dist/worker.js.map +3 -3
- package/package.json +20 -14
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ bun add @workglow/ai
|
|
|
22
22
|
|
|
23
23
|
## Quick Start
|
|
24
24
|
|
|
25
|
-
Here's a complete example of setting up and using the AI package with the Hugging Face Transformers ONNX provider from `@workglow/ai
|
|
25
|
+
Here's a complete example of setting up and using the AI package with the Hugging Face Transformers ONNX provider from `@workglow/ai`:
|
|
26
26
|
|
|
27
27
|
```typescript
|
|
28
28
|
import {
|
|
@@ -41,8 +41,8 @@ import {
|
|
|
41
41
|
JobQueueClient,
|
|
42
42
|
JobQueueServer,
|
|
43
43
|
} from "@workglow/job-queue";
|
|
44
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
45
|
-
import { registerHuggingFaceTransformersInline } from "@workglow/
|
|
44
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
45
|
+
import { registerHuggingFaceTransformersInline } from "@workglow/huggingface-transformers/ai-runtime";
|
|
46
46
|
|
|
47
47
|
// 1. Set up a model repository
|
|
48
48
|
const modelRepo = new InMemoryModelRepository();
|
|
@@ -111,7 +111,7 @@ Generates text based on prompts using language models.
|
|
|
111
111
|
|
|
112
112
|
```typescript
|
|
113
113
|
import { TextGenerationTask } from "@workglow/ai";
|
|
114
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
114
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
115
115
|
|
|
116
116
|
const gpt2ModelConfig = {
|
|
117
117
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -137,7 +137,7 @@ Generates vector embeddings for text using embedding models.
|
|
|
137
137
|
|
|
138
138
|
```typescript
|
|
139
139
|
import { TextEmbeddingTask } from "@workglow/ai";
|
|
140
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
140
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
141
141
|
|
|
142
142
|
const embeddingModelConfig = {
|
|
143
143
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -182,7 +182,7 @@ Generates summaries of longer text content.
|
|
|
182
182
|
|
|
183
183
|
```typescript
|
|
184
184
|
import { TextSummaryTask } from "@workglow/ai";
|
|
185
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
185
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
186
186
|
|
|
187
187
|
const summarizationModelConfig = {
|
|
188
188
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -209,7 +209,7 @@ Rewrites text in different styles or tones.
|
|
|
209
209
|
|
|
210
210
|
```typescript
|
|
211
211
|
import { TextRewriterTask } from "@workglow/ai";
|
|
212
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
212
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
213
213
|
|
|
214
214
|
const laMiniModelConfig = {
|
|
215
215
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -236,7 +236,7 @@ Answers questions based on provided context.
|
|
|
236
236
|
|
|
237
237
|
```typescript
|
|
238
238
|
import { TextQuestionAnswerTask } from "@workglow/ai";
|
|
239
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
239
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
240
240
|
|
|
241
241
|
const squadModelConfig = {
|
|
242
242
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -276,7 +276,7 @@ Computes similarity between texts or embeddings.
|
|
|
276
276
|
|
|
277
277
|
```typescript
|
|
278
278
|
import { VectorSimilarityTask } from "@workglow/ai";
|
|
279
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
279
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
280
280
|
|
|
281
281
|
const gteSmallConfig = {
|
|
282
282
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -306,7 +306,7 @@ Downloads and prepares AI models for use.
|
|
|
306
306
|
|
|
307
307
|
```typescript
|
|
308
308
|
import { DownloadModelTask } from "@workglow/ai";
|
|
309
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
309
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
310
310
|
|
|
311
311
|
const task = new DownloadModelTask({
|
|
312
312
|
model: {
|
|
@@ -380,7 +380,7 @@ setGlobalModelRepository(modelRepo);
|
|
|
380
380
|
|
|
381
381
|
```typescript
|
|
382
382
|
import { getGlobalModelRepository } from "@workglow/ai";
|
|
383
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
383
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
384
384
|
|
|
385
385
|
const modelRepo = getGlobalModelRepository();
|
|
386
386
|
|
|
@@ -417,7 +417,7 @@ AI providers handle the actual execution of AI tasks. You need to register provi
|
|
|
417
417
|
### Basic Provider Registration
|
|
418
418
|
|
|
419
419
|
```typescript
|
|
420
|
-
import { registerHuggingFaceTransformersInline } from "@workglow/
|
|
420
|
+
import { registerHuggingFaceTransformersInline } from "@workglow/huggingface-transformers/ai-runtime";
|
|
421
421
|
|
|
422
422
|
// Inline: run functions registered on the current thread (tasks wired inside the provider)
|
|
423
423
|
await registerHuggingFaceTransformersInline();
|
|
@@ -428,12 +428,12 @@ await registerHuggingFaceTransformersInline();
|
|
|
428
428
|
For compute-intensive tasks that should run in workers:
|
|
429
429
|
|
|
430
430
|
```typescript
|
|
431
|
-
import { registerHuggingFaceTransformers } from "@workglow/
|
|
431
|
+
import { registerHuggingFaceTransformers } from "@workglow/huggingface-transformers/ai";
|
|
432
432
|
|
|
433
433
|
await registerHuggingFaceTransformers({
|
|
434
434
|
worker: () => new Worker(new URL("./worker_hft.ts", import.meta.url), { type: "module" }),
|
|
435
435
|
});
|
|
436
|
-
// Worker file must call registerHuggingFaceTransformersWorker() from @workglow/
|
|
436
|
+
// Worker file must call registerHuggingFaceTransformersWorker() from @workglow/huggingface-transformers/ai-runtime
|
|
437
437
|
```
|
|
438
438
|
|
|
439
439
|
### Job Queue Setup
|
|
@@ -449,7 +449,7 @@ import {
|
|
|
449
449
|
JobQueueServer,
|
|
450
450
|
} from "@workglow/job-queue";
|
|
451
451
|
import { AiJob, AiJobInput } from "@workglow/ai";
|
|
452
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
452
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
453
453
|
|
|
454
454
|
const queueName = HF_TRANSFORMERS_ONNX;
|
|
455
455
|
const storage = new InMemoryQueueStorage<AiJobInput<TaskInput>, TaskOutput>(queueName);
|
|
@@ -476,7 +476,7 @@ AI tasks integrate seamlessly with Workglow workflows:
|
|
|
476
476
|
|
|
477
477
|
```typescript
|
|
478
478
|
import { Workflow } from "@workglow/task-graph";
|
|
479
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
479
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
480
480
|
|
|
481
481
|
const gpt2ModelConfig = {
|
|
482
482
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -555,7 +555,7 @@ The AI package provides a comprehensive set of tasks for building RAG pipelines.
|
|
|
555
555
|
```typescript
|
|
556
556
|
import { Workflow } from "@workglow/task-graph";
|
|
557
557
|
import { createKnowledgeBase } from "@workglow/knowledge-base";
|
|
558
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
558
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
559
559
|
|
|
560
560
|
// 1. Set up a model repository
|
|
561
561
|
const modelRepo = new InMemoryModelRepository();
|
|
@@ -713,7 +713,7 @@ AI tasks accept model inputs as either string identifiers or direct `ModelConfig
|
|
|
713
713
|
|
|
714
714
|
```typescript
|
|
715
715
|
import { TextGenerationTask } from "@workglow/ai";
|
|
716
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
716
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
717
717
|
|
|
718
718
|
const gpt2ModelConfig = {
|
|
719
719
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -752,7 +752,7 @@ Tasks automatically validate that specified models exist and are compatible:
|
|
|
752
752
|
|
|
753
753
|
```typescript
|
|
754
754
|
import { TextGenerationTask } from "@workglow/ai";
|
|
755
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
755
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
756
756
|
|
|
757
757
|
const gpt2ModelConfig = {
|
|
758
758
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -778,7 +778,7 @@ Monitor AI task progress:
|
|
|
778
778
|
|
|
779
779
|
```typescript
|
|
780
780
|
import { TextGenerationTask } from "@workglow/ai";
|
|
781
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
781
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
782
782
|
|
|
783
783
|
const gpt2ModelConfig = {
|
|
784
784
|
provider: HF_TRANSFORMERS_ONNX,
|
|
@@ -807,7 +807,7 @@ All AI tasks support cancellation via AbortSignal:
|
|
|
807
807
|
|
|
808
808
|
```typescript
|
|
809
809
|
import { TextGenerationTask } from "@workglow/ai";
|
|
810
|
-
import { HF_TRANSFORMERS_ONNX } from "@workglow/
|
|
810
|
+
import { HF_TRANSFORMERS_ONNX } from "@workglow/huggingface-transformers/ai";
|
|
811
811
|
|
|
812
812
|
const gpt2ModelConfig = {
|
|
813
813
|
provider: HF_TRANSFORMERS_ONNX,
|
package/dist/browser.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import { getLogger } from "@workglow/util/worker";
|
|
11
11
|
|
|
12
12
|
// src/provider/AiProviderRegistry.ts
|
|
13
|
-
import { globalServiceRegistry, WORKER_MANAGER } from "@workglow/util/worker";
|
|
13
|
+
import { createServiceToken, globalServiceRegistry, WORKER_MANAGER } from "@workglow/util/worker";
|
|
14
14
|
class AiProviderRegistry {
|
|
15
15
|
runFnRegistry = new Map;
|
|
16
16
|
streamFnRegistry = new Map;
|
|
@@ -143,13 +143,20 @@ class AiProviderRegistry {
|
|
|
143
143
|
return runFn;
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
var
|
|
147
|
-
function getAiProviderRegistry() {
|
|
148
|
-
|
|
146
|
+
var AI_PROVIDER_REGISTRY = createServiceToken("ai.provider.registry");
|
|
147
|
+
function getAiProviderRegistry(registry = globalServiceRegistry) {
|
|
148
|
+
if (!registry.has(AI_PROVIDER_REGISTRY)) {
|
|
149
|
+
registerAiProviderDefaults(registry);
|
|
150
|
+
}
|
|
151
|
+
return registry.get(AI_PROVIDER_REGISTRY);
|
|
152
|
+
}
|
|
153
|
+
function setAiProviderRegistry(pr, registry = globalServiceRegistry) {
|
|
154
|
+
registry.registerInstance(AI_PROVIDER_REGISTRY, pr);
|
|
149
155
|
}
|
|
150
|
-
function
|
|
151
|
-
|
|
156
|
+
function registerAiProviderDefaults(registry = globalServiceRegistry) {
|
|
157
|
+
registry.registerIfAbsent(AI_PROVIDER_REGISTRY, () => new AiProviderRegistry, true);
|
|
152
158
|
}
|
|
159
|
+
registerAiProviderDefaults();
|
|
153
160
|
|
|
154
161
|
// src/errors/ImageGenerationErrors.ts
|
|
155
162
|
class ProviderUnsupportedFeatureError extends Error {
|
|
@@ -451,7 +458,7 @@ class QueuedExecutionStrategy {
|
|
|
451
458
|
throw new TaskConfigurationError(`Queue "${this.queueName}" is not registered and autoCreate is disabled. ` + `Register the queue before executing tasks with this provider.`);
|
|
452
459
|
}
|
|
453
460
|
const storage = new InMemoryQueueStorage(this.queueName);
|
|
454
|
-
await storage.
|
|
461
|
+
await storage.migrate();
|
|
455
462
|
this.limiter = new ConcurrencyLimiter(this.concurrency);
|
|
456
463
|
const server = new JobQueueServer(AiJob, {
|
|
457
464
|
storage,
|
|
@@ -701,41 +708,48 @@ class InMemoryModelRepository extends ModelRepository {
|
|
|
701
708
|
|
|
702
709
|
// src/model/ModelRegistry.ts
|
|
703
710
|
import {
|
|
704
|
-
createServiceToken,
|
|
711
|
+
createServiceToken as createServiceToken2,
|
|
705
712
|
globalServiceRegistry as globalServiceRegistry2,
|
|
706
713
|
registerInputCompactor,
|
|
707
714
|
registerInputResolver
|
|
708
715
|
} from "@workglow/util";
|
|
709
|
-
var MODEL_REPOSITORY =
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
716
|
+
var MODEL_REPOSITORY = createServiceToken2("model.repository");
|
|
717
|
+
function getGlobalModelRepository(registry = globalServiceRegistry2) {
|
|
718
|
+
if (!registry.has(MODEL_REPOSITORY)) {
|
|
719
|
+
registerModelDefaults(registry);
|
|
720
|
+
}
|
|
721
|
+
return registry.get(MODEL_REPOSITORY);
|
|
713
722
|
}
|
|
714
|
-
function setGlobalModelRepository(repository) {
|
|
715
|
-
|
|
723
|
+
function setGlobalModelRepository(repository, registry = globalServiceRegistry2) {
|
|
724
|
+
registry.registerInstance(MODEL_REPOSITORY, repository);
|
|
716
725
|
}
|
|
717
|
-
async function resolveModelFromRegistry(id,
|
|
718
|
-
const modelRepo =
|
|
726
|
+
async function resolveModelFromRegistry(id, _format, registry) {
|
|
727
|
+
const modelRepo = getGlobalModelRepository(registry);
|
|
719
728
|
const model = await modelRepo.findByName(id);
|
|
720
729
|
if (!model) {
|
|
721
730
|
throw new Error(`Model "${id}" not found in repository`);
|
|
722
731
|
}
|
|
723
732
|
return model;
|
|
724
733
|
}
|
|
725
|
-
|
|
726
|
-
registerInputCompactor("model", async (value, _format, registry) => {
|
|
734
|
+
async function compactModel(value, _format, registry) {
|
|
727
735
|
if (typeof value === "object" && value !== null && "model_id" in value) {
|
|
728
736
|
const id = value.model_id;
|
|
729
737
|
if (typeof id !== "string")
|
|
730
738
|
return;
|
|
731
|
-
const modelRepo =
|
|
739
|
+
const modelRepo = getGlobalModelRepository(registry);
|
|
732
740
|
const model = await modelRepo.findByName(id);
|
|
733
741
|
if (!model)
|
|
734
742
|
return;
|
|
735
743
|
return id;
|
|
736
744
|
}
|
|
737
745
|
return;
|
|
738
|
-
}
|
|
746
|
+
}
|
|
747
|
+
function registerModelDefaults(registry = globalServiceRegistry2) {
|
|
748
|
+
registry.registerIfAbsent(MODEL_REPOSITORY, () => new InMemoryModelRepository, true);
|
|
749
|
+
registerInputResolver("model", resolveModelFromRegistry, registry);
|
|
750
|
+
registerInputCompactor("model", compactModel, registry);
|
|
751
|
+
}
|
|
752
|
+
registerModelDefaults();
|
|
739
753
|
|
|
740
754
|
// src/provider/AiProvider.ts
|
|
741
755
|
import { globalServiceRegistry as globalServiceRegistry3, WORKER_MANAGER as WORKER_MANAGER2 } from "@workglow/util/worker";
|
|
@@ -7270,7 +7284,9 @@ export {
|
|
|
7270
7284
|
setAiProviderRegistry,
|
|
7271
7285
|
resolveAiProviderGpuQueueConcurrency,
|
|
7272
7286
|
reranker,
|
|
7287
|
+
registerModelDefaults,
|
|
7273
7288
|
registerAiTasks,
|
|
7289
|
+
registerAiProviderDefaults,
|
|
7274
7290
|
queryExpander,
|
|
7275
7291
|
poseLandmarker,
|
|
7276
7292
|
objectDetection,
|
|
@@ -7444,7 +7460,8 @@ export {
|
|
|
7444
7460
|
AiImageOutputTask,
|
|
7445
7461
|
AiChatTask,
|
|
7446
7462
|
AiChatOutputSchema,
|
|
7447
|
-
AiChatInputSchema
|
|
7463
|
+
AiChatInputSchema,
|
|
7464
|
+
AI_PROVIDER_REGISTRY
|
|
7448
7465
|
};
|
|
7449
7466
|
|
|
7450
|
-
//# debugId=
|
|
7467
|
+
//# debugId=813F2056B1AE9B1E64756E2164756E21
|