Magentic : Intégration fluide de LLM pour les développeurs Python
Magentic
Description du projet
Magentic est une bibliothèque Python conçue pour intégrer harmonieusement les grands modèles linguistiques (LLM) dans le code Python. Elle permet de créer des fonctions qui renvoient une sortie structurée à partir d'un LLM en utilisant les décorateurs @prompt
et @chatprompt
. La bibliothèque prend également en charge la combinaison de requêtes LLM et l'utilisation d'outils avec du code Python traditionnel pour construire des systèmes agents complexes.
Instructions d'utilisation
- Installation :
pip install magentic # ou avec uv uv add magentic
- Configuration : Définissez votre clé API OpenAI en renseignant la variable d'environnement
OPENAI_API_KEY
. Reportez-vous à la documentation pour la configuration d'autres fournisseurs de LLM. - Utilisation de base avec
@prompt
:from magentic import prompt @prompt('Ajoute plus de "dude"ness à : {phrase}') def dudeify(phrase: str) -> str: ... dudeify("Bonjour, comment vas-tu ?") # Renvoie : "Hey, dude! What's up? How's it going, my man?"
- Sortie structurée avec
@prompt
:from magentic import prompt from pydantic import BaseModel class Superhero(BaseModel): name: str age: int power: str enemies: list[str] @prompt("Crée un super-héros nommé {name}.") def create_superhero(name: str) -> Superhero: ... create_superhero("Homme-Jardin") # Renvoie : Superhero(name='Homme-Jardin', age=30, power='Maîtrise des plantes', enemies=['Homme-Pollution', 'Femme-Béton'])
- Requêtes de chat avec
@chatprompt
:from magentic import chatprompt, AssistantMessage, SystemMessage, UserMessage from pydantic import BaseModel class Quote(BaseModel): quote: str character: str @chatprompt( SystemMessage("Tu es un cinéphile."), UserMessage("Quelle est ta citation préférée de Harry Potter ?"), AssistantMessage( Quote( quote="Il ne faut pas s’attarder sur les rêves et oublier de vivre.", character="Albus Dumbledore", ) ), UserMessage("Quelle est ta citation préférée de {movie} ?"), ) def get_movie_quote(movie: str) -> Quote: ... get_movie_quote("Iron Man") # Renvoie : Quote(quote='Je suis Iron Man.', character='Tony Stark')
- Appel de fonction avec
FunctionCall
:from typing import Literal from magentic import prompt, FunctionCall def search_twitter(query: str, category: Literal["latest", "people"]) -> str: """Recherche sur Twitter une requête.""" print(f"Recherche sur Twitter pour {query!r} dans la catégorie {category!r}") return "<résultats twitter>" @prompt( "Utilise la fonction de recherche appropriée pour répondre : {question}", functions=[search_twitter], ) def perform_search(question: str) -> FunctionCall[str]: ... output = perform_search("Quelles sont les dernières actualités sur les LLM ?") # output: FunctionCall(search_twitter, 'LLM', 'latest') output() # Affiche : Recherche sur Twitter pour 'LLM' dans la catégorie 'latest' # Renvoie : '<résultats twitter>'
- Chaînage de requêtes avec
@prompt_chain
:from magentic import prompt_chain def get_current_weather(location, unit="celsius"): # Changed unit to celsius for French relevance """Obtient la météo actuelle à un endroit donné""" return {"temperature": "22", "forecast": ["ensoleillé", "venteux"]} # Changed temperature for celsius @prompt_chain( "Quel temps fait-il à {city} ?", functions=[get_current_weather], ) def describe_weather(city: str) -> str: ... describe_weather("Boston") # Renvoie : 'La météo actuelle à Boston est de 22°C et il fait ensoleillé et venteux.'
Fonctionnalités clés
- Sorties structurées : Prend en charge les modèles Pydantic et les types Python intégrés pour des sorties structurées.
- Streaming : Permet la diffusion en continu des sorties structurées et des appels de fonctions pendant la génération.
- Relances assistées par LLM : Améliore la conformité des LLM aux schémas de sortie complexes.
- Observabilité : S'intègre à OpenTelemetry pour la journalisation et le traçage, y compris l'intégration native de Pydantic Logfire.
- Annotations de type : Fonctionne bien avec les linters et les IDE.
- Configuration : Options pour plusieurs fournisseurs de LLM, y compris OpenAI, Anthropic et Ollama.
- Requêtes de chat : Permet des conversations multi-tours et du few-shot prompting.
- Appels de fonctions parallèles : Prend en charge l'appel de plusieurs fonctions en parallèle.
- Vision : Offre des capacités de traitement d'images et visuel avec les LLM.
- Mise en forme : Outils pour contrôler le format de sortie.
- Prise en charge d'Asyncio : Pour les opérations asynchrones.
- Chaînage de fonctions : Permet aux fonctions alimentées par LLM d'être fournies comme outils à d'autres fonctions LLM, permettant des flux d'agents complexes.
Utilisateurs cibles
Développeurs et ingénieurs souhaitant intégrer les grands modèles linguistiques dans leurs applications Python, en particulier ceux qui se concentrent sur : * La construction de systèmes agents. * La génération de données structurées à partir de LLM. * L'automatisation de tâches avec des fonctions alimentées par LLM. * L'exploitation des LLM pour des appels de fonctions dynamiques basés sur une entrée en langage naturel.
Liens du projet
- Site Officiel : https://magentic.dev/
- Dépôt GitHub : https://github.com/jackmpcollins/magentic
Scénarios d'application
- Extraction et Transformation de Données : Extraction d'informations structurées (ex : noms, adresses, détails de produits) à partir de texte non structuré.
- Génération Automatisée de Contenu : Génération de contenu dynamique comme des descriptions de produits, des résumés ou de l'écriture créative avec des formats spécifiques.
- Agents Intelligents et Chatbots : Développement d'agents conversationnels capables de comprendre l'intention de l'utilisateur, d'appeler des outils externes (API, bases de données) et de renvoyer des réponses structurées.
- Automatisation des Flux de Travail : Création de flux de travail automatisés où les LLM prennent des décisions ou exécutent des actions en appelant des fonctions Python prédéfinies.
- Interfaces en Langage Naturel : Création d'interfaces où les utilisateurs peuvent interagir avec des systèmes complexes en utilisant le langage naturel, et Magentic traduit ces entrées en appels de fonctions.
- Assistance à la Génération de Code : Potentiellement utilisé pour générer des extraits de code ou des définitions de fonctions basées sur des requêtes, en tirant parti des capacités de sortie structurée.