Uma biblioteca Python leve para construir pipelines de processamento de IA modulares, assíncronos e combináveis, com suporte para processamento de conteúdo paralelo eficiente.
Detalhes do Projeto GenAI Processors
Visão Geral do Projeto
GenAI Processors é uma biblioteca Python leve para construir pipelines de processamento de IA modulares, assíncronos e composíveis, projetados especificamente para aplicações de IA generativa. Lançado pelo Google, este projeto visa simplificar o processo de desenvolvimento de aplicações de IA complexas, especialmente aquelas que precisam lidar com entradas multimodais e exigem respostas em tempo real.
Conceitos Centrais
Processor (Processador)
No coração do GenAI Processors está o conceito de Processor: um bloco de construção fundamental que encapsula uma unidade de trabalho específica. Ele recebe um fluxo de entrada, executa operações e produz um fluxo de saída. Cada Processor possui uma API simples e unificada:
# Qualquer classe que herde de processor.Processor e implemente esta função é um processador
async def call(
content: AsyncIterable[ProcessorPart]
) -> AsyncIterable[ProcessorPartTypes]
ProcessorPart (Parte do Processador)
ProcessorPart é um invólucro em torno de genai.types.Part
, com metadados ricos como tipo MIME, função e atributos personalizados. Suporta vários tipos de conteúdo (texto, imagem, áudio, JSON personalizado).
Principais Recursos
1. Design Modular
- Decompõe tarefas complexas em unidades
Processor
ePartProcessor
reutilizáveis - Pode ser facilmente encadeado (
+
) ou paralelizado (//
) para criar fluxos de dados complexos e comportamentos de agente
2. Integração com a API GenAI
- Inclui processadores prontos para uso, como
GenaiModel
para chamadas de API baseadas em turnos - Suporta
LiveProcessor
para interações de streaming em tempo real
3. Extensibilidade
- Crie processadores personalizados herdando de classes base ou usando decoradores de função simples
- Suporta extensões de processadores contribuídas pela comunidade
4. Assíncrono e Concorrente
- Baseado na estrutura
asyncio
familiar do Python - Coordena tarefas concorrentes (incluindo E/S de rede e comunicação com sub-threads intensivas em computação)
5. Gerenciamento de Fluxo
- Fornece utilitários para dividir, unir e mesclar fluxos assíncronos de
ProcessorPart
- Suporta processamento de streaming para reduzir a latência e o tempo para o primeiro token (TTFT)
Requisitos de Instalação
A biblioteca requer Python versão 3.10+.
Comando de instalação:
pip install genai-processors
Exemplo de Uso
Uso Básico
from genai_processors import content_api
from genai_processors import streams
# Cria um fluxo de entrada (strings são automaticamente convertidas em Parts)
input_parts = ["Hello", content_api.ProcessorPart("World")]
input_stream = streams.stream_content(input_parts)
# Aplica o processador ao fluxo de partes e itera sobre os resultados
async for part in simple_text_processor(input_stream):
print(part.text)
Recursos de Aprendizagem
O projeto oferece uma série de notebooks Colab para ajudar os usuários a se familiarizarem com o GenAI Processors (sugere-se estudar em ordem):
- Content API Colab - Explica os fundamentos de
ProcessorPart
,ProcessorContent
e como criá-los - Processor Intro Colab - Uma introdução aos conceitos centrais do GenAI Processors
- Create Your Own Processor - Um passo a passo típico para criar seu próprio
Processor
ouPartProcessor
- Work with the Live API - Um exemplo de como construir processadores em tempo real a partir da API Gemini Live usando a classe
LiveProcessor
Exemplos de Aplicação Prática
1. Exemplo de Live em Tempo Real
examples/realtime_simple_cli.py
- Um agente Live de áudio de entrada e áudio de saída que integra a Pesquisa Google como ferramenta. Esta é uma implementação cliente de um processador Live, demonstrando as capacidades de streaming e orquestração do GenAI Processors.
2. Exemplo de Agente de Pesquisa
examples/research/README.md
- Um agente de pesquisa construído usando Processors, incluindo 3 sub-processadores, processamento encadeado, criação de ProcessorPart
, entre outras funcionalidades.
3. Exemplo de Narração em Tempo Real
examples/live/README.md
- Um agente de narração em tempo real construído usando a API Gemini Live, composto por dois agentes: um para detecção de eventos e outro para gerenciamento de diálogo.
Estrutura do Projeto
Diretório Core
O diretório core/
contém um conjunto de processadores básicos que podem ser usados em suas próprias aplicações. Inclui blocos de construção genéricos necessários para a maioria das aplicações em tempo real e evoluirá ao longo do tempo para incluir mais componentes centrais.
Diretório Contrib
O diretório contrib/
contém extensões de processadores contribuídas pela comunidade, usadas para estender a coleção de processadores embutidos.
Vantagens Técnicas
1. Processamento de Baixa Latência
Mesmo para casos de uso não-streaming, o processamento imediato dos dados assim que disponíveis pode reduzir significativamente a latência e o tempo para o primeiro token (TTFT), o que é crucial para construir uma boa experiência do usuário.
2. Desenvolvimento de Aplicações Responsivas
Embora muitas APIs LLM priorizem interfaces síncronas e simplificadas, o GenAI Processors, ao aproveitar os recursos nativos do Python, oferece uma maneira de escrever aplicações responsivas sem tornar o código mais complexo.
3. Capacidade de Processamento Concorrente
Os exemplos de planejador de viagens e agente de pesquisa demonstram como os agentes baseados em turnos podem usar os recursos de concorrência do GenAI Processors para melhorar a responsividade.
Resumo
GenAI Processors oferece aos desenvolvedores uma estrutura poderosa e flexível para construir aplicações complexas de IA generativa. Seu design modular, capacidade de processamento assíncrono e profunda integração com os serviços de IA do Google o tornam uma escolha ideal para o desenvolvimento de aplicações de IA modernas. Seja para construir sistemas de diálogo em tempo real, pipelines de processamento multimodal ou agentes de IA complexos, o GenAI Processors fornece as ferramentas e camadas de abstração necessárias para simplificar o processo de desenvolvimento.