Magentic: LLMをPythonの関数に簡単連携

Magenticは、従来のPythonプログラミングと大規模言語モデル(LLM)の高度な機能を連携させるために開発された、強力で多機能なオープンソースのPythonライブラリです。定型的なコードや複雑なAPI呼び出しに煩わされることなく、自分のアプリケーションにAIを組み込みたい開発者にとって、Magenticは洗練された効率的なソリューションを提供します。

Magenticの核となる強みは、直感的なデコレータベースのアプローチにあります。@prompt@chatpromptといったデコレータを使うことで、開発者は通常のPython関数を、LLMの力を借りたインテリジェントなコンポーネントに変えられます。これにより、関数の引数をプロンプトに動的に挿入し、LLMが指定された戻り値の型に従って関数の出力を生成するような、柔軟な関数作成が可能になります。

主な特徴とメリット:

  • 構造化出力: Pythonの型ヒントやPydanticモデルを活用することで、LLMが出力を予測可能かつ構造化されたフォーマットで返すのを確実にします。これは、LLMの出力をアプリケーションロジックに直接統合する上で非常に重要です。
  • 関数呼び出し: LLMが外部のPython関数をいつ、どのように呼び出すべきかをインテリジェントに判断できるようにします。Magenticは、LLMによって生成された引数を渡してその呼び出しを処理するため、外部ツールやAPIと対話できるエージェントシステムを構築するのに理想的です。
  • ストリーミング: テキストであれ構造化されたオブジェクトであれ、LLMの出力を生成され次第処理します。これにより、知覚される遅延を減らし、リアルタイムのインタラクションを可能にすることで、ユーザーエクスペリエンスが大幅に向上します。
  • 非同期サポート: asyncioを念頭に置いて構築されているため、MagenticはLLMへの同時クエリを可能にし、複数のLLMとのやり取りが必要なアプリケーションの速度を劇的に向上させます。
  • 複数のLLMバックエンド: Magenticはプロバイダに依存せず、OpenAI、Anthropicの人気LLMだけでなく、Ollamaのような自己ホスト型ソリューションや、LiteLLMを介した他のOpenAI互換APIもサポートします。この柔軟性により、開発者はニーズに最適なモデルを選択できます。
  • 可観測性(Observability): OpenTelemetryやPydantic Logfireとの統合により、LLMとのインタラクションに関する洞察が得られ、デバッグやパフォーマンス監視に役立ちます。

Magenticはいかに開発を簡素化するか:

都市名を与えられたら現在の天気を説明する関数が必要だと想像してみてください。Magenticを使えば、get_current_weather関数を定義し、@prompt_chainを使ってLLMにこの関数を呼び出し、人間が読める形式の応答を合成するように指示できます。このチェーン機能は、多段階の推論を実行できる洗練されたAIエージェントを構築するための基本となります。

from magentic import prompt, prompt_chain, FunctionCall
from pydantic import BaseModel

class Superhero(BaseModel):
    name: str
    age: int
    power: str
    enemies: list[str]

@prompt("Create a Superhero named {name}.")
def create_superhero(name: str) -> Superhero: ...

superhero_data = create_superhero("Garden Man")
# Superhero(name='Garden Man', age=30, power='Control over plants', enemies=['Pollution Man', 'Concrete Woman'])

def get_current_weather(location, unit="fahrenheit"):
    """Get the current weather in a given location"""
    # Pretend to query an API
    return {"temperature": "72"

この記事を共有