@workglow/ai-provider 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/dist/provider-anthropic/AnthropicProvider.d.ts +1 -1
- package/dist/provider-anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/provider-anthropic/AnthropicQueuedProvider.d.ts +4 -4
- package/dist/provider-anthropic/AnthropicQueuedProvider.d.ts.map +1 -1
- package/dist/provider-anthropic/common/Anthropic_Client.d.ts.map +1 -1
- package/dist/provider-anthropic/common/Anthropic_CountTokens.d.ts.map +1 -1
- package/dist/provider-anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
- package/dist/provider-anthropic/common/Anthropic_TextGeneration.d.ts.map +1 -1
- package/dist/provider-anthropic/common/Anthropic_TextRewriter.d.ts.map +1 -1
- package/dist/provider-anthropic/common/Anthropic_TextSummary.d.ts.map +1 -1
- package/dist/provider-anthropic/index.js +3 -4
- package/dist/provider-anthropic/index.js.map +3 -3
- package/dist/provider-anthropic/runtime.js +19 -291
- package/dist/provider-anthropic/runtime.js.map +11 -12
- package/dist/provider-chrome/common/WebBrowser_TextGeneration.d.ts.map +1 -1
- package/dist/provider-chrome/common/WebBrowser_TextLanguageDetection.d.ts.map +1 -1
- package/dist/provider-chrome/common/WebBrowser_TextRewriter.d.ts.map +1 -1
- package/dist/provider-chrome/common/WebBrowser_TextSummary.d.ts.map +1 -1
- package/dist/provider-chrome/common/WebBrowser_TextTranslation.d.ts.map +1 -1
- package/dist/provider-chrome/runtime.js +3 -97
- package/dist/provider-chrome/runtime.js.map +8 -8
- package/dist/provider-gemini/GoogleGeminiProvider.d.ts +1 -1
- package/dist/provider-gemini/GoogleGeminiProvider.d.ts.map +1 -1
- package/dist/provider-gemini/GoogleGeminiQueuedProvider.d.ts +4 -4
- package/dist/provider-gemini/GoogleGeminiQueuedProvider.d.ts.map +1 -1
- package/dist/provider-gemini/common/Gemini_CountTokens.d.ts.map +1 -1
- package/dist/provider-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
- package/dist/provider-gemini/common/Gemini_TextEmbedding.d.ts.map +1 -1
- package/dist/provider-gemini/common/Gemini_TextGeneration.d.ts.map +1 -1
- package/dist/provider-gemini/common/Gemini_TextRewriter.d.ts.map +1 -1
- package/dist/provider-gemini/common/Gemini_TextSummary.d.ts.map +1 -1
- package/dist/provider-gemini/index.js +3 -4
- package/dist/provider-gemini/index.js.map +3 -3
- package/dist/provider-gemini/runtime.js +12 -257
- package/dist/provider-gemini/runtime.js.map +11 -12
- package/dist/provider-hf-inference/HfInferenceProvider.d.ts +1 -1
- package/dist/provider-hf-inference/HfInferenceProvider.d.ts.map +1 -1
- package/dist/provider-hf-inference/HfInferenceQueuedProvider.d.ts +4 -4
- package/dist/provider-hf-inference/HfInferenceQueuedProvider.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_Client.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_TextEmbedding.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_TextGeneration.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_TextRewriter.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_TextSummary.d.ts.map +1 -1
- package/dist/provider-hf-inference/index.js +3 -4
- package/dist/provider-hf-inference/index.js.map +3 -3
- package/dist/provider-hf-inference/runtime.js +13 -206
- package/dist/provider-hf-inference/runtime.js.map +11 -12
- package/dist/provider-hf-transformers/HuggingFaceTransformersProvider.d.ts +1 -1
- package/dist/provider-hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -1
- package/dist/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.d.ts +13 -3
- package/dist/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_Constants.d.ts +4 -0
- package/dist/provider-hf-transformers/common/HFT_Constants.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_CountTokens.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_Download.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_ImageEmbedding.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_JobRunFns.d.ts +116 -87
- package/dist/provider-hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_ModelInfo.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_ModelSchema.d.ts +30 -0
- package/dist/provider-hf-transformers/common/HFT_ModelSchema.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_OnnxDtypes.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_Pipeline.d.ts +9 -2
- package/dist/provider-hf-transformers/common/HFT_Pipeline.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_Streaming.d.ts +2 -2
- package/dist/provider-hf-transformers/common/HFT_Streaming.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextClassification.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextFillMask.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextGeneration.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextLanguageDetection.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextNamedEntityRecognition.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextQuestionAnswer.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextRewriter.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextSummary.d.ts.map +1 -1
- package/dist/provider-hf-transformers/common/HFT_TextTranslation.d.ts.map +1 -1
- package/dist/provider-hf-transformers/index.d.ts +0 -1
- package/dist/provider-hf-transformers/index.d.ts.map +1 -1
- package/dist/provider-hf-transformers/index.js +49 -177
- package/dist/provider-hf-transformers/index.js.map +8 -9
- package/dist/provider-hf-transformers/registerHuggingFaceTransformersWorker.d.ts.map +1 -1
- package/dist/provider-hf-transformers/runtime.d.ts +0 -1
- package/dist/provider-hf-transformers/runtime.d.ts.map +1 -1
- package/dist/provider-hf-transformers/runtime.js +208 -513
- package/dist/provider-hf-transformers/runtime.js.map +27 -29
- package/dist/provider-llamacpp/LlamaCppProvider.d.ts +1 -1
- package/dist/provider-llamacpp/LlamaCppProvider.d.ts.map +1 -1
- package/dist/provider-llamacpp/LlamaCppQueuedProvider.d.ts +1 -1
- package/dist/provider-llamacpp/LlamaCppQueuedProvider.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_CountTokens.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_ModelSchema.d.ts +15 -0
- package/dist/provider-llamacpp/common/LlamaCpp_ModelSchema.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_Runtime.d.ts +10 -0
- package/dist/provider-llamacpp/common/LlamaCpp_Runtime.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_StructuredGeneration.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_TextEmbedding.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_TextGeneration.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_TextRewriter.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_TextSummary.d.ts.map +1 -1
- package/dist/provider-llamacpp/index.js +6 -2
- package/dist/provider-llamacpp/index.js.map +4 -4
- package/dist/provider-llamacpp/runtime.js +82 -230
- package/dist/provider-llamacpp/runtime.js.map +13 -14
- package/dist/provider-ollama/OllamaProvider.d.ts +1 -1
- package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -1
- package/dist/provider-ollama/OllamaQueuedProvider.d.ts +4 -4
- package/dist/provider-ollama/OllamaQueuedProvider.d.ts.map +1 -1
- package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts +13 -71
- package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts.map +1 -1
- package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +13 -71
- package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -1
- package/dist/provider-ollama/common/Ollama_TextGeneration.d.ts.map +1 -1
- package/dist/provider-ollama/common/Ollama_TextRewriter.d.ts.map +1 -1
- package/dist/provider-ollama/common/Ollama_TextSummary.d.ts.map +1 -1
- package/dist/provider-ollama/index.browser.js +3 -4
- package/dist/provider-ollama/index.browser.js.map +3 -3
- package/dist/provider-ollama/index.js +3 -4
- package/dist/provider-ollama/index.js.map +3 -3
- package/dist/provider-ollama/runtime.browser.js +8 -179
- package/dist/provider-ollama/runtime.browser.js.map +9 -10
- package/dist/provider-ollama/runtime.js +8 -174
- package/dist/provider-ollama/runtime.js.map +9 -10
- package/dist/provider-openai/OpenAiProvider.d.ts +1 -1
- package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -1
- package/dist/provider-openai/OpenAiQueuedProvider.d.ts +4 -4
- package/dist/provider-openai/OpenAiQueuedProvider.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_Client.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_CountTokens.browser.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_CountTokens.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_JobRunFns.browser.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_TextEmbedding.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_TextGeneration.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_TextRewriter.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_TextSummary.d.ts.map +1 -1
- package/dist/provider-openai/index.browser.js +3 -4
- package/dist/provider-openai/index.browser.js.map +3 -3
- package/dist/provider-openai/index.js +3 -4
- package/dist/provider-openai/index.js.map +3 -3
- package/dist/provider-openai/runtime.browser.js +22 -224
- package/dist/provider-openai/runtime.browser.js.map +12 -13
- package/dist/provider-openai/runtime.js +22 -224
- package/dist/provider-openai/runtime.js.map +12 -13
- package/dist/provider-tf-mediapipe/TensorFlowMediaPipeQueuedProvider.d.ts +3 -3
- package/dist/provider-tf-mediapipe/TensorFlowMediaPipeQueuedProvider.d.ts.map +1 -1
- package/dist/provider-tf-mediapipe/common/TFMP_ImageEmbedding.d.ts.map +1 -1
- package/dist/provider-tf-mediapipe/common/TFMP_JobRunFns.d.ts +17 -10
- package/dist/provider-tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
- package/dist/provider-tf-mediapipe/common/TFMP_Unload.d.ts.map +1 -1
- package/dist/provider-tf-mediapipe/index.js +3 -3
- package/dist/provider-tf-mediapipe/index.js.map +3 -3
- package/dist/provider-tf-mediapipe/runtime.js +16 -5
- package/dist/provider-tf-mediapipe/runtime.js.map +5 -5
- package/package.json +15 -15
- package/dist/provider-anthropic/common/Anthropic_ToolCalling.d.ts +0 -10
- package/dist/provider-anthropic/common/Anthropic_ToolCalling.d.ts.map +0 -1
- package/dist/provider-gemini/common/Gemini_ToolCalling.d.ts +0 -10
- package/dist/provider-gemini/common/Gemini_ToolCalling.d.ts.map +0 -1
- package/dist/provider-hf-inference/common/HFI_ToolCalling.d.ts +0 -10
- package/dist/provider-hf-inference/common/HFI_ToolCalling.d.ts.map +0 -1
- package/dist/provider-hf-transformers/common/HFT_ToolCalling.d.ts +0 -10
- package/dist/provider-hf-transformers/common/HFT_ToolCalling.d.ts.map +0 -1
- package/dist/provider-hf-transformers/common/HFT_ToolMarkup.d.ts +0 -40
- package/dist/provider-hf-transformers/common/HFT_ToolMarkup.d.ts.map +0 -1
- package/dist/provider-llamacpp/common/LlamaCpp_ToolCalling.d.ts +0 -10
- package/dist/provider-llamacpp/common/LlamaCpp_ToolCalling.d.ts.map +0 -1
- package/dist/provider-ollama/common/Ollama_ToolCalling.d.ts +0 -16
- package/dist/provider-ollama/common/Ollama_ToolCalling.d.ts.map +0 -1
- package/dist/provider-openai/common/OpenAI_ToolCalling.d.ts +0 -10
- package/dist/provider-openai/common/OpenAI_ToolCalling.d.ts.map +0 -1
|
@@ -73,6 +73,33 @@ async function getOrLoadModel(model) {
|
|
|
73
73
|
llamaCppModels.set(modelPath, loadedModel);
|
|
74
74
|
return loadedModel;
|
|
75
75
|
}
|
|
76
|
+
function llamaCppSeedPromptSpread(provider_config) {
|
|
77
|
+
return provider_config.seed !== undefined ? { seed: provider_config.seed } : {};
|
|
78
|
+
}
|
|
79
|
+
function detectQwenChatWrapperVariation(model) {
|
|
80
|
+
const candidates = [
|
|
81
|
+
model.model_id,
|
|
82
|
+
model.title,
|
|
83
|
+
model.description,
|
|
84
|
+
model.provider_config.model_url,
|
|
85
|
+
model.provider_config.model_path
|
|
86
|
+
].filter((value) => typeof value === "string" && value.length > 0).map((value) => value.toLowerCase());
|
|
87
|
+
if (candidates.some((value) => /\bqwen(?:[\s._-]?|)3(?:[\s._-]?|)5\b|\bqwen(?:[\s._-]?|)3\.5\b/.test(value))) {
|
|
88
|
+
return "3.5";
|
|
89
|
+
}
|
|
90
|
+
if (candidates.some((value) => /\bqwen(?:[\s._-]?|)3\b/.test(value))) {
|
|
91
|
+
return "3";
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
function llamaCppChatSessionConstructorSpread(model) {
|
|
96
|
+
const variation = detectQwenChatWrapperVariation(model);
|
|
97
|
+
if (!variation) {
|
|
98
|
+
return {};
|
|
99
|
+
}
|
|
100
|
+
const { QwenChatWrapper } = getLlamaCppSdk();
|
|
101
|
+
return { chatWrapper: new QwenChatWrapper({ variation }) };
|
|
102
|
+
}
|
|
76
103
|
async function getOrCreateTextContext(model) {
|
|
77
104
|
const modelPath = getActualModelPath(model);
|
|
78
105
|
const cached = llamaCppTextContexts.get(modelPath);
|
|
@@ -255,18 +282,7 @@ var LlamaCpp_ModelSearch = async (input, _model, _onProgress, signal) => {
|
|
|
255
282
|
};
|
|
256
283
|
|
|
257
284
|
// src/provider-llamacpp/common/LlamaCpp_CountTokens.ts
|
|
258
|
-
import { getLogger } from "@workglow/util/worker";
|
|
259
285
|
var LlamaCpp_CountTokens = async (input, model, onProgress, signal) => {
|
|
260
|
-
if (Array.isArray(input.text)) {
|
|
261
|
-
getLogger().warn("LlamaCpp_CountTokens: array input received; processing sequentially (no native batch support)");
|
|
262
|
-
const texts = input.text;
|
|
263
|
-
const counts = [];
|
|
264
|
-
for (const item of texts) {
|
|
265
|
-
const r = await LlamaCpp_CountTokens({ ...input, text: item }, model, onProgress, signal);
|
|
266
|
-
counts.push(r.count);
|
|
267
|
-
}
|
|
268
|
-
return { count: counts };
|
|
269
|
-
}
|
|
270
286
|
const loadedModel = await getOrLoadModel(model);
|
|
271
287
|
const tokens = loadedModel.tokenizer(input.text);
|
|
272
288
|
return { count: tokens.length };
|
|
@@ -347,11 +363,15 @@ var LlamaCpp_StructuredGeneration = async (input, model, update_progress, signal
|
|
|
347
363
|
const grammar = await llama.createGrammarForJsonSchema(input.outputSchema);
|
|
348
364
|
const sequence = context.getSequence();
|
|
349
365
|
const { LlamaChatSession } = getLlamaCppSdk();
|
|
350
|
-
const session = new LlamaChatSession({
|
|
366
|
+
const session = new LlamaChatSession({
|
|
367
|
+
contextSequence: sequence,
|
|
368
|
+
...llamaCppChatSessionConstructorSpread(model)
|
|
369
|
+
});
|
|
351
370
|
try {
|
|
352
371
|
const text = await session.prompt(input.prompt, {
|
|
353
372
|
signal,
|
|
354
373
|
grammar,
|
|
374
|
+
...llamaCppSeedPromptSpread(model.provider_config),
|
|
355
375
|
...input.temperature !== undefined && { temperature: input.temperature },
|
|
356
376
|
...input.maxTokens !== undefined && { maxTokens: input.maxTokens }
|
|
357
377
|
});
|
|
@@ -364,6 +384,7 @@ var LlamaCpp_StructuredGeneration = async (input, model, update_progress, signal
|
|
|
364
384
|
update_progress(100, "Structured generation complete");
|
|
365
385
|
return { object };
|
|
366
386
|
} finally {
|
|
387
|
+
session.dispose({ disposeSequence: false });
|
|
367
388
|
sequence.dispose();
|
|
368
389
|
}
|
|
369
390
|
};
|
|
@@ -376,7 +397,10 @@ var LlamaCpp_StructuredGeneration_Stream = async function* (input, model, signal
|
|
|
376
397
|
const grammar = await llama.createGrammarForJsonSchema(input.outputSchema);
|
|
377
398
|
const sequence = context.getSequence();
|
|
378
399
|
const { LlamaChatSession } = getLlamaCppSdk();
|
|
379
|
-
const session = new LlamaChatSession({
|
|
400
|
+
const session = new LlamaChatSession({
|
|
401
|
+
contextSequence: sequence,
|
|
402
|
+
...llamaCppChatSessionConstructorSpread(model)
|
|
403
|
+
});
|
|
380
404
|
const queue = [];
|
|
381
405
|
let isComplete = false;
|
|
382
406
|
let completionError;
|
|
@@ -389,6 +413,7 @@ var LlamaCpp_StructuredGeneration_Stream = async function* (input, model, signal
|
|
|
389
413
|
const promptPromise = session.prompt(input.prompt, {
|
|
390
414
|
signal,
|
|
391
415
|
grammar,
|
|
416
|
+
...llamaCppSeedPromptSpread(model.provider_config),
|
|
392
417
|
onTextChunk: (chunk) => {
|
|
393
418
|
queue.push(chunk);
|
|
394
419
|
notifyWaiter();
|
|
@@ -429,6 +454,7 @@ var LlamaCpp_StructuredGeneration_Stream = async function* (input, model, signal
|
|
|
429
454
|
}
|
|
430
455
|
} finally {
|
|
431
456
|
await promptPromise.catch(() => {});
|
|
457
|
+
session.dispose({ disposeSequence: false });
|
|
432
458
|
sequence.dispose();
|
|
433
459
|
}
|
|
434
460
|
if (completionError) {
|
|
@@ -462,18 +488,7 @@ var LlamaCpp_TextEmbedding = async (input, model, update_progress, _signal) => {
|
|
|
462
488
|
};
|
|
463
489
|
|
|
464
490
|
// src/provider-llamacpp/common/LlamaCpp_TextGeneration.ts
|
|
465
|
-
import { getLogger as getLogger2 } from "@workglow/util/worker";
|
|
466
491
|
var LlamaCpp_TextGeneration = async (input, model, update_progress, signal) => {
|
|
467
|
-
if (Array.isArray(input.prompt)) {
|
|
468
|
-
getLogger2().warn("LlamaCpp_TextGeneration: array input received; processing sequentially (no native batch support)");
|
|
469
|
-
const prompts = input.prompt;
|
|
470
|
-
const results = [];
|
|
471
|
-
for (const item of prompts) {
|
|
472
|
-
const r = await LlamaCpp_TextGeneration({ ...input, prompt: item }, model, update_progress, signal);
|
|
473
|
-
results.push(r.text);
|
|
474
|
-
}
|
|
475
|
-
return { text: results };
|
|
476
|
-
}
|
|
477
492
|
if (!model)
|
|
478
493
|
throw new Error("Model config is required for TextGenerationTask.");
|
|
479
494
|
const { LlamaChatSession } = await loadSdk();
|
|
@@ -481,10 +496,14 @@ var LlamaCpp_TextGeneration = async (input, model, update_progress, signal) => {
|
|
|
481
496
|
const context = await getOrCreateTextContext(model);
|
|
482
497
|
update_progress(10, "Generating text");
|
|
483
498
|
const sequence = context.getSequence();
|
|
484
|
-
const session = new LlamaChatSession({
|
|
499
|
+
const session = new LlamaChatSession({
|
|
500
|
+
contextSequence: sequence,
|
|
501
|
+
...llamaCppChatSessionConstructorSpread(model)
|
|
502
|
+
});
|
|
485
503
|
try {
|
|
486
504
|
const text = await session.prompt(input.prompt, {
|
|
487
505
|
signal,
|
|
506
|
+
...llamaCppSeedPromptSpread(model.provider_config),
|
|
488
507
|
...input.temperature !== undefined && { temperature: input.temperature },
|
|
489
508
|
...input.maxTokens !== undefined && { maxTokens: input.maxTokens },
|
|
490
509
|
...input.topP !== undefined && { topP: input.topP }
|
|
@@ -492,6 +511,7 @@ var LlamaCpp_TextGeneration = async (input, model, update_progress, signal) => {
|
|
|
492
511
|
update_progress(100, "Text generation complete");
|
|
493
512
|
return { text };
|
|
494
513
|
} finally {
|
|
514
|
+
session.dispose({ disposeSequence: false });
|
|
495
515
|
sequence.dispose();
|
|
496
516
|
}
|
|
497
517
|
};
|
|
@@ -501,35 +521,29 @@ var LlamaCpp_TextGeneration_Stream = async function* (input, model, signal) {
|
|
|
501
521
|
const { LlamaChatSession } = await loadSdk();
|
|
502
522
|
const context = await getOrCreateTextContext(model);
|
|
503
523
|
const sequence = context.getSequence();
|
|
504
|
-
const session = new LlamaChatSession({
|
|
524
|
+
const session = new LlamaChatSession({
|
|
525
|
+
contextSequence: sequence,
|
|
526
|
+
...llamaCppChatSessionConstructorSpread(model)
|
|
527
|
+
});
|
|
505
528
|
try {
|
|
506
529
|
yield* streamFromSession((onTextChunk) => {
|
|
507
530
|
return session.prompt(input.prompt, {
|
|
508
531
|
signal,
|
|
509
532
|
onTextChunk,
|
|
533
|
+
...llamaCppSeedPromptSpread(model.provider_config),
|
|
510
534
|
...input.temperature !== undefined && { temperature: input.temperature },
|
|
511
535
|
...input.maxTokens !== undefined && { maxTokens: input.maxTokens },
|
|
512
536
|
...input.topP !== undefined && { topP: input.topP }
|
|
513
537
|
});
|
|
514
538
|
}, signal);
|
|
515
539
|
} finally {
|
|
540
|
+
session.dispose({ disposeSequence: false });
|
|
516
541
|
sequence.dispose();
|
|
517
542
|
}
|
|
518
543
|
};
|
|
519
544
|
|
|
520
545
|
// src/provider-llamacpp/common/LlamaCpp_TextRewriter.ts
|
|
521
|
-
import { getLogger as getLogger3 } from "@workglow/util/worker";
|
|
522
546
|
var LlamaCpp_TextRewriter = async (input, model, update_progress, signal) => {
|
|
523
|
-
if (Array.isArray(input.text)) {
|
|
524
|
-
getLogger3().warn("LlamaCpp_TextRewriter: array input received; processing sequentially (no native batch support)");
|
|
525
|
-
const texts = input.text;
|
|
526
|
-
const results = [];
|
|
527
|
-
for (const item of texts) {
|
|
528
|
-
const r = await LlamaCpp_TextRewriter({ ...input, text: item }, model, update_progress, signal);
|
|
529
|
-
results.push(r.text);
|
|
530
|
-
}
|
|
531
|
-
return { text: results };
|
|
532
|
-
}
|
|
533
547
|
if (!model)
|
|
534
548
|
throw new Error("Model config is required for TextRewriterTask.");
|
|
535
549
|
const { LlamaChatSession } = await loadSdk();
|
|
@@ -539,13 +553,18 @@ var LlamaCpp_TextRewriter = async (input, model, update_progress, signal) => {
|
|
|
539
553
|
const sequence = context.getSequence();
|
|
540
554
|
const session = new LlamaChatSession({
|
|
541
555
|
contextSequence: sequence,
|
|
556
|
+
...llamaCppChatSessionConstructorSpread(model),
|
|
542
557
|
systemPrompt: input.prompt
|
|
543
558
|
});
|
|
544
559
|
try {
|
|
545
|
-
const text = await session.prompt(input.text, {
|
|
560
|
+
const text = await session.prompt(input.text, {
|
|
561
|
+
signal,
|
|
562
|
+
...llamaCppSeedPromptSpread(model.provider_config)
|
|
563
|
+
});
|
|
546
564
|
update_progress(100, "Text rewriting complete");
|
|
547
565
|
return { text };
|
|
548
566
|
} finally {
|
|
567
|
+
session.dispose({ disposeSequence: false });
|
|
549
568
|
sequence.dispose();
|
|
550
569
|
}
|
|
551
570
|
};
|
|
@@ -557,30 +576,25 @@ var LlamaCpp_TextRewriter_Stream = async function* (input, model, signal) {
|
|
|
557
576
|
const sequence = context.getSequence();
|
|
558
577
|
const session = new LlamaChatSession({
|
|
559
578
|
contextSequence: sequence,
|
|
579
|
+
...llamaCppChatSessionConstructorSpread(model),
|
|
560
580
|
systemPrompt: input.prompt
|
|
561
581
|
});
|
|
562
582
|
try {
|
|
563
583
|
yield* streamFromSession((onTextChunk) => {
|
|
564
|
-
return session.prompt(input.text, {
|
|
584
|
+
return session.prompt(input.text, {
|
|
585
|
+
signal,
|
|
586
|
+
onTextChunk,
|
|
587
|
+
...llamaCppSeedPromptSpread(model.provider_config)
|
|
588
|
+
});
|
|
565
589
|
}, signal);
|
|
566
590
|
} finally {
|
|
591
|
+
session.dispose({ disposeSequence: false });
|
|
567
592
|
sequence.dispose();
|
|
568
593
|
}
|
|
569
594
|
};
|
|
570
595
|
|
|
571
596
|
// src/provider-llamacpp/common/LlamaCpp_TextSummary.ts
|
|
572
|
-
import { getLogger as getLogger4 } from "@workglow/util/worker";
|
|
573
597
|
var LlamaCpp_TextSummary = async (input, model, update_progress, signal) => {
|
|
574
|
-
if (Array.isArray(input.text)) {
|
|
575
|
-
getLogger4().warn("LlamaCpp_TextSummary: array input received; processing sequentially (no native batch support)");
|
|
576
|
-
const texts = input.text;
|
|
577
|
-
const results = [];
|
|
578
|
-
for (const item of texts) {
|
|
579
|
-
const r = await LlamaCpp_TextSummary({ ...input, text: item }, model, update_progress, signal);
|
|
580
|
-
results.push(r.text);
|
|
581
|
-
}
|
|
582
|
-
return { text: results };
|
|
583
|
-
}
|
|
584
598
|
if (!model)
|
|
585
599
|
throw new Error("Model config is required for TextSummaryTask.");
|
|
586
600
|
const { LlamaChatSession } = await loadSdk();
|
|
@@ -590,13 +604,18 @@ var LlamaCpp_TextSummary = async (input, model, update_progress, signal) => {
|
|
|
590
604
|
const sequence = context.getSequence();
|
|
591
605
|
const session = new LlamaChatSession({
|
|
592
606
|
contextSequence: sequence,
|
|
607
|
+
...llamaCppChatSessionConstructorSpread(model),
|
|
593
608
|
systemPrompt: "Summarize the following text concisely, preserving the key points."
|
|
594
609
|
});
|
|
595
610
|
try {
|
|
596
|
-
const text = await session.prompt(input.text, {
|
|
611
|
+
const text = await session.prompt(input.text, {
|
|
612
|
+
signal,
|
|
613
|
+
...llamaCppSeedPromptSpread(model.provider_config)
|
|
614
|
+
});
|
|
597
615
|
update_progress(100, "Summarization complete");
|
|
598
616
|
return { text };
|
|
599
617
|
} finally {
|
|
618
|
+
session.dispose({ disposeSequence: false });
|
|
600
619
|
sequence.dispose();
|
|
601
620
|
}
|
|
602
621
|
};
|
|
@@ -608,186 +627,21 @@ var LlamaCpp_TextSummary_Stream = async function* (input, model, signal) {
|
|
|
608
627
|
const sequence = context.getSequence();
|
|
609
628
|
const session = new LlamaChatSession({
|
|
610
629
|
contextSequence: sequence,
|
|
630
|
+
...llamaCppChatSessionConstructorSpread(model),
|
|
611
631
|
systemPrompt: "Summarize the following text concisely, preserving the key points."
|
|
612
632
|
});
|
|
613
633
|
try {
|
|
614
634
|
yield* streamFromSession((onTextChunk) => {
|
|
615
|
-
return session.prompt(input.text, {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
}
|
|
620
|
-
};
|
|
621
|
-
|
|
622
|
-
// src/provider-llamacpp/common/LlamaCpp_ToolCalling.ts
|
|
623
|
-
import { filterValidToolCalls } from "@workglow/ai/worker";
|
|
624
|
-
import { getLogger as getLogger5 } from "@workglow/util/worker";
|
|
625
|
-
function buildLlamaCppPrompt(input) {
|
|
626
|
-
const inputMessages = input.messages;
|
|
627
|
-
if (!inputMessages || inputMessages.length === 0) {
|
|
628
|
-
return Array.isArray(input.prompt) ? input.prompt.join(`
|
|
629
|
-
`) : input.prompt;
|
|
630
|
-
}
|
|
631
|
-
const parts = [];
|
|
632
|
-
for (const msg of inputMessages) {
|
|
633
|
-
if (msg.role === "user") {
|
|
634
|
-
parts.push(`User: ${msg.content}`);
|
|
635
|
-
} else if (msg.role === "assistant" && Array.isArray(msg.content)) {
|
|
636
|
-
const text = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");
|
|
637
|
-
if (text)
|
|
638
|
-
parts.push(`Assistant: ${text}`);
|
|
639
|
-
} else if (msg.role === "tool" && Array.isArray(msg.content)) {
|
|
640
|
-
for (const block of msg.content) {
|
|
641
|
-
parts.push(`Tool Result: ${block.content}`);
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
return parts.join(`
|
|
646
|
-
|
|
647
|
-
`);
|
|
648
|
-
}
|
|
649
|
-
function buildLlamaCppFunctions(tools, capturedCalls) {
|
|
650
|
-
const { defineChatSessionFunction } = getLlamaCppSdk();
|
|
651
|
-
const functions = {};
|
|
652
|
-
for (const tool of tools) {
|
|
653
|
-
const toolName = tool.name;
|
|
654
|
-
functions[toolName] = defineChatSessionFunction({
|
|
655
|
-
description: tool.description,
|
|
656
|
-
params: tool.inputSchema,
|
|
657
|
-
handler(params) {
|
|
658
|
-
capturedCalls.push({ name: toolName, input: params ?? {} });
|
|
659
|
-
return "OK";
|
|
660
|
-
}
|
|
661
|
-
});
|
|
662
|
-
}
|
|
663
|
-
return functions;
|
|
664
|
-
}
|
|
665
|
-
var LlamaCpp_ToolCalling = async (input, model, update_progress, signal) => {
|
|
666
|
-
if (Array.isArray(input.prompt)) {
|
|
667
|
-
getLogger5().warn("LlamaCpp_ToolCalling: array input received; processing sequentially (no native batch support)");
|
|
668
|
-
const prompts = input.prompt;
|
|
669
|
-
const texts = [];
|
|
670
|
-
const toolCallsList = [];
|
|
671
|
-
for (const item of prompts) {
|
|
672
|
-
const r = await LlamaCpp_ToolCalling({ ...input, prompt: item }, model, update_progress, signal);
|
|
673
|
-
texts.push(r.text);
|
|
674
|
-
toolCallsList.push(r.toolCalls);
|
|
675
|
-
}
|
|
676
|
-
return { text: texts, toolCalls: toolCallsList };
|
|
677
|
-
}
|
|
678
|
-
if (!model)
|
|
679
|
-
throw new Error("Model config is required for ToolCallingTask.");
|
|
680
|
-
await loadSdk();
|
|
681
|
-
update_progress(0, "Loading model");
|
|
682
|
-
const context = await getOrCreateTextContext(model);
|
|
683
|
-
const capturedCalls = [];
|
|
684
|
-
const functions = input.toolChoice === "none" ? undefined : buildLlamaCppFunctions(input.tools, capturedCalls);
|
|
685
|
-
update_progress(10, "Running tool calling");
|
|
686
|
-
const sequence = context.getSequence();
|
|
687
|
-
const { LlamaChatSession } = getLlamaCppSdk();
|
|
688
|
-
const promptText = buildLlamaCppPrompt(input);
|
|
689
|
-
const session = new LlamaChatSession({
|
|
690
|
-
contextSequence: sequence,
|
|
691
|
-
...input.systemPrompt && { systemPrompt: input.systemPrompt }
|
|
692
|
-
});
|
|
693
|
-
try {
|
|
694
|
-
const text = await session.prompt(promptText, {
|
|
695
|
-
signal,
|
|
696
|
-
...functions && { functions },
|
|
697
|
-
...input.temperature !== undefined && { temperature: input.temperature },
|
|
698
|
-
...input.maxTokens !== undefined && { maxTokens: input.maxTokens }
|
|
699
|
-
});
|
|
700
|
-
const toolCalls = [];
|
|
701
|
-
capturedCalls.forEach((call, index) => {
|
|
702
|
-
const id = `call_${index}`;
|
|
703
|
-
toolCalls.push({ id, name: call.name, input: call.input });
|
|
704
|
-
});
|
|
705
|
-
update_progress(100, "Tool calling complete");
|
|
706
|
-
return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };
|
|
707
|
-
} finally {
|
|
708
|
-
sequence.dispose();
|
|
709
|
-
}
|
|
710
|
-
};
|
|
711
|
-
var LlamaCpp_ToolCalling_Stream = async function* (input, model, signal) {
|
|
712
|
-
if (!model)
|
|
713
|
-
throw new Error("Model config is required for ToolCallingTask.");
|
|
714
|
-
await loadSdk();
|
|
715
|
-
const context = await getOrCreateTextContext(model);
|
|
716
|
-
const capturedCalls = [];
|
|
717
|
-
const functions = input.toolChoice === "none" ? undefined : buildLlamaCppFunctions(input.tools, capturedCalls);
|
|
718
|
-
const sequence = context.getSequence();
|
|
719
|
-
const { LlamaChatSession } = getLlamaCppSdk();
|
|
720
|
-
const promptText = buildLlamaCppPrompt(input);
|
|
721
|
-
const session = new LlamaChatSession({
|
|
722
|
-
contextSequence: sequence,
|
|
723
|
-
...input.systemPrompt && { systemPrompt: input.systemPrompt }
|
|
724
|
-
});
|
|
725
|
-
const queue = [];
|
|
726
|
-
let isComplete = false;
|
|
727
|
-
let completionError;
|
|
728
|
-
let resolveWait = null;
|
|
729
|
-
const notifyWaiter = () => {
|
|
730
|
-
resolveWait?.();
|
|
731
|
-
resolveWait = null;
|
|
732
|
-
};
|
|
733
|
-
let accumulatedText = "";
|
|
734
|
-
const promptPromise = session.prompt(promptText, {
|
|
735
|
-
signal,
|
|
736
|
-
...functions && { functions },
|
|
737
|
-
onTextChunk: (chunk) => {
|
|
738
|
-
queue.push(chunk);
|
|
739
|
-
notifyWaiter();
|
|
740
|
-
},
|
|
741
|
-
...input.temperature !== undefined && { temperature: input.temperature },
|
|
742
|
-
...input.maxTokens !== undefined && { maxTokens: input.maxTokens }
|
|
743
|
-
}).then(() => {
|
|
744
|
-
isComplete = true;
|
|
745
|
-
notifyWaiter();
|
|
746
|
-
}).catch((err) => {
|
|
747
|
-
completionError = err;
|
|
748
|
-
isComplete = true;
|
|
749
|
-
notifyWaiter();
|
|
750
|
-
});
|
|
751
|
-
try {
|
|
752
|
-
while (true) {
|
|
753
|
-
while (queue.length > 0) {
|
|
754
|
-
const chunk = queue.shift();
|
|
755
|
-
accumulatedText += chunk;
|
|
756
|
-
yield { type: "text-delta", port: "text", textDelta: chunk };
|
|
757
|
-
}
|
|
758
|
-
if (isComplete)
|
|
759
|
-
break;
|
|
760
|
-
await new Promise((r) => {
|
|
761
|
-
resolveWait = r;
|
|
635
|
+
return session.prompt(input.text, {
|
|
636
|
+
signal,
|
|
637
|
+
onTextChunk,
|
|
638
|
+
...llamaCppSeedPromptSpread(model.provider_config)
|
|
762
639
|
});
|
|
763
|
-
}
|
|
764
|
-
while (queue.length > 0) {
|
|
765
|
-
const chunk = queue.shift();
|
|
766
|
-
accumulatedText += chunk;
|
|
767
|
-
yield { type: "text-delta", port: "text", textDelta: chunk };
|
|
768
|
-
}
|
|
640
|
+
}, signal);
|
|
769
641
|
} finally {
|
|
770
|
-
|
|
642
|
+
session.dispose({ disposeSequence: false });
|
|
771
643
|
sequence.dispose();
|
|
772
644
|
}
|
|
773
|
-
if (completionError) {
|
|
774
|
-
if (!signal.aborted)
|
|
775
|
-
throw completionError;
|
|
776
|
-
return;
|
|
777
|
-
}
|
|
778
|
-
const toolCalls = [];
|
|
779
|
-
capturedCalls.forEach((call, index) => {
|
|
780
|
-
const id = `call_${index}`;
|
|
781
|
-
toolCalls.push({ id, name: call.name, input: call.input });
|
|
782
|
-
});
|
|
783
|
-
const validToolCalls = filterValidToolCalls(toolCalls, input.tools);
|
|
784
|
-
if (validToolCalls.length > 0) {
|
|
785
|
-
yield { type: "object-delta", port: "toolCalls", objectDelta: [...validToolCalls] };
|
|
786
|
-
}
|
|
787
|
-
yield {
|
|
788
|
-
type: "finish",
|
|
789
|
-
data: { text: accumulatedText, toolCalls: validToolCalls }
|
|
790
|
-
};
|
|
791
645
|
};
|
|
792
646
|
|
|
793
647
|
// src/provider-llamacpp/common/LlamaCpp_Unload.ts
|
|
@@ -828,7 +682,6 @@ var LLAMACPP_TASKS = {
|
|
|
828
682
|
TextEmbeddingTask: LlamaCpp_TextEmbedding,
|
|
829
683
|
TextRewriterTask: LlamaCpp_TextRewriter,
|
|
830
684
|
TextSummaryTask: LlamaCpp_TextSummary,
|
|
831
|
-
ToolCallingTask: LlamaCpp_ToolCalling,
|
|
832
685
|
StructuredGenerationTask: LlamaCpp_StructuredGeneration,
|
|
833
686
|
ModelSearchTask: LlamaCpp_ModelSearch
|
|
834
687
|
};
|
|
@@ -836,7 +689,6 @@ var LLAMACPP_STREAM_TASKS = {
|
|
|
836
689
|
TextGenerationTask: LlamaCpp_TextGeneration_Stream,
|
|
837
690
|
TextRewriterTask: LlamaCpp_TextRewriter_Stream,
|
|
838
691
|
TextSummaryTask: LlamaCpp_TextSummary_Stream,
|
|
839
|
-
ToolCallingTask: LlamaCpp_ToolCalling_Stream,
|
|
840
692
|
StructuredGenerationTask: LlamaCpp_StructuredGeneration_Stream
|
|
841
693
|
};
|
|
842
694
|
var LLAMACPP_REACTIVE_TASKS = {
|
|
@@ -861,7 +713,6 @@ class LlamaCppQueuedProvider extends QueuedAiProvider {
|
|
|
861
713
|
"TextEmbeddingTask",
|
|
862
714
|
"TextRewriterTask",
|
|
863
715
|
"TextSummaryTask",
|
|
864
|
-
"ToolCallingTask",
|
|
865
716
|
"ModelSearchTask"
|
|
866
717
|
];
|
|
867
718
|
constructor(tasks, streamTasks, reactiveTasks) {
|
|
@@ -874,7 +725,7 @@ async function registerLlamaCppInline(options) {
|
|
|
874
725
|
await new LlamaCppQueuedProvider(LLAMACPP_TASKS, LLAMACPP_STREAM_TASKS, LLAMACPP_REACTIVE_TASKS).register(options ?? {});
|
|
875
726
|
}
|
|
876
727
|
// src/provider-llamacpp/registerLlamaCppWorker.ts
|
|
877
|
-
import { getLogger
|
|
728
|
+
import { getLogger, globalServiceRegistry, WORKER_SERVER } from "@workglow/util/worker";
|
|
878
729
|
|
|
879
730
|
// src/provider-llamacpp/LlamaCppProvider.ts
|
|
880
731
|
import {
|
|
@@ -894,7 +745,6 @@ class LlamaCppProvider extends AiProvider {
|
|
|
894
745
|
"TextEmbeddingTask",
|
|
895
746
|
"TextRewriterTask",
|
|
896
747
|
"TextSummaryTask",
|
|
897
|
-
"ToolCallingTask",
|
|
898
748
|
"ModelSearchTask"
|
|
899
749
|
];
|
|
900
750
|
constructor(tasks, streamTasks, reactiveTasks) {
|
|
@@ -907,7 +757,7 @@ async function registerLlamaCppWorker() {
|
|
|
907
757
|
const workerServer = globalServiceRegistry.get(WORKER_SERVER);
|
|
908
758
|
new LlamaCppProvider(LLAMACPP_TASKS, LLAMACPP_STREAM_TASKS, LLAMACPP_REACTIVE_TASKS).registerOnWorkerServer(workerServer);
|
|
909
759
|
workerServer.sendReady();
|
|
910
|
-
|
|
760
|
+
getLogger().info("LlamaCpp worker job run functions registered");
|
|
911
761
|
}
|
|
912
762
|
export {
|
|
913
763
|
streamFromSession,
|
|
@@ -916,8 +766,10 @@ export {
|
|
|
916
766
|
registerLlamaCppInline,
|
|
917
767
|
loadSdk,
|
|
918
768
|
llamaCppTextContexts,
|
|
769
|
+
llamaCppSeedPromptSpread,
|
|
919
770
|
llamaCppModels,
|
|
920
771
|
llamaCppEmbeddingContexts,
|
|
772
|
+
llamaCppChatSessionConstructorSpread,
|
|
921
773
|
getOrLoadModel,
|
|
922
774
|
getOrCreateTextContext,
|
|
923
775
|
getOrCreateEmbeddingContext,
|
|
@@ -928,4 +780,4 @@ export {
|
|
|
928
780
|
disposeLlamaCppResources
|
|
929
781
|
};
|
|
930
782
|
|
|
931
|
-
//# debugId=
|
|
783
|
+
//# debugId=EB49E8246FF54A0364756E2164756E21
|