Marvin est une boîte à outils AI légère pour construire des interfaces en langage naturel qui sont fiables, évolutives et faciles à faire confiance.
Chacun des outils de Marvin est simple et auto-documenté, en utilisant l'IA pour résoudre des défis courants mais complexes comme l'extraction d'entités, la classification et la génération de données synthétiques. Chaque outil est indépendant et adopté progressivement, vous pouvez donc les utiliser seuls ou en combinaison avec toute autre bibliothèque. Marvin est également multimodal, prenant en charge à la fois la génération d'images et d'audio ainsi que l'utilisation d'images comme entrées pour l'extraction et la classification.
Marvin est pour les développeurs qui se soucient davantage de l'utilisation de l'IA que de la construction de l'IA, et nous nous concentrons sur la création d'une expérience de développeur exceptionnelle. Les utilisateurs de Marvin devraient se sentir habilités à apporter "AI Magic" étroitement à tout projet logiciel traditionnel avec seulement quelques lignes de code supplémentaires.
Marvin vise à fusionner les meilleures pratiques pour construire un logiciel fiable et observable avec les meilleures pratiques pour construire avec une IA générative dans une seule bibliothèque facile à utiliser. C'est un outil sérieux, mais nous espérons que vous vous amuserez avec.
Marvin est open-source, libre à utiliser et fait avec? par l'équipe de Prefect.
Installez la dernière version avec pip
:
pip install marvin -U
Pour vérifier votre installation, exécutez marvin version
dans votre terminal.
Marvin se compose d'une variété d'outils utiles, tous conçus pour être utilisés indépendamment. Chacun représente un cas d'utilisation LLM commun, et les emballent dans une interface simple et auto-documentée.
? Écrivez des fonctions alimentées sur AI personnalisées sans code source
? ️ Classifier le texte en catégories
? Extraire des entités structurées du texte
? Transformer le texte en données structurées
Générer des données synthétiques à partir d'un schéma
? ️ Créer des images à partir de texte ou de fonctions
Décrire les images avec un langage naturel
? ️ Classifier les images en catégories
? Extraire des entités structurées d'images
? Transformer les images en données structurées
Générer une parole à partir de texte ou de fonctions
✍️ Transcrire la parole de l'audio enregistré
? ️ Enregistrer les utilisateurs en continu ou en tant que phrases individuelles
? ️ Enregistrer la vidéo en continu
? Discuter avec des assistants et utiliser des outils personnalisés
? Créer des applications qui gèrent l'état persistant
Voici une visite tourbillonnante de quelques-unes des principales caractéristiques de Marvin. Pour plus d'informations, consultez les documents!
Marvin peut classify
le texte à l'aide d'un ensemble d'étiquettes:
import marvin
marvin . classify (
"Marvin is so easy to use!" ,
labels = [ "positive" , "negative" ],
)
# "positive"
En savoir plus sur la classification ici.
Marvin peut extract
des entités structurées à partir de texte:
import pydantic
class Location ( pydantic . BaseModel ):
city : str
state : str
marvin . extract ( "I moved from NY to CHI" , target = Location )
# [
# Location(city="New York", state="New York"),
# Location(city="Chicago", state="Illinois")
# ]
Presque toutes les fonctions Marvin peuvent recevoir instructions
pour plus de contrôle. Ici, nous extrayons uniquement des valeurs monétaires:
marvin . extract (
"I paid $10 for 3 tacos and got a dollar and 25 cents back." ,
target = float ,
instructions = "Only extract money"
)
# [10.0, 1.25]
En savoir plus sur l'extraction des entités ici.
Marvin peut generate
des données synthétiques pour vous, suivant les instructions et un schéma facultatif:
class Location ( pydantic . BaseModel ):
city : str
state : str
marvin . generate (
n = 4 ,
target = Location ,
instructions = "cities in the United States named after presidents"
)
# [
# Location(city='Washington', state='District of Columbia'),
# Location(city='Jackson', state='Mississippi'),
# Location(city='Cleveland', state='Ohio'),
# Location(city='Lincoln', state='Nebraska'),
# ]
En savoir plus sur la génération de données ici.
Marvin peut cast
du texte arbitraire à n'importe quel type python:
marvin . cast ( "one two three" , list [ int ])
# [1, 2, 3]
Ceci est utile pour normaliser les entrées de texte ou faire correspondre le langage naturel à un schéma:
class Location ( pydantic . BaseModel ):
city : str
state : str
marvin . cast ( "The Big Apple" , Location )
# Location(city="New York", state="New York")
Pour une approche basée sur les classes, le décorateur @model
de Marvin peut être appliqué à n'importe quel modèle pydatique pour le laisser être instancié à partir du texte:
@ marvin . model
class Location ( pydantic . BaseModel ):
city : str
state : str
Location ( "The Big Apple" )
# Location(city="New York", state="New York")
En savoir plus sur le casting aux types ici.
Marvin fonctionne vous permet de combiner toutes les entrées, instructions et types de sortie pour créer des comportements personnalisés alimentés par AI ... sans code source. Ces fonctions peuvent aller bien au-delà des capacités d' extract
ou classify
, et sont idéales pour des combinaisons de traitement ou de cartographie du langage naturel complexe des entrées aux sorties.
@ marvin . fn
def sentiment ( text : str ) -> float :
"""
Returns a sentiment score for `text`
between -1 (negative) and 1 (positive).
"""
sentiment ( "I love working with Marvin!" ) # 0.8
sentiment ( "These examples could use some work..." ) # -0.2
Les fonctions Marvin ressemblent exactement à des fonctions Python régulières, sauf que vous n'avez pas à écrire de code source. Lorsque ces fonctions sont appelées, une AI interprète leur description et ses entrées et génère la sortie.
Notez que Marvin ne fonctionne pas en générant ou en exécutant le code source, ce qui serait dangereux pour la plupart des cas d'utilisation. Au lieu de cela, il utilise le LLM lui-même comme un "runtime" pour prédire les sorties de fonction. C'est en fait la source de sa puissance: les fonctions Marvin peuvent gérer des cas d'utilisation complexes qui seraient difficiles ou impossibles à exprimer en tant que code.
Vous pouvez en savoir plus sur les fonctions ici.
Marvin peut paint
des images à partir du texte:
marvin . paint ( "a simple cup of coffee, still warm" )
En savoir plus sur la génération d'images ici.
En plus du texte, Marvin est en charge pour le sous-titrage, la classification, la transformation et l'extraction d'entités d'images à l'aide du modèle de vision GPT-4:
marvin . classify (
marvin . Image . from_path ( "docs/images/coffee.png" ),
labels = [ "drink" , "food" ],
)
# "drink"
Marvin peut transcrire la parole et générer des audio prêtes à l'emploi, mais l' audio
supplémentaire en option fournit des utilitaires pour l'enregistrement et la lecture de l'audio.
import marvin
import marvin . audio
# record the user
user_audio = marvin . audio . record_phrase ()
# transcribe the text
user_text = marvin . transcribe ( user_audio )
# cast the language to a more formal style
ai_text = marvin . cast ( user_text , instructions = 'Make the language ridiculously formal' )
# generate AI speech
ai_audio = marvin . speak ( ai_text )
# play the result
ai_audio . play ()
Idée de fonctionnalité? Partagez-le dans le canal #development
dans notre discorde.
? Vous avez trouvé un bug? N'hésitez pas à ouvrir un problème.
? Retour? Marvin est en cours de développement actif et nous serions ravis de l'entendre.