Skip to content

Commit e025824

Browse files
authored
refactoring (ai): restructure provider-defined tools (#6808)
## Background Provider-defined tools need to access the tool definition and related types. However, these are currently defined in the `ai` package which creates a circular dependency and update problem. ## Summary * Move tool and model message definitions into `provider-utils`. * Update provider defined tools to use correct type definitions. ## Related Issues Prerequisite for #6807
1 parent 9ad0484 commit e025824

File tree

67 files changed

+1111
-1059
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1111
-1059
lines changed

‎.changeset/curvy-sloths-impress.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@ai-sdk/provider-utils': major
3+
---
4+
5+
refactoring (ai): restructure provider-defined tools

‎examples/ai-core/src/generate-text/anthropic-computer-use-editor.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ This is a test file.
1111
const result = await generateText({
1212
model: anthropic('claude-3-5-sonnet-20241022'),
1313
tools: {
14-
str_replace_editor: anthropic.tools.textEditor_20241022({
14+
str_replace_editor: anthropic.tools.textEditor_20250124({
1515
async execute({ command, path, old_str, new_str }) {
16-
console.log({ command, path, old_str, new_str });
1716
switch (command) {
1817
case 'view': {
1918
return editorContent;
@@ -32,6 +31,9 @@ This is a test file.
3231
}
3332
}
3433
},
34+
onInputAvailable: ({ input }) => {
35+
console.log('onInputAvailable', input);
36+
},
3537
}),
3638
},
3739
prompt: 'Update my README file to talk about AI.',

‎packages/ai/core/embed/embed-many.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { ProviderOptions } from '@ai-sdk/provider-utils';
12
import { prepareRetries } from '../../src/util/prepare-retries';
23
import { splitArray } from '../../src/util/split-array';
34
import { assembleOperationName } from '../telemetry/assemble-operation-name';
@@ -6,7 +7,7 @@ import { getTracer } from '../telemetry/get-tracer';
67
import { recordSpan } from '../telemetry/record-span';
78
import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';
89
import { TelemetrySettings } from '../telemetry/telemetry-settings';
9-
import { Embedding, EmbeddingModel, ProviderOptions } from '../types';
10+
import { Embedding, EmbeddingModel } from '../types';
1011
import { EmbedManyResult } from './embed-many-result';
1112

1213
/**

‎packages/ai/core/embed/embed.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
import { ProviderOptions } from '@ai-sdk/provider-utils';
12
import { prepareRetries } from '../../src/util/prepare-retries';
23
import { assembleOperationName } from '../telemetry/assemble-operation-name';
34
import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';
45
import { getTracer } from '../telemetry/get-tracer';
56
import { recordSpan } from '../telemetry/record-span';
67
import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';
78
import { TelemetrySettings } from '../telemetry/telemetry-settings';
8-
import { EmbeddingModel, ProviderOptions } from '../types';
9+
import { EmbeddingModel } from '../types';
910
import { EmbedResult } from './embed-result';
1011

1112
/**

‎packages/ai/core/generate-image/generate-image.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import {
1111
} from '../generate-text/generated-file';
1212
import { ImageGenerationWarning } from '../types/image-model';
1313
import { ImageModelResponseMetadata } from '../types/image-model-response-metadata';
14-
import { ProviderOptions } from '../types/provider-metadata';
1514
import { GenerateImageResult } from './generate-image-result';
15+
import { ProviderOptions } from '@ai-sdk/provider-utils';
1616

1717
/**
1818
Generates images using an image model.

‎packages/ai/core/generate-object/generate-object.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
import {
77
createIdGenerator,
88
InferSchema,
9+
ProviderOptions,
910
safeParseJSON,
1011
Schema,
1112
} from '@ai-sdk/provider-utils';
@@ -36,7 +37,7 @@ import {
3637
} from '../types/language-model';
3738
import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';
3839
import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
39-
import { ProviderMetadata, ProviderOptions } from '../types/provider-metadata';
40+
import { ProviderMetadata } from '../types/provider-metadata';
4041
import { LanguageModelUsage } from '../types/usage';
4142
import { GenerateObjectResult } from './generate-object-result';
4243
import { getOutputStrategy } from './output-strategy';

‎packages/ai/core/generate-object/stream-object.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
} from '@ai-sdk/provider';
99
import {
1010
createIdGenerator,
11+
ProviderOptions,
1112
type InferSchema,
1213
type Schema,
1314
} from '@ai-sdk/provider-utils';
@@ -43,7 +44,7 @@ import { TelemetrySettings } from '../telemetry/telemetry-settings';
4344
import { CallWarning, LanguageModel } from '../types/language-model';
4445
import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';
4546
import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
46-
import { ProviderMetadata, ProviderOptions } from '../types/provider-metadata';
47+
import { ProviderMetadata } from '../types/provider-metadata';
4748
import { LanguageModelUsage } from '../types/usage';
4849
import { getOutputStrategy, OutputStrategy } from './output-strategy';
4950
import { ObjectStreamPart, StreamObjectResult } from './stream-object-result';

‎packages/ai/core/generate-speech/generate-speech.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import {
55
detectMediaType,
66
} from '../../src/util/detect-media-type';
77
import { prepareRetries } from '../../src/util/prepare-retries';
8-
import { ProviderOptions } from '../types/provider-metadata';
98
import { SpeechWarning } from '../types/speech-model';
109
import { SpeechModelResponseMetadata } from '../types/speech-model-response-metadata';
1110
import { SpeechResult } from './generate-speech-result';
1211
import {
1312
DefaultGeneratedAudioFile,
1413
GeneratedAudioFile,
1514
} from './generated-audio-file';
15+
import { ProviderOptions } from '@ai-sdk/provider-utils';
1616

1717
/**
1818
Generates speech audio using a speech model.

‎packages/ai/core/generate-text/generate-text-result.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ReasoningPart } from '../prompt/content-part';
1+
import { ReasoningPart } from '@ai-sdk/provider-utils';
22
import { CallWarning, FinishReason, ProviderMetadata } from '../types';
33
import { Source } from '../types/language-model';
44
import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';

‎packages/ai/core/generate-text/generate-text.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ import {
33
LanguageModelV2Content,
44
LanguageModelV2ToolCall,
55
} from '@ai-sdk/provider';
6-
import { createIdGenerator, IdGenerator } from '@ai-sdk/provider-utils';
6+
import {
7+
createIdGenerator,
8+
IdGenerator,
9+
ProviderOptions,
10+
} from '@ai-sdk/provider-utils';
711
import { Tracer } from '@opentelemetry/api';
812
import { NoOutputSpecifiedError } from '../../src/error/no-output-specified-error';
913
import { asArray } from '../../src/util/as-array';
@@ -24,7 +28,7 @@ import { recordSpan } from '../telemetry/record-span';
2428
import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';
2529
import { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry';
2630
import { TelemetrySettings } from '../telemetry/telemetry-settings';
27-
import { LanguageModel, ProviderOptions, ToolChoice } from '../types';
31+
import { LanguageModel, ToolChoice } from '../types';
2832
import { addLanguageModelUsage, LanguageModelUsage } from '../types/usage';
2933
import { ContentPart } from './content-part';
3034
import { extractContentText } from './extract-content-text';

0 commit comments

Comments
 (0)