8月2日、Zack Proserが「Rightsizing My Agent Spend: From Opus to DeepSeek V4 Flash…」と題した記事を公開した。モデル設定を1行書き換えるだけで週150ドルのAPIコストが数ドルに落ちた——そう聞くと単純な話に思えるが、実際には「1行」に辿り着く前に18マイナーバージョンの一括アップグレードと、無音で発生する3種の障害が待ち受けていた。
週150ドルのAPIコストが動機になった
Zack ProserはSlackから操作する11本の単機能ボットを構築していた。各ボットはそれぞれ独立したリポジトリを持ち、すべてClaude Opus(Anthropicのフラッグシップモデル)で動いていた。
問題はコストだった。ツール呼び出しの多いターン、1日に複数ボットの起動、ドラフト全文を2回読む批評ループ——そういった実際の使い方をすると、Anthropicのクレジット消費が週150ドルを超えた。個人事業主にとって無視できない金額であり、売上ではなく利便性に払っていると判断し、大半のボットを停止。手作業に戻っていた。
この記事はその fleet を再稼働させるために何をしたかの記録だ。
モデルを1行変えてコストが96分の1に
移行先はDeepSeek V4 Flash。Vercel AI Gateway経由で利用する。
価格差はゲートウェイのモデルカタログから直接引用すると、入力で38倍、出力で96倍安い。週150ドルの fleet が一桁ドルに収まる計算になる。
コード上の変更はこれだけだ:
export default defineAgent({
model: "deepseek/deepseek-v4-flash-0731",
compaction: { thresholdPercent: 0.85 },
});
Vercel AI Gatewayは312モデルを1つの認証・1つのインターフェースで束ねている。ベンダー切り替えがSDKの差し替えや新しいAPIキーの取得ではなく、設定ファイルの1行変更で済む。5本のボットがAnthropicのSDKを直接呼び出していたが、Gateway経由にすることでプロバイダー依存を削除できた。
安さだけでなく、エージェントループが必要とするツール呼び出し・推論・暗黙キャッシュの3つをすべてサポートし、コンテキストウィンドウは1M tokens。ツールが呼べないモデルはループの主体が tool-calling であるこの fleet では使い物にならないため、この点は重要な確認事項だった。
ローカル実行との比較も済ませた
DeepSeek V4 Flashはm5 Max(128GB統合メモリ)上でも動く。80.76 GiBの量子化版がほぼメモリを埋める形で動作する。
Zack Proserはこれを信用せず、60回の独立したコーディング実行でベンチマークを取った。ローカルのDeepSeek、Gateway経由のDeepSeek、Claude Sonnet 5を比較。12の実リポジトリタスク、スコアラーは隠蔽、正確な課金も記録した。
結果:ローカルとAPI経由の品質に統計的な差はなかった。Strict acceptanceはローカル8/20、API経由9/20。ペア比較で両者を分離できなかった。差が出たのは速度で、ローカルの中央値20分に対しAPI経由は8.7分だった。品質は同等、速度が違う。
Fleet にはAPI経由を使う(Slackで眠っている間も動かす必要があるため)。自分のリポジトリでのコーディング作業はローカルで動かす(レイテンシは自分の問題であり、課金は発生しない)という使い分けになった。
「1行の変更」では終わらなかった部分
モデルの差し替えよりも手がかかったのがプラットフォーム側の作業だった。
eveのバージョン問題。 最初のデプロイが即座に失敗した:
Unsupported Eve version detected (eve@0.11.10).
Please update to version 0.18.0 or later.
ここでいう「eve」はVercelが提供するエージェント構築フレームワーク(Vercel AI SDKのエージェント向けランタイム層)を指す。ホスト側が要求する最低バージョンが引き上げられており、11本のボットはすべて0.11.6に固定されていた。モデル設定以前に全ボットがデプロイ不可の状態だった。現行は0.29.4、18マイナーバージョンの一括アップグレードが必要になった。
実際の破壊的変更は3点だった:
- **
needsApproval→approval**(eve 0.14.0):9ボット21箇所の純粋なリネーム - **
ExperimentalWorkflow→experimental_workflow()**(0.17.0):オーケストレーター1ファイル - Sandboxの
runtimeキー削除:1ファイル
教訓として「チェンジログを読んだうえで、自分のコードに対してgrepで該当箇所を確認してから判断すること」と述べている。派手に見えた変更が無関係で、ビルドを壊した変更はリリースノートで目立たなかった。typecheckで初めて発覚した。
チーム移行による静かな障害。 全ボットを1つのVercelチームに統合した際に、3つの問題が無音で発生した:
- Slackが止まった:Vercel ConnectのコネクターはチームスコープのためSlackイベントが届かなくなる。アプリはデプロイ成功・ヘルスチェック200を返すが、メッセージが消える
- Sandboxテンプレートが孤立:移行前のビルドのテンプレートが残存し、後続ビルドが全失敗
- GitリンクがオーナーIDで切れた:GitHub orgを移動したリポジトリのオーナーIDが古いままになり、1ヶ月以上自動デプロイが止まっていた
「ヘルスチェックが200を返すことはアプリが起動していることしか示さない。何かがアプリに届いているかどうかは別の話だ」とZack Proserは指摘する。
失ったもの
正直なコストとして1点だけ挙げている。ブログボットはドラフトを2つのコールドリーダーで評価しており、意図的にClaudeとGPTの異なるベンダーを使っていた。自分の出力を自分で採点しないための設計だ。DeepSeekに統合したことでV4 ProとV4 Flashという同系列の2モデルになり、独立性が下がった。環境変数で別ベンダーに切り替えられるようにはしているが、今はコストと引き換えにこの独立性を諦めている。
結果
11ボット全てがdeepseek/deepseek-v4-flash-0731に移行し、週150ドル超から数ドルへ。11ファイルで文字列を1つ変えた結果だ。
詳細はRightsizing My Agent Spend: From Opus to DeepSeek V4 Flash…を参照していただきたい。