Une bibliothèque Python légère pour construire des pipelines de traitement d'IA modulaires, asynchrones et composables, prenant en charge un traitement de contenu parallèle efficace.
Présentation détaillée du projet GenAI Processors
Aperçu du projet
GenAI Processors est une bibliothèque Python légère conçue pour construire des pipelines de traitement d'IA modulaires, asynchrones et composables, spécialement conçue pour les applications d'IA générative. Ce projet a été lancé par Google dans le but de simplifier le processus de développement d'applications d'IA complexes, en particulier celles qui nécessitent de traiter des entrées multimodales et exigent des réponses en temps réel.
Concepts clés
Processor (Processeur)
Au cœur de GenAI Processors se trouve le concept de Processor : un bloc de construction fondamental qui encapsule une unité de travail spécifique. Il reçoit un flux d'entrée, exécute une opération et produit un flux de sortie. Chaque Processor possède une API simple et unifiée :
# Toute classe héritant de processor.Processor et implémentant cette fonction est un processeur
async def call(
content: AsyncIterable[ProcessorPart]
) -> AsyncIterable[ProcessorPartTypes]
ProcessorPart (Partie de Processeur)
ProcessorPart est un wrapper autour de genai.types.Part
, doté de métadonnées riches telles que le type MIME, le rôle et les attributs personnalisés. Il prend en charge divers types de contenu (texte, image, audio, JSON personnalisé).
Fonctionnalités clés
1. Conception modulaire
- Décompose les tâches complexes en unités
Processor
etPartProcessor
réutilisables. - Peut être facilement chaîné (
+
) ou parallélisé (//
) pour créer des flux de données et des comportements d'agent complexes.
2. Intégration avec l'API GenAI
- Inclut des processeurs prêts à l'emploi, tels que
GenaiModel
pour les appels d'API basés sur des tours. - Prend en charge
LiveProcessor
pour les interactions de streaming en temps réel.
3. Extensibilité
- Permet de créer des processeurs personnalisés en héritant des classes de base ou en utilisant de simples décorateurs de fonction.
- Prend en charge les extensions de processeurs contribuées par la communauté.
4. Asynchrone et concurrence
- Basé sur le framework
asyncio
familier de Python. - Coordonne les tâches concurrentes (y compris les E/S réseau et la communication avec les sous-threads gourmands en calcul).
5. Gestion des flux
- Fournit des utilitaires pour diviser, joindre et fusionner des flux asynchrones de
ProcessorPart
. - Prend en charge le traitement en continu (streaming) pour réduire la latence et le temps du premier jeton (TTFT).
Exigences d'installation
Cette bibliothèque nécessite Python 3.10+.
Commande d'installation :
pip install genai-processors
Exemple d'utilisation
Utilisation de base
from genai_processors import content_api
from genai_processors import streams
# Crée un flux d'entrée (les chaînes de caractères sont automatiquement converties en Parts).
input_parts = ["Hello", content_api.ProcessorPart("World")]
input_stream = streams.stream_content(input_parts)
# Applique le processeur au flux de parties et itère sur les résultats.
async for part in simple_text_processor(input_stream):
print(part.text)
Ressources d'apprentissage
Le projet propose une série de notebooks Colab pour aider les utilisateurs à se familiariser avec GenAI Processors (il est recommandé de les suivre dans l'ordre) :
- Colab de l'API de Contenu - Explique les bases de
ProcessorPart
,ProcessorContent
et comment les créer. - Colab d'Introduction aux Processeurs - Introduction aux concepts fondamentaux de GenAI Processors.
- Créez votre propre Processeur - Explication pas à pas des étapes typiques pour créer un
Processor
ou unPartProcessor
. - Travailler avec l'API Live - Exemple de construction de processeurs en temps réel à partir de l'API Gemini Live à l'aide de la classe
LiveProcessor
.
Exemples d'applications pratiques
1. Exemple Live en temps réel
examples/realtime_simple_cli.py
- Un agent Live d'entrée audio-sortie audio, intégrant la recherche Google comme outil. Il s'agit d'une implémentation client d'un processeur Live, démontrant les capacités de streaming et d'orchestration de GenAI Processors.
2. Exemple d'agent de recherche
examples/research/README.md
- Un agent de recherche construit avec des Processeurs, incluant 3 sous-processeurs, le traitement en chaîne, la création de ProcessorPart
, etc.
3. Exemple de commentaire en temps réel
examples/live/README.md
- Un agent de commentaire en temps réel construit avec l'API Gemini Live, composé de deux agents : un pour la détection d'événements et un autre pour la gestion de la conversation.
Structure du projet
Répertoire Core
Le répertoire core/
contient un ensemble de processeurs de base que vous pouvez utiliser dans vos propres applications. Il inclut les blocs de construction génériques nécessaires à la plupart des applications en temps réel et évoluera au fil du temps pour inclure davantage de composants essentiels.
Répertoire Contrib
Le répertoire contrib/
contient des extensions de processeurs contribuées par la communauté, destinées à étendre la collection de processeurs intégrés.
Avantages techniques
1. Traitement à faible latence
Même pour les cas d'utilisation non-streaming, le traitement immédiat des données dès qu'elles sont disponibles peut réduire considérablement la latence et le temps du premier jeton (TTFT), ce qui est crucial pour une bonne expérience utilisateur.
2. Développement d'applications réactives
Bien que de nombreuses API LLM privilégient des interfaces synchrones et simplifiées, GenAI Processors offre un moyen d'écrire des applications réactives en tirant parti des fonctionnalités natives de Python, sans complexifier le code.
3. Capacité de traitement concurrent
Les exemples d'agent de planification de voyage et d'agent de recherche montrent comment les agents basés sur des tours peuvent utiliser les capacités de concurrence de GenAI Processors pour améliorer la réactivité.
Conclusion
GenAI Processors offre aux développeurs un cadre puissant et flexible pour la construction d'applications d'IA générative complexes. Sa conception modulaire, ses capacités de traitement asynchrone et son intégration profonde avec les services Google AI en font un choix idéal pour le développement d'applications d'IA modernes. Qu'il s'agisse de construire des systèmes de dialogue en temps réel, des pipelines de traitement multimodal ou des agents d'IA complexes, GenAI Processors fournit les outils et les couches d'abstraction nécessaires pour simplifier le processus de développement.