「GenAI Processors」を発表: 強力で柔軟な Gemini アプリケーションをビルド

2025年7月10日
Andre Elisseeff Software Engineer
Alexey Guseynov Software Engineer
Oskar Bunyan Software Engineer
Shrestha Basu Mallick Group Product Manager

大規模言語モデル(LLM)を活用した高度な AI アプリケーション、特にマルチモーダル入力を処理し、リアルタイムの応答性が求められるアプリケーションをビルドする場合、複雑なパズルを組み立てるような作業に感じることがよくあります。多様なデータ処理ステップ、非同期 API 呼び出し、カスタム ロジックを組み合わせていく作業になるからです。複雑さが増すにつれて、脆弱でメンテナンスが困難なコードが生まれやすくなります。

今回は、この課題を構造化してシンプルにするように設計された、Google DeepMind の新しいオープンソース Python ライブラリである「GenAI Processors」をご紹介します。GenAI Processors は抽象化レイヤーを提供し、入力処理や前処理から、モデルコール、出力処理まで、あらゆる処理において一貫した Processor インターフェースを定義します。

その中核として、GenAI Processors はすべての入出力を ProcessorParts の非同期ストリーム(つまり双方向ストリーミング)として扱います。これは、関連するメタデータとともにパイプラインを流れる標準化されたデータパーツ(音声のチャンク、音声文字変換、画像フレームなど)とお考えください。このストリーム ベースの API では、低レベルのデータ操作から高レベルのモデル呼び出しまで、さまざまなオペレーションをシームレスに連鎖、構成できます。

GenAI Processors library
GenAI Processors ライブラリは、プロセッサの同時実行を最適化するように設計されています。この実行フロー例のどの部分も、グラフ内のすべての先祖が計算された時点で同時に生成することができます。たとえば「c'12」は「a'1」と同時に生成可能です。フローは入力ストリームに対する出力ストリームの順序を維持し、最初のトークンまでの時間を最小限に抑えるように実行されます(可能な限り「d12」より「a12」を優先します)。この同時実行の最適化は内部で行われます。入力ストリームに Processor を適用すると、可能な限りこの同時実行が自動的にトリガーされます。

たとえば、わずか数行のコードで、Gemini Live API を使用して音声と動画のストリームをリアルタイムで処理できる「ライブ対応エージェント」を簡単にビルドできます。次の例では、+ 演算子を使用して入力ソースと処理ステップを組み合わせて、明確なデータフローが作成されている点に注目してください(完全なコードは GitHub にあります)。

from genai_processors.core import audio_io, live_model, video
 
# Input processor: combines camera streams and audio streams
input_processor = video.VideoIn() + audio_io.PyAudioIn(...)
 
# Output processor: plays the audio parts. Handles interruptions and pauses
# audio output when the user is speaking.
play_output = audio_io.PyAudioOut(...)
 
# Gemini Live API processor
live_processor = live_model.LiveProcessor(...)
 
# Compose the agent: mic+camera -> Gemini Live API -> play audio
live_processor = live_model.LiveProcessor(...)
live_agent = input_processor + live_processor + play_output
 
async for part in live_agent(streams.endless_stream()):
  # Process the output parts (e.g., print transcription, model output, metadata)
  print(part)
Python

また、GenAI Processor ライブラリと Google Speech API の双方向ストリーミング機能を使用して、標準的なテキストベースの LLM を活用した独自のライブ対応エージェントをビルドすることもできます(完全なコードは GitHub にあります)。

from genai_processors.core import genai_model, realtime, speech_to_text, text_to_speech
 
# Input processor: gets input from audio in (mic) and transcribes into text
input_processor = audio_io.PyAudioIn(...) + speech_to_text.SpeechToText(... )
play_output = audio_io.PyAudioOut(...)
 
# Main model that will be used to generate the response.
genai_processor = genai_model.GenaiModel(...),
 
# TTS processor that will be used to convert the text response to audio. Note
# the rate limit audio processor that will be used to stream back small audio
# chunks to the client at the same rate as how they are played back.  
tts = text_to_speech.TextToSpeech(...) + rate_limit_audio.RateLimitAudio(...)
 
 
# Creates an agent as:
# mic -> speech to text -> text conversation -> text to speech -> play audio
live_agent = (
     input_processor
     + realtime.LiveModelProcessor(turn_processor=genai_processor + tts)
     + play_output
 )
async for part in live_agent(streams.endless_stream()):
     …
Python

応答性が重要となるプロアクティブな LLM アプリケーションのニーズが拡大していくと予想されます。ストリーミング以外のユースケースでも、データが利用可能になった時点ですぐにデータを処理することで、レイテンシと最初のトークンまでの時間(TTFT)を大幅に短縮できます。これは優れたユーザー エクスペリエンスを構築するうえで不可欠な要素です。多くの LLM API は同期的で簡素化されたインターフェースを優先しますが、GenAI Processors はネイティブの Python 機能を活用することで、コードを複雑化することなく応答性の高いアプリケーションを作成できます。旅行プランナーとリサーチ エージェントの例は、ターンベースのエージェントが GenAI Processors の同時実行機能を使用して応答性を向上させる方法を示しています。


コアとなる設計原則

GenAI Processors の中心には、特定の作業単位をカプセル化する基本的なビルディング ブロックである Processor というコンセプトがあります。入力ストリームを受け取り、オペレーションを実行して結果ストリームを出力します。このシンプルで一貫性のある API が、ライブラリの機能と柔軟性の基盤となっています。

ここでは、設計上の中核的な決定事項と開発者へのメリットについて説明します。

  • モジュール式の設計: 複雑なワークフローを自己完結型の Processor 単位に分解します。これにより、コードの再利用性、テスト性が保証され、複雑なパイプラインのメンテナンスが大幅に簡素化されます。

  • 非同期と同時実行: Python の asyncio を最大限に活用し、I/O バウンドと計算バウンドのタスクを効率的に処理します。これにより、手動のスレッド処理や複雑な同時実行管理の必要なく応答性の高いアプリケーションを構築できます。

  • Gemini API との統合: GenaiModel(ターンベースのインタラクション用)や LiveProcessor(リアルタイム ストリーミング用)などの専用 Processor は、Live API の複雑な部分も含め、Gemini API とのインタラクションを簡素化します。これにより、ボイラープレートを削減して統合を加速します。

  • 拡張可能: 基底クラスから継承するかデコレータを使用することで、カスタム Processor を簡単に作成できます。独自のデータ処理ロジック、外部 API、または特殊なオペレーションをパイプラインにシームレスに統合できます。

  • 統合されたマルチモーダル処理: ProcessorPart ラッパーは、パイプライン内のさまざまなデータ型(テキスト、画像、音声、JSON など)を処理するための一貫したインターフェースを提供します。

  • ストリーム操作ユーティリティ: 非同期ストリームの分割、連結、結合を行う組み込みユーティリティです。これにより、複雑なパイプライン内のデータフローをきめ細かく制御できます。


スタートガイド

GenAI Processors の使い方は簡単です。pip を使用してインストールできます。

pip install genai-processors
Python

ライブラリに慣れてもらうために、コアコンセプトの説明とさまざまなタイプの Processor やアプリケーションのビルド方法を示す、一連の Colab ノートブックを提供しています。まずは Content API ColabProcessor Intro Colab から始めることをおすすめします。

また、リポジトリの examples/ ディレクトリを参照すると、リサーチ エージェントやライブ解説エージェントなど、より複雑なアプリケーションのビルド方法も実践的に確認できます。


今後の予定

GenAI Processors は現在開発の初期段階にあり、AI アプリケーションにおける複雑なワークフローとオーケストレーションの課題に取り組むための強固な基盤になると考えています。Google GenAI SDK は複数の言語で利用できますが、GenAI Processors は現在 Python のみをサポートしています。

core/ ディレクトリには基本的な Processor が含まれています。contrib/ ディレクトリのさらに専門的な機能については、コミュニティの協力を積極的に奨励しています。私たちはデベロッパー コミュニティと協力してライブラリを拡大し、さらに高度な AI システムを構築していくことを楽しみにしています。

より堅牢で応答性の高い Gemini アプリケーションをビルドする準備はできましたか?

GitHub の GenAI Processors リポジトリをご確認ください: https://github.com/google-gemini/genai-processors

皆さんの作品を見るのを楽しみにしています!


謝辞

GenAI Processors は素晴らしいチームの貢献と努力の結晶です。このライブラリを実現するうえで重要な役割を果たした以下のメンバーに、心より感謝の意を表します。Juliette Love、KP Sawhney、Antoine He、Will Thompson、Arno Eigenwillig、Ke Wang、Parth Kothari、Tim Blyth、Philipp Schmid、Patrick Löber、Omar Sanseviero、Alexey Kolganov、Adam Langley、Evan Senter、Seth Odoom、Thierry Coppey、Murat Ozturk。