VercelのAI SDKを使った処理の記事を書いたばかりですが、なんかまた新しいインターフェースが増えているようです。積極的に開発されているライブラリーを使い、かつexperimentalな機能を使うと更新が多くて大変ですが、他の人も苦労していると信じて、別記事として記載します。
結論として、タイトルに書いた各ベンダーのモデルについて、こんな感じで呼び出せるようになります。めちゃめちゃシンプルですね。
const aiChatModel:LanguageModelV1 = aiChatModelFactory(modelData)
const result = await experimental_streamText({
    model: aiChatModel, 
    messages: messages as ExperimentalMessage[], 
})
return new StreamingTextResponse(result.toAIStream())
MaxTokensなどを指定する場合はexperimental_streamTextの引数に設定します。
ここで、aiChatModelFactoryは下記のように記述しています。
function aiChatModelFactory(model: ChatModel):LanguageModelV1 {
    // key is actually ModelProvider
    const providerMap:{[key:string]:LanguageModelV1} = {
        'openai': openai.chat(model.sdkModelValue),
        'google': google.chat(model.sdkModelValue),
        'fireworksai': fireworks.chat(model.sdkModelValue),
        'groq': groq.chat(model.sdkModelValue),
        'perplexity': perplexity.chat(model.sdkModelValue),
        'anthropic': anthropic.chat(model.sdkModelValue),
        'mistral': mistral.chat(model.sdkModelValue),
    }
    const aiChatModel = providerMap[model.provider as string]
    if (!aiChatModel) {
        console.error('unexpected model', model)
        throw new Error('unexpected request')
    }
    return aiChatModel
}
それぞれのモデルは、下記のように定義されています。見ての通り、Fireworks.ai、Groq、PerplexityについてはOpenAIの互換インターフェースを使っています。それぞれ定められた環境変数を設定しておくことで、openai、googleなどはショートハンドなオブジェクトを利用することもできますが、ここではすべて明示的に初期化しています。
import { createOpenAI } from '@ai-sdk/openai';
import { createMistral } from '@ai-sdk/mistral';
import { createGoogleGenerativeAI } from '@ai-sdk/google';
import { createAnthropic } from '@ai-sdk/anthropic';
const openai = createOpenAI({ 
    apiKey: process.env.OPENAI_API_KEY, 
});
const fireworks = createOpenAI({
    apiKey: process.env.FIREWORKS_API_KEY,
    baseURL: 'https://api.fireworks.ai/inference/v1',
});
const groq = createOpenAI({
    apiKey: process.env.GROQ_API_KEY,
    baseURL: 'https://api.groq.com/openai/v1',
});
const perplexity = createOpenAI({
    apiKey: process.env.PERPLEXITY_API_KEY,
    baseURL: 'https://api.perplexity.ai/',
});
const anthropic = createAnthropic({
    apiKey: process.env.ANTHROPIC_API_KEY,
});
const google = createGoogleGenerativeAI({ 
    apiKey: process.env.GOOGLE_API_KEY,
});
const mistral = createMistral({ 
    apiKey: process.env.MISTRAL_API_KEY,
});
ちなみに追加のプロバイダーを定義する方法も用意されています。今書こうとしていますが、ちょっと記述量が多くなりそうな雰囲気です。