Marvin是一种轻巧的AI工具包,用于构建可靠,可扩展且易于信任的自然语言接口。
Marvin的每种工具都是简单而自我记录的,使用AI来解决常见但复杂的挑战,例如实体提取,分类和生成合成数据。每个工具都是独立的,可以逐步采用,因此您可以自行使用它们或与任何其他库结合使用它们。 Marvin也是多模式的,支持图像和音频生成,并使用图像作为提取和分类的输入。
Marvin是针对更关心AI而不是建立AI的开发人员,我们专注于创造出色的开发人员体验。 Marvin用户应该有能力将紧密分割的“ AI Magic”带入任何传统软件项目,并提供几行代码。
Marvin的目标是将可靠的,可观察到的软件与生成AI建立的最佳实践合并为单个易于使用的库。这是一个严肃的工具,但我们希望您对此有所乐趣。
Marvin是开源的,可以免费使用,并与?由队长组成。
使用pip
安装最新版本:
pip install marvin -U
要验证您的安装,请在终端中运行marvin version
。
Marvin由各种有用的工具组成,所有这些工具都旨在独立使用。每个代表一个常见的LLM用例,并将其供电到简单的自我文献界面。
?在没有源代码的情况下编写自定义AI功能的功能
?将文本分类为类别
?从文本中提取结构化实体
?将文本转换为结构化数据
从模式中生成合成数据
?从文本或函数中创建图像
用自然语言描述图像
?将图像分类为类别
?从图像中提取结构化实体
?将图像转换为结构化数据
从文本或功能中产生语音
✍️从录制的音频中转录演讲
?娘不断录制用户或单个短语
?持续录制视频
?与助手聊天并使用自定义工具
?构建管理持续状态的应用程序
这是Marvin的一些主要特征的旋风之旅。有关更多信息,请检查文档!
Marvin可以使用一组标签对文本classify
:
import marvin
marvin . classify (
"Marvin is so easy to use!" ,
labels = [ "positive" , "negative" ],
)
# "positive"
在此处了解有关分类的更多信息。
Marvin可以从文本中extract
结构化实体:
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")
# ]
几乎所有Marvin功能都可以得到更多控制的instructions
。在这里,我们仅提取货币价值:
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]
在此处了解有关实体提取的更多信息。
Marvin可以按照说明和可选架构为您generate
合成数据:
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'),
# ]
在此处了解有关数据生成的更多信息。
Marvin可以将任意文本cast
到任何python类型:
marvin . cast ( "one two three" , list [ int ])
# [1, 2, 3]
这对于标准化文本输入或将自然语言与模式匹配很有用:
class Location ( pydantic . BaseModel ):
city : str
state : str
marvin . cast ( "The Big Apple" , Location )
# Location(city="New York", state="New York")
对于基于班级的方法,可以将Marvin的@model
Decorator应用于任何Pydantic模型,以使其从文本进行实例化:
@ marvin . model
class Location ( pydantic . BaseModel ):
city : str
state : str
Location ( "The Big Apple" )
# Location(city="New York", state="New York")
在此处了解有关铸造类型的更多信息。
MARVIN功能可让您组合所有输入,指令和输出类型,以创建自定义AI驱动的行为...而无需源代码。这些功能可以远远超出extract
或classify
的功能,并且非常适合将输入输入到输出的复杂自然语言处理或映射组合。
@ 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
Marvin功能看起来完全像常规Python功能,只是您不必编写任何源代码。当调用这些功能时,AI会解释其描述并输入并生成输出。
请注意,Marvin无法通过生成或执行源代码来工作,对于大多数用例而言,这将是不安全的。相反,它将LLM本身用作“运行时”来预测功能输出。这实际上是其力量的来源:Marvin功能可以处理很难或不可能作为代码表达的复杂用例。
您可以在此处了解有关功能的更多信息。
Marvin可以从文字中paint
图像:
marvin . paint ( "a simple cup of coffee, still warm" )
在此处了解有关图像生成的更多信息。
除文本外,Marvin还支持使用GPT-4 Vision Model从图像中的字幕,分类,转换和提取实体:
marvin . classify (
marvin . Image . from_path ( "docs/images/coffee.png" ),
labels = [ "drink" , "food" ],
)
# "drink"
Marvin可以转录语音并在开箱即用,但可选的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 ()
功能想法?在我们的不和谐中的#development
频道中分享。
?找到一个错误?随意打开一个问题。
?反馈?马文正在积极发展,我们很想听听。