대형 언어 모델(LLM)로 정교한 AI 애플리케이션, 특히 멀티모달 입력을 처리하고 실시간 응답성을 요하는 애플리케이션을 개발하는 것은 마치 복잡한 퍼즐 조립처럼 느껴지곤 합니다. 다양한 데이터 처리 단계, 비동기 API 호출, 맞춤 설정 논리를 조합해야 하기 때문입니다. 복잡성이 증가하게 되면 이는 취약하고 유지 관리가 어려운 코드로 가득한 애플리케이션으로 이어질 수 있습니다.
오늘 저희는 이러한 문제에 구조와 단순성을 부여하도록 설계된 Google DeepMind의 새로운 오픈소스 Python 라이브러리인 GenAI Processors를 소개합니다. GenAI Processors는 입력 처리와 전처리부터 모델 호출과 출력 처리까지 모든 작업에 대한 일관된 Processor
인터페이스를 정의하는 추상화 레이어를 제공합니다.
본질적으로 GenAI Processors는 모든 입력과 출력을 ProcessorParts
의 비동기 스트림(즉, 양방향 또는 투웨이 스트리밍)으로 처리합니다. 마치 표준화된 데이터 조각들(예: 오디오 조각, 텍스트 스크립트, 이미지 프레임)이 관련 메타데이터와 함께 파이프라인을 따라 흐르는 것이라 생각하면 이해가 쉬울 것입니다. 이 스트림 기반 API를 통해 로우 레벨 데이터 조작부터 하이 레벨 모델 호출까지 다양한 작업을 원활하게 체이닝하고 구성할 수 있습니다.
예를 들어, Gemini Live API를 사용하면 몇 줄의 코드로 오디오 및 동영상 스트림을 실시간으로 처리할 수 있는 'Live Agent'를 쉽게 만들 수 있습니다. 다음 예에서는 +
연산자를 사용해 입력 소스와 처리 단계를 결합하고 명확한 데이터 흐름을 만드는 방법을 잘 살펴보세요(전체 코드는 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을 활용하여 나만의 Live 에이전트를 개발할 수도 있습니다(전체 코드는 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 애플리케이션에 대한 수요가 증가할 것으로 예상됩니다. 비(非)스트리밍 사용 사례에서도 사용 가능해지는 즉시 데이터를 처리하면 지연 시간과 첫 번째 토큰까지의 시간(Time to First Token: TTFT)을 크게 줄일 수 있고, 이는 우수한 사용자 경험을 만드는 데 필수입니다. 많은 LLM API가 단순화된 동기식 인터페이스를 우선시합니다. 그러나 GenAI Processors는 네이티브 Python 기능을 활용하여 코드를 복잡하게 만들지 않고도 반응형 애플리케이션을 작성하는 방법을 제공합니다. Trip Planner와 Research Agent 사례에서는 턴 기반 에이전트가 GenAI Processors의 동시성 기능을 사용하여 응답성을 높이는 방법을 보여줍니다.
GenAI Processors의 핵심은 특정 작업 단위를 캡슐화하는 기본적인 구성 요소인 Processor
의 개념입니다. Processor는 입력 스트림을 받아 연산을 수행하고 결과 스트림을 출력합니다. 이 간단하고 일관된 API가 바로 이 라이브러리가 지닌 힘과 유연성의 토대입니다.
개발자를 위한 핵심적인 설계 결정 사항과 그 이점에 대해 알아보겠습니다.
Processor
단위로 세분화합니다. 이를 통해 코드 재사용성과 테스트 가능성을 보장하고 복잡한 파이프라인 유지 관리를 대폭 간소화합니다.asyncio
를 최대한 활용해 I/O 중심 작업과 컴퓨팅 중심 작업을 효율적으로 처리합니다. 이를 통해 수동 스레딩이나 복잡한 동시성 관리 없이도 반응형 애플리케이션을 구현할 수 있습니다.GenaiModel
(턴 기반 상호작용용)과 LiveProcessor
(실시간 스트리밍용) 같은 전용 프로세서는 Live API의 복잡성을 포함하여 Gemini API와의 상호작용을 간소화합니다. 이를 통해 상용구 코드를 줄이고 통합 속도를 가속화할 수 있습니다.ProcessorPart
래퍼는 파이프라인 내에서 다양한 데이터 유형(텍스트, 이미지, 오디오, JSON 등)을 처리하기 위한 일관된 인터페이스를 제공합니다.GenAI Processors는 간단하게 시작할 수 있습니다. 다음과 같이 pip로 설치하면 됩니다.
pip install genai-processors
라이브러리를 익히실 수 있도록 핵심 개념을 안내하고 다양한 유형의 프로세서와 애플리케이션을 개발하는 방법을 보여주는 Colab 노트북을 시리즈로 제공합니다. Content API Colab 및 Processor Intro Colab부터 시작하는 것이 좋습니다.
또한 리서치 에이전트와 실시간 해설 에이전트 등 보다 복잡한 애플리케이션을 개발하는 방법을 보여주는 실용적인 데모를 보려면 저장소의 examples/ 디렉터리를 탐색하세요.
GenAI Processors는 현재 초기 단계에 있습니다. 하지만 저희는 GenAI Processors가 AI 애플리케이션에서 복잡한 워크플로 및 오케스트레이션 문제를 해결하기 위한 견고한 토대를 제공한다고 믿습니다. Google GenAI SDK는 여러 언어로 제공되지만 GenAI Processors는 현재 Python만 지원합니다.
core/ 디렉터리에는 기본 프로세서가 포함되어 있으며, 특수한 기능은 개발자 커뮤니티가 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 등, 이 라이브러리에 만드는 데 핵심적인 역할을 해주신 분들에게 감사의 마음을 전합니다.