>_tech-draft
Vercelのアイコン
Vercel
動画公開日
タイトル

Build an Agent with Vercel

再生時間

57分 41秒

Vercel AI SDK 6 Beta徹底解説:LLMエージェント開発を加速する新機能

ポイント

  • Vercel AI SDK 6 Betaは、大規模言語モデル(LLM)エージェント開発を加速するAgent Abstractionなどの新機能を導入しました。
  • `maxSteps`によるループ実行、`stopWhen`による停止条件の柔軟な制御、`prepareStep`によるステップごとの動的な振る舞い調整が可能です。
  • これにより、開発者はLLMを用いたより柔軟でパワフルなエージェントアプリケーションを効率的に構築できるようになります。

Vercel AI SDKのコミュニティイベントへようこそ。 本記事では、VercelのAI SDKチームに所属するNicoと、フィールドエンジニアのWillが紹介するAI SDK 6 Betaの最新機能について、詳しく解説していきます。AI SDK 6 Betaでは、既存の低レベルプリミティブを基盤としつつ、さらに高度なエージェント開発を可能にするための重要な新機能が導入されました。

Vercel AI SDK 6 Betaの新機能概要

AI SDK 6 Betaでは、主に「Agent Abstraction(エージェント抽象化)」と「Tool Execution Approval(ツール実行承認)」という二つの主要機能が発表されました。これらの機能は、大規模言語モデル(LLM)を用いたアプリケーション開発において、より柔軟でパワフルな制御を可能にします。

本記事では、特にエージェント開発の進化に焦点を当て、その背景と主要な抽象化について掘り下げていきます。

Agent Abstraction(エージェント抽象化)の詳細

AI SDKは当初、約2年前にリリースされて以来、LLM上に構築するための最高レベルの低レベルプリミティブを提供することに注力してきました。具体的には、generateTextstreamTextgenerateObjectstreamObjectといった関数がその中心を担っていました。

しかし、AI SDKの採用が進み、Vercel社内でもより複雑なアプリケーションが構築されるにつれて、エージェントのような高レベルな抽象化の必要性が認識され始めました。

エージェント機能の萌芽:maxStepsの導入

エージェントの概念の初期的な萌芽は、maxStepsという機能から始まりました。これは、LLMがツールを呼び出し、その結果を受け取った後、更新されたコンテキストをモデルに渡し、さらに別のツールの使用をトリガーするという、LLMがループ内でツールを使用するアイデアです。これにより、LLMが単一の応答に留まらず、一連のタスクを自動的に実行する基盤ができました。

実行停止条件の制御:stopWhenパラメーター

次に、エージェントの実行ループにおいて、よりきめ細やかな制御が求められるようになりました。そこで導入されたのが、generateTextおよびstreamTextに新たなパラメーターとして加わったstopWhenです。このパラメーターにより、エージェントがいつ実行を停止すべきかを宣言的に定義できるようになりました。

デフォルトでは、stepCountIsという関数が提供されており、エージェントのステップ数を制限できます。また、特定のツールが呼び出されたときに停止するユーティリティも追加されました。

stopWhenの最も強力な点は、それが単に真偽値(trueまたはfalse)を返す関数であるという点です。これにより、ユーザーはトークン数の上限を超えた場合や、特定の条件が満たされた場合など、任意のカスタム条件を定義してエージェントの実行を停止させることが可能になりました。例えば、10万トークンを超えたら停止し、ユーザーに追加の指示を求める、といった柔軟な実装が考えられます。

ステップごとの動作を制御するprepareStepフック

エージェントが一定のステップ数でループ実行できるようになった後、次の課題は、ツール実行ループ内でエージェントの振る舞いをどのように変更するか、という点でした。コンテキストや環境が変化する中で、エージェントの動作を動的に調整したいというニーズに応えるため、prepareStepというフックが導入されました。

prepareStepは、エージェントの各ステップの開始時に実行され、そのステップで使用されるモデル、システムプロンプト、そして最も重要なのが、どのツールを使用すべきかといった設定を動的に変更できます。例えば、「ステップ0では常にWeb検索ツールを使用して、最新の情報をコンテキストに取り込む」といった設定が可能です。

さらに、このフックを使用することで、各ステップのコンテキストを完全に制御できるようになります。以前のメッセージを破棄し、そのステップのために特別に構築された構造化されたコンテキストを渡すことも可能です。

抽象化の進展:エージェントクラスへの移行と課題

これらの機能の進化を経て、AI SDKは単なる低レベルプリミティブを超え、「エージェント」を構築する方向へと明確に舵を切りました。この過程で、かつて「エージェントクラス」と呼ばれたものが実験的に導入されました。

これは、streamTextgenerateTextをよりオブジェクト指向のパターンで利用するためのもので、エージェントの設定を一つのファイルで定義し、必要な場所でインポートして呼び出すという、再利用可能なシステムを構築するための方法でした。これにより、エージェントの定義と利用が分離され、コードの整理と再利用性が向上しました。

しかし、この初期のエージェントクラスは、その再利用性には優れていたものの、さらなる拡張性には課題を抱えていました。

まとめ

本記事では、Vercel AI SDK 6 Betaにおけるエージェント開発の進化に焦点を当て、その核心となるAgent Abstractionの背景と主要機能について解説しました。

AI SDKは、低レベルなプリミティブから始まり、maxStepsによるループ実行、stopWhenによる停止条件の柔軟な制御、そしてprepareStepによるステップごとの動的な振る舞い調整を経て、強力なエージェントを構築するための基盤を確立してきました。これらの進化は、LLMアプリケーション開発における新たな可能性を切り開くものです。

今後のアップデートや、Willによるデモの詳細については、ぜひ参考動画をご覧ください。

参考動画: https://www.youtube.com/watch?v=zWqNf9Uu4I8