Marvin es un juego de herramientas de IA ligero para construir interfaces de lenguaje natural que sean confiables, escalables y fáciles de confiar.
Cada una de las herramientas de Marvin es simple y autodocumental, utilizando AI para resolver desafíos comunes pero complejos como la extracción de entidades, la clasificación y la generación de datos sintéticos. Cada herramienta es independiente y adoptable incrementalmente, por lo que puede usarla por su cuenta o en combinación con cualquier otra biblioteca. Marvin también es multimodal, que admite la generación de imágenes y audio, así como el uso de imágenes como entradas para la extracción y clasificación.
Marvin es para los desarrolladores que se preocupan más por el uso de la IA que en la construcción de IA, y estamos enfocados en crear una experiencia de desarrollador excepcional. Los usuarios de Marvin deben sentirse capacitados para llevar "AI Magic" estrechamente escalonada a cualquier proyecto de software tradicional con solo unas pocas líneas de código adicionales.
Marvin tiene como objetivo fusionar las mejores prácticas para construir un software confiable y observable con las mejores prácticas para construir con IA generativa en una sola biblioteca fácil de usar. Es una herramienta seria, pero esperamos que te diviertas con ella.
¿Marvin es de código abierto, gratis para usar y hecho con? por el equipo de Prefect.
Instale la última versión con pip
:
pip install marvin -U
Para verificar su instalación, ejecute marvin version
en su terminal.
Marvin consiste en una variedad de herramientas útiles, todas diseñadas para ser utilizadas de forma independiente. Cada uno representa un caso de uso común de LLM y empaquetados que se alimentan en una interfaz simple y autoconocumentadora.
? Escribir funciones personalizadas con AI sin código fuente
? ️ Clasificar el texto en categorías
? Extraer entidades estructuradas del texto
? Transformar el texto en datos estructurados
Generar datos sintéticos a partir de un esquema
? ️ Cree imágenes a partir de texto o funciones
Describe imágenes con lenguaje natural
"Clasifique las imágenes en categorías
? Extraer entidades estructuradas a partir de imágenes
? Transformar imágenes en datos estructurados
Generar discurso a partir de texto o funciones
✍️ Transcribir el discurso del audio grabado
? ️ Grabe a los usuarios continuamente o como frases individuales
? ️ Grabar video continuamente
? Chatear con asistentes y usar herramientas personalizadas
? Cree aplicaciones que administren el estado persistente
Aquí hay una gira torbellera de algunas de las principales características de Marvin. Para obtener más información, consulte los documentos!
Marvin puede classify
el texto usando un conjunto de etiquetas:
import marvin
marvin . classify (
"Marvin is so easy to use!" ,
labels = [ "positive" , "negative" ],
)
# "positive"
Obtenga más información sobre la clasificación aquí.
Marvin puede extract
entidades estructuradas del texto:
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")
# ]
Casi todas las funciones de Marvin pueden recibir instructions
para un mayor control. Aquí extraemos solo valores monetarios:
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]
Obtenga más información sobre la extracción de entidades aquí.
Marvin puede generate
datos sintéticos para usted, siguientes instrucciones y un esquema opcional:
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'),
# ]
Obtenga más información sobre la generación de datos aquí.
Marvin puede cast
texto arbitrario a cualquier tipo de pitón:
marvin . cast ( "one two three" , list [ int ])
# [1, 2, 3]
Esto es útil para estandarizar las entradas de texto o hacer coincidir el lenguaje natural con un esquema:
class Location ( pydantic . BaseModel ):
city : str
state : str
marvin . cast ( "The Big Apple" , Location )
# Location(city="New York", state="New York")
Para un enfoque basado en la clase, el decorador @model
de Marvin se puede aplicar a cualquier modelo pydantic para dejar que se instanciara desde el texto:
@ marvin . model
class Location ( pydantic . BaseModel ):
city : str
state : str
Location ( "The Big Apple" )
# Location(city="New York", state="New York")
Obtenga más información sobre el casting a los tipos aquí.
Las funciones de Marvin le permiten combinar cualquier entrada, instrucciones y tipos de salida para crear comportamientos personalizados con AI ... sin código fuente. Estas funciones pueden ir mucho más allá de las capacidades de extract
o classify
, y son ideales para el procesamiento o combinaciones complejas de procesamiento o mapeo de entradas a salidas.
@ 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
Las funciones de Marvin se ven exactamente como las funciones regulares de Python, excepto que no tiene que escribir ningún código fuente. Cuando se llaman a estas funciones, una IA interpreta su descripción e entradas y genera la salida.
Tenga en cuenta que Marvin no funciona generando o ejecutando el código fuente, lo que sería inseguro para la mayoría de los casos de uso. En su lugar, utiliza el LLM en sí como un "tiempo de ejecución" para predecir salidas de funciones. Esa es en realidad la fuente de su poder: las funciones de Marvin pueden manejar casos de uso complejos que serían difíciles o imposibles de expresar como código.
Puede obtener más información sobre las funciones aquí.
Marvin puede paint
imágenes del texto:
marvin . paint ( "a simple cup of coffee, still warm" )
Obtenga más información sobre la generación de imágenes aquí.
Además del texto, Marvin tiene apoyo para subtitular, clasificar, transformar y extraer entidades de imágenes utilizando el modelo de visión GPT-4:
marvin . classify (
marvin . Image . from_path ( "docs/images/coffee.png" ),
labels = [ "drink" , "food" ],
)
# "drink"
Marvin puede transcribir el habla y generar audio fuera de la caja, pero el audio
extra opcional proporciona utilidades para grabar y reproducir 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 ()
¿Idea de características? Compártelo en el canal #development
en nuestra discordia.
? Encontrado un error? No dude en abrir un problema.
? ¿Comentario? Marvin está bajo desarrollo activo, y nos encantaría escucharlo.