@jerome-benoit/sap-ai-provider 4.1.2 → 4.2.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/README.md +1 -0
- package/dist/index.cjs +46 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +138 -39
- package/dist/index.d.ts +138 -39
- package/dist/index.js +45 -16
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -548,6 +548,7 @@ authentication, model parameters, data masking, content filtering, and more.
|
|
|
548
548
|
|
|
549
549
|
**Common Configuration:**
|
|
550
550
|
|
|
551
|
+
- `name`: Provider base name (default: 'sap-ai').
|
|
551
552
|
- `resourceGroup`: SAP AI Core resource group (default: 'default')
|
|
552
553
|
- `deploymentId`: Specific deployment ID (auto-resolved if not set)
|
|
553
554
|
- `modelParams`: Temperature, maxTokens, topP, and other generation parameters
|
package/dist/index.cjs
CHANGED
|
@@ -29750,6 +29750,7 @@ __export(index_exports, {
|
|
|
29750
29750
|
buildLlamaGuard38BFilter: () => import_orchestration3.buildLlamaGuard38BFilter,
|
|
29751
29751
|
buildTranslationConfig: () => import_orchestration3.buildTranslationConfig,
|
|
29752
29752
|
createSAPAIProvider: () => createSAPAIProvider,
|
|
29753
|
+
getBaseProviderName: () => getBaseProviderName,
|
|
29753
29754
|
isConfigReference: () => import_orchestration3.isConfigReference,
|
|
29754
29755
|
sapAIEmbeddingProviderOptions: () => sapAIEmbeddingProviderOptions,
|
|
29755
29756
|
sapAILanguageModelProviderOptions: () => sapAILanguageModelProviderOptions,
|
|
@@ -30154,6 +30155,10 @@ function tryExtractSAPErrorFromMessage(message) {
|
|
|
30154
30155
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
30155
30156
|
var import_zod = require("zod");
|
|
30156
30157
|
var SAP_AI_PROVIDER_NAME = "sap-ai";
|
|
30158
|
+
function getBaseProviderName(provider) {
|
|
30159
|
+
const dotIndex = provider.indexOf(".");
|
|
30160
|
+
return dotIndex === -1 ? provider : provider.slice(0, dotIndex);
|
|
30161
|
+
}
|
|
30157
30162
|
var modelParamsSchema = import_zod.z.object({
|
|
30158
30163
|
/**
|
|
30159
30164
|
* Frequency penalty between -2.0 and 2.0.
|
|
@@ -30328,6 +30333,7 @@ var SAPAIEmbeddingModel = class {
|
|
|
30328
30333
|
* the SAP AI SDK's OrchestrationEmbeddingClient.
|
|
30329
30334
|
* @param options - The embedding request options
|
|
30330
30335
|
* @returns Promise resolving to embeddings and usage information
|
|
30336
|
+
* @since 1.0.0
|
|
30331
30337
|
* @example
|
|
30332
30338
|
* ```typescript
|
|
30333
30339
|
* const result = await model.doEmbed({
|
|
@@ -30340,8 +30346,9 @@ var SAPAIEmbeddingModel = class {
|
|
|
30340
30346
|
*/
|
|
30341
30347
|
async doEmbed(options) {
|
|
30342
30348
|
const { abortSignal, providerOptions, values } = options;
|
|
30349
|
+
const baseProviderName = getBaseProviderName(this.config.provider);
|
|
30343
30350
|
const sapOptions = await (0, import_provider_utils2.parseProviderOptions)({
|
|
30344
|
-
provider:
|
|
30351
|
+
provider: baseProviderName,
|
|
30345
30352
|
providerOptions,
|
|
30346
30353
|
schema: sapAIEmbeddingProviderOptions
|
|
30347
30354
|
});
|
|
@@ -30371,7 +30378,7 @@ var SAPAIEmbeddingModel = class {
|
|
|
30371
30378
|
(data) => this.normalizeEmbedding(data.embedding)
|
|
30372
30379
|
);
|
|
30373
30380
|
const providerMetadata = {
|
|
30374
|
-
|
|
30381
|
+
[baseProviderName]: {
|
|
30375
30382
|
model: this.modelId
|
|
30376
30383
|
}
|
|
30377
30384
|
};
|
|
@@ -30432,6 +30439,9 @@ var SAPAIEmbeddingModel = class {
|
|
|
30432
30439
|
}
|
|
30433
30440
|
};
|
|
30434
30441
|
|
|
30442
|
+
// src/sap-ai-provider.ts
|
|
30443
|
+
var import_provider4 = require("@ai-sdk/provider");
|
|
30444
|
+
|
|
30435
30445
|
// src/sap-ai-language-model.ts
|
|
30436
30446
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
30437
30447
|
var import_orchestration2 = require("@sap-ai-sdk/orchestration");
|
|
@@ -30811,11 +30821,12 @@ var SAPAILanguageModel = class {
|
|
|
30811
30821
|
tokenUsage,
|
|
30812
30822
|
toolCalls
|
|
30813
30823
|
};
|
|
30824
|
+
const baseProviderName = getBaseProviderName(this.config.provider);
|
|
30814
30825
|
return {
|
|
30815
30826
|
content,
|
|
30816
30827
|
finishReason,
|
|
30817
30828
|
providerMetadata: {
|
|
30818
|
-
|
|
30829
|
+
[baseProviderName]: {
|
|
30819
30830
|
finishReason: finishReasonRaw ?? "unknown",
|
|
30820
30831
|
finishReasonMapped: finishReason,
|
|
30821
30832
|
...typeof responseHeaders?.["x-request-id"] === "string" ? { requestId: responseHeaders["x-request-id"] } : {}
|
|
@@ -30946,6 +30957,7 @@ var SAPAILanguageModel = class {
|
|
|
30946
30957
|
const toolCallsInProgress = /* @__PURE__ */ new Map();
|
|
30947
30958
|
const sdkStream = streamResponse.stream;
|
|
30948
30959
|
const modelId = this.modelId;
|
|
30960
|
+
const baseProviderName = getBaseProviderName(this.config.provider);
|
|
30949
30961
|
const warningsSnapshot = [...warnings];
|
|
30950
30962
|
const warningsOut = [...warningsSnapshot];
|
|
30951
30963
|
const transformedStream = new ReadableStream({
|
|
@@ -31134,7 +31146,7 @@ var SAPAILanguageModel = class {
|
|
|
31134
31146
|
controller.enqueue({
|
|
31135
31147
|
finishReason: streamState.finishReason,
|
|
31136
31148
|
providerMetadata: {
|
|
31137
|
-
|
|
31149
|
+
[baseProviderName]: {
|
|
31138
31150
|
finishReason: streamState.finishReason.raw,
|
|
31139
31151
|
responseId
|
|
31140
31152
|
}
|
|
@@ -31190,8 +31202,9 @@ var SAPAILanguageModel = class {
|
|
|
31190
31202
|
* @internal
|
|
31191
31203
|
*/
|
|
31192
31204
|
async buildOrchestrationConfig(options) {
|
|
31205
|
+
const baseProviderName = getBaseProviderName(this.config.provider);
|
|
31193
31206
|
const sapOptions = await (0, import_provider_utils3.parseProviderOptions)({
|
|
31194
|
-
provider:
|
|
31207
|
+
provider: baseProviderName,
|
|
31195
31208
|
providerOptions: options.providerOptions,
|
|
31196
31209
|
schema: sapAILanguageModelProviderOptions
|
|
31197
31210
|
});
|
|
@@ -31313,21 +31326,26 @@ var SAPAILanguageModel = class {
|
|
|
31313
31326
|
type: "unsupported"
|
|
31314
31327
|
});
|
|
31315
31328
|
}
|
|
31329
|
+
let responseFormat;
|
|
31316
31330
|
if (options.responseFormat?.type === "json") {
|
|
31331
|
+
responseFormat = options.responseFormat.schema ? {
|
|
31332
|
+
json_schema: {
|
|
31333
|
+
description: options.responseFormat.description,
|
|
31334
|
+
name: options.responseFormat.name ?? "response",
|
|
31335
|
+
schema: options.responseFormat.schema,
|
|
31336
|
+
strict: null
|
|
31337
|
+
},
|
|
31338
|
+
type: "json_schema"
|
|
31339
|
+
} : { type: "json_object" };
|
|
31340
|
+
} else if (this.settings.responseFormat) {
|
|
31341
|
+
responseFormat = this.settings.responseFormat;
|
|
31342
|
+
}
|
|
31343
|
+
if (responseFormat && responseFormat.type !== "text") {
|
|
31317
31344
|
warnings.push({
|
|
31318
31345
|
message: "responseFormat JSON mode is forwarded to the underlying model; support and schema adherence depend on the model/deployment.",
|
|
31319
31346
|
type: "other"
|
|
31320
31347
|
});
|
|
31321
31348
|
}
|
|
31322
|
-
const responseFormat = options.responseFormat?.type === "json" ? options.responseFormat.schema ? {
|
|
31323
|
-
json_schema: {
|
|
31324
|
-
description: options.responseFormat.description,
|
|
31325
|
-
name: options.responseFormat.name ?? "response",
|
|
31326
|
-
schema: options.responseFormat.schema,
|
|
31327
|
-
strict: null
|
|
31328
|
-
},
|
|
31329
|
-
type: "json_schema"
|
|
31330
|
-
} : { type: "json_object" } : void 0;
|
|
31331
31349
|
const orchestrationConfig = {
|
|
31332
31350
|
promptTemplating: {
|
|
31333
31351
|
model: {
|
|
@@ -31451,6 +31469,7 @@ function createSAPAIProvider(options = {}) {
|
|
|
31451
31469
|
if (options.defaultSettings?.modelParams) {
|
|
31452
31470
|
validateModelParamsSettings(options.defaultSettings.modelParams);
|
|
31453
31471
|
}
|
|
31472
|
+
const providerName = options.name ?? SAP_AI_PROVIDER_NAME;
|
|
31454
31473
|
const resourceGroup = options.resourceGroup ?? "default";
|
|
31455
31474
|
const warnOnAmbiguousConfig = options.warnOnAmbiguousConfig ?? true;
|
|
31456
31475
|
if (warnOnAmbiguousConfig && options.deploymentId && options.resourceGroup) {
|
|
@@ -31475,14 +31494,14 @@ function createSAPAIProvider(options = {}) {
|
|
|
31475
31494
|
return new SAPAILanguageModel(modelId, mergedSettings, {
|
|
31476
31495
|
deploymentConfig,
|
|
31477
31496
|
destination: options.destination,
|
|
31478
|
-
provider:
|
|
31497
|
+
provider: `${providerName}.chat`
|
|
31479
31498
|
});
|
|
31480
31499
|
};
|
|
31481
31500
|
const createEmbeddingModel = (modelId, settings = {}) => {
|
|
31482
31501
|
return new SAPAIEmbeddingModel(modelId, settings, {
|
|
31483
31502
|
deploymentConfig,
|
|
31484
31503
|
destination: options.destination,
|
|
31485
|
-
provider:
|
|
31504
|
+
provider: `${providerName}.embedding`
|
|
31486
31505
|
});
|
|
31487
31506
|
};
|
|
31488
31507
|
const provider = function(modelId, settings) {
|
|
@@ -31491,9 +31510,19 @@ function createSAPAIProvider(options = {}) {
|
|
|
31491
31510
|
}
|
|
31492
31511
|
return createModel(modelId, settings);
|
|
31493
31512
|
};
|
|
31513
|
+
provider.specificationVersion = "v3";
|
|
31494
31514
|
provider.chat = createModel;
|
|
31515
|
+
provider.languageModel = createModel;
|
|
31495
31516
|
provider.embedding = createEmbeddingModel;
|
|
31496
31517
|
provider.textEmbeddingModel = createEmbeddingModel;
|
|
31518
|
+
provider.embeddingModel = createEmbeddingModel;
|
|
31519
|
+
provider.imageModel = (modelId) => {
|
|
31520
|
+
throw new import_provider4.NoSuchModelError({
|
|
31521
|
+
message: `SAP AI Core Orchestration Service does not support image generation. Model '${modelId}' is not available.`,
|
|
31522
|
+
modelId,
|
|
31523
|
+
modelType: "imageModel"
|
|
31524
|
+
});
|
|
31525
|
+
};
|
|
31497
31526
|
return provider;
|
|
31498
31527
|
}
|
|
31499
31528
|
var sapai = createSAPAIProvider();
|
|
@@ -31519,6 +31548,7 @@ var import_orchestration5 = require("@sap-ai-sdk/orchestration");
|
|
|
31519
31548
|
buildLlamaGuard38BFilter,
|
|
31520
31549
|
buildTranslationConfig,
|
|
31521
31550
|
createSAPAIProvider,
|
|
31551
|
+
getBaseProviderName,
|
|
31522
31552
|
isConfigReference,
|
|
31523
31553
|
sapAIEmbeddingProviderOptions,
|
|
31524
31554
|
sapAILanguageModelProviderOptions,
|