ai 3.2.17 → 3.2.19

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 CHANGED
@@ -49,7 +49,7 @@ main();
49
49
 
50
50
  The [AI SDK UI](https://sdk.vercel.ai/docs/ai-sdk-ui/overview) module provides a set of hooks that help you build chatbots and generative user interfaces. These hooks are framework agnostic, so they can be used in Next.js, React, Svelte, Vue, and SolidJS.
51
51
 
52
- ###### @/app/page.tsx (Next.js Pages Router)
52
+ ###### @/app/page.tsx (Next.js App Router)
53
53
 
54
54
  ```tsx
55
55
  "use client"
@@ -81,7 +81,7 @@ export default function Page() {
81
81
  }
82
82
  ```
83
83
 
84
- ###### @/app/api/chat/route.ts (Next.js Pages Router)
84
+ ###### @/app/api/chat/route.ts (Next.js App Router)
85
85
 
86
86
  ```ts
87
87
  import { CoreMessage, streamText } from 'ai';
package/dist/index.d.mts CHANGED
@@ -8,6 +8,33 @@ import { ServerResponse as ServerResponse$1 } from 'node:http';
8
8
  import { AssistantStream } from 'openai/lib/AssistantStream';
9
9
  import { Run } from 'openai/resources/beta/threads/runs/runs';
10
10
 
11
+ /**
12
+ Represents the number of tokens used in a prompt and completion.
13
+ */
14
+ type CompletionTokenUsage$1 = {
15
+ /**
16
+ The number of tokens used in the prompt
17
+ */
18
+ promptTokens: number;
19
+ /**
20
+ The number of tokens used in the completion.
21
+ */
22
+ completionTokens: number;
23
+ /**
24
+ The total number of tokens used (promptTokens + completionTokens).
25
+ */
26
+ totalTokens: number;
27
+ };
28
+ /**
29
+ Represents the number of tokens used in an embedding.
30
+ */
31
+ type EmbeddingTokenUsage = {
32
+ /**
33
+ The number of tokens used in the embedding.
34
+ */
35
+ tokens: number;
36
+ };
37
+
11
38
  /**
12
39
  Embedding model that is used by the AI SDK Core functions.
13
40
  */
@@ -55,6 +82,12 @@ type CoreToolChoice<TOOLS extends Record<string, unknown>> = 'auto' | 'none' | '
55
82
  toolName: keyof TOOLS;
56
83
  };
57
84
 
85
+ /**
86
+ * @deprecated Use CompletionTokenUsage instead.
87
+ */
88
+ type TokenUsage = CompletionTokenUsage$1;
89
+ type CompletionTokenUsage = CompletionTokenUsage$1;
90
+
58
91
  /**
59
92
  Embed a value using an embedding model. The type of the value is defined by the embedding model.
60
93
 
@@ -106,6 +139,10 @@ declare class EmbedResult<VALUE> {
106
139
  */
107
140
  readonly embedding: Embedding;
108
141
  /**
142
+ The embedding token usage.
143
+ */
144
+ readonly usage: EmbeddingTokenUsage;
145
+ /**
109
146
  Optional raw response data.
110
147
  */
111
148
  readonly rawResponse?: {
@@ -117,6 +154,7 @@ declare class EmbedResult<VALUE> {
117
154
  constructor(options: {
118
155
  value: VALUE;
119
156
  embedding: Embedding;
157
+ usage: EmbeddingTokenUsage;
120
158
  rawResponse?: {
121
159
  headers?: Record<string, string>;
122
160
  };
@@ -177,30 +215,17 @@ declare class EmbedManyResult<VALUE> {
177
215
  The embeddings. They are in the same order as the values.
178
216
  */
179
217
  readonly embeddings: Array<Embedding>;
218
+ /**
219
+ The embedding token usage.
220
+ */
221
+ readonly usage: EmbeddingTokenUsage;
180
222
  constructor(options: {
181
223
  values: Array<VALUE>;
182
224
  embeddings: Array<Embedding>;
225
+ usage: EmbeddingTokenUsage;
183
226
  });
184
227
  }
185
228
 
186
- /**
187
- Represents the number of tokens used in a prompt and completion.
188
- */
189
- type TokenUsage = {
190
- /**
191
- The number of tokens used in the prompt
192
- */
193
- promptTokens: number;
194
- /**
195
- The number of tokens used in the completion.
196
- */
197
- completionTokens: number;
198
- /**
199
- The total number of tokens used (promptTokens + completionTokens).
200
- */
201
- totalTokens: number;
202
- };
203
-
204
229
  type CallSettings = {
205
230
  /**
206
231
  Maximum number of tokens to generate.
@@ -514,7 +539,7 @@ declare class GenerateObjectResult<T> {
514
539
  /**
515
540
  The token usage of the generated text.
516
541
  */
517
- readonly usage: TokenUsage;
542
+ readonly usage: CompletionTokenUsage$1;
518
543
  /**
519
544
  Warnings from the model provider (e.g. unsupported settings)
520
545
  */
@@ -536,7 +561,7 @@ declare class GenerateObjectResult<T> {
536
561
  constructor(options: {
537
562
  object: T;
538
563
  finishReason: FinishReason;
539
- usage: TokenUsage;
564
+ usage: CompletionTokenUsage$1;
540
565
  warnings: CallWarning[] | undefined;
541
566
  rawResponse?: {
542
567
  headers?: Record<string, string>;
@@ -624,7 +649,7 @@ Callback that is called when the LLM response and the final object validation ar
624
649
  /**
625
650
  The token usage of the generated response.
626
651
  */
627
- usage: TokenUsage;
652
+ usage: CompletionTokenUsage$1;
628
653
  /**
629
654
  The generated object (typed according to the schema). Can be undefined if the final object does not match the schema.
630
655
  */
@@ -684,7 +709,7 @@ declare class StreamObjectResult<T> {
684
709
  /**
685
710
  The token usage of the generated response. Resolved when the response is finished.
686
711
  */
687
- readonly usage: Promise<TokenUsage>;
712
+ readonly usage: Promise<CompletionTokenUsage$1>;
688
713
  /**
689
714
  Optional raw response data.
690
715
  */
@@ -1000,7 +1025,7 @@ declare class GenerateTextResult<TOOLS extends Record<string, CoreTool>> {
1000
1025
  /**
1001
1026
  The token usage of the generated text.
1002
1027
  */
1003
- readonly usage: TokenUsage;
1028
+ readonly usage: CompletionTokenUsage$1;
1004
1029
  /**
1005
1030
  Warnings from the model provider (e.g. unsupported settings)
1006
1031
  */
@@ -1032,7 +1057,7 @@ declare class GenerateTextResult<TOOLS extends Record<string, CoreTool>> {
1032
1057
  toolCalls: ToToolCallArray<TOOLS>;
1033
1058
  toolResults: ToToolResultArray<TOOLS>;
1034
1059
  finishReason: FinishReason;
1035
- usage: TokenUsage;
1060
+ usage: CompletionTokenUsage$1;
1036
1061
  warnings: CallWarning[] | undefined;
1037
1062
  rawResponse?: {
1038
1063
  headers?: Record<string, string>;
@@ -1109,7 +1134,7 @@ Callback that is called when the LLM response and all request tool executions
1109
1134
  /**
1110
1135
  The token usage of the generated response.
1111
1136
  */
1112
- usage: TokenUsage;
1137
+ usage: CompletionTokenUsage$1;
1113
1138
  /**
1114
1139
  The full text that has been generated.
1115
1140
  */
@@ -1170,7 +1195,7 @@ declare class StreamTextResult<TOOLS extends Record<string, CoreTool>> {
1170
1195
  /**
1171
1196
  The token usage of the generated response. Resolved when the response is finished.
1172
1197
  */
1173
- readonly usage: Promise<TokenUsage>;
1198
+ readonly usage: Promise<CompletionTokenUsage$1>;
1174
1199
  /**
1175
1200
  The reason why the generation finished. Resolved when the response is finished.
1176
1201
  */
@@ -2130,4 +2155,4 @@ declare const generateId: (size?: number | undefined) => string;
2130
2155
  */
2131
2156
  declare const nanoid: (size?: number | undefined) => string;
2132
2157
 
2133
- export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_ProviderRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_createProviderRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2158
+ export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionTokenUsage, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingTokenUsage, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_ProviderRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_createProviderRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
package/dist/index.d.ts CHANGED
@@ -8,6 +8,33 @@ import { ServerResponse as ServerResponse$1 } from 'node:http';
8
8
  import { AssistantStream } from 'openai/lib/AssistantStream';
9
9
  import { Run } from 'openai/resources/beta/threads/runs/runs';
10
10
 
11
+ /**
12
+ Represents the number of tokens used in a prompt and completion.
13
+ */
14
+ type CompletionTokenUsage$1 = {
15
+ /**
16
+ The number of tokens used in the prompt
17
+ */
18
+ promptTokens: number;
19
+ /**
20
+ The number of tokens used in the completion.
21
+ */
22
+ completionTokens: number;
23
+ /**
24
+ The total number of tokens used (promptTokens + completionTokens).
25
+ */
26
+ totalTokens: number;
27
+ };
28
+ /**
29
+ Represents the number of tokens used in an embedding.
30
+ */
31
+ type EmbeddingTokenUsage = {
32
+ /**
33
+ The number of tokens used in the embedding.
34
+ */
35
+ tokens: number;
36
+ };
37
+
11
38
  /**
12
39
  Embedding model that is used by the AI SDK Core functions.
13
40
  */
@@ -55,6 +82,12 @@ type CoreToolChoice<TOOLS extends Record<string, unknown>> = 'auto' | 'none' | '
55
82
  toolName: keyof TOOLS;
56
83
  };
57
84
 
85
+ /**
86
+ * @deprecated Use CompletionTokenUsage instead.
87
+ */
88
+ type TokenUsage = CompletionTokenUsage$1;
89
+ type CompletionTokenUsage = CompletionTokenUsage$1;
90
+
58
91
  /**
59
92
  Embed a value using an embedding model. The type of the value is defined by the embedding model.
60
93
 
@@ -106,6 +139,10 @@ declare class EmbedResult<VALUE> {
106
139
  */
107
140
  readonly embedding: Embedding;
108
141
  /**
142
+ The embedding token usage.
143
+ */
144
+ readonly usage: EmbeddingTokenUsage;
145
+ /**
109
146
  Optional raw response data.
110
147
  */
111
148
  readonly rawResponse?: {
@@ -117,6 +154,7 @@ declare class EmbedResult<VALUE> {
117
154
  constructor(options: {
118
155
  value: VALUE;
119
156
  embedding: Embedding;
157
+ usage: EmbeddingTokenUsage;
120
158
  rawResponse?: {
121
159
  headers?: Record<string, string>;
122
160
  };
@@ -177,30 +215,17 @@ declare class EmbedManyResult<VALUE> {
177
215
  The embeddings. They are in the same order as the values.
178
216
  */
179
217
  readonly embeddings: Array<Embedding>;
218
+ /**
219
+ The embedding token usage.
220
+ */
221
+ readonly usage: EmbeddingTokenUsage;
180
222
  constructor(options: {
181
223
  values: Array<VALUE>;
182
224
  embeddings: Array<Embedding>;
225
+ usage: EmbeddingTokenUsage;
183
226
  });
184
227
  }
185
228
 
186
- /**
187
- Represents the number of tokens used in a prompt and completion.
188
- */
189
- type TokenUsage = {
190
- /**
191
- The number of tokens used in the prompt
192
- */
193
- promptTokens: number;
194
- /**
195
- The number of tokens used in the completion.
196
- */
197
- completionTokens: number;
198
- /**
199
- The total number of tokens used (promptTokens + completionTokens).
200
- */
201
- totalTokens: number;
202
- };
203
-
204
229
  type CallSettings = {
205
230
  /**
206
231
  Maximum number of tokens to generate.
@@ -514,7 +539,7 @@ declare class GenerateObjectResult<T> {
514
539
  /**
515
540
  The token usage of the generated text.
516
541
  */
517
- readonly usage: TokenUsage;
542
+ readonly usage: CompletionTokenUsage$1;
518
543
  /**
519
544
  Warnings from the model provider (e.g. unsupported settings)
520
545
  */
@@ -536,7 +561,7 @@ declare class GenerateObjectResult<T> {
536
561
  constructor(options: {
537
562
  object: T;
538
563
  finishReason: FinishReason;
539
- usage: TokenUsage;
564
+ usage: CompletionTokenUsage$1;
540
565
  warnings: CallWarning[] | undefined;
541
566
  rawResponse?: {
542
567
  headers?: Record<string, string>;
@@ -624,7 +649,7 @@ Callback that is called when the LLM response and the final object validation ar
624
649
  /**
625
650
  The token usage of the generated response.
626
651
  */
627
- usage: TokenUsage;
652
+ usage: CompletionTokenUsage$1;
628
653
  /**
629
654
  The generated object (typed according to the schema). Can be undefined if the final object does not match the schema.
630
655
  */
@@ -684,7 +709,7 @@ declare class StreamObjectResult<T> {
684
709
  /**
685
710
  The token usage of the generated response. Resolved when the response is finished.
686
711
  */
687
- readonly usage: Promise<TokenUsage>;
712
+ readonly usage: Promise<CompletionTokenUsage$1>;
688
713
  /**
689
714
  Optional raw response data.
690
715
  */
@@ -1000,7 +1025,7 @@ declare class GenerateTextResult<TOOLS extends Record<string, CoreTool>> {
1000
1025
  /**
1001
1026
  The token usage of the generated text.
1002
1027
  */
1003
- readonly usage: TokenUsage;
1028
+ readonly usage: CompletionTokenUsage$1;
1004
1029
  /**
1005
1030
  Warnings from the model provider (e.g. unsupported settings)
1006
1031
  */
@@ -1032,7 +1057,7 @@ declare class GenerateTextResult<TOOLS extends Record<string, CoreTool>> {
1032
1057
  toolCalls: ToToolCallArray<TOOLS>;
1033
1058
  toolResults: ToToolResultArray<TOOLS>;
1034
1059
  finishReason: FinishReason;
1035
- usage: TokenUsage;
1060
+ usage: CompletionTokenUsage$1;
1036
1061
  warnings: CallWarning[] | undefined;
1037
1062
  rawResponse?: {
1038
1063
  headers?: Record<string, string>;
@@ -1109,7 +1134,7 @@ Callback that is called when the LLM response and all request tool executions
1109
1134
  /**
1110
1135
  The token usage of the generated response.
1111
1136
  */
1112
- usage: TokenUsage;
1137
+ usage: CompletionTokenUsage$1;
1113
1138
  /**
1114
1139
  The full text that has been generated.
1115
1140
  */
@@ -1170,7 +1195,7 @@ declare class StreamTextResult<TOOLS extends Record<string, CoreTool>> {
1170
1195
  /**
1171
1196
  The token usage of the generated response. Resolved when the response is finished.
1172
1197
  */
1173
- readonly usage: Promise<TokenUsage>;
1198
+ readonly usage: Promise<CompletionTokenUsage$1>;
1174
1199
  /**
1175
1200
  The reason why the generation finished. Resolved when the response is finished.
1176
1201
  */
@@ -2130,4 +2155,4 @@ declare const generateId: (size?: number | undefined) => string;
2130
2155
  */
2131
2156
  declare const nanoid: (size?: number | undefined) => string;
2132
2157
 
2133
- export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_ProviderRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_createProviderRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2158
+ export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionTokenUsage, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingTokenUsage, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_ProviderRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_createProviderRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
package/dist/index.js CHANGED
@@ -181,6 +181,7 @@ async function embed({
181
181
  abortSignal,
182
182
  headers
183
183
  }) {
184
+ var _a;
184
185
  const retry = retryWithExponentialBackoff({ maxRetries });
185
186
  const modelResponse = await retry(
186
187
  () => model.doEmbed({ values: [value], abortSignal, headers })
@@ -188,6 +189,7 @@ async function embed({
188
189
  return new EmbedResult({
189
190
  value,
190
191
  embedding: modelResponse.embeddings[0],
192
+ usage: (_a = modelResponse.usage) != null ? _a : { tokens: NaN },
191
193
  rawResponse: modelResponse.rawResponse
192
194
  });
193
195
  }
@@ -195,6 +197,7 @@ var EmbedResult = class {
195
197
  constructor(options) {
196
198
  this.value = options.value;
197
199
  this.embedding = options.embedding;
200
+ this.usage = options.usage;
198
201
  this.rawResponse = options.rawResponse;
199
202
  }
200
203
  };
@@ -219,6 +222,7 @@ async function embedMany({
219
222
  abortSignal,
220
223
  headers
221
224
  }) {
225
+ var _a, _b, _c;
222
226
  const retry = retryWithExponentialBackoff({ maxRetries });
223
227
  const maxEmbeddingsPerCall = model.maxEmbeddingsPerCall;
224
228
  if (maxEmbeddingsPerCall == null) {
@@ -227,23 +231,27 @@ async function embedMany({
227
231
  );
228
232
  return new EmbedManyResult({
229
233
  values,
230
- embeddings: modelResponse.embeddings
234
+ embeddings: modelResponse.embeddings,
235
+ usage: (_a = modelResponse.usage) != null ? _a : { tokens: NaN }
231
236
  });
232
237
  }
233
238
  const valueChunks = splitArray(values, maxEmbeddingsPerCall);
234
239
  const embeddings = [];
240
+ let tokens = 0;
235
241
  for (const chunk of valueChunks) {
236
242
  const modelResponse = await retry(
237
243
  () => model.doEmbed({ values: chunk, abortSignal, headers })
238
244
  );
239
245
  embeddings.push(...modelResponse.embeddings);
246
+ tokens += (_c = (_b = modelResponse.usage) == null ? void 0 : _b.tokens) != null ? _c : NaN;
240
247
  }
241
- return new EmbedManyResult({ values, embeddings });
248
+ return new EmbedManyResult({ values, embeddings, usage: { tokens } });
242
249
  }
243
250
  var EmbedManyResult = class {
244
251
  constructor(options) {
245
252
  this.values = options.values;
246
253
  this.embeddings = options.embeddings;
254
+ this.usage = options.usage;
247
255
  }
248
256
  };
249
257
 
@@ -251,15 +259,6 @@ var EmbedManyResult = class {
251
259
  var import_provider5 = require("@ai-sdk/provider");
252
260
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
253
261
 
254
- // core/generate-text/token-usage.ts
255
- function calculateTokenUsage(usage) {
256
- return {
257
- promptTokens: usage.promptTokens,
258
- completionTokens: usage.completionTokens,
259
- totalTokens: usage.promptTokens + usage.completionTokens
260
- };
261
- }
262
-
263
262
  // core/util/detect-image-mimetype.ts
264
263
  var mimeTypeSignatures = [
265
264
  { mimeType: "image/gif", bytes: [71, 73, 70] },
@@ -607,12 +606,31 @@ function prepareCallSettings({
607
606
  };
608
607
  }
609
608
 
609
+ // core/types/token-usage.ts
610
+ function calculateCompletionTokenUsage(usage) {
611
+ return {
612
+ promptTokens: usage.promptTokens,
613
+ completionTokens: usage.completionTokens,
614
+ totalTokens: usage.promptTokens + usage.completionTokens
615
+ };
616
+ }
617
+
610
618
  // core/util/convert-zod-to-json-schema.ts
611
619
  var import_zod_to_json_schema = __toESM(require("zod-to-json-schema"));
612
620
  function convertZodToJSONSchema(zodSchema) {
613
621
  return (0, import_zod_to_json_schema.default)(zodSchema);
614
622
  }
615
623
 
624
+ // core/util/prepare-response-headers.ts
625
+ function prepareResponseHeaders(init, { contentType }) {
626
+ var _a;
627
+ const headers = new Headers((_a = init == null ? void 0 : init.headers) != null ? _a : {});
628
+ if (!headers.has("Content-Type")) {
629
+ headers.set("Content-Type", contentType);
630
+ }
631
+ return headers;
632
+ }
633
+
616
634
  // core/generate-object/inject-json-schema-into-system.ts
617
635
  var DEFAULT_SCHEMA_PREFIX = "JSON schema:";
618
636
  var DEFAULT_SCHEMA_SUFFIX = "You MUST answer with a JSON object that matches the JSON schema above.";
@@ -632,16 +650,6 @@ function injectJsonSchemaIntoSystem({
632
650
  ].filter((line) => line != null).join("\n");
633
651
  }
634
652
 
635
- // core/util/prepare-response-headers.ts
636
- function prepareResponseHeaders(init, { contentType }) {
637
- var _a;
638
- const headers = new Headers((_a = init == null ? void 0 : init.headers) != null ? _a : {});
639
- if (!headers.has("Content-Type")) {
640
- headers.set("Content-Type", contentType);
641
- }
642
- return headers;
643
- }
644
-
645
653
  // core/generate-object/generate-object.ts
646
654
  async function generateObject({
647
655
  model,
@@ -771,7 +779,7 @@ async function generateObject({
771
779
  return new GenerateObjectResult({
772
780
  object: parseResult.value,
773
781
  finishReason,
774
- usage: calculateTokenUsage(usage),
782
+ usage: calculateCompletionTokenUsage(usage),
775
783
  warnings,
776
784
  rawResponse,
777
785
  logprobs
@@ -1014,7 +1022,7 @@ var StreamObjectResult = class {
1014
1022
  textDelta: delta
1015
1023
  });
1016
1024
  }
1017
- usage = calculateTokenUsage(chunk.usage);
1025
+ usage = calculateCompletionTokenUsage(chunk.usage);
1018
1026
  controller.enqueue({ ...chunk, usage });
1019
1027
  resolveUsage(usage);
1020
1028
  const validationResult = (0, import_provider_utils5.safeValidateTypes)({
@@ -1302,7 +1310,7 @@ async function generateText({
1302
1310
  toolCalls: currentToolCalls,
1303
1311
  toolResults: currentToolResults,
1304
1312
  finishReason: currentModelResponse.finishReason,
1305
- usage: calculateTokenUsage(currentModelResponse.usage),
1313
+ usage: calculateCompletionTokenUsage(currentModelResponse.usage),
1306
1314
  warnings: currentModelResponse.warnings,
1307
1315
  rawResponse: currentModelResponse.rawResponse,
1308
1316
  logprobs: currentModelResponse.logprobs,
@@ -1460,7 +1468,7 @@ function runToolsTransformation({
1460
1468
  type: "finish",
1461
1469
  finishReason: chunk.finishReason,
1462
1470
  logprobs: chunk.logprobs,
1463
- usage: calculateTokenUsage(chunk.usage)
1471
+ usage: calculateCompletionTokenUsage(chunk.usage)
1464
1472
  });
1465
1473
  break;
1466
1474
  }