Marvinは、信頼性が高く、スケーラブルで、信頼しやすい自然言語界面を構築するための軽量AIツールキットです。
Marvinの各ツールは、AIを使用して、エンティティの抽出、分類、合成データの生成などの一般的であるが複雑な課題を解決するために、シンプルで自己文書化されています。各ツールは独立しており、徐々に採用可能であるため、独自にまたは他のライブラリと組み合わせて使用できます。 Marvinはマルチモーダルでもあり、画像とオーディオ生成の両方をサポートし、抽出と分類の入力として画像を使用しています。
Marvinは、AIを構築するよりもAIを使用することに関心がある開発者向けであり、並外れた開発者エクスペリエンスの作成に焦点を当てています。 Marvinのユーザーは、わずか数行のコードを使用して、従来のソフトウェアプロジェクトに厳密にスコープした「AI Magic」を持ち込むことができると感じる必要があります。
Marvinは、信頼できる観察可能なソフトウェアを構築するためのベストプラクティスを、生成が使いやすいライブラリに生成されたAIを構築するためのベストプラクティスと融合することを目指しています。それは深刻なツールですが、あなたがそれを楽しんでいることを願っています。
マーヴィンはオープンソースで、自由に使用でき、で作られていますか? Chempectのチームによって。
pip
で最新バージョンをインストールします。
pip install marvin -U
インストールを確認するには、ターミナルでmarvin version
を実行します。
Marvinは、すべて独立して使用するように設計されたさまざまな便利なツールで構成されています。それぞれは、一般的なLLMユースケースを表し、そのパッケージでシンプルで自己文書化されたインターフェイスにパッケージします。
?ソースコードなしでカスタムAI搭載関数を記述します
?§テキストをカテゴリに分類します
?テキストから構造化されたエンティティを抽出します
?テキストを構造化されたデータに変換します
スキーマから合成データを生成します
?€テキストまたは関数から画像を作成します
自然言語の画像を説明してください
?§画像をカテゴリに分類します
?画像から構造化されたエンティティを抽出します
?画像を構造化されたデータに変換します
テキストまたは関数からスピーチを生成します
Recorded録音されたオーディオからのスピーチを転写します
?§ユーザーを継続的に、または個々のフレーズとしてレコードします
?€ビデオを継続的にレコードします
?アシスタントとチャットして、カスタムツールを使用します
?永続的な状態を管理するアプリケーションを構築します
これは、マーヴィンの主な機能のいくつかの旋風ツアーです。詳細については、ドキュメントを確認してください!
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は任意のPythonタイプに任意のテキストをcast
できます。
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
デコレーターを任意の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モデルを使用して、画像からエンティティをキャプション、分類、変換、および抽出するサポートを持っています。
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
チャンネルでそれを共有します。
?バグを見つけましたか?お気軽に問題を開いてください。
?フィードバック?マーヴィンは積極的な開発中であり、私たちはそれを聞いてみたいです。