Gemmaを活用したプロアクティブなエージェントAIの構築法

GemmaとエージェンティックAI: 新たな可能性への道

近年、人工知能(AI)技術の発展は目覚ましいものがあります。その中でも、Gemmaは注目すべき存在です。Gemmaは、軽量の生成型AIオープンモデルのファミリーであり、その技術の基礎は、GoogleのGeminiモデルと同様の研究から生まれています。本記事では、Gemmaを活用したエージェンティックAIの魅力とその活用方法について解説します。

エージェンティックAIとは?

一般的なAIシステムは主に反応型です。特定のコマンドに応じて動作し、たとえばスマートスピーカーが音楽を再生するといった具合です。これに対し、エージェンティックAIは能動的かつ自律的です。自ら目標を設定し、その達成のために判断を下します。重要な特徴は、外部のツールやソフトウェアを利用して、持っている知識を超えた情報を取得することであり、これにより問題解決能力が高まるのです。

ここでは、Gemma 2を用いたエージェンティックAIシステムの構築について詳しく見ていきます。このシステムは、架空のゲームの動的な歴史生成器として機能し、プレイヤーの行動に応じて進化し続ける物語の景観を提供します。

GemmaのエージェンティックAI機能を理解する

コードに入る前に、GemmaのエージェンティックAI機能を理解しましょう。GemmaはGoogle AI Studioを通じて直接体験することができ、27Bモデルを使用することで最良のパフォーマンスが得られます。一方、小型モデルである2Bモデルも使用可能です。

以下の例では、Gemmaにget_current_time()という関数があると伝え、東京とパリの時刻を教えるように指示します。この結果から、Gemma 2はget_current_time()関数を呼び出すことを提案しません。この機能呼び出しの能力は、AIが外部のシステムやAPIと相互作用するための重要な要素です。

Gemmaの機能制限とその克服

Gemmaの内蔵機能呼び出し能力には限界があり、そのためエージェントとしての動作には制約があります。しかし、その強力な指示追従能力を利用して、この機能不足を補うことができます。ここではReAct(Reasoning and Acting)というプロンプトスタイルを用いて能力を拡張していきましょう。

ReActは利用可能なツールを定義し、特定のインタラクション形式を提供することによって、Gemmaが思考(Reasoning)、行動(Action)、観察(Observation)のループに参加することを可能にします。Gemmaが東京とパリの時刻を取得するためにget_current_time()関数を使用しようとする様子が見られます。

デモ: 歴史AIエージェントの構築

ここからは、実際のデモに移り、歴史AIエージェントを構築してみましょう。以下のプロンプトは「Agentic AI with Gemma 2」のノートブックに含まれています。Google AI StudioでGemmaを使用する際は、特定の形式(例:<start_of_turn>)を使用する必要があることに注意してください。

想像してみてください。プレイヤーの選択や重要なイベントに応じて、AIエージェントがゲーム内コンテンツ(本、詩、歌など)を作成する世界です。これらのエージェントは、複雑な目標を小さな行動可能なステップに分解し、さまざまなアプローチを分析し、結果に応じて計画を適応させる能力を持っています。

プロンプトの具体例

以下は、歴史的な情報を取得する能力を持つゲーム内コンテンツを生成するAIエージェントのためのReActスタイルのプロンプトです。

<start_of_turn> user You are an AI Historian in a game. 
Your goal is to create books, poems, and songs found in the game world so that the player's choices meaningfully impact the unfolding of events.
You have access to the following tools:
 * get_historical_events(year, location=None, keyword=None): Retrieves a list of historical events within a specific year.
 * get_person_info(name): Retrieves information about a historical figure.
 * get_location_info(location_name): Retrieves information about a location.
Use the following multi-step conversation:
Thought: I need to do something...
Action: I should use the tool `tool_name` with input `tool_input`
Wait user to get the result of the tool is `tool_output`
And finally answer the Content of books, poems, or songs.

将来の可能性

エージェンティックAIの開発はまだ始まったばかりですが、急速に進化しています。今後、ゲームを中心とした多くの分野で大きな役割を果たすことが期待されています。以下は、その一例です:

  • リアルなNPC: NPCはより信頼性が高くなり、ユニークな個性を持ち、プレイヤーとのインタラクションに適応します。
  • ダイナミックなストーリー: ゲームは、ダイナミックに生成されたストーリーやクエストを提供し、再プレイ性を高めます。
  • 効率的な開発: AIはゲームのテストを簡素化し、高品質な開発サイクルを実現します。

次なるステップ

今後、受動的なAIから、能動的で目標に向かって行動できるAIへと進化していくでしょう。これがエージェンティックAIの登場であり、興奮すべき未来です。Gemma Cookbookレポジトリは、さまざまなアイデアが集まる場所です。新しいアイデアを実装したノートブックがあれば、ぜひプルリクエストを送ってください。

この記事を読んでくださり、ありがとうございます。それでは、次回までお楽しみに!