1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Vercel AI SDK 7移行チェックリスト:v6で壊れる破壊的変更と、本番エージェントに必要な承認・タイムアウト・観測

1
Last updated at Posted at 2026-06-29

Vercel AI SDK 7 production agent platform abstract

2026年6月25日、Vercelは「AI SDK 7」を公開した。公式は本リリースを "a major release for building production agents in TypeScript" と位置づけ、SDKが従来の "model calls and chat primitives" から "a broader agent platform" へ拡張されたと説明している(出典: AI SDK 7 is now available — Vercel)。

これはチャットUI向けライブラリの小幅アップデートではない。generateText / streamText の薄いラッパーとして使ってきたコードベースには、Node.js 22必須・ESM必須・主要オプションの改名という破壊的変更(メジャーバンプ)が入る。一方で、これまで自前で書いていた「ツール実行の承認」「タイムアウト」「OpenTelemetry連携」が標準機能に格上げされた。つまり移行コストと引き換えに、本番エージェントの運用負債が減るリリースだ。本記事はその両面を、移行で壊れる箇所と本番投入チェックの両方から整理する(数値・API名はすべて公式チェンジログ由来。手元で全コードを実行検証したものではないため、各自のリポジトリで codemod 適用後にビルドを通すこと)。

結論

確認項目 AI SDK 7での変化 移行時に直すこと
実行環境 Node.js 22 が最低要件 CI/本番ランタイムを Node 22 系へ。古い LTS のままだと起動しない
モジュール形式 ESM 必須(CommonJS require() 非対応) package.json"type": "module"requireimport
主要オプション名 systeminstructionsonFinishonEndfullStreamstream codemod npx @ai-sdk/codemod v7 で機械置換、差分を目視確認
ツール承認 tools 側 needsApprovaltoolApproval に再設計、承認リプレイを HMAC 署名 人間承認フローを toolApproval へ移植。引数改ざん対策が前提に入る
観測 OpenTelemetry が ai 本体から @ai-sdk/otel へ分離 OTel 連携は別パッケージ導入に切り替え
守備範囲 耐久実行 WorkflowAgent・タイムアウト・サンドボックスが標準 自前で書いていた運用コードを標準機能へ寄せられる

なぜ「チャット primitive」から「エージェント基盤」へ広げたのか

確認できる事実

公式チェンジログによれば、AI SDK 7 は機能群を Development / Execution / Observability / Multimodal の4領域で再構成している。本番運用に直結する Execution 領域には、次が明記されている(出典: Vercel changelog)。

  • ツール承認ポリシー: user-approval / auto-approve / auto-deny と、型付き関数による承認判定。
  • 承認リプレイの署名: 承認の再生(replay)を HMAC 署名で保護し、引数の改ざんを防ぐ。
  • WorkflowAgent: ステップ間に状態を永続化する、長時間・耐久実行向けのエージェント。
  • 第一級のタイムアウト: total / per-step / per-chunk / デフォルトツール / ツール別バジェット。
  • サンドボックス実行: コマンド実行・ストリーミング出力・環境変数をサポート。
  • HarnessAgent: Claude Code・Codex・Deep Agents・OpenCode・Pi など外部エージェントをラップする。

Observability 領域では、OpenTelemetry が ai 本体から切り出され、GenAI セマンティック規約に沿った span を出す専用パッケージ @ai-sdk/otel が用意された。レスポンス時間・ツール実行時間・tokens per second などの統計も取れる。

実務解釈

ここで効くのは「エージェントを本番で動かすと必ず自前実装になっていた3つ」が標準化された点だ。

  1. 承認(human-in-the-loop): 「DBを書き換えるツールは人間承認を挟む」をアプリ側で組んでいたチームは多い。これがポリシーとして宣言的に書け、しかも承認リプレイが署名されるので「承認後に引数を差し替える」攻撃面が塞がれる。エージェントに権限を渡すうえで、この署名は地味だが重要だ。
  2. タイムアウト: LLM呼び出しやツール実行が無限に伸びる事故は、per-step / per-tool バジェットで予算化できる。コスト暴走と応答ハングの両方に効く。
  3. 観測: OTel が標準規約の span で出るため、既存の APM/トレース基盤にそのまま載る。「なぜこのエージェントは5ステップも回したのか」を後から追える。

裏を返せば、これらをまだ自前で書いていないチームは、v7移行と同時に本番ガードレールを入れ直す好機ということになる。

v6 から壊れるもの:移行で必ず触る破壊的変更

確認できる事実

公式が挙げる移行要件と API 改名は次のとおり(出典: Vercel changelog)。

ランタイム / モジュール要件

項目 要件
Node.js 22 以上(native fetch、改善された AsyncLocalStorage のため)
モジュール ESM 必須。import 構文または .mjs。CommonJS require() は非対応
package.json "type": "module" を指定

API の改名・移動

v6 v7
system オプション instructions
onFinish onEnd
StreamTextResult.fullStream stream
tools の needsApproval 関数/エージェント側の toolApproval
ai 内蔵の OpenTelemetry @ai-sdk/otel(別パッケージ)

公式は移行の大半を自動化する codemod とスキルを案内している。

# 破壊的変更の大半を自動置換
npx @ai-sdk/codemod v7

# v6→v7 移行スキル(手順をガイド)
npx skills add vercel/ai --skill migrate-ai-sdk-v6-to-v7

なお 6月29日時点での最新は ai@7.0.6(出典: vercel/ai Releases — GitHub)。メジャー直後はパッチが速いので、移行は最新パッチに合わせる前提で進めたい。

実務解釈

  • codemod は「掛けて終わり」ではないsysteminstructions のような単純改名は機械置換が効くが、fullStreamstream のようにストリーム消費側のロジックが絡む箇所は、差分を必ず目視レビューする。型エラーが出る場所が実質の移行ToDoリストになる。
  • Node 22 / ESM 必須が一番の地雷。アプリ本体より、Lambda やコンテナのベースイメージ、require 前提の小さなユーティリティ、CommonJS のままの社内パッケージが先に折れる。移行はライブラリ差し替えよりランタイムとモジュール形式の棚卸しから始めるのが安全だ。
  • OTel を使っているなら、ai 本体から消えている前提で @ai-sdk/otel の導入を移行PRに必ず含める。「いつの間にかトレースが出なくなっていた」を防ぐ。

実装チェックリスト

移行前(棚卸し)

  • 本番・CI のランタイムを Node.js 22 系に上げられるか確認した
  • package.json"type": "module" を入れ、require() 依存を洗い出した
  • OpenTelemetry を使っているか、使っているなら @ai-sdk/otel 導入を移行スコープに入れた

移行(自動 + 目視)

  • npx @ai-sdk/codemod v7 を適用し、生成された差分をレビューした
  • systeminstructionsonFinishonEndfullStreamstream の置換漏れを型エラーで潰した
  • ストリーム消費(fullStreamstream)周りの挙動を手元で動かして確認した

本番ガードレール(v7で標準化された機能の投入)

  • 副作用のあるツールに toolApproval ポリシーを設定した(人間承認 or auto-deny)
  • per-step / per-tool のタイムアウト・バジェットを設定し、暴走時の上限を決めた
  • WorkflowAgent で耐久実行が必要な処理(長時間ジョブ)を切り分けた
  • OTel span が既存のトレース基盤に出ていることを確認した

失敗パターン

パターン1:ライブラリだけ上げてランタイムを放置 → Node 22 / ESM 必須を見落とし、本番デプロイで起動しない。対策:移行PRの最初のコミットを「ランタイムとモジュール形式の更新」にし、アプリコードより先に通す。

パターン2:codemod を信用しきってストリーム周りを壊すfullStreamstream の改名は機械置換できても、消費側のロジックがズレて出力が欠ける。対策:ストリーミングを使う画面・APIは必ず手動で一度動かして確認する。

パターン3:承認とタイムアウトを「あとで」にする → v7移行を機能改名の置換だけで終わらせ、本番ガードレール(toolApproval・タイムアウト)を入れないと、エージェントの権限・コスト事故は移行前と変わらない。対策:移行と同じPRで、副作用ツールへの承認とタイムアウト設定をセットにする。

パターン4:OTel の消失に気づかないai 本体からトレースが外れたことに気づかず、観測だけ静かに欠ける。対策:移行後にトレースが出続けているかをダッシュボードで確認するチェックを入れる。

参考リンク

この記事を書いた人✏️@YushiYamamoto
ITPRODX.com代表 / AIアーキテクト
Next.js / TypeScript / n8nを活用した自律型アーキテクチャ設計を専門としています。
日々の自動化の検証結果や、ビジネス側の視点(ROI等)に関するより深い考察は、以下の公式サイトおよびnoteで発信しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?