GenAI Processors:Geminiアプリ開発を変革する新しいPythonライブラリ

2025/07/16に公開されました。
2025/07/16に更新されました。

GoogleのGenAI Processorsという新しいPythonライブラリが発表されたので検証してみました。双方向ストリーミングとモジュラー設計により、従来方式より約40%のコード削減を実現した実装例を紹介します。


author: zumenya

はじめに

2025年7月10日、Google DeepMindからGenAI Processorsという新しいPythonライブラリが発表されました。

Google公式ドキュメントによると、このライブラリは以下の特徴があります。

  • すべての入出力を非同期ストリームとして扱い(treats all input and output as asynchronous streams)
  • データが利用可能になり次第処理を開始する(processing data as soon as it is available)
  • Time To First Token (TTFT)を最適化。
  • 応答性が重要なプロアクティブLLMアプリケーション(proactive LLM applications where responsiveness is critical)を実現。

今回は、GenAI Processorsの特徴と、実際にアプリケーションを作成して検証した結果を紹介します。

以下の流れで進めます。

  • GenAI Processorsとは
  • 環境構築
  • 実際に作ってみた:リアルタイム感情モニタリングシステム
  • 従来方式との実装比較検証
  • つまづいたポイント
  • まとめ

GenAI Processorsとは

GenAI ProcessorsはGoogle DeepMindが開発した、リアルタイム・マルチモーダルAIアプリケーション開発に特化したPythonライブラリです。

GitHub: https://github.com/google-gemini/genai-processors

従来のライブラリとの決定的な違い

従来のLLMライブラリでは、リクエスト→レスポンスという同期的な処理が一般的でした。 双方向ストリーミングや非同期処理を実装することは技術的に可能でしたが、asyncioやキュー管理、エラーハンドリングなど、数百行に及ぶ複雑なコードが必要でした。

GenAI Processorsは双方向ストリーミングを基本とし、データが利用可能になり次第処理を開始します。 複雑な非同期処理を内部で抽象化することで、開発者はわずか数行のコードで高度なストリーミング処理を実現できるようになりました。

従来の処理方式(逐次処理)

# 従来のアプローチ:マルチモーダルデータの逐次処理
import asyncio
import google.generativeai as genai

async def traditional_multimodal_processing():
    # 1. 動画フレーム取得(完了まで待機)
    video_frame = await capture_video_frame()  # ← ここで待機
    
    # 2. 音声データ取得(完了まで待機)
    audio_data = await capture_audio()  # ← ここでも待機
    
    # 3. テキスト取得(完了まで待機)
    text_data = await receive_text()  # ← ここでも待機
    
    # 4. 順次分析(完了まで待機)
    video_analysis = await analyze_video(video_frame)  # ← ここでも待機
    audio_analysis = await analyze_audio(audio_data)   # ← ここでも待機
    text_analysis = await analyze_text(text_data)      # ← ここでも待機
    
    # 5. 結果統合(完了まで待機)
    final_result = await combine_results(video_analysis, audio_analysis, text_analysis)
    
    return final_result

処理フロー: 動画取得 → 💤待機 → 音声取得 → 💤待機 → テキスト取得 → 💤待機 → 各分析 → 💤待機 → 統合
総時間: 各ステップの待機時間が累積。

GenAI Processorsの革新的なアプローチ(並列ストリーミング)

# GenAI Processorsのアプローチ:+演算子によるマルチモーダル並列処理
from genai_processors.core import audio_io, video, genai_model
from genai_processors import processor

# +演算子でプロセッサーをチェーン化(順次処理)
video_pipeline = (
    video.VideoIn() +                    # 動画入力
    genai_model.GenaiModel()             # 動画分析
)

audio_pipeline = (
    audio_io.PyAudioIn() +               # 音声入力
    genai_model.GenaiModel()             # 音声分析
)

text_pipeline = (
    text_input_processor +               # テキスト入力(※実装時に定義必要)
    genai_model.GenaiModel()             # テキスト分析
)

# //演算子で並列処理(同時実行)
multimodal_pipeline = (
    video_pipeline //                    # 動画処理を並列実行
    audio_pipeline //                    # 音声処理を並列実行
    text_pipeline                        # テキスト処理を並列実行
) + final_synthesis_processor            # 結果統合(※実装時に定義必要)

# リアルタイムストリーミング実行
async for result in multimodal_pipeline(input_stream):  # ※input_streamは実装時に定義必要
    print(f"統合分析結果: {result.text}")

処理フロー: 動画・音声・テキスト並列取得 → ⚡️即座に並列分析 → ⚡️即座に統合 → ⚡️即座に結果表示
総時間: 並列処理により大幅短縮。

モジュラー設計の威力

GenAI Processorsの最大の特徴は「Processor」という概念です。 各Processorは単一の処理をカプセル化し、以下のような直感的な演算子でチェーン化できます。

# +演算子でチェーン化(順次処理)
pipeline = input_processor + analysis_processor + output_processor

# //演算子で並列化(同時処理)
parallel_analysis = (
    sentiment_analyzer // 
    entity_extractor // 
    summary_generator
)

この設計により、複雑なAIパイプラインを、直感的にわかりやすく積み木のように組み立てられます。

環境構築

検証環境

  • OS: macOS(Apple Silicon)
  • Python: 3.12
  • IDE: ターミナル + テキストエディタ

インストール手順

# GenAI Processorsと関連パッケージをインストール
pip3 install genai-processors google-genai

注意:

  • genai-processorsはメインのストリーミング処理ライブラリ
  • google-genaiはGemini API統合用。

認証設定

検証用にGoogle APIキーを使用します。

Step 1: Gemini APIキーの取得

  1. Google AI Studio にアクセス
  2. 「Get API key」をクリック
  3. 新しいプロジェクトまたは既存プロジェクトを選択
  4. APIキーをコピー

Step 2: 環境変数の設定

# ターミナルで環境変数を設定
export GOOGLE_API_KEY="your-api-key-here"

# 設定確認
echo $GOOGLE_API_KEY

実際に作ってみた:リアルタイム感情モニタリングシステム

GenAI Processorsのコードを使用した、ライブチャット・掲示板風のコメントをリアルタイムで感情分析するシステムを作成してみました。

「流れる言葉をリアルタイムでキャッチして、ネガティブな内容に即座に反応する」という、テキストのリアルタイム処理を検証してみます。

ファイル構成

作業ディレクトリを作成し、Pythonファイルを作成します。

# 作業ディレクトリの作成
mkdir genai-processors-test
cd genai-processors-test

# メインファイルの作成
touch fixed_sentiment_monitor.py

基本構成

fixed_sentiment_monitor.py に以下のコードを記述します。

import asyncio
import os
import time
import random
import traceback
from genai_processors import content_api
from genai_processors import processor
from genai_processors.core import genai_model
from google.genai import types as genai_types

# APIキー設定
api_key = os.getenv('GOOGLE_API_KEY')
if not api_key:
    print("GOOGLE_API_KEYが設定されていません")
    exit(1)

print(f"APIキーが設定されています: {api_key[:10]}...")

ライブコメントの生成

# リアルタイムコメント生成器(チャット・掲示板のシミュレーション)
async def generate_live_comments():
    """ライブチャットのようなコメントストリームを生成"""
    comments = [
        "今日はいい天気ですね!",
        "このゲーム最悪だ、つまらない",
        "みんなお疲れさまです",
        "配信者いらない、うざすぎる",
        "ありがとうございます!",
        "バカじゃないの?何やってるんだ",
        "素晴らしい内容でした",
        "クソゲーすぎて時間の無駄",
        "応援しています!",
        "お前ら全員消えろ"
    ]
    
    print("=== ライブコメントストリーム開始 ===")
    print("(チャット・掲示板のシミュレーション)")
    
    for comment in comments:
        # リアルタイム感を演出
        await asyncio.sleep(random.uniform(2, 4))
        
        timestamp = time.strftime("%H:%M:%S")
        user_id = f"user{random.randint(1,100):03d}"
        
        print(f"[{timestamp}] {user_id}: {comment}")
        yield content_api.ProcessorPart(comment)

リアルタイム感情分析プロセッサー

# 改良版ネガティブ検知プロセッサー
@processor.processor_function
async def improved_sentiment_detector(content):
    """完全な応答を取得する感情分析プロセッサー"""
    
    gemini_analyzer = genai_model.GenaiModel(
        api_key=api_key,
        model_name="gemini-2.5-flash"
    )
    
    async for comment_part in content:
        if hasattr(comment_part, 'text') and comment_part.text:
            # シンプルで確実なプロンプト
            analysis_prompt = f"""
コメント「{comment_part.text}」はネガティブですか?

ネガティブ(攻撃的、悪口、批判的)ならば「NG」
ポジティブまたは普通ならば「OK」

一言で答えてください。
"""
            
            # Geminiで分析(全ての応答パートを結合)
            analysis_stream = processor.stream_content([analysis_prompt])
            
            full_response = ""
            async for response_part in gemini_analyzer(analysis_stream):
                if response_part.text:
                    full_response += response_part.text
            
            # 結果を判定
            is_negative = "NG" in full_response.upper()
            
            # 結果を整形
            timestamp = time.strftime("%H:%M:%S")
            if is_negative:
                result_text = f"🚨 [{timestamp}] ネガティブコメント検知!\n元コメント: {comment_part.text}\nGemini判定: {full_response.strip()}"
            else:
                result_text = f"✅ [{timestamp}] 正常コメント\n元コメント: {comment_part.text}"
            
            result_part = genai_types.Part(text=result_text)
            yield content_api.ProcessorPart(result_part)

async def main():
    """GenAI Processorsによるリアルタイム感情モニタリングシステム"""
    print("=== GenAI Processors版リアルタイム感情モニタリングシステム ===")
    print("@processor.processor_functionデコレータによるストリーミング処理")
    print()
    
    try:
        # ライブコメントストリーム
        live_comments_stream = generate_live_comments()
        
        # リアルタイム感情分析
        async for result in improved_sentiment_detector(live_comments_stream):
            if result.text:
                print(result.text)
                print("=" * 60)
                print()
                
    except KeyboardInterrupt:
        print("\n監視を停止しました")
    except Exception as e:
        print(f"エラー: {e}")
        traceback.print_exc()

if __name__ == "__main__":
    asyncio.run(main())

実行方法

ターミナルでファイルを実行します。

# APIキーを設定してから実行
export GOOGLE_API_KEY="your-api-key-here"

# 実行
python3 fixed_sentiment_monitor.py

注意:

  • GenAI ProcessorsはPython 3.10+が必要です。
  • 各コメントが流れるたびに即座にGeminiで感情分析が実行されます。
  • ネガティブなコメントには🚨アラート、正常なコメントには✅マークが表示されます。

実行結果

実際に実行してみると、以下のようなリアルタイム感情モニタリングが実現されました。

GenAI Processors実行結果

実行画面の特徴:

  • コメントが順次流れて感情分析が実行される。
  • ✅(正常)と🚨(ネガティブ)のアイコンで視覚的に判定結果を表示。
  • Gemini判定結果(NG/OK)も併せて出力される。

従来方式との実装比較検証

実際にGenAI Processorsを使わない従来の方法(asyncio + Google Generative AI直接利用)でも同じリアルタイム感情分析システムを実装し、比較検証を行いました。

比較結果

項目GenAI Processors従来方式
コード量116行189行(約40%削減)
実装方法@processor.processor_functionデコレータ手動のキュー管理・タスク並列化
処理速度今回の検証では有意な差はなしほぼ同等
開発者体験直感的なyieldによるデータフローasyncio詳細理解が必要。

検証結果と今後の展望

今回はテキストベースの単純な処理であったため、双方向ストリーミングの効果は限定的でした。しかし、動画・音声・テキストの並列処理が必要なマルチモーダル処理では、GenAI Processorsの抽象化された処理が大きな優位性を発揮すると考えられます。

結論: 従来方式でも技術的には同じことが可能ですが、GenAI Processorsは複雑な非同期処理を抽象化することで、開発効率と保守性を向上させることが実証されました。

つまづいたポイント

リアルタイム動画処理の課題

GenAI Processorsの更なる可能性を探るため、macOS内蔵カメラを使用したリアルタイム動画解析も試してみました。

検証結果:

  • 従来のGoogle Generative AI: OpenCVでカメラアクセスし、フレームをGemini APIに送信することで画像認識は正常に動作。
  • GenAI Processorsのvideo.VideoIn(): macOS環境でカメラフレーム取得に失敗。

問題の原因考察:

  1. macOS固有の制限: GenAI Processors 1.0.4では、macOSのカメラアクセス権限システムとの互換性に問題がある可能性。
  2. OpenCVとの連携問題: GenAI ProcessorsがOpenCVカメラ取得機能を内部で使用している際の初期化エラー。
  3. ライブラリの成熟度: 2025年7月発表の新しいライブラリのため、プラットフォーム対応がまだ完全ではない可能性。

まとめ

GenAI Processorsを検証した結果、以下のような特徴が確認できました。

良かった点

  • コード削減: 約40%のコード量削減(116行vs 189行)
  • 直感的設計: +演算子によるパイプライン構築、@processor.processor_functionデコレータ。
  • 開発効率: asyncio詳細管理が不要で、ストリーミング処理を簡潔に実装可能

課題と今後の研究

  • 学習コスト: 従来のリクエスト/レスポンス型とは異なるアプローチ
  • プラットフォーム対応: macOSでの動画処理には制限がある(要研究)
  • 情報不足: 新しいライブラリのためユースケースやドキュメントが限定的。

最後に

GenAI Processorsは、7月10日にGoogle DeepMindから正式発表されたばかりの最新技術ですが、すでに実用レベルの機能を提供しています。 特に双方向ストリーミングによる劇的な応答速度改善と、モジュラー設計による開発効率の向上は、今後のAIアプリケーション開発の標準となる可能性を秘めています。

皆さんもぜひ一度試してみてください!

※本記事は、ジーアイクラウド株式会社の見解を述べたものであり、必要な調査・検討は行っているものの必ずしもその正確性や真実性を保証するものではありません。

※リンクを利用する際には、必ず出典がGIC dryaki-blogであることを明記してください。
リンクの利用によりトラブルが発生した場合、リンクを設置した方ご自身の責任で対応してください。
ジーアイクラウド株式会社はユーザーによるリンクの利用につき、如何なる責任を負うものではありません。