@push.rocks/smartai 0.13.2 → 2.0.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_ts/00_commitinfo_data.js +3 -3
- package/dist_ts/index.d.ts +6 -11
- package/dist_ts/index.js +6 -12
- package/dist_ts/plugins.d.ts +10 -15
- package/dist_ts/plugins.js +13 -19
- package/dist_ts/smartai.classes.smartai.d.ts +7 -0
- package/dist_ts/smartai.classes.smartai.js +51 -0
- package/dist_ts/smartai.interfaces.d.ts +41 -0
- package/dist_ts/smartai.interfaces.js +2 -0
- package/dist_ts/smartai.middleware.anthropic.d.ts +7 -0
- package/dist_ts/smartai.middleware.anthropic.js +36 -0
- package/dist_ts/smartai.provider.ollama.d.ts +8 -0
- package/dist_ts/smartai.provider.ollama.js +378 -0
- package/dist_ts_audio/index.d.ts +9 -0
- package/dist_ts_audio/index.js +15 -0
- package/dist_ts_audio/plugins.d.ts +2 -0
- package/dist_ts_audio/plugins.js +3 -0
- package/dist_ts_document/index.d.ts +11 -0
- package/dist_ts_document/index.js +45 -0
- package/dist_ts_document/plugins.d.ts +3 -0
- package/dist_ts_document/plugins.js +4 -0
- package/dist_ts_image/index.d.ts +46 -0
- package/dist_ts_image/index.js +110 -0
- package/dist_ts_image/plugins.d.ts +3 -0
- package/dist_ts_image/plugins.js +4 -0
- package/dist_ts_research/index.d.ts +19 -0
- package/dist_ts_research/index.js +98 -0
- package/dist_ts_research/plugins.d.ts +2 -0
- package/dist_ts_research/plugins.js +3 -0
- package/dist_ts_vision/index.d.ts +8 -0
- package/dist_ts_vision/index.js +21 -0
- package/dist_ts_vision/plugins.d.ts +2 -0
- package/dist_ts_vision/plugins.js +3 -0
- package/package.json +50 -22
- package/readme.hints.md +34 -88
- package/readme.md +284 -547
- package/ts/00_commitinfo_data.ts +2 -2
- package/ts/index.ts +8 -11
- package/ts/plugins.ts +19 -35
- package/ts/smartai.classes.smartai.ts +51 -0
- package/ts/smartai.interfaces.ts +53 -0
- package/ts/smartai.middleware.anthropic.ts +38 -0
- package/ts/smartai.provider.ollama.ts +426 -0
- package/ts_audio/index.ts +24 -0
- package/ts_audio/plugins.ts +2 -0
- package/ts_document/index.ts +61 -0
- package/ts_document/plugins.ts +3 -0
- package/ts_image/index.ts +147 -0
- package/ts_image/plugins.ts +3 -0
- package/ts_research/index.ts +120 -0
- package/ts_research/plugins.ts +2 -0
- package/ts_vision/index.ts +29 -0
- package/ts_vision/plugins.ts +2 -0
- package/dist_ts/abstract.classes.multimodal.d.ts +0 -212
- package/dist_ts/abstract.classes.multimodal.js +0 -43
- package/dist_ts/classes.conversation.d.ts +0 -31
- package/dist_ts/classes.conversation.js +0 -150
- package/dist_ts/classes.smartai.d.ts +0 -59
- package/dist_ts/classes.smartai.js +0 -139
- package/dist_ts/classes.tts.d.ts +0 -6
- package/dist_ts/classes.tts.js +0 -10
- package/dist_ts/interfaces.d.ts +0 -1
- package/dist_ts/interfaces.js +0 -2
- package/dist_ts/paths.d.ts +0 -2
- package/dist_ts/paths.js +0 -4
- package/dist_ts/provider.anthropic.d.ts +0 -48
- package/dist_ts/provider.anthropic.js +0 -369
- package/dist_ts/provider.elevenlabs.d.ts +0 -43
- package/dist_ts/provider.elevenlabs.js +0 -64
- package/dist_ts/provider.exo.d.ts +0 -40
- package/dist_ts/provider.exo.js +0 -116
- package/dist_ts/provider.groq.d.ts +0 -39
- package/dist_ts/provider.groq.js +0 -178
- package/dist_ts/provider.mistral.d.ts +0 -61
- package/dist_ts/provider.mistral.js +0 -288
- package/dist_ts/provider.ollama.d.ts +0 -141
- package/dist_ts/provider.ollama.js +0 -519
- package/dist_ts/provider.openai.d.ts +0 -62
- package/dist_ts/provider.openai.js +0 -403
- package/dist_ts/provider.perplexity.d.ts +0 -37
- package/dist_ts/provider.perplexity.js +0 -215
- package/dist_ts/provider.xai.d.ts +0 -52
- package/dist_ts/provider.xai.js +0 -160
- package/ts/abstract.classes.multimodal.ts +0 -240
- package/ts/classes.conversation.ts +0 -176
- package/ts/classes.smartai.ts +0 -187
- package/ts/classes.tts.ts +0 -15
- package/ts/interfaces.ts +0 -0
- package/ts/paths.ts +0 -4
- package/ts/provider.anthropic.ts +0 -446
- package/ts/provider.elevenlabs.ts +0 -116
- package/ts/provider.exo.ts +0 -155
- package/ts/provider.groq.ts +0 -219
- package/ts/provider.mistral.ts +0 -352
- package/ts/provider.ollama.ts +0 -695
- package/ts/provider.openai.ts +0 -462
- package/ts/provider.perplexity.ts +0 -259
- package/ts/provider.xai.ts +0 -214
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartai',
|
|
6
|
-
version: '0.
|
|
7
|
-
description: '
|
|
6
|
+
version: '2.0.0',
|
|
7
|
+
description: 'Provider registry and capability utilities for ai-sdk (Vercel AI SDK). Core export returns LanguageModel; subpath exports provide vision, audio, image, document and research capabilities.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDZMQUE2TDtDQUMzTSxDQUFBIn0=
|
package/dist_ts/index.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export * from './provider.mistral.js';
|
|
8
|
-
export * from './provider.ollama.js';
|
|
9
|
-
export * from './provider.xai.js';
|
|
10
|
-
export * from './provider.exo.js';
|
|
11
|
-
export * from './provider.elevenlabs.js';
|
|
1
|
+
export { getModel } from './smartai.classes.smartai.js';
|
|
2
|
+
export type { ISmartAiOptions, TProvider, IOllamaModelOptions, LanguageModelV3 } from './smartai.interfaces.js';
|
|
3
|
+
export { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
|
|
4
|
+
export { createOllamaModel } from './smartai.provider.ollama.js';
|
|
5
|
+
export { generateText, streamText, tool, jsonSchema } from 'ai';
|
|
6
|
+
export type { ModelMessage, ToolSet, StreamTextResult } from 'ai';
|
package/dist_ts/index.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
export * from './provider.mistral.js';
|
|
8
|
-
export * from './provider.ollama.js';
|
|
9
|
-
export * from './provider.xai.js';
|
|
10
|
-
export * from './provider.exo.js';
|
|
11
|
-
export * from './provider.elevenlabs.js';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMEJBQTBCLENBQUMifQ==
|
|
1
|
+
export { getModel } from './smartai.classes.smartai.js';
|
|
2
|
+
export { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
|
|
3
|
+
export { createOllamaModel } from './smartai.provider.ollama.js';
|
|
4
|
+
// Re-export commonly used ai-sdk functions for consumer convenience
|
|
5
|
+
export { generateText, streamText, tool, jsonSchema } from 'ai';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFakUsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMifQ==
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
export {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
export { smartarray, qenv, smartfs, smartpath, smartpdf, smartpromise, smartrequest, webstream, };
|
|
12
|
-
import * as anthropic from '@anthropic-ai/sdk';
|
|
13
|
-
import * as mistralai from '@mistralai/mistralai';
|
|
14
|
-
import * as openai from 'openai';
|
|
15
|
-
export { anthropic, mistralai, openai, };
|
|
1
|
+
import { generateText, streamText, wrapLanguageModel, tool, jsonSchema } from 'ai';
|
|
2
|
+
export { generateText, streamText, wrapLanguageModel, tool, jsonSchema };
|
|
3
|
+
import { createAnthropic } from '@ai-sdk/anthropic';
|
|
4
|
+
import { createOpenAI } from '@ai-sdk/openai';
|
|
5
|
+
import { createGoogleGenerativeAI } from '@ai-sdk/google';
|
|
6
|
+
import { createGroq } from '@ai-sdk/groq';
|
|
7
|
+
import { createMistral } from '@ai-sdk/mistral';
|
|
8
|
+
import { createXai } from '@ai-sdk/xai';
|
|
9
|
+
import { createPerplexity } from '@ai-sdk/perplexity';
|
|
10
|
+
export { createAnthropic, createOpenAI, createGoogleGenerativeAI, createGroq, createMistral, createXai, createPerplexity, };
|
package/dist_ts/plugins.js
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
//
|
|
2
|
-
import
|
|
3
|
-
export {
|
|
4
|
-
//
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// third party
|
|
15
|
-
import * as anthropic from '@anthropic-ai/sdk';
|
|
16
|
-
import * as mistralai from '@mistralai/mistralai';
|
|
17
|
-
import * as openai from 'openai';
|
|
18
|
-
export { anthropic, mistralai, openai, };
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUNMLFVBQVUsRUFDVixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFlBQVksRUFDWixTQUFTLEdBQ1YsQ0FBQTtBQUVELGNBQWM7QUFDZCxPQUFPLEtBQUssU0FBUyxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxTQUFTLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFakMsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxHQUNQLENBQUEifQ==
|
|
1
|
+
// ai sdk core
|
|
2
|
+
import { generateText, streamText, wrapLanguageModel, tool, jsonSchema } from 'ai';
|
|
3
|
+
export { generateText, streamText, wrapLanguageModel, tool, jsonSchema };
|
|
4
|
+
// ai sdk providers
|
|
5
|
+
import { createAnthropic } from '@ai-sdk/anthropic';
|
|
6
|
+
import { createOpenAI } from '@ai-sdk/openai';
|
|
7
|
+
import { createGoogleGenerativeAI } from '@ai-sdk/google';
|
|
8
|
+
import { createGroq } from '@ai-sdk/groq';
|
|
9
|
+
import { createMistral } from '@ai-sdk/mistral';
|
|
10
|
+
import { createXai } from '@ai-sdk/xai';
|
|
11
|
+
import { createPerplexity } from '@ai-sdk/perplexity';
|
|
12
|
+
export { createAnthropic, createOpenAI, createGoogleGenerativeAI, createGroq, createMistral, createXai, createPerplexity, };
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBRXpFLG1CQUFtQjtBQUNuQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBQ1osd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVixhQUFhLEVBQ2IsU0FBUyxFQUNULGdCQUFnQixHQUNqQixDQUFDIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ISmartAiOptions, LanguageModelV3 } from './smartai.interfaces.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a LanguageModelV3 for the given provider and model.
|
|
4
|
+
* This is the primary API — consumers use the returned model with AI SDK's
|
|
5
|
+
* generateText(), streamText(), etc.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getModel(options: ISmartAiOptions): LanguageModelV3;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import { createOllamaModel } from './smartai.provider.ollama.js';
|
|
3
|
+
import { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns a LanguageModelV3 for the given provider and model.
|
|
6
|
+
* This is the primary API — consumers use the returned model with AI SDK's
|
|
7
|
+
* generateText(), streamText(), etc.
|
|
8
|
+
*/
|
|
9
|
+
export function getModel(options) {
|
|
10
|
+
switch (options.provider) {
|
|
11
|
+
case 'anthropic': {
|
|
12
|
+
const p = plugins.createAnthropic({ apiKey: options.apiKey });
|
|
13
|
+
const base = p(options.model);
|
|
14
|
+
if (options.promptCaching === false)
|
|
15
|
+
return base;
|
|
16
|
+
return plugins.wrapLanguageModel({
|
|
17
|
+
model: base,
|
|
18
|
+
middleware: createAnthropicCachingMiddleware(),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
case 'openai': {
|
|
22
|
+
const p = plugins.createOpenAI({ apiKey: options.apiKey });
|
|
23
|
+
return p(options.model);
|
|
24
|
+
}
|
|
25
|
+
case 'google': {
|
|
26
|
+
const p = plugins.createGoogleGenerativeAI({ apiKey: options.apiKey });
|
|
27
|
+
return p(options.model);
|
|
28
|
+
}
|
|
29
|
+
case 'groq': {
|
|
30
|
+
const p = plugins.createGroq({ apiKey: options.apiKey });
|
|
31
|
+
return p(options.model);
|
|
32
|
+
}
|
|
33
|
+
case 'mistral': {
|
|
34
|
+
const p = plugins.createMistral({ apiKey: options.apiKey });
|
|
35
|
+
return p(options.model);
|
|
36
|
+
}
|
|
37
|
+
case 'xai': {
|
|
38
|
+
const p = plugins.createXai({ apiKey: options.apiKey });
|
|
39
|
+
return p(options.model);
|
|
40
|
+
}
|
|
41
|
+
case 'perplexity': {
|
|
42
|
+
const p = plugins.createPerplexity({ apiKey: options.apiKey });
|
|
43
|
+
return p(options.model);
|
|
44
|
+
}
|
|
45
|
+
case 'ollama':
|
|
46
|
+
return createOllamaModel(options);
|
|
47
|
+
default:
|
|
48
|
+
throw new Error(`Unknown provider: ${options.provider}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5jbGFzc2VzLnNtYXJ0YWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFpLmNsYXNzZXMuc21hcnRhaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUF3QjtJQUMvQyxRQUFRLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM5RCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztZQUNqRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEtBQUssS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNqRCxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLGdDQUFnQyxFQUFFO2FBQy9DLENBQStCLENBQUM7UUFDbkMsQ0FBQztRQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNkLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQW9CLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDekQsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFvQixDQUFDO1FBQzdDLENBQUM7UUFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDWCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQW9CLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDL0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQztZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXNCLE9BQTJCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { LanguageModelV3 } from '@ai-sdk/provider';
|
|
2
|
+
export type TProvider = 'anthropic' | 'openai' | 'google' | 'groq' | 'mistral' | 'xai' | 'perplexity' | 'ollama';
|
|
3
|
+
export interface ISmartAiOptions {
|
|
4
|
+
provider: TProvider;
|
|
5
|
+
model: string;
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
/** For Ollama: base URL of the local server. Default: http://localhost:11434 */
|
|
8
|
+
baseUrl?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Ollama-specific model runtime options.
|
|
11
|
+
* Only used when provider === 'ollama'.
|
|
12
|
+
*/
|
|
13
|
+
ollamaOptions?: IOllamaModelOptions;
|
|
14
|
+
/**
|
|
15
|
+
* Enable Anthropic prompt caching on system + recent messages.
|
|
16
|
+
* Only used when provider === 'anthropic'. Default: true.
|
|
17
|
+
*/
|
|
18
|
+
promptCaching?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Ollama model runtime options passed in the request body `options` field.
|
|
22
|
+
* @see https://github.com/ollama/ollama/blob/main/docs/modelfile.md
|
|
23
|
+
*/
|
|
24
|
+
export interface IOllamaModelOptions {
|
|
25
|
+
/** Context window size. Default: 2048. */
|
|
26
|
+
num_ctx?: number;
|
|
27
|
+
/** 0 = deterministic. Default: 0.8. For Qwen models use 0.55. */
|
|
28
|
+
temperature?: number;
|
|
29
|
+
top_k?: number;
|
|
30
|
+
top_p?: number;
|
|
31
|
+
repeat_penalty?: number;
|
|
32
|
+
num_predict?: number;
|
|
33
|
+
stop?: string[];
|
|
34
|
+
seed?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Enable thinking/reasoning mode (Qwen3, QwQ, DeepSeek-R1 etc.).
|
|
37
|
+
* The custom Ollama provider handles this directly.
|
|
38
|
+
*/
|
|
39
|
+
think?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export type { LanguageModelV3 };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LanguageModelV3Middleware } from '@ai-sdk/provider';
|
|
2
|
+
/**
|
|
3
|
+
* Creates middleware that adds Anthropic prompt caching directives.
|
|
4
|
+
* Marks the last system message and last user message with ephemeral cache control,
|
|
5
|
+
* reducing input token cost and latency on repeated calls.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createAnthropicCachingMiddleware(): LanguageModelV3Middleware;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates middleware that adds Anthropic prompt caching directives.
|
|
3
|
+
* Marks the last system message and last user message with ephemeral cache control,
|
|
4
|
+
* reducing input token cost and latency on repeated calls.
|
|
5
|
+
*/
|
|
6
|
+
export function createAnthropicCachingMiddleware() {
|
|
7
|
+
return {
|
|
8
|
+
specificationVersion: 'v3',
|
|
9
|
+
transformParams: async ({ params }) => {
|
|
10
|
+
const messages = [...params.prompt];
|
|
11
|
+
// Find the last system message and last user message
|
|
12
|
+
let lastSystemIdx = -1;
|
|
13
|
+
let lastUserIdx = -1;
|
|
14
|
+
for (let i = 0; i < messages.length; i++) {
|
|
15
|
+
if (messages[i].role === 'system')
|
|
16
|
+
lastSystemIdx = i;
|
|
17
|
+
if (messages[i].role === 'user')
|
|
18
|
+
lastUserIdx = i;
|
|
19
|
+
}
|
|
20
|
+
const targets = [lastSystemIdx, lastUserIdx].filter(i => i >= 0);
|
|
21
|
+
for (const idx of targets) {
|
|
22
|
+
const msg = { ...messages[idx] };
|
|
23
|
+
msg.providerOptions = {
|
|
24
|
+
...(msg.providerOptions || {}),
|
|
25
|
+
anthropic: {
|
|
26
|
+
...(msg.providerOptions?.anthropic || {}),
|
|
27
|
+
cacheControl: { type: 'ephemeral' },
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
messages[idx] = msg;
|
|
31
|
+
}
|
|
32
|
+
return { ...params, prompt: messages };
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5taWRkbGV3YXJlLmFudGhyb3BpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWkubWlkZGxld2FyZS5hbnRocm9waWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0M7SUFDOUMsT0FBTztRQUNMLG9CQUFvQixFQUFFLElBQUk7UUFDMUIsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQW1DLENBQUM7WUFFdEUscURBQXFEO1lBQ3JELElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRO29CQUFFLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ3JELElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNO29CQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNqRSxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLEdBQUcsQ0FBQyxlQUFlLEdBQUc7b0JBQ3BCLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBMEMsSUFBSSxFQUFFLENBQUM7b0JBQ3pELFNBQVMsRUFBRTt3QkFDVCxHQUFHLENBQUUsR0FBRyxDQUFDLGVBQTJDLEVBQUUsU0FBb0MsSUFBSSxFQUFFLENBQUM7d0JBQ2pHLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7cUJBQ3BDO2lCQUNGLENBQUM7Z0JBQ0YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN0QixDQUFDO1lBRUQsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUE0QyxFQUFFLENBQUM7UUFDN0UsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { LanguageModelV3 } from '@ai-sdk/provider';
|
|
2
|
+
import type { ISmartAiOptions } from './smartai.interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Custom LanguageModelV3 implementation for Ollama.
|
|
5
|
+
* Calls Ollama's native /api/chat endpoint directly to support
|
|
6
|
+
* think, num_ctx, temperature, and other model options.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createOllamaModel(options: ISmartAiOptions): LanguageModelV3;
|