cheapaimodel

Vercel AI SDK

OpenAI互換プロバイダーで、Vercel AI SDKからcheapaimodelのモデルを使います。

コピー

AI SDKは、@ai-sdk/openai-compatibleプロバイダーでOpenAI互換サービスに接続します。cheapaimodel用のプロバイダーを1つ作成し、そのモデルをgenerateText、streamTextなどのAI SDK関数に渡します。

AI SDKの設定項目値
Base URLbaseURLhttps://api.cheapaimodel.ai/v1
APIキーapiKeyコンソールのAPIキーページで発行したキー
モデルIDcheapaimodel(modelId)deepseek-v4-1-flash、またはモデルカタログにある任意のID

設定

ターミナル
npm install ai @ai-sdk/openai-compatible
cheapaimodel.ts
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";

export const cheapaimodel = createOpenAICompatible({
  name: "cheapaimodel",
  baseURL: "https://api.cheapaimodel.ai/v1",
  apiKey: process.env.CHEAPAIMODEL_API_KEY,
  includeUsage: true, // ストリーミングのレスポンスでもトークン使用量を返す
});
generate.ts
import { generateText } from "ai";
import { cheapaimodel } from "./cheapaimodel";

const { text } = await generateText({
  model: cheapaimodel("deepseek-v4-1-flash"),
  prompt: "Explain recursion in one sentence.",
});
console.log(text);

このプロバイダーは/v1/chat/completionsにリクエストを送ります。Next.jsのRoute Handlerでも使い方は同じで、modelにcheapaimodel("deepseek-v4-1-flash")を渡します。

ストリーミング

stream.ts
import { streamText } from "ai";
import { cheapaimodel } from "./cheapaimodel";

const result = streamText({
  model: cheapaimodel("deepseek-v4-1-flash"),
  prompt: "Write a haiku about rivers.",
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}
console.log("\nTokens:", (await result.usage).totalTokens);

よくある間違い

  • Unauthenticated request to AI Gateway. model: "deepseek-v4-1-flash"のように、モデルを単なる文字列で渡しています。AI SDKは文字列のモデル指定をcheapaimodelではなくVercel AI Gatewayに送ります。cheapaimodel("deepseek-v4-1-flash")を渡してください。
  • Not FoundまたはInvalid URL (POST /v1/chat/completions/chat/completions)。 baseURLに/v1がないか、エンドポイントのパスまで含めています。baseURLはhttps://api.cheapaimodel.ai/v1に設定してください。/chat/completionsはプロバイダーが自動で付加します。
  • ストリーミングの呼び出しでトークン使用量がundefinedになる。 OpenAI互換プロバイダーがストリーミングで使用量を要求するのは、includeUsage: trueを設定した場合だけです。プロバイダーの設定から削除しないでください。
  • @ai-sdk/openaiでマルチターン会話が動作しない。 @ai-sdk/openaiのcreateOpenAIにもcheapaimodelのBase URLを設定できますが、デフォルトのopenai(modelId)はResponses APIを呼び出します。SDKが返した過去の返答をmessagesに入れて渡すと、本文ではなくitem_referenceのIDとして送られるため、サーバー側にそのレスポンスが保存されていないと動作しません。上記のOpenAI互換プロバイダーか、openai.chat(modelId)を使ってください。
コピー
開く

このページの内容