AI SDKのstreamText
を使うと色んなモデルを統合的に扱えるよ、という記事を書きました。この記事ではOpenAIの場合を書きます。
現行インターフェース
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const openaiChatStream:ChatStreamFunction = async({model, messages}) => {
const params = {
model: model,
stream: true,
messages,
}
const response = await openai.chat.completions.create(params as any)
return OpenAIStream(response as any)
}
メッセージに画像が含まれる時は、下記のようにします。
content = [
{ type: 'text', text: message },
{ type: 'image_url', image_url: { url: data!.imageUrl } }
];
新インターフェース
前回の記事のGoogleやAnthropicの場合と同様の記述となります。
import { OpenAI } from 'ai/openai';
const open = new OpenAI({ apiKey: process.env.OPENAI_API_KEY || ''});
const openaiChatStream:ChatStreamFunction = async({model, messages}) => {
const result = await experimental_streamText({
model: openai.chat(model),
messages: messages as ExperimentalMessage[],
});
return result.toAIStream();
}
メッセージに画像が含まれる時は、下記のようにします。
content = [
{ type: 'text', text: message },
{ type: 'image', image: new URL(data!.imageUrl) }
];
追記
更に新しいインターフェースができたようなので別記事にしました。