大規模言語モデル(LLM)を活用した高度な AI アプリケーション、特にマルチモーダル入力を処理し、リアルタイムの応答性が求められるアプリケーションをビルドする場合、複雑なパズルを組み立てるような作業に感じることがよくあります。多様なデータ処理ステップ、非同期 API 呼び出し、カスタム ロジックを組み合わせていく作業になるからです。複雑さが増すにつれて、脆弱でメンテナンスが困難なコードが生まれやすくなります。
今回は、この課題を構造化してシンプルにするように設計された、Google DeepMind の新しいオープンソース Python ライブラリである「GenAI Processors」をご紹介します。GenAI Processors は抽象化レイヤーを提供し、入力処理や前処理から、モデルコール、出力処理まで、あらゆる処理において一貫した Processor
インターフェースを定義します。
その中核として、GenAI Processors はすべての入出力を ProcessorParts
の非同期ストリーム(つまり双方向ストリーミング)として扱います。これは、関連するメタデータとともにパイプラインを流れる標準化されたデータパーツ(音声のチャンク、音声文字変換、画像フレームなど)とお考えください。このストリーム ベースの API では、低レベルのデータ操作から高レベルのモデル呼び出しまで、さまざまなオペレーションをシームレスに連鎖、構成できます。
たとえば、わずか数行のコードで、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)
また、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()):
…
応答性が重要となるプロアクティブな LLM アプリケーションのニーズが拡大していくと予想されます。ストリーミング以外のユースケースでも、データが利用可能になった時点ですぐにデータを処理することで、レイテンシと最初のトークンまでの時間(TTFT)を大幅に短縮できます。これは優れたユーザー エクスペリエンスを構築するうえで不可欠な要素です。多くの LLM API は同期的で簡素化されたインターフェースを優先しますが、GenAI Processors はネイティブの Python 機能を活用することで、コードを複雑化することなく応答性の高いアプリケーションを作成できます。旅行プランナーとリサーチ エージェントの例は、ターンベースのエージェントが GenAI Processors の同時実行機能を使用して応答性を向上させる方法を示しています。
GenAI Processors の中心には、特定の作業単位をカプセル化する基本的なビルディング ブロックである Processor
というコンセプトがあります。入力ストリームを受け取り、オペレーションを実行して結果ストリームを出力します。このシンプルで一貫性のある API が、ライブラリの機能と柔軟性の基盤となっています。
ここでは、設計上の中核的な決定事項と開発者へのメリットについて説明します。
Processor
単位に分解します。これにより、コードの再利用性、テスト性が保証され、複雑なパイプラインのメンテナンスが大幅に簡素化されます。asyncio
を最大限に活用し、I/O バウンドと計算バウンドのタスクを効率的に処理します。これにより、手動のスレッド処理や複雑な同時実行管理の必要なく応答性の高いアプリケーションを構築できます。GenaiModel
(ターンベースのインタラクション用)や LiveProcessor
(リアルタイム ストリーミング用)などの専用 Processor は、Live API の複雑な部分も含め、Gemini API とのインタラクションを簡素化します。これにより、ボイラープレートを削減して統合を加速します。ProcessorPart
ラッパーは、パイプライン内のさまざまなデータ型(テキスト、画像、音声、JSON など)を処理するための一貫したインターフェースを提供します。GenAI Processors の使い方は簡単です。pip を使用してインストールできます。
pip install genai-processors
ライブラリに慣れてもらうために、コアコンセプトの説明とさまざまなタイプの Processor やアプリケーションのビルド方法を示す、一連の Colab ノートブックを提供しています。まずは Content API Colab と Processor 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。