11import { gateway } from '@ai-sdk/gateway' ;
22import {
3- EmbeddingModelV2 ,
43 EmbeddingModelV3 ,
5- LanguageModelV2 ,
64 LanguageModelV3 ,
75 ProviderV3 ,
8- SpeechModelV2 ,
96 SpeechModelV3 ,
10- TranscriptionModelV2 ,
117 TranscriptionModelV3 ,
128} from '@ai-sdk/provider' ;
139import { UnsupportedModelVersionError } from '../error' ;
1410import { EmbeddingModel } from '../types/embedding-model' ;
1511import { LanguageModel } from '../types/language-model' ;
1612import { SpeechModel } from '../types/speech-model' ;
1713import { TranscriptionModel } from '../types/transcription-model' ;
18-
19- function transformToV3LanguageModel ( model : LanguageModelV2 ) : LanguageModelV3 {
20- return new Proxy ( model , {
21- get ( target , prop : keyof LanguageModelV2 ) {
22- if ( prop === 'specificationVersion' ) return 'v3' ;
23- return target [ prop ] ;
24- } ,
25- } ) as unknown as LanguageModelV3 ;
26- }
27-
28- function transformToV3EmbeddingModel < VALUE > (
29- model : EmbeddingModelV2 < VALUE > ,
30- ) : EmbeddingModelV3 < VALUE > {
31- return new Proxy ( model , {
32- get ( target , prop : keyof EmbeddingModelV2 < VALUE > ) {
33- if ( prop === 'specificationVersion' ) return 'v3' ;
34- return target [ prop ] ;
35- } ,
36- } ) as unknown as EmbeddingModelV3 < VALUE > ;
37- }
38-
39- function transformToV3TranscriptionModel (
40- model : TranscriptionModelV2 ,
41- ) : TranscriptionModelV3 {
42- return new Proxy ( model , {
43- get ( target , prop : keyof TranscriptionModelV2 ) {
44- if ( prop === 'specificationVersion' ) return 'v3' ;
45- return target [ prop ] ;
46- } ,
47- } ) as unknown as TranscriptionModelV3 ;
48- }
49-
50- function transformToV3SpeechModel ( model : SpeechModelV2 ) : SpeechModelV3 {
51- return new Proxy ( model , {
52- get ( target , prop : keyof SpeechModelV2 ) {
53- if ( prop === 'specificationVersion' ) return 'v3' ;
54- return target [ prop ] ;
55- } ,
56- } ) as unknown as SpeechModelV3 ;
57- }
14+ import { asEmbeddingModelV3 } from './as-embedding-model-v3' ;
15+ import { asLanguageModelV3 } from './as-language-model-v3' ;
16+ import { asSpeechModelV3 } from './as-speech-model-v3' ;
17+ import { asTranscriptionModelV3 } from './as-transcription-model-v3' ;
5818
5919export function resolveLanguageModel ( model : LanguageModel ) : LanguageModelV3 {
6020 if ( typeof model !== 'string' ) {
@@ -69,10 +29,8 @@ export function resolveLanguageModel(model: LanguageModel): LanguageModelV3 {
6929 modelId : unsupportedModel . modelId ,
7030 } ) ;
7131 }
72- if ( model . specificationVersion === 'v2' ) {
73- return transformToV3LanguageModel ( model ) ;
74- }
75- return model ;
32+
33+ return asLanguageModelV3 ( model ) ;
7634 }
7735
7836 return getGlobalProvider ( ) . languageModel ( model ) ;
@@ -93,11 +51,8 @@ export function resolveEmbeddingModel<VALUE = string>(
9351 modelId : unsupportedModel . modelId ,
9452 } ) ;
9553 }
96- if ( model . specificationVersion === 'v2' ) {
97- return transformToV3EmbeddingModel ( model ) ;
98- }
9954
100- return model ;
55+ return asEmbeddingModelV3 ( model ) ;
10156 }
10257
10358 // TODO AI SDK 6: figure out how to cleanly support different generic types
@@ -121,10 +76,7 @@ export function resolveTranscriptionModel(
12176 modelId : unsupportedModel . modelId ,
12277 } ) ;
12378 }
124- if ( model . specificationVersion === 'v2' ) {
125- return transformToV3TranscriptionModel ( model ) ;
126- }
127- return model ;
79+ return asTranscriptionModelV3 ( model ) ;
12880 }
12981
13082 return getGlobalProvider ( ) . transcriptionModel ?.( model ) ;
@@ -145,10 +97,7 @@ export function resolveSpeechModel(
14597 modelId : unsupportedModel . modelId ,
14698 } ) ;
14799 }
148- if ( model . specificationVersion === 'v2' ) {
149- return transformToV3SpeechModel ( model ) ;
150- }
151- return model ;
100+ return asSpeechModelV3 ( model ) ;
152101 }
153102
154103 return getGlobalProvider ( ) . speechModel ?.( model ) ;
0 commit comments