Maventic : Intégrez facilement des LLM dans vos fonctions Python
Découvrez Magentic, une bibliothèque Python open-source innovante qui vous simplifie l'intégration des grands modèles linguistiques (LLM) dans vos applications Python. Grâce à des décorateurs comme `@prompt` et `@chatprompt`, Magentic vous permet de définir le comportement des LLM directement dans vos fonctions, ce qui rend possibles les sorties structurées, l'appel de fonctions et le streaming fluide. Ce projet offre un cadre robuste pour la construction de systèmes agentiques complexes, en associant la puissance des LLM au code Python traditionnel, et prend en charge divers fournisseurs de LLM tels qu'OpenAI, Anthropic et LiteLLM. Explorez comment Magentic peut optimiser vos processus de développement IA et enrichir vos applications avec des fonctionnalités LLM avancées.
Magentic : Intégration transparente des LLM pour les développeurs Python
Magentic est une bibliothèque Python open-source puissante et polyvalente, conçue pour faire le pont entre la programmation Python traditionnelle et les capacités avancées des grands modèles linguistiques (LLM). Pour les développeurs souhaitant intégrer l'IA dans leurs applications sans le fardeau d'un code passe-partout excessif ou d'appels d'API complexes, Magentic offre une solution élégante et efficace.
La force principale de Magentic réside dans son approche intuitive basée sur les décorateurs. En utilisant les décorateurs @prompt et @chatprompt, les développeurs peuvent transformer des fonctions Python ordinaires en composants intelligents, alimentés par un LLM. Cela permet de créer des fonctions où les arguments sont insérés dynamiquement dans les invites (prompts), et le LLM génère la sortie de la fonction, en respectant les types de retour spécifiés.
Fonctionnalités et avantages clés :
- Sorties structurées : Tirez parti de l'annotation de type de Python (type hinting) et des modèles Pydantic pour garantir que les LLM renvoient des données dans un format prévisible et structuré. C'est crucial pour intégrer directement les sorties des LLM dans la logique de l'application.
- Appel de fonctions : Permettez aux LLM de décider intelligemment quand et comment appeler des fonctions Python externes. Magentic gère l'invocation, en passant les arguments générés par le LLM, ce qui le rend idéal pour construire des systèmes d'agents capables d'interagir avec des outils et des API externes.
- Streaming : Traitez les sorties des LLM au fur et à mesure de leur génération, qu'il s'agisse de texte brut ou d'objets structurés. Cela améliore considérablement l'expérience utilisateur en réduisant la latence perçue et en permettant une interaction en temps réel.
- Support asynchrone : Conçu avec
asyncioà l'esprit, Magentic permet des requêtes LLM concurrentes, accélérant considérablement les applications qui nécessitent de multiples interactions avec des LLM. - Multiples backends LLM : Magentic n'est pas lié à un fournisseur spécifique, supportant les LLM populaires d'OpenAI, Anthropic, et même des solutions auto-hébergées comme Ollama ou d'autres API compatibles OpenAI via LiteLLM. Cette flexibilité garantit que les développeurs peuvent choisir le meilleur modèle pour leurs besoins.
- Observabilité : Les intégrations avec OpenTelemetry et Pydantic Logfire offrent un aperçu des interactions avec les LLM, facilitant le débogage et la surveillance des performances.
Comment Magentic simplifie le développement :
Imaginez avoir besoin d'une fonction qui, étant donné une ville, décrit la météo actuelle. Avec Magentic, vous pouvez définir une fonction get_current_weather et utiliser @prompt_chain pour instruire un LLM d'appeler cette fonction, puis de synthétiser une réponse lisible par un humain. Cette capacité de chaînage est fondamentale pour construire des agents IA sophistiqués capables d'un raisonnement en plusieurs étapes.
from magentic import prompt, prompt_chain, FunctionCall
from pydantic import BaseModel
class Superhero(BaseModel):
name: str
age: int
power: str
enemies: list[str]
@prompt("Create a Superhero named {name}.")
def create_superhero(name: str) -> Superhero: ...
superhero_data = create_superhero("Garden Man")
# Superhero(name='Garden Man', age=30, power='Control over plants', enemies=['Pollution Man', 'Concrete Woman'])
def get_current_weather(location, unit="fahrenheit"):
"""Get the current weather in a given location"""
# Pretend to query an API
return {"temperature": "72"}