@ai-sdk/provider 3.0.2 → 3.0.4
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 +12 -0
- package/dist/index.d.mts +7 -7
- package/dist/index.d.ts +7 -7
- 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 +127 -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
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
import { JSONValue } from '../../json-value/json-value';
|
|
2
|
+
import { SharedV3ProviderOptions } from '../../shared/v3/shared-v3-provider-options';
|
|
3
|
+
import { LanguageModelV3DataContent } from './language-model-v3-data-content';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
A prompt is a list of messages.
|
|
7
|
+
|
|
8
|
+
Note: Not all models and prompt formats support multi-modal inputs and
|
|
9
|
+
tool calls. The validation happens at runtime.
|
|
10
|
+
|
|
11
|
+
Note: This is not a user-facing prompt. The AI SDK methods will map the
|
|
12
|
+
user-facing prompt types such as chat or instruction prompts to this format.
|
|
13
|
+
*/
|
|
14
|
+
export type LanguageModelV3Prompt = Array<LanguageModelV3Message>;
|
|
15
|
+
|
|
16
|
+
export type LanguageModelV3Message =
|
|
17
|
+
// Note: there could be additional parts for each role in the future,
|
|
18
|
+
// e.g. when the assistant can return images or the user can share files
|
|
19
|
+
// such as PDFs.
|
|
20
|
+
(
|
|
21
|
+
| {
|
|
22
|
+
role: 'system';
|
|
23
|
+
content: string;
|
|
24
|
+
}
|
|
25
|
+
| {
|
|
26
|
+
role: 'user';
|
|
27
|
+
content: Array<LanguageModelV3TextPart | LanguageModelV3FilePart>;
|
|
28
|
+
}
|
|
29
|
+
| {
|
|
30
|
+
role: 'assistant';
|
|
31
|
+
content: Array<
|
|
32
|
+
| LanguageModelV3TextPart
|
|
33
|
+
| LanguageModelV3FilePart
|
|
34
|
+
| LanguageModelV3ReasoningPart
|
|
35
|
+
| LanguageModelV3ToolCallPart
|
|
36
|
+
| LanguageModelV3ToolResultPart
|
|
37
|
+
>;
|
|
38
|
+
}
|
|
39
|
+
| {
|
|
40
|
+
role: 'tool';
|
|
41
|
+
content: Array<
|
|
42
|
+
| LanguageModelV3ToolResultPart
|
|
43
|
+
| LanguageModelV3ToolApprovalResponsePart
|
|
44
|
+
>;
|
|
45
|
+
}
|
|
46
|
+
) & {
|
|
47
|
+
/**
|
|
48
|
+
* Additional provider-specific options. They are passed through
|
|
49
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
50
|
+
* functionality that can be fully encapsulated in the provider.
|
|
51
|
+
*/
|
|
52
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
Text content part of a prompt. It contains a string of text.
|
|
57
|
+
*/
|
|
58
|
+
export interface LanguageModelV3TextPart {
|
|
59
|
+
type: 'text';
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
The text content.
|
|
63
|
+
*/
|
|
64
|
+
text: string;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Additional provider-specific options. They are passed through
|
|
68
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
69
|
+
* functionality that can be fully encapsulated in the provider.
|
|
70
|
+
*/
|
|
71
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
Reasoning content part of a prompt. It contains a string of reasoning text.
|
|
76
|
+
*/
|
|
77
|
+
export interface LanguageModelV3ReasoningPart {
|
|
78
|
+
type: 'reasoning';
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
The reasoning text.
|
|
82
|
+
*/
|
|
83
|
+
text: string;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Additional provider-specific options. They are passed through
|
|
87
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
88
|
+
* functionality that can be fully encapsulated in the provider.
|
|
89
|
+
*/
|
|
90
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
File content part of a prompt. It contains a file.
|
|
95
|
+
*/
|
|
96
|
+
export interface LanguageModelV3FilePart {
|
|
97
|
+
type: 'file';
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Optional filename of the file.
|
|
101
|
+
*/
|
|
102
|
+
filename?: string;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
File data. Can be a Uint8Array, base64 encoded data as a string or a URL.
|
|
106
|
+
*/
|
|
107
|
+
data: LanguageModelV3DataContent;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
IANA media type of the file.
|
|
111
|
+
|
|
112
|
+
Can support wildcards, e.g. `image/*` (in which case the provider needs to take appropriate action).
|
|
113
|
+
|
|
114
|
+
@see https://www.iana.org/assignments/media-types/media-types.xhtml
|
|
115
|
+
*/
|
|
116
|
+
mediaType: string;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Additional provider-specific options. They are passed through
|
|
120
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
121
|
+
* functionality that can be fully encapsulated in the provider.
|
|
122
|
+
*/
|
|
123
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
Tool call content part of a prompt. It contains a tool call (usually generated by the AI model).
|
|
128
|
+
*/
|
|
129
|
+
export interface LanguageModelV3ToolCallPart {
|
|
130
|
+
type: 'tool-call';
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
ID of the tool call. This ID is used to match the tool call with the tool result.
|
|
134
|
+
*/
|
|
135
|
+
toolCallId: string;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
Name of the tool that is being called.
|
|
139
|
+
*/
|
|
140
|
+
toolName: string;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema.
|
|
144
|
+
*/
|
|
145
|
+
input: unknown;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Whether the tool call will be executed by the provider.
|
|
149
|
+
* If this flag is not set or is false, the tool call will be executed by the client.
|
|
150
|
+
*/
|
|
151
|
+
providerExecuted?: boolean;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Additional provider-specific options. They are passed through
|
|
155
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
156
|
+
* functionality that can be fully encapsulated in the provider.
|
|
157
|
+
*/
|
|
158
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
Tool result content part of a prompt. It contains the result of the tool call with the matching ID.
|
|
163
|
+
*/
|
|
164
|
+
export interface LanguageModelV3ToolResultPart {
|
|
165
|
+
type: 'tool-result';
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
ID of the tool call that this result is associated with.
|
|
169
|
+
*/
|
|
170
|
+
toolCallId: string;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
Name of the tool that generated this result.
|
|
174
|
+
*/
|
|
175
|
+
toolName: string;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
Result of the tool call.
|
|
179
|
+
*/
|
|
180
|
+
output: LanguageModelV3ToolResultOutput;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Additional provider-specific options. They are passed through
|
|
184
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
185
|
+
* functionality that can be fully encapsulated in the provider.
|
|
186
|
+
*/
|
|
187
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Tool approval response content part of a prompt. It contains the user's
|
|
192
|
+
* decision to approve or deny a provider-executed tool call.
|
|
193
|
+
*/
|
|
194
|
+
export interface LanguageModelV3ToolApprovalResponsePart {
|
|
195
|
+
type: 'tool-approval-response';
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* ID of the approval request that this response refers to.
|
|
199
|
+
*/
|
|
200
|
+
approvalId: string;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Whether the approval was granted (true) or denied (false).
|
|
204
|
+
*/
|
|
205
|
+
approved: boolean;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Optional reason for approval or denial.
|
|
209
|
+
*/
|
|
210
|
+
reason?: string;
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Additional provider-specific options. They are passed through
|
|
214
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
215
|
+
* functionality that can be fully encapsulated in the provider.
|
|
216
|
+
*/
|
|
217
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Result of a tool call.
|
|
222
|
+
*/
|
|
223
|
+
export type LanguageModelV3ToolResultOutput =
|
|
224
|
+
| {
|
|
225
|
+
/**
|
|
226
|
+
* Text tool output that should be directly sent to the API.
|
|
227
|
+
*/
|
|
228
|
+
type: 'text';
|
|
229
|
+
value: string;
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Provider-specific options.
|
|
233
|
+
*/
|
|
234
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
235
|
+
}
|
|
236
|
+
| {
|
|
237
|
+
type: 'json';
|
|
238
|
+
value: JSONValue;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Provider-specific options.
|
|
242
|
+
*/
|
|
243
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
244
|
+
}
|
|
245
|
+
| {
|
|
246
|
+
/**
|
|
247
|
+
* Type when the user has denied the execution of the tool call.
|
|
248
|
+
*/
|
|
249
|
+
type: 'execution-denied';
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Optional reason for the execution denial.
|
|
253
|
+
*/
|
|
254
|
+
reason?: string;
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Provider-specific options.
|
|
258
|
+
*/
|
|
259
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
260
|
+
}
|
|
261
|
+
| {
|
|
262
|
+
type: 'error-text';
|
|
263
|
+
value: string;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Provider-specific options.
|
|
267
|
+
*/
|
|
268
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
269
|
+
}
|
|
270
|
+
| {
|
|
271
|
+
type: 'error-json';
|
|
272
|
+
value: JSONValue;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Provider-specific options.
|
|
276
|
+
*/
|
|
277
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
278
|
+
}
|
|
279
|
+
| {
|
|
280
|
+
type: 'content';
|
|
281
|
+
value: Array<
|
|
282
|
+
| {
|
|
283
|
+
type: 'text';
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
Text content.
|
|
287
|
+
*/
|
|
288
|
+
text: string;
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Provider-specific options.
|
|
292
|
+
*/
|
|
293
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
294
|
+
}
|
|
295
|
+
| {
|
|
296
|
+
type: 'file-data';
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
Base-64 encoded media data.
|
|
300
|
+
*/
|
|
301
|
+
data: string;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
IANA media type.
|
|
305
|
+
@see https://www.iana.org/assignments/media-types/media-types.xhtml
|
|
306
|
+
*/
|
|
307
|
+
mediaType: string;
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Optional filename of the file.
|
|
311
|
+
*/
|
|
312
|
+
filename?: string;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Provider-specific options.
|
|
316
|
+
*/
|
|
317
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
318
|
+
}
|
|
319
|
+
| {
|
|
320
|
+
type: 'file-url';
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* URL of the file.
|
|
324
|
+
*/
|
|
325
|
+
url: string;
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Provider-specific options.
|
|
329
|
+
*/
|
|
330
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
331
|
+
}
|
|
332
|
+
| {
|
|
333
|
+
type: 'file-id';
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* ID of the file.
|
|
337
|
+
*
|
|
338
|
+
* If you use multiple providers, you need to
|
|
339
|
+
* specify the provider specific ids using
|
|
340
|
+
* the Record option. The key is the provider
|
|
341
|
+
* name, e.g. 'openai' or 'anthropic'.
|
|
342
|
+
*/
|
|
343
|
+
fileId: string | Record<string, string>;
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Provider-specific options.
|
|
347
|
+
*/
|
|
348
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
349
|
+
}
|
|
350
|
+
| {
|
|
351
|
+
/**
|
|
352
|
+
* Images that are referenced using base64 encoded data.
|
|
353
|
+
*/
|
|
354
|
+
type: 'image-data';
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
Base-64 encoded image data.
|
|
358
|
+
*/
|
|
359
|
+
data: string;
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
IANA media type.
|
|
363
|
+
@see https://www.iana.org/assignments/media-types/media-types.xhtml
|
|
364
|
+
*/
|
|
365
|
+
mediaType: string;
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Provider-specific options.
|
|
369
|
+
*/
|
|
370
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
371
|
+
}
|
|
372
|
+
| {
|
|
373
|
+
/**
|
|
374
|
+
* Images that are referenced using a URL.
|
|
375
|
+
*/
|
|
376
|
+
type: 'image-url';
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* URL of the image.
|
|
380
|
+
*/
|
|
381
|
+
url: string;
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Provider-specific options.
|
|
385
|
+
*/
|
|
386
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
387
|
+
}
|
|
388
|
+
| {
|
|
389
|
+
/**
|
|
390
|
+
* Images that are referenced using a provider file id.
|
|
391
|
+
*/
|
|
392
|
+
type: 'image-file-id';
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Image that is referenced using a provider file id.
|
|
396
|
+
*
|
|
397
|
+
* If you use multiple providers, you need to
|
|
398
|
+
* specify the provider specific ids using
|
|
399
|
+
* the Record option. The key is the provider
|
|
400
|
+
* name, e.g. 'openai' or 'anthropic'.
|
|
401
|
+
*/
|
|
402
|
+
fileId: string | Record<string, string>;
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Provider-specific options.
|
|
406
|
+
*/
|
|
407
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
408
|
+
}
|
|
409
|
+
| {
|
|
410
|
+
/**
|
|
411
|
+
* Custom content part. This can be used to implement
|
|
412
|
+
* provider-specific content parts.
|
|
413
|
+
*/
|
|
414
|
+
type: 'custom';
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Provider-specific options.
|
|
418
|
+
*/
|
|
419
|
+
providerOptions?: SharedV3ProviderOptions;
|
|
420
|
+
}
|
|
421
|
+
>;
|
|
422
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The configuration of a provider tool.
|
|
3
|
+
*
|
|
4
|
+
* Provider tools are tools that are specific to a certain provider.
|
|
5
|
+
* The input and output schemas are defined be the provider, and
|
|
6
|
+
* some of the tools are also executed on the provider systems.
|
|
7
|
+
*/
|
|
8
|
+
export type LanguageModelV3ProviderTool = {
|
|
9
|
+
/**
|
|
10
|
+
* The type of the tool (always 'provider').
|
|
11
|
+
*/
|
|
12
|
+
type: 'provider';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The ID of the tool. Should follow the format `<provider-id>.<unique-tool-name>`.
|
|
16
|
+
*/
|
|
17
|
+
id: `${string}.${string}`;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The name of the tool. Unique within this model call.
|
|
21
|
+
*/
|
|
22
|
+
name: string;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool.
|
|
26
|
+
*/
|
|
27
|
+
args: Record<string, unknown>;
|
|
28
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SharedV3ProviderMetadata } from '../../shared';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
Reasoning that the model has generated.
|
|
5
|
+
*/
|
|
6
|
+
export type LanguageModelV3Reasoning = {
|
|
7
|
+
type: 'reasoning';
|
|
8
|
+
text: string;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Optional provider-specific metadata for the reasoning part.
|
|
12
|
+
*/
|
|
13
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
14
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface LanguageModelV3ResponseMetadata {
|
|
2
|
+
/**
|
|
3
|
+
ID for the generated response, if the provider sends one.
|
|
4
|
+
*/
|
|
5
|
+
id?: string;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
Timestamp for the start of the generated response, if the provider sends one.
|
|
9
|
+
*/
|
|
10
|
+
timestamp?: Date;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
The ID of the response model that was used to generate the response, if the provider sends one.
|
|
14
|
+
*/
|
|
15
|
+
modelId?: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
A source that has been used as input to generate the response.
|
|
5
|
+
*/
|
|
6
|
+
export type LanguageModelV3Source =
|
|
7
|
+
| {
|
|
8
|
+
type: 'source';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The type of source - URL sources reference web content.
|
|
12
|
+
*/
|
|
13
|
+
sourceType: 'url';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The ID of the source.
|
|
17
|
+
*/
|
|
18
|
+
id: string;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The URL of the source.
|
|
22
|
+
*/
|
|
23
|
+
url: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The title of the source.
|
|
27
|
+
*/
|
|
28
|
+
title?: string;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Additional provider metadata for the source.
|
|
32
|
+
*/
|
|
33
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
34
|
+
}
|
|
35
|
+
| {
|
|
36
|
+
type: 'source';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The type of source - document sources reference files/documents.
|
|
40
|
+
*/
|
|
41
|
+
sourceType: 'document';
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The ID of the source.
|
|
45
|
+
*/
|
|
46
|
+
id: string;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* IANA media type of the document (e.g., 'application/pdf').
|
|
50
|
+
*/
|
|
51
|
+
mediaType: string;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The title of the document.
|
|
55
|
+
*/
|
|
56
|
+
title: string;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Optional filename of the document.
|
|
60
|
+
*/
|
|
61
|
+
filename?: string;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Additional provider metadata for the source.
|
|
65
|
+
*/
|
|
66
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
67
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
|
|
2
|
+
import { SharedV3Warning } from '../../shared/v3/shared-v3-warning';
|
|
3
|
+
import { LanguageModelV3File } from './language-model-v3-file';
|
|
4
|
+
import { LanguageModelV3FinishReason } from './language-model-v3-finish-reason';
|
|
5
|
+
import { LanguageModelV3ResponseMetadata } from './language-model-v3-response-metadata';
|
|
6
|
+
import { LanguageModelV3Source } from './language-model-v3-source';
|
|
7
|
+
import { LanguageModelV3ToolApprovalRequest } from './language-model-v3-tool-approval-request';
|
|
8
|
+
import { LanguageModelV3ToolCall } from './language-model-v3-tool-call';
|
|
9
|
+
import { LanguageModelV3ToolResult } from './language-model-v3-tool-result';
|
|
10
|
+
import { LanguageModelV3Usage } from './language-model-v3-usage';
|
|
11
|
+
|
|
12
|
+
export type LanguageModelV3StreamPart =
|
|
13
|
+
// Text blocks:
|
|
14
|
+
| {
|
|
15
|
+
type: 'text-start';
|
|
16
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
17
|
+
id: string;
|
|
18
|
+
}
|
|
19
|
+
| {
|
|
20
|
+
type: 'text-delta';
|
|
21
|
+
id: string;
|
|
22
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
23
|
+
delta: string;
|
|
24
|
+
}
|
|
25
|
+
| {
|
|
26
|
+
type: 'text-end';
|
|
27
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
28
|
+
id: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Reasoning blocks:
|
|
32
|
+
| {
|
|
33
|
+
type: 'reasoning-start';
|
|
34
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
35
|
+
id: string;
|
|
36
|
+
}
|
|
37
|
+
| {
|
|
38
|
+
type: 'reasoning-delta';
|
|
39
|
+
id: string;
|
|
40
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
41
|
+
delta: string;
|
|
42
|
+
}
|
|
43
|
+
| {
|
|
44
|
+
type: 'reasoning-end';
|
|
45
|
+
id: string;
|
|
46
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Tool calls and results:
|
|
50
|
+
| {
|
|
51
|
+
type: 'tool-input-start';
|
|
52
|
+
id: string;
|
|
53
|
+
toolName: string;
|
|
54
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
55
|
+
providerExecuted?: boolean;
|
|
56
|
+
dynamic?: boolean;
|
|
57
|
+
title?: string;
|
|
58
|
+
}
|
|
59
|
+
| {
|
|
60
|
+
type: 'tool-input-delta';
|
|
61
|
+
id: string;
|
|
62
|
+
delta: string;
|
|
63
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
64
|
+
}
|
|
65
|
+
| {
|
|
66
|
+
type: 'tool-input-end';
|
|
67
|
+
id: string;
|
|
68
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
69
|
+
}
|
|
70
|
+
| LanguageModelV3ToolApprovalRequest
|
|
71
|
+
| LanguageModelV3ToolCall
|
|
72
|
+
| LanguageModelV3ToolResult
|
|
73
|
+
|
|
74
|
+
// Files and sources:
|
|
75
|
+
| LanguageModelV3File
|
|
76
|
+
| LanguageModelV3Source
|
|
77
|
+
|
|
78
|
+
// stream start event with warnings for the call, e.g. unsupported settings:
|
|
79
|
+
| {
|
|
80
|
+
type: 'stream-start';
|
|
81
|
+
warnings: Array<SharedV3Warning>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// metadata for the response.
|
|
85
|
+
// separate stream part so it can be sent once it is available.
|
|
86
|
+
| ({ type: 'response-metadata' } & LanguageModelV3ResponseMetadata)
|
|
87
|
+
|
|
88
|
+
// metadata that is available after the stream is finished:
|
|
89
|
+
| {
|
|
90
|
+
type: 'finish';
|
|
91
|
+
usage: LanguageModelV3Usage;
|
|
92
|
+
finishReason: LanguageModelV3FinishReason;
|
|
93
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// raw chunks if enabled
|
|
97
|
+
| {
|
|
98
|
+
type: 'raw';
|
|
99
|
+
rawValue: unknown;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// error parts are streamed, allowing for multiple errors
|
|
103
|
+
| {
|
|
104
|
+
type: 'error';
|
|
105
|
+
error: unknown;
|
|
106
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SharedV3Headers } from '../../shared';
|
|
2
|
+
import { LanguageModelV3StreamPart } from './language-model-v3-stream-part';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The result of a language model doStream call.
|
|
6
|
+
*/
|
|
7
|
+
export type LanguageModelV3StreamResult = {
|
|
8
|
+
/**
|
|
9
|
+
* The stream.
|
|
10
|
+
*/
|
|
11
|
+
stream: ReadableStream<LanguageModelV3StreamPart>;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Optional request information for telemetry and debugging purposes.
|
|
15
|
+
*/
|
|
16
|
+
request?: {
|
|
17
|
+
/**
|
|
18
|
+
* Request HTTP body that was sent to the provider API.
|
|
19
|
+
*/
|
|
20
|
+
body?: unknown;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Optional response data.
|
|
25
|
+
*/
|
|
26
|
+
response?: {
|
|
27
|
+
/**
|
|
28
|
+
* Response headers.
|
|
29
|
+
*/
|
|
30
|
+
headers?: SharedV3Headers;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
Text that the model has generated.
|
|
5
|
+
*/
|
|
6
|
+
export type LanguageModelV3Text = {
|
|
7
|
+
type: 'text';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
The text content.
|
|
11
|
+
*/
|
|
12
|
+
text: string;
|
|
13
|
+
|
|
14
|
+
providerMetadata?: SharedV3ProviderMetadata;
|
|
15
|
+
};
|