@ai-sdk/provider 3.0.2 → 3.0.3
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/CHANGELOG.md +6 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +3 -1
- package/src/embedding-model/index.ts +2 -0
- package/src/embedding-model/v2/embedding-model-v2-embedding.ts +5 -0
- package/src/embedding-model/v2/embedding-model-v2.ts +113 -0
- package/src/embedding-model/v2/index.ts +2 -0
- package/src/embedding-model/v3/embedding-model-v3-call-options.ts +26 -0
- package/src/embedding-model/v3/embedding-model-v3-embedding.ts +5 -0
- package/src/embedding-model/v3/embedding-model-v3-result.ts +48 -0
- package/src/embedding-model/v3/embedding-model-v3.ts +54 -0
- package/src/embedding-model/v3/index.ts +4 -0
- package/src/embedding-model-middleware/index.ts +1 -0
- package/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts +69 -0
- package/src/embedding-model-middleware/v3/index.ts +1 -0
- package/src/errors/ai-sdk-error.ts +62 -0
- package/src/errors/api-call-error.ts +59 -0
- package/src/errors/empty-response-body-error.ts +17 -0
- package/src/errors/get-error-message.ts +15 -0
- package/src/errors/index.ts +15 -0
- package/src/errors/invalid-argument-error.ts +32 -0
- package/src/errors/invalid-prompt-error.ts +33 -0
- package/src/errors/invalid-response-data-error.ts +31 -0
- package/src/errors/json-parse-error.ts +29 -0
- package/src/errors/load-api-key-error.ts +17 -0
- package/src/errors/load-setting-error.ts +17 -0
- package/src/errors/no-content-generated-error.ts +22 -0
- package/src/errors/no-such-model-error.ts +45 -0
- package/src/errors/too-many-embedding-values-for-call-error.ts +40 -0
- package/src/errors/type-validation-error.ts +51 -0
- package/src/errors/unsupported-functionality-error.ts +26 -0
- package/src/image-model/index.ts +2 -0
- package/src/image-model/v2/image-model-v2-call-options.ts +60 -0
- package/src/image-model/v2/image-model-v2-call-warning.ts +16 -0
- package/src/image-model/v2/image-model-v2.ts +104 -0
- package/src/image-model/v2/index.ts +6 -0
- package/src/image-model/v3/image-model-v3-call-options.ts +74 -0
- package/src/image-model/v3/image-model-v3-file.ts +44 -0
- package/src/image-model/v3/image-model-v3-usage.ts +19 -0
- package/src/image-model/v3/image-model-v3.ts +110 -0
- package/src/image-model/v3/index.ts +7 -0
- package/src/image-model-middleware/index.ts +1 -0
- package/src/image-model-middleware/v3/image-model-v3-middleware.ts +61 -0
- package/src/image-model-middleware/v3/index.ts +1 -0
- package/src/index.ts +15 -0
- package/src/json-value/index.ts +2 -0
- package/src/json-value/is-json.ts +40 -0
- package/src/json-value/json-value.ts +17 -0
- package/src/language-model/index.ts +2 -0
- package/src/language-model/v2/index.ts +18 -0
- package/src/language-model/v2/language-model-v2-call-options.ts +125 -0
- package/src/language-model/v2/language-model-v2-call-warning.ts +23 -0
- package/src/language-model/v2/language-model-v2-content.ts +14 -0
- package/src/language-model/v2/language-model-v2-data-content.ts +4 -0
- package/src/language-model/v2/language-model-v2-file.ts +25 -0
- package/src/language-model/v2/language-model-v2-finish-reason.ts +20 -0
- package/src/language-model/v2/language-model-v2-function-tool.ts +37 -0
- package/src/language-model/v2/language-model-v2-prompt.ts +218 -0
- package/src/language-model/v2/language-model-v2-provider-defined-tool.ts +24 -0
- package/src/language-model/v2/language-model-v2-reasoning.ts +14 -0
- package/src/language-model/v2/language-model-v2-response-metadata.ts +16 -0
- package/src/language-model/v2/language-model-v2-source.ts +67 -0
- package/src/language-model/v2/language-model-v2-stream-part.ts +102 -0
- package/src/language-model/v2/language-model-v2-text.ts +15 -0
- package/src/language-model/v2/language-model-v2-tool-call.ts +35 -0
- package/src/language-model/v2/language-model-v2-tool-choice.ts +5 -0
- package/src/language-model/v2/language-model-v2-tool-result.ts +40 -0
- package/src/language-model/v2/language-model-v2-usage.ts +34 -0
- package/src/language-model/v2/language-model-v2.ts +137 -0
- package/src/language-model/v3/index.ts +21 -0
- package/src/language-model/v3/language-model-v3-call-options.ts +125 -0
- package/src/language-model/v3/language-model-v3-content.ts +16 -0
- package/src/language-model/v3/language-model-v3-data-content.ts +4 -0
- package/src/language-model/v3/language-model-v3-file.ts +32 -0
- package/src/language-model/v3/language-model-v3-finish-reason.ts +33 -0
- package/src/language-model/v3/language-model-v3-function-tool.ts +53 -0
- package/src/language-model/v3/language-model-v3-generate-result.ts +63 -0
- package/src/language-model/v3/language-model-v3-prompt.ts +422 -0
- package/src/language-model/v3/language-model-v3-provider-tool.ts +28 -0
- package/src/language-model/v3/language-model-v3-reasoning.ts +14 -0
- package/src/language-model/v3/language-model-v3-response-metadata.ts +16 -0
- package/src/language-model/v3/language-model-v3-source.ts +67 -0
- package/src/language-model/v3/language-model-v3-stream-part.ts +106 -0
- package/src/language-model/v3/language-model-v3-stream-result.ts +32 -0
- package/src/language-model/v3/language-model-v3-text.ts +15 -0
- package/src/language-model/v3/language-model-v3-tool-approval-request.ts +27 -0
- package/src/language-model/v3/language-model-v3-tool-call.ts +41 -0
- package/src/language-model/v3/language-model-v3-tool-choice.ts +5 -0
- package/src/language-model/v3/language-model-v3-tool-result.ts +51 -0
- package/src/language-model/v3/language-model-v3-usage.ts +59 -0
- package/src/language-model/v3/language-model-v3.ts +61 -0
- package/src/language-model-middleware/index.ts +2 -0
- package/src/language-model-middleware/v2/index.ts +1 -0
- package/src/language-model-middleware/v2/language-model-v2-middleware.ts +82 -0
- package/src/language-model-middleware/v3/index.ts +1 -0
- package/src/language-model-middleware/v3/language-model-v3-middleware.ts +84 -0
- package/src/provider/index.ts +2 -0
- package/src/provider/v2/index.ts +1 -0
- package/src/provider/v2/provider-v2.ts +64 -0
- package/src/provider/v3/index.ts +1 -0
- package/src/provider/v3/provider-v3.ts +93 -0
- package/src/reranking-model/index.ts +1 -0
- package/src/reranking-model/v3/index.ts +2 -0
- package/src/reranking-model/v3/reranking-model-v3-call-options.ts +40 -0
- package/src/reranking-model/v3/reranking-model-v3.ts +90 -0
- package/src/shared/index.ts +2 -0
- package/src/shared/v2/index.ts +3 -0
- package/src/shared/v2/shared-v2-headers.ts +1 -0
- package/src/shared/v2/shared-v2-provider-metadata.ts +27 -0
- package/src/shared/v2/shared-v2-provider-options.ts +24 -0
- package/src/shared/v3/index.ts +4 -0
- package/src/shared/v3/shared-v3-headers.ts +1 -0
- package/src/shared/v3/shared-v3-provider-metadata.ts +24 -0
- package/src/shared/v3/shared-v3-provider-options.ts +24 -0
- package/src/shared/v3/shared-v3-warning.ts +50 -0
- package/src/speech-model/index.ts +2 -0
- package/src/speech-model/v2/index.ts +3 -0
- package/src/speech-model/v2/speech-model-v2-call-options.ts +62 -0
- package/src/speech-model/v2/speech-model-v2-call-warning.ts +16 -0
- package/src/speech-model/v2/speech-model-v2.ts +89 -0
- package/src/speech-model/v3/index.ts +2 -0
- package/src/speech-model/v3/speech-model-v3-call-options.ts +62 -0
- package/src/speech-model/v3/speech-model-v3.ts +89 -0
- package/src/transcription-model/index.ts +2 -0
- package/src/transcription-model/v2/index.ts +3 -0
- package/src/transcription-model/v2/transcription-model-v2-call-options.ts +48 -0
- package/src/transcription-model/v2/transcription-model-v2-call-warning.ts +16 -0
- package/src/transcription-model/v2/transcription-model-v2.ts +117 -0
- package/src/transcription-model/v3/index.ts +2 -0
- package/src/transcription-model/v3/transcription-model-v3-call-options.ts +45 -0
- package/src/transcription-model/v3/transcription-model-v3.ts +117 -0
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -267,7 +267,7 @@ type EmbeddingModelV2Embedding = Array<number>;
|
|
|
267
267
|
|
|
268
268
|
/**
|
|
269
269
|
Specification for an embedding model that implements the embedding model
|
|
270
|
-
interface version
|
|
270
|
+
interface version 2.
|
|
271
271
|
|
|
272
272
|
VALUE is the type of the values that the model can embed.
|
|
273
273
|
This will allow us to go beyond text embeddings in the future,
|
package/dist/index.d.ts
CHANGED
|
@@ -267,7 +267,7 @@ type EmbeddingModelV2Embedding = Array<number>;
|
|
|
267
267
|
|
|
268
268
|
/**
|
|
269
269
|
Specification for an embedding model that implements the embedding model
|
|
270
|
-
interface version
|
|
270
|
+
interface version 2.
|
|
271
271
|
|
|
272
272
|
VALUE is the type of the values that the model can embed.
|
|
273
273
|
This will allow us to go beyond text embeddings in the future,
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/provider",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.3",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.mjs",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
|
+
"source": "./src/index.ts",
|
|
9
10
|
"files": [
|
|
10
11
|
"dist/**/*",
|
|
12
|
+
"src",
|
|
11
13
|
"CHANGELOG.md",
|
|
12
14
|
"README.md"
|
|
13
15
|
],
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SharedV2Headers,
|
|
3
|
+
SharedV2ProviderOptions,
|
|
4
|
+
SharedV2ProviderMetadata,
|
|
5
|
+
} from '../../shared';
|
|
6
|
+
import { EmbeddingModelV2Embedding } from './embedding-model-v2-embedding';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
Specification for an embedding model that implements the embedding model
|
|
10
|
+
interface version 2.
|
|
11
|
+
|
|
12
|
+
VALUE is the type of the values that the model can embed.
|
|
13
|
+
This will allow us to go beyond text embeddings in the future,
|
|
14
|
+
e.g. to support image embeddings
|
|
15
|
+
*/
|
|
16
|
+
export type EmbeddingModelV2<VALUE> = {
|
|
17
|
+
/**
|
|
18
|
+
The embedding model must specify which embedding model interface
|
|
19
|
+
version it implements. This will allow us to evolve the embedding
|
|
20
|
+
model interface and retain backwards compatibility. The different
|
|
21
|
+
implementation versions can be handled as a discriminated union
|
|
22
|
+
on our side.
|
|
23
|
+
*/
|
|
24
|
+
readonly specificationVersion: 'v2';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
Name of the provider for logging purposes.
|
|
28
|
+
*/
|
|
29
|
+
readonly provider: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
Provider-specific model ID for logging purposes.
|
|
33
|
+
*/
|
|
34
|
+
readonly modelId: string;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
Limit of how many embeddings can be generated in a single API call.
|
|
38
|
+
|
|
39
|
+
Use Infinity for models that do not have a limit.
|
|
40
|
+
*/
|
|
41
|
+
readonly maxEmbeddingsPerCall:
|
|
42
|
+
| PromiseLike<number | undefined>
|
|
43
|
+
| number
|
|
44
|
+
| undefined;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
True if the model can handle multiple embedding calls in parallel.
|
|
48
|
+
*/
|
|
49
|
+
readonly supportsParallelCalls: PromiseLike<boolean> | boolean;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
Generates a list of embeddings for the given input text.
|
|
53
|
+
|
|
54
|
+
Naming: "do" prefix to prevent accidental direct usage of the method
|
|
55
|
+
by the user.
|
|
56
|
+
*/
|
|
57
|
+
doEmbed(options: {
|
|
58
|
+
/**
|
|
59
|
+
List of values to embed.
|
|
60
|
+
*/
|
|
61
|
+
values: Array<VALUE>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
Abort signal for cancelling the operation.
|
|
65
|
+
*/
|
|
66
|
+
abortSignal?: AbortSignal;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
Additional provider-specific options. They are passed through
|
|
70
|
+
to the provider from the AI SDK and enable provider-specific
|
|
71
|
+
functionality that can be fully encapsulated in the provider.
|
|
72
|
+
*/
|
|
73
|
+
providerOptions?: SharedV2ProviderOptions;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
Additional HTTP headers to be sent with the request.
|
|
77
|
+
Only applicable for HTTP-based providers.
|
|
78
|
+
*/
|
|
79
|
+
headers?: Record<string, string | undefined>;
|
|
80
|
+
}): PromiseLike<{
|
|
81
|
+
/**
|
|
82
|
+
Generated embeddings. They are in the same order as the input values.
|
|
83
|
+
*/
|
|
84
|
+
embeddings: Array<EmbeddingModelV2Embedding>;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
Token usage. We only have input tokens for embeddings.
|
|
88
|
+
*/
|
|
89
|
+
usage?: { tokens: number };
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
Additional provider-specific metadata. They are passed through
|
|
93
|
+
from the provider to the AI SDK and enable provider-specific
|
|
94
|
+
results that can be fully encapsulated in the provider.
|
|
95
|
+
*/
|
|
96
|
+
providerMetadata?: SharedV2ProviderMetadata;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
Optional response information for debugging purposes.
|
|
100
|
+
*/
|
|
101
|
+
response?: {
|
|
102
|
+
/**
|
|
103
|
+
Response headers.
|
|
104
|
+
*/
|
|
105
|
+
headers?: SharedV2Headers;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
The response body.
|
|
109
|
+
*/
|
|
110
|
+
body?: unknown;
|
|
111
|
+
};
|
|
112
|
+
}>;
|
|
113
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SharedV3Headers, SharedV3ProviderOptions } from '../../shared';
|
|
2
|
+
|
|
3
|
+
export type EmbeddingModelV3CallOptions = {
|
|
4
|
+
/**
|
|
5
|
+
List of text values to generate embeddings for.
|
|
6
|
+
*/
|
|
7
|
+
values: Array<string>;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
Abort signal for cancelling the operation.
|
|
11
|
+
*/
|
|
12
|
+
abortSignal?: AbortSignal;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
Additional provider-specific options. They are passed through
|
|
16
|
+
to the provider from the AI SDK and enable provider-specific
|
|
17
|
+
functionality that can be fully encapsulated in the provider.
|
|
18
|
+
*/
|
|
19
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
Additional HTTP headers to be sent with the request.
|
|
23
|
+
Only applicable for HTTP-based providers.
|
|
24
|
+
*/
|
|
25
|
+
headers?: SharedV3Headers;
|
|
26
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SharedV3Headers,
|
|
3
|
+
SharedV3ProviderMetadata,
|
|
4
|
+
SharedV3Warning,
|
|
5
|
+
} from '../../shared';
|
|
6
|
+
import { EmbeddingModelV3Embedding } from './embedding-model-v3-embedding';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The result of a embedding model doEmbed call.
|
|
10
|
+
*/
|
|
11
|
+
export type EmbeddingModelV3Result = {
|
|
12
|
+
/**
|
|
13
|
+
* Generated embeddings. They are in the same order as the input values.
|
|
14
|
+
*/
|
|
15
|
+
embeddings: Array<EmbeddingModelV3Embedding>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Token usage. We only have input tokens for embeddings.
|
|
19
|
+
*/
|
|
20
|
+
usage?: { tokens: number };
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Additional provider-specific metadata. They are passed through
|
|
24
|
+
* from the provider to the AI SDK and enable provider-specific
|
|
25
|
+
* results that can be fully encapsulated in the provider.
|
|
26
|
+
*/
|
|
27
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Optional response information for debugging purposes.
|
|
31
|
+
*/
|
|
32
|
+
response?: {
|
|
33
|
+
/**
|
|
34
|
+
* Response headers.
|
|
35
|
+
*/
|
|
36
|
+
headers?: SharedV3Headers;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
The response body.
|
|
40
|
+
*/
|
|
41
|
+
body?: unknown;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Warnings for the call, e.g. unsupported settings.
|
|
46
|
+
*/
|
|
47
|
+
warnings: Array<SharedV3Warning>;
|
|
48
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EmbeddingModelV3CallOptions } from './embedding-model-v3-call-options';
|
|
2
|
+
import { EmbeddingModelV3Result } from './embedding-model-v3-result';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
Specification for an embedding model that implements the embedding model
|
|
6
|
+
interface version 3.
|
|
7
|
+
|
|
8
|
+
It is specific to text embeddings.
|
|
9
|
+
*/
|
|
10
|
+
export type EmbeddingModelV3 = {
|
|
11
|
+
/**
|
|
12
|
+
The embedding model must specify which embedding model interface
|
|
13
|
+
version it implements. This will allow us to evolve the embedding
|
|
14
|
+
model interface and retain backwards compatibility. The different
|
|
15
|
+
implementation versions can be handled as a discriminated union
|
|
16
|
+
on our side.
|
|
17
|
+
*/
|
|
18
|
+
readonly specificationVersion: 'v3';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
Name of the provider for logging purposes.
|
|
22
|
+
*/
|
|
23
|
+
readonly provider: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
Provider-specific model ID for logging purposes.
|
|
27
|
+
*/
|
|
28
|
+
readonly modelId: string;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
Limit of how many embeddings can be generated in a single API call.
|
|
32
|
+
|
|
33
|
+
Use Infinity for models that do not have a limit.
|
|
34
|
+
*/
|
|
35
|
+
readonly maxEmbeddingsPerCall:
|
|
36
|
+
| PromiseLike<number | undefined>
|
|
37
|
+
| number
|
|
38
|
+
| undefined;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
True if the model can handle multiple embedding calls in parallel.
|
|
42
|
+
*/
|
|
43
|
+
readonly supportsParallelCalls: PromiseLike<boolean> | boolean;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
Generates a list of embeddings for the given input text.
|
|
47
|
+
|
|
48
|
+
Naming: "do" prefix to prevent accidental direct usage of the method
|
|
49
|
+
by the user.
|
|
50
|
+
*/
|
|
51
|
+
doEmbed(
|
|
52
|
+
options: EmbeddingModelV3CallOptions,
|
|
53
|
+
): PromiseLike<EmbeddingModelV3Result>;
|
|
54
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './v3/index';
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { EmbeddingModelV3 } from '../../embedding-model/v3/embedding-model-v3';
|
|
2
|
+
import { EmbeddingModelV3CallOptions } from '../../embedding-model/v3/embedding-model-v3-call-options';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Middleware for EmbeddingModelV3.
|
|
6
|
+
* This type defines the structure for middleware that can be used to modify
|
|
7
|
+
* the behavior of EmbeddingModelV3 operations.
|
|
8
|
+
*/
|
|
9
|
+
export type EmbeddingModelV3Middleware = {
|
|
10
|
+
/**
|
|
11
|
+
* Middleware specification version. Use `v3` for the current version.
|
|
12
|
+
*/
|
|
13
|
+
readonly specificationVersion: 'v3';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Override the provider name if desired.
|
|
17
|
+
* @param options.model - The embedding model instance.
|
|
18
|
+
*/
|
|
19
|
+
overrideProvider?: (options: { model: EmbeddingModelV3 }) => string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Override the model ID if desired.
|
|
23
|
+
* @param options.model - The embedding model instance.
|
|
24
|
+
*/
|
|
25
|
+
overrideModelId?: (options: { model: EmbeddingModelV3 }) => string;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Override the limit of how many embeddings can be generated in a single API call if desired.
|
|
29
|
+
* @param options.model - The embedding model instance.
|
|
30
|
+
*/
|
|
31
|
+
overrideMaxEmbeddingsPerCall?: (options: {
|
|
32
|
+
model: EmbeddingModelV3;
|
|
33
|
+
}) => PromiseLike<number | undefined> | number | undefined;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Override support for handling multiple embedding calls in parallel, if desired..
|
|
37
|
+
* @param options.model - The embedding model instance.
|
|
38
|
+
*/
|
|
39
|
+
overrideSupportsParallelCalls?: (options: {
|
|
40
|
+
model: EmbeddingModelV3;
|
|
41
|
+
}) => PromiseLike<boolean> | boolean;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Transforms the parameters before they are passed to the embed model.
|
|
45
|
+
* @param options - Object containing the type of operation and the parameters.
|
|
46
|
+
* @param options.params - The original parameters for the embedding model call.
|
|
47
|
+
* @returns A promise that resolves to the transformed parameters.
|
|
48
|
+
*/
|
|
49
|
+
transformParams?: (options: {
|
|
50
|
+
params: EmbeddingModelV3CallOptions;
|
|
51
|
+
model: EmbeddingModelV3;
|
|
52
|
+
}) => PromiseLike<EmbeddingModelV3CallOptions>;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Wraps the embed operation of the embedding model.
|
|
56
|
+
*
|
|
57
|
+
* @param options - Object containing the embed function, parameters, and model.
|
|
58
|
+
* @param options.doEmbed - The original embed function.
|
|
59
|
+
* @param options.params - The parameters for the embed call. If the
|
|
60
|
+
* `transformParams` middleware is used, this will be the transformed parameters.
|
|
61
|
+
* @param options.model - The embedding model instance.
|
|
62
|
+
* @returns A promise that resolves to the result of the generate operation.
|
|
63
|
+
*/
|
|
64
|
+
wrapEmbed?: (options: {
|
|
65
|
+
doEmbed: () => ReturnType<EmbeddingModelV3['doEmbed']>;
|
|
66
|
+
params: EmbeddingModelV3CallOptions;
|
|
67
|
+
model: EmbeddingModelV3;
|
|
68
|
+
}) => Promise<Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>>;
|
|
69
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './embedding-model-v3-middleware';
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbol used for identifying AI SDK Error instances.
|
|
3
|
+
* Enables checking if an error is an instance of AISDKError across package versions.
|
|
4
|
+
*/
|
|
5
|
+
const marker = 'vercel.ai.error';
|
|
6
|
+
const symbol = Symbol.for(marker);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Custom error class for AI SDK related errors.
|
|
10
|
+
* @extends Error
|
|
11
|
+
*/
|
|
12
|
+
export class AISDKError extends Error {
|
|
13
|
+
private readonly [symbol] = true; // used in isInstance
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The underlying cause of the error, if any.
|
|
17
|
+
*/
|
|
18
|
+
readonly cause?: unknown;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Creates an AI SDK Error.
|
|
22
|
+
*
|
|
23
|
+
* @param {Object} params - The parameters for creating the error.
|
|
24
|
+
* @param {string} params.name - The name of the error.
|
|
25
|
+
* @param {string} params.message - The error message.
|
|
26
|
+
* @param {unknown} [params.cause] - The underlying cause of the error.
|
|
27
|
+
*/
|
|
28
|
+
constructor({
|
|
29
|
+
name,
|
|
30
|
+
message,
|
|
31
|
+
cause,
|
|
32
|
+
}: {
|
|
33
|
+
name: string;
|
|
34
|
+
message: string;
|
|
35
|
+
cause?: unknown;
|
|
36
|
+
}) {
|
|
37
|
+
super(message);
|
|
38
|
+
|
|
39
|
+
this.name = name;
|
|
40
|
+
this.cause = cause;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Checks if the given error is an AI SDK Error.
|
|
45
|
+
* @param {unknown} error - The error to check.
|
|
46
|
+
* @returns {boolean} True if the error is an AI SDK Error, false otherwise.
|
|
47
|
+
*/
|
|
48
|
+
static isInstance(error: unknown): error is AISDKError {
|
|
49
|
+
return AISDKError.hasMarker(error, marker);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
protected static hasMarker(error: unknown, marker: string): boolean {
|
|
53
|
+
const markerSymbol = Symbol.for(marker);
|
|
54
|
+
return (
|
|
55
|
+
error != null &&
|
|
56
|
+
typeof error === 'object' &&
|
|
57
|
+
markerSymbol in error &&
|
|
58
|
+
typeof error[markerSymbol] === 'boolean' &&
|
|
59
|
+
error[markerSymbol] === true
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { AISDKError } from './ai-sdk-error';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_APICallError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class APICallError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
readonly url: string;
|
|
11
|
+
readonly requestBodyValues: unknown;
|
|
12
|
+
readonly statusCode?: number;
|
|
13
|
+
|
|
14
|
+
readonly responseHeaders?: Record<string, string>;
|
|
15
|
+
readonly responseBody?: string;
|
|
16
|
+
|
|
17
|
+
readonly isRetryable: boolean;
|
|
18
|
+
readonly data?: unknown;
|
|
19
|
+
|
|
20
|
+
constructor({
|
|
21
|
+
message,
|
|
22
|
+
url,
|
|
23
|
+
requestBodyValues,
|
|
24
|
+
statusCode,
|
|
25
|
+
responseHeaders,
|
|
26
|
+
responseBody,
|
|
27
|
+
cause,
|
|
28
|
+
isRetryable = statusCode != null &&
|
|
29
|
+
(statusCode === 408 || // request timeout
|
|
30
|
+
statusCode === 409 || // conflict
|
|
31
|
+
statusCode === 429 || // too many requests
|
|
32
|
+
statusCode >= 500), // server error
|
|
33
|
+
data,
|
|
34
|
+
}: {
|
|
35
|
+
message: string;
|
|
36
|
+
url: string;
|
|
37
|
+
requestBodyValues: unknown;
|
|
38
|
+
statusCode?: number;
|
|
39
|
+
responseHeaders?: Record<string, string>;
|
|
40
|
+
responseBody?: string;
|
|
41
|
+
cause?: unknown;
|
|
42
|
+
isRetryable?: boolean;
|
|
43
|
+
data?: unknown;
|
|
44
|
+
}) {
|
|
45
|
+
super({ name, message, cause });
|
|
46
|
+
|
|
47
|
+
this.url = url;
|
|
48
|
+
this.requestBodyValues = requestBodyValues;
|
|
49
|
+
this.statusCode = statusCode;
|
|
50
|
+
this.responseHeaders = responseHeaders;
|
|
51
|
+
this.responseBody = responseBody;
|
|
52
|
+
this.isRetryable = isRetryable;
|
|
53
|
+
this.data = data;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static isInstance(error: unknown): error is APICallError {
|
|
57
|
+
return AISDKError.hasMarker(error, marker);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AISDKError } from './ai-sdk-error';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_EmptyResponseBodyError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class EmptyResponseBodyError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
constructor({ message = 'Empty response body' }: { message?: string } = {}) {
|
|
11
|
+
super({ name, message });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static isInstance(error: unknown): error is EmptyResponseBodyError {
|
|
15
|
+
return AISDKError.hasMarker(error, marker);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function getErrorMessage(error: unknown | undefined) {
|
|
2
|
+
if (error == null) {
|
|
3
|
+
return 'unknown error';
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
if (typeof error === 'string') {
|
|
7
|
+
return error;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (error instanceof Error) {
|
|
11
|
+
return error.message;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return JSON.stringify(error);
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { AISDKError } from './ai-sdk-error';
|
|
2
|
+
export { APICallError } from './api-call-error';
|
|
3
|
+
export { EmptyResponseBodyError } from './empty-response-body-error';
|
|
4
|
+
export { getErrorMessage } from './get-error-message';
|
|
5
|
+
export { InvalidArgumentError } from './invalid-argument-error';
|
|
6
|
+
export { InvalidPromptError } from './invalid-prompt-error';
|
|
7
|
+
export { InvalidResponseDataError } from './invalid-response-data-error';
|
|
8
|
+
export { JSONParseError } from './json-parse-error';
|
|
9
|
+
export { LoadAPIKeyError } from './load-api-key-error';
|
|
10
|
+
export { LoadSettingError } from './load-setting-error';
|
|
11
|
+
export { NoContentGeneratedError } from './no-content-generated-error';
|
|
12
|
+
export { NoSuchModelError } from './no-such-model-error';
|
|
13
|
+
export { TooManyEmbeddingValuesForCallError } from './too-many-embedding-values-for-call-error';
|
|
14
|
+
export { TypeValidationError } from './type-validation-error';
|
|
15
|
+
export { UnsupportedFunctionalityError } from './unsupported-functionality-error';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AISDKError } from './ai-sdk-error';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_InvalidArgumentError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A function argument is invalid.
|
|
9
|
+
*/
|
|
10
|
+
export class InvalidArgumentError extends AISDKError {
|
|
11
|
+
private readonly [symbol] = true; // used in isInstance
|
|
12
|
+
|
|
13
|
+
readonly argument: string;
|
|
14
|
+
|
|
15
|
+
constructor({
|
|
16
|
+
message,
|
|
17
|
+
cause,
|
|
18
|
+
argument,
|
|
19
|
+
}: {
|
|
20
|
+
argument: string;
|
|
21
|
+
message: string;
|
|
22
|
+
cause?: unknown;
|
|
23
|
+
}) {
|
|
24
|
+
super({ name, message, cause });
|
|
25
|
+
|
|
26
|
+
this.argument = argument;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static isInstance(error: unknown): error is InvalidArgumentError {
|
|
30
|
+
return AISDKError.hasMarker(error, marker);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AISDKError } from './ai-sdk-error';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_InvalidPromptError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A prompt is invalid. This error should be thrown by providers when they cannot
|
|
9
|
+
* process a prompt.
|
|
10
|
+
*/
|
|
11
|
+
export class InvalidPromptError extends AISDKError {
|
|
12
|
+
private readonly [symbol] = true; // used in isInstance
|
|
13
|
+
|
|
14
|
+
readonly prompt: unknown;
|
|
15
|
+
|
|
16
|
+
constructor({
|
|
17
|
+
prompt,
|
|
18
|
+
message,
|
|
19
|
+
cause,
|
|
20
|
+
}: {
|
|
21
|
+
prompt: unknown;
|
|
22
|
+
message: string;
|
|
23
|
+
cause?: unknown;
|
|
24
|
+
}) {
|
|
25
|
+
super({ name, message: `Invalid prompt: ${message}`, cause });
|
|
26
|
+
|
|
27
|
+
this.prompt = prompt;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static isInstance(error: unknown): error is InvalidPromptError {
|
|
31
|
+
return AISDKError.hasMarker(error, marker);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AISDKError } from './ai-sdk-error';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_InvalidResponseDataError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Server returned a response with invalid data content.
|
|
9
|
+
* This should be thrown by providers when they cannot parse the response from the API.
|
|
10
|
+
*/
|
|
11
|
+
export class InvalidResponseDataError extends AISDKError {
|
|
12
|
+
private readonly [symbol] = true; // used in isInstance
|
|
13
|
+
|
|
14
|
+
readonly data: unknown;
|
|
15
|
+
|
|
16
|
+
constructor({
|
|
17
|
+
data,
|
|
18
|
+
message = `Invalid response data: ${JSON.stringify(data)}.`,
|
|
19
|
+
}: {
|
|
20
|
+
data: unknown;
|
|
21
|
+
message?: string;
|
|
22
|
+
}) {
|
|
23
|
+
super({ name, message });
|
|
24
|
+
|
|
25
|
+
this.data = data;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static isInstance(error: unknown): error is InvalidResponseDataError {
|
|
29
|
+
return AISDKError.hasMarker(error, marker);
|
|
30
|
+
}
|
|
31
|
+
}
|