@push.rocks/smartai 0.13.3 → 2.0.1
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/.smartconfig.json +27 -0
- 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 +60 -28
- 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 -529
- 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 -705
- package/ts/provider.openai.ts +0 -462
- package/ts/provider.perplexity.ts +0 -259
- package/ts/provider.xai.ts +0 -214
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@git.zone/cli": {
|
|
3
|
+
"projectType": "npm",
|
|
4
|
+
"module": {
|
|
5
|
+
"githost": "code.foss.global",
|
|
6
|
+
"gitscope": "push.rocks",
|
|
7
|
+
"gitrepo": "smartai",
|
|
8
|
+
"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.",
|
|
9
|
+
"npmPackagename": "@push.rocks/smartai",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"projectDomain": "push.rocks"
|
|
12
|
+
},
|
|
13
|
+
"release": {
|
|
14
|
+
"registries": [
|
|
15
|
+
"https://verdaccio.lossless.digital",
|
|
16
|
+
"https://registry.npmjs.org"
|
|
17
|
+
],
|
|
18
|
+
"accessLevel": "public"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"@git.zone/tsdoc": {
|
|
22
|
+
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
|
23
|
+
},
|
|
24
|
+
"@ship.zone/szci": {
|
|
25
|
+
"npmGlobalTools": []
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -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.1',
|
|
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;
|