ai 3.1.15 → 3.1.16

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/dist/index.d.mts CHANGED
@@ -39,6 +39,18 @@ Warning from the model provider for this call. The call will proceed, but e.g.
39
39
  some settings might not be supported, which can lead to suboptimal results.
40
40
  */
41
41
  type CallWarning = LanguageModelV1CallWarning;
42
+ /**
43
+ Tool choice for the generation. It supports the following settings:
44
+
45
+ - `auto` (default): the model can choose whether and which tools to call.
46
+ - `required`: the model must call a tool. It can choose which tool to call.
47
+ - `none`: the model must not call tools
48
+ - `{ type: 'tool', tooName: string (typed) }`: the model must call the specified tool
49
+ */
50
+ type CoreToolChoice<TOOLS extends Record<string, unknown>> = 'auto' | 'none' | 'required' | {
51
+ type: 'tool';
52
+ toolName: keyof TOOLS;
53
+ };
42
54
 
43
55
  /**
44
56
  Embed a value using an embedding model. The type of the value is defined by the embedding model.
@@ -820,7 +832,7 @@ If set and supported by the model, calls will generate deterministic results.
820
832
  @returns
821
833
  A result object that contains the generated text, the results of the tool calls, and additional information.
822
834
  */
823
- declare function generateText<TOOLS extends Record<string, CoreTool>>({ model, tools, system, prompt, messages, maxRetries, abortSignal, ...settings }: CallSettings & Prompt & {
835
+ declare function generateText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, ...settings }: CallSettings & Prompt & {
824
836
  /**
825
837
  The language model to use.
826
838
  */
@@ -829,6 +841,10 @@ The language model to use.
829
841
  The tools that the model can call. The model needs to support calling tools.
830
842
  */
831
843
  tools?: TOOLS;
844
+ /**
845
+ The tool choice strategy. Default: 'auto'.
846
+ */
847
+ toolChoice?: CoreToolChoice<TOOLS>;
832
848
  }): Promise<GenerateTextResult<TOOLS>>;
833
849
  /**
834
850
  The result of a `generateText` call.
@@ -928,7 +944,7 @@ If set and supported by the model, calls will generate deterministic results.
928
944
  @return
929
945
  A result object for accessing different stream types and additional information.
930
946
  */
931
- declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, system, prompt, messages, maxRetries, abortSignal, onFinish, ...settings }: CallSettings & Prompt & {
947
+ declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, onFinish, ...settings }: CallSettings & Prompt & {
932
948
  /**
933
949
  The language model to use.
934
950
  */
@@ -938,6 +954,10 @@ The tools that the model can call. The model needs to support calling tools.
938
954
  */
939
955
  tools?: TOOLS;
940
956
  /**
957
+ The tool choice strategy. Default: 'auto'.
958
+ */
959
+ toolChoice?: CoreToolChoice<TOOLS>;
960
+ /**
941
961
  Callback that is called when the LLM response and all request tool executions
942
962
  (for tools that have an `execute` function) are finished.
943
963
  */
@@ -2324,4 +2344,4 @@ declare class StreamingTextResponse extends Response {
2324
2344
  constructor(res: ReadableStream, init?: ResponseInit, data?: StreamData);
2325
2345
  }
2326
2346
 
2327
- export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantMessage, AssistantResponse, AssistantStatus, CallWarning, ChatRequest, ChatRequestOptions, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolMessage, CoreUserMessage, CreateMessage, DataContent, DataMessage, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, Function, FunctionCall$1 as FunctionCall, FunctionCallHandler, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, IdGenerator, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, JSONValue, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, Message$1 as Message, MistralStream, ObjectStreamPart, ObjectStreamPartInput, OpenAIStream, OpenAIStreamCallbacks, ReactResponseRow, ReplicateStream, RequestOptions, StreamData, StreamObjectResult, StreamPart, StreamString, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, Tool, ToolCall, ToolCallHandler, ToolCallPart, ToolCallPayload, ToolChoice, ToolContent, ToolInvocation, ToolResultPart, UseAssistantOptions, UseChatOptions, UseCompletionOptions, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createChunkDecoder, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_StreamingReactResponse, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, formatStreamPart, generateId, generateObject, generateText, isStreamStringEqualToType, generateId as nanoid, parseStreamPart, readDataStream, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2347
+ export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantMessage, AssistantResponse, AssistantStatus, CallWarning, ChatRequest, ChatRequestOptions, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, CreateMessage, DataContent, DataMessage, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, Function, FunctionCall$1 as FunctionCall, FunctionCallHandler, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, IdGenerator, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, JSONValue, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, Message$1 as Message, MistralStream, ObjectStreamPart, ObjectStreamPartInput, OpenAIStream, OpenAIStreamCallbacks, ReactResponseRow, ReplicateStream, RequestOptions, StreamData, StreamObjectResult, StreamPart, StreamString, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, Tool, ToolCall, ToolCallHandler, ToolCallPart, ToolCallPayload, ToolChoice, ToolContent, ToolInvocation, ToolResultPart, UseAssistantOptions, UseChatOptions, UseCompletionOptions, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createChunkDecoder, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_StreamingReactResponse, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, formatStreamPart, generateId, generateObject, generateText, isStreamStringEqualToType, generateId as nanoid, parseStreamPart, readDataStream, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
package/dist/index.d.ts CHANGED
@@ -39,6 +39,18 @@ Warning from the model provider for this call. The call will proceed, but e.g.
39
39
  some settings might not be supported, which can lead to suboptimal results.
40
40
  */
41
41
  type CallWarning = LanguageModelV1CallWarning;
42
+ /**
43
+ Tool choice for the generation. It supports the following settings:
44
+
45
+ - `auto` (default): the model can choose whether and which tools to call.
46
+ - `required`: the model must call a tool. It can choose which tool to call.
47
+ - `none`: the model must not call tools
48
+ - `{ type: 'tool', tooName: string (typed) }`: the model must call the specified tool
49
+ */
50
+ type CoreToolChoice<TOOLS extends Record<string, unknown>> = 'auto' | 'none' | 'required' | {
51
+ type: 'tool';
52
+ toolName: keyof TOOLS;
53
+ };
42
54
 
43
55
  /**
44
56
  Embed a value using an embedding model. The type of the value is defined by the embedding model.
@@ -820,7 +832,7 @@ If set and supported by the model, calls will generate deterministic results.
820
832
  @returns
821
833
  A result object that contains the generated text, the results of the tool calls, and additional information.
822
834
  */
823
- declare function generateText<TOOLS extends Record<string, CoreTool>>({ model, tools, system, prompt, messages, maxRetries, abortSignal, ...settings }: CallSettings & Prompt & {
835
+ declare function generateText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, ...settings }: CallSettings & Prompt & {
824
836
  /**
825
837
  The language model to use.
826
838
  */
@@ -829,6 +841,10 @@ The language model to use.
829
841
  The tools that the model can call. The model needs to support calling tools.
830
842
  */
831
843
  tools?: TOOLS;
844
+ /**
845
+ The tool choice strategy. Default: 'auto'.
846
+ */
847
+ toolChoice?: CoreToolChoice<TOOLS>;
832
848
  }): Promise<GenerateTextResult<TOOLS>>;
833
849
  /**
834
850
  The result of a `generateText` call.
@@ -928,7 +944,7 @@ If set and supported by the model, calls will generate deterministic results.
928
944
  @return
929
945
  A result object for accessing different stream types and additional information.
930
946
  */
931
- declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, system, prompt, messages, maxRetries, abortSignal, onFinish, ...settings }: CallSettings & Prompt & {
947
+ declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, onFinish, ...settings }: CallSettings & Prompt & {
932
948
  /**
933
949
  The language model to use.
934
950
  */
@@ -938,6 +954,10 @@ The tools that the model can call. The model needs to support calling tools.
938
954
  */
939
955
  tools?: TOOLS;
940
956
  /**
957
+ The tool choice strategy. Default: 'auto'.
958
+ */
959
+ toolChoice?: CoreToolChoice<TOOLS>;
960
+ /**
941
961
  Callback that is called when the LLM response and all request tool executions
942
962
  (for tools that have an `execute` function) are finished.
943
963
  */
@@ -2324,4 +2344,4 @@ declare class StreamingTextResponse extends Response {
2324
2344
  constructor(res: ReadableStream, init?: ResponseInit, data?: StreamData);
2325
2345
  }
2326
2346
 
2327
- export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantMessage, AssistantResponse, AssistantStatus, CallWarning, ChatRequest, ChatRequestOptions, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolMessage, CoreUserMessage, CreateMessage, DataContent, DataMessage, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, Function, FunctionCall$1 as FunctionCall, FunctionCallHandler, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, IdGenerator, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, JSONValue, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, Message$1 as Message, MistralStream, ObjectStreamPart, ObjectStreamPartInput, OpenAIStream, OpenAIStreamCallbacks, ReactResponseRow, ReplicateStream, RequestOptions, StreamData, StreamObjectResult, StreamPart, StreamString, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, Tool, ToolCall, ToolCallHandler, ToolCallPart, ToolCallPayload, ToolChoice, ToolContent, ToolInvocation, ToolResultPart, UseAssistantOptions, UseChatOptions, UseCompletionOptions, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createChunkDecoder, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_StreamingReactResponse, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, formatStreamPart, generateId, generateObject, generateText, isStreamStringEqualToType, generateId as nanoid, parseStreamPart, readDataStream, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2347
+ export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantMessage, AssistantResponse, AssistantStatus, CallWarning, ChatRequest, ChatRequestOptions, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, CreateMessage, DataContent, DataMessage, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, Function, FunctionCall$1 as FunctionCall, FunctionCallHandler, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, IdGenerator, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, JSONValue, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, Message$1 as Message, MistralStream, ObjectStreamPart, ObjectStreamPartInput, OpenAIStream, OpenAIStreamCallbacks, ReactResponseRow, ReplicateStream, RequestOptions, StreamData, StreamObjectResult, StreamPart, StreamString, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, Tool, ToolCall, ToolCallHandler, ToolCallPart, ToolCallPayload, ToolChoice, ToolContent, ToolInvocation, ToolResultPart, UseAssistantOptions, UseChatOptions, UseCompletionOptions, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createChunkDecoder, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_StreamingReactResponse, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, formatStreamPart, generateId, generateObject, generateText, isStreamStringEqualToType, generateId as nanoid, parseStreamPart, readDataStream, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
package/dist/index.js CHANGED
@@ -1265,6 +1265,33 @@ var StreamObjectResult = class {
1265
1265
  };
1266
1266
  var experimental_streamObject = streamObject;
1267
1267
 
1268
+ // core/util/is-non-empty-object.ts
1269
+ function isNonEmptyObject(object) {
1270
+ return object != null && Object.keys(object).length > 0;
1271
+ }
1272
+
1273
+ // core/prompt/prepare-tools-and-tool-choice.ts
1274
+ function prepareToolsAndToolChoice({
1275
+ tools,
1276
+ toolChoice
1277
+ }) {
1278
+ if (!isNonEmptyObject(tools)) {
1279
+ return {
1280
+ tools: void 0,
1281
+ toolChoice: void 0
1282
+ };
1283
+ }
1284
+ return {
1285
+ tools: Object.entries(tools).map(([name, tool2]) => ({
1286
+ type: "function",
1287
+ name,
1288
+ description: tool2.description,
1289
+ parameters: convertZodToJSONSchema(tool2.parameters)
1290
+ })),
1291
+ toolChoice: toolChoice == null ? { type: "auto" } : typeof toolChoice === "string" ? { type: toolChoice } : { type: "tool", toolName: toolChoice.toolName }
1292
+ };
1293
+ }
1294
+
1268
1295
  // core/generate-text/tool-call.ts
1269
1296
  var import_provider6 = require("@ai-sdk/provider");
1270
1297
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
@@ -1306,6 +1333,7 @@ function parseToolCall({
1306
1333
  async function generateText({
1307
1334
  model,
1308
1335
  tools,
1336
+ toolChoice,
1309
1337
  system,
1310
1338
  prompt,
1311
1339
  messages,
@@ -1320,12 +1348,7 @@ async function generateText({
1320
1348
  return model.doGenerate({
1321
1349
  mode: {
1322
1350
  type: "regular",
1323
- tools: tools == null ? void 0 : Object.entries(tools).map(([name, tool2]) => ({
1324
- type: "function",
1325
- name,
1326
- description: tool2.description,
1327
- parameters: convertZodToJSONSchema(tool2.parameters)
1328
- }))
1351
+ ...prepareToolsAndToolChoice({ tools, toolChoice })
1329
1352
  },
1330
1353
  ...prepareCallSettings(settings),
1331
1354
  inputFormat: validatedPrompt.type,
@@ -1538,6 +1561,7 @@ function runToolsTransformation({
1538
1561
  async function streamText({
1539
1562
  model,
1540
1563
  tools,
1564
+ toolChoice,
1541
1565
  system,
1542
1566
  prompt,
1543
1567
  messages,
@@ -1552,12 +1576,7 @@ async function streamText({
1552
1576
  () => model.doStream({
1553
1577
  mode: {
1554
1578
  type: "regular",
1555
- tools: tools == null ? void 0 : Object.entries(tools).map(([name, tool2]) => ({
1556
- type: "function",
1557
- name,
1558
- description: tool2.description,
1559
- parameters: convertZodToJSONSchema(tool2.parameters)
1560
- }))
1579
+ ...prepareToolsAndToolChoice({ tools, toolChoice })
1561
1580
  },
1562
1581
  ...prepareCallSettings(settings),
1563
1582
  inputFormat: validatedPrompt.type,