Marvin é um kit de ferramentas de IA leve para a construção de interfaces de linguagem natural que são confiáveis, escaláveis e fáceis de confiar.
Cada uma das ferramentas de Marvin é simples e auto-documentação, usando a IA para resolver desafios comuns, mas complexos, como extração de entidades, classificação e geração de dados sintéticos. Cada ferramenta é independente e adotável incrementalmente, para que você possa usá -las por conta própria ou em combinação com qualquer outra biblioteca. Marvin também é multimodal, apoiando a geração de imagem e áudio, além de usar imagens como entradas para extração e classificação.
Marvin é para desenvolvedores que se preocupam mais em usar a IA do que a construção de IA, e estamos focados em criar uma experiência excepcional do desenvolvedor. Os usuários de Marvin devem se sentir capacitados para trazer "AI Magic" bem-sucedido para qualquer projeto de software tradicional com apenas algumas linhas extras de código.
Marvin pretende mesclar as melhores práticas para criar software confiável e observável, com as melhores práticas para construir com IA generativa em uma única biblioteca de fácil uso. É uma ferramenta séria, mas esperamos que você se divirta com ela.
Marvin é de código aberto, livre para usar e feito? pela equipe do Prefeito.
Instale a versão mais recente com pip
:
pip install marvin -U
Para verificar sua instalação, execute marvin version
no seu terminal.
Marvin consiste em uma variedade de ferramentas úteis, todas projetadas para serem usadas de forma independente. Cada um representa um caso de uso comum de LLM e pacotes que alimentam em uma interface simples e de auto-documentação.
? Escreva funções personalizadas de IA sem código-fonte
? Susttificar o texto em categorias
? Extrair entidades estruturadas do texto
? Transforme o texto em dados estruturados
Gerar dados sintéticos de um esquema
? Aste Crie imagens a partir de texto ou funções
Descreva imagens com linguagem natural
? Susttificar imagens em categorias
? Extrair entidades estruturadas de imagens
? Transforme imagens em dados estruturados
Gerar discurso a partir de texto ou funções
✍️ Transcrever o discurso do áudio gravado
? Aste gravar usuários continuamente ou como frases individuais
? ️ gravar vídeo continuamente
? Converse com assistentes e use ferramentas personalizadas
? Crie aplicativos que gerenciem estado persistente
Aqui está um passeio de turbilhão de algumas das principais características de Marvin. Para mais informações, verifique os documentos!
Marvin pode classify
o texto usando um conjunto de etiquetas:
import marvin
marvin . classify (
"Marvin is so easy to use!" ,
labels = [ "positive" , "negative" ],
)
# "positive"
Saiba mais sobre a classificação aqui.
Marvin pode extract
entidades estruturadas do 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")
# ]
Quase todas as funções de Marvin podem receber instructions
para mais controle. Aqui extraímos apenas valores monetários:
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]
Saiba mais sobre a extração de entidades aqui.
Marvin pode generate
dados sintéticos para você, seguindo as instruções e um 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'),
# ]
Saiba mais sobre a geração de dados aqui.
Marvin pode cast
texto arbitrário para qualquer tipo de python:
marvin . cast ( "one two three" , list [ int ])
# [1, 2, 3]
Isso é útil para padronizar entradas de texto ou combinar a linguagem natural a um esquema:
class Location ( pydantic . BaseModel ):
city : str
state : str
marvin . cast ( "The Big Apple" , Location )
# Location(city="New York", state="New York")
Para uma abordagem baseada em classe, @model
Decorator de Marvin pode ser aplicado a qualquer modelo pydantic para que ele seja instanciado do texto:
@ marvin . model
class Location ( pydantic . BaseModel ):
city : str
state : str
Location ( "The Big Apple" )
# Location(city="New York", state="New York")
Saiba mais sobre o elenco para os tipos aqui.
As funções de Marvin permitem combinar quaisquer entradas, instruções e tipos de saída para criar comportamentos personalizados de IA ... sem código-fonte. Essas funções podem ir muito além das capacidades de extract
ou classify
, e são ideais para o processamento complexo de linguagem natural ou o mapeamento de combinações de entradas para saídas.
@ 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
As funções de Marvin se parecem exatamente com as funções regulares do Python, exceto que você não precisa escrever nenhum código -fonte. Quando essas funções são chamadas, uma IA interpreta sua descrição e entradas e gera a saída.
Observe que Marvin não funciona gerando ou executando o código -fonte, o que seria inseguro para a maioria dos casos de uso. Em vez disso, ele usa o próprio LLM como um "tempo de execução" para prever saídas de função. Essa é realmente a fonte de seu poder: as funções Marvin podem lidar com casos de uso complexos que seriam difíceis ou impossíveis de expressar como código.
Você pode aprender mais sobre funções aqui.
Marvin pode paint
imagens do texto:
marvin . paint ( "a simple cup of coffee, still warm" )
Saiba mais sobre a geração de imagens aqui.
Além do texto, Marvin tem apoio para legendas, classificação, transformação e extração de entidades de imagens usando o modelo de visão GPT-4:
marvin . classify (
marvin . Image . from_path ( "docs/images/coffee.png" ),
labels = [ "drink" , "food" ],
)
# "drink"
Marvin pode transcrever a fala e gerar áudio para fora do corpo, mas o audio
opcional Extra fornece utilitários para gravar e reproduzir áudio.
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 ()
Ideia de recurso? Compartilhe -o no canal #development
em nossa discórdia.
? Encontrou um bug? Sinta -se à vontade para abrir um problema.
? Opinião? Marvin está sob desenvolvimento ativo e adoraríamos ouvi -lo.