在构建基于大型语言模型(如 Gemini)的 AI 应用时,开发者通常面临以下难题:
- 多模态输入(语音、图像、文本)流程复杂
- 需要组合多个异步 API 调用
- 数据处理逻辑零散、维护成本高
- 实时响应(如语音助手)性能难以保障
Google 发布了开源 Python 库:GenAI Processors,旨在简化和标准化构建基于 Gemini 大模型的 AI 应用的开发流程。
GenAI Processors 提供了一种结构化、流式、模块化的方式来构建基于大模型(Gemini)的多模态 AI 应用。
它提供了一个名为”Processor”的核心概念,可以将复杂的任务分解为可重用的单元,并通过链接或并行化来创建复杂的数据流和智能行为。该库与Gemini模型API集成,并支持各种内容类型,如文本、图像和音频。
尤其适合处理流式、多模态、实时交互等复杂场景。它让 AI 系统的构建更接近工程化、模块化和高性能运行的目标。
比如你正在开发一个 AI 应用:
- 一个能看图说话的智能助手
- 一个能实时听你说话并回复的语音 AI
- 一个能同时处理文字、语音、视频的多模态对话系统
以前要做这些事情非常复杂——你得拼凑很多不同的模块,比如语音识别、文字理解、图像处理、模型调用,流程容易混乱,代码难以维护。
🎉 现在 Google 给你一套“积木工具”:GenAI Processors
这套工具帮你把这些功能“标准化”,每个处理步骤就像一个“处理器(Processor)”,你只要像搭积木一样把它们组合起来,就能快速构建出复杂的 AI 应用。
为什么好用?
- 模块化:把大任务拆成小块,便于测试和改动。
- 异步:用 Python 的 asyncio,让程序响应快,不卡顿。
- 集成 Gemini:直接连 Google 的 Gemini API,少写重复代码。
- 可扩展:你能自己加自定义部分,比如连其他 API。
- 多模态:轻松处理文本、图像、音频等不同类型数据。
- 开源:大家都能用,还能贡献代码。
主要原理与功能特点
GenAI Processors 的核心是将所有输入和输出视为异步的 ProcessorParts 流(即双向或双向流)。可以将其视为标准化的数据部分(例如,一段音频、一段文本转录、一帧图像)连同相关元数据一起流经您的处理管道。基于流的 API 允许无缝地链接和组合不同的操作,从低级数据操作到高级模型调用。
- 模块化设计
GenAI Processors 的核心设计思想是将复杂的工作流拆解为多个可独立处理的“模块”(称为 Processor)。每一个 Processor 是一个功能模块,接收一段“数据流”,处理后输出另一段数据流。它可以是:- 文本预处理器
- Gemini 模型调用器
- 音频转文本或文本转语音模块
- 图像帧提取器等
这些模块通过流式数据传递连接成一个处理管道,帮助开发者清晰地定义应用的处理流程,减少复杂度和代码重复。
GenAI Processors 中所有输入/输出都以 ProcessorPart 的形式流动,它是一种封装数据片段(如音频块、图像帧、文本段落)及其元信息的结构。这种统一的数据结构让多模态数据处理变得简单且一致。
- 异步流式处理
该库利用 Python 的 asyncio 库进行异步处理,使得数据流在整个应用中可以并发执行。数据通过 ProcessorPart 作为流在各个模块间传递,实现了双向流式传输,适用于实时性要求高的应用。比如,语音输入、模型处理和语音输出可以同时进行,大大提高了响应速度和处理效率。 - 并发执行与优化
GenAI Processors 在处理过程中支持自动并发执行。它根据数据流的依赖关系动态决定哪些操作可以同时进行,避免了人工干预。这种并行处理能够减少响应时间(例如减少 Time to First Token (TTFT)),提升应用的实时响应能力,适合高并发或实时场景。 - 与 Gemini API 集成
该库原生支持与 Gemini API 集成,简化了与 Gemini 模型(如 GenaiModel 和 LiveProcessor)的交互。通过封装常用的 API 调用,开发者可以轻松与 Gemini 模型进行对接,避免了手动编写复杂的接口代码,提高了开发效率。 - 统一的多模态数据处理
GenAI Processors 支持多种类型的数据(如文本、音频、图像等),并通过统一的接口(ProcessorPart)处理这些数据。无论是语音、图像还是文本数据,都能通过相同的方式进行处理,减少了开发者在处理不同数据类型时的复杂性。 - 灵活的扩展性
除了库内置的标准处理器,开发者还可以自定义 Processor,扩展功能,或者集成外部 API。通过继承基本类或使用装饰器,开发者可以创建适用于特定需求的处理器。这种灵活性使得 GenAI Processors 能够适应多种业务场景,并便于开发者根据需要扩展系统功能。 - 流操作工具
GenAI Processors 提供了多种内建的流操作工具,例如流的拆分、合并、节流等。这些工具让开发者能够在数据流动过程中实现精细控制,优化系统性能,确保在处理大规模数据时有效管理资源。
典型应用场景与代码示例
🌐 示例 1:实时语音交互系统(语音助手)
流程:
用户语音 → 语音转文字 → Gemini 模型生成回复 → 文本转语音 → 输出语音
📦 积木组合方式如下(伪代码,能看懂逻辑就好):
音频输入(麦克风)
+ 语音转文字
+ Gemini 模型对话
+ 文字转语音
+ 语音输出(说出来)
示例代码:
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)
完整代码:GitHub
示例 2:视频 + 语音输入的实时 Agent
您还可以利用 GenAI Processor 库的双向流功能和 Google Speech API,构建您自己的基于标准文本的实时代理(完整代码见 GitHub):
流程:
摄像头 + 麦克风输入 → Gemini Live 模型处理 → 语音输出
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()):
…
实时接入摄像头和麦克风流,流式送入 Gemini 模型,返回语音输出,实现多模态交互。