オープンソース · Apache 2.0 · Python 3.11+
AIエージェントシステムのための実践的知恵。
Phronesis (φρόνησις): アリストテレスにとって 実践的知恵 とは、具体的な状況において適切に熟慮し判断をもって行動する能力である。LLMは episteme (知識)を持つ。エージェントには phronesisが必要だ。
from phronesis import Agent, anthropic
researcher = Agent(
name="researcher",
model=anthropic("claude-opus-4-7"),
system_prompt="You investigate questions thoroughly and cite sources.",
)
answer = await researcher.run("What is phronesis in Aristotelian ethics?")from phronesis import Agent, anthropic
researcher = Agent(
name="researcher",
model=anthropic("claude-opus-4-7"),
system_prompt="You investigate questions thoroughly and cite sources.",
)
answer = await researcher.run("What is phronesis in Aristotelian ethics?")なぜPhronesisか
エージェントはツールを持つチャットボットではない。
LLMは物事を知っている — それが エピステーメーだ。しかしエージェントは具体的な状況において判断をもって 決定し行動する 必要がある。それが フロネシスだ。多くのエージェントフレームワークはエージェントをツール利用ループに貼り付けられた強化チャットボットとして扱う。Phronesisは、それらを明示的な契約 — 型付き入力、宣言された副作用、有界なメモリ、名付けられた実行パターン — を持つ熟慮するシステムとして扱う。
既存のフレームワークは選択を迫る。一方では任意の制御フローをコードとして書く: 最大限の表現力と、半年後に誰もデバッグできないマルチエージェントシステム。他方ではすべてがYAMLやグラフビルダーで記述される: 一目では読めるが、非自明なものが必要になった瞬間に不可能になる。Phronesisは宣言的仕様と実行時のランタイムを分離する。エージェント、ツール、メモリ、パイプラインは 型付き、不変、JSONシリアライズ可能な仕様だ。実行パターンは閉じた、明確に定義されたカタログから来る — 混沌のない表現力。
すべての実行はOpenTelemetryで可観測であり、すべての仕様はバージョン管理可能、すべての契約はプロンプト内のコメントではなくランタイムチェックだ。これがデモを生み出すフレームワークと、運用できるシステムを生み出すフレームワークの違いだ。
コードツアー
4つのスニペットで見るAPI。
エージェントは、単一の宣言的仕様の下でモデル、ツール、メモリを結びつける。
from phronesis import Agent, anthropic
from phronesis.memory import SemanticMemory
agent = Agent(
name="assistant",
model=anthropic("claude-opus-4-7"),
tools=[search_web, read_file],
memory=SemanticMemory(scope="session"),
system_prompt="You are a careful research assistant.",
)from phronesis import Agent, anthropic
from phronesis.memory import SemanticMemory
agent = Agent(
name="assistant",
model=anthropic("claude-opus-4-7"),
tools=[search_web, read_file],
memory=SemanticMemory(scope="session"),
system_prompt="You are a careful research assistant.",
)パターン
繰り返し現れるエージェントの形に向けた設計。
リサーチエージェント
情報を集め、それについて推論し、引用付きで回答を統合するエージェント。
ドキュメントエージェント
見たものを明示的に記憶し、ドキュメントを読み、構造化し、操作するエージェント。
マルチエージェントパイプライン
受け渡し、討論、合意を通じて専門エージェントを構成するパイプライン。
ツール利用アシスタント
明示的な安全契約の下で型付きツールやMCPサーバーを呼び出すエージェント。
原則
六つの選択、あらゆる場所に適用。
継承よりコンポジション
エージェントは部品 — モデル、ツール、メモリ、プロンプト — から構成され、サブクラス化されない。組み立てる; オーバーライドしない。
非同期ファースト
ストリーミング、並行性、キャンセルは基本前提。同期の影のAPIを保守する必要はない。
強い型付け
全体でPydantic v2。型はドキュメントではない — フレームワークが強制するランタイム契約だ。
不変な仕様、可変な実行
定義はJSONシリアライズ可能で再現可能。実行状態は別の場所に存在し、可観測かつクエリ可能だ。
可観測性を組み込み
すべてのエージェント実行、ツール呼び出し、パイプラインステージにOpenTelemetryスパン — 最初のコミットから、後付けではない。
閉じた実行パターンのカタログ
Sequence、Parallel、ReActLoop、Consensus、Debate、Handoff。推論できる名前付きモード — 任意の制御フローではない。
内部に何があるか
小さく、原則に基づいた表面。
コア
すべてのエージェントが構築されるプリミティブ。
- エージェント
- ツール
- MCP統合
- プロンプト
- ケイパビリティ
状態とコンテキスト
エージェントはどう記憶し、何を共有するか。
- メモリ(エピソード、意味、作業、共有)
- コンテキスト管理
- セッション
オーケストレーション
エージェントはどうシステムへ構成されるか。
- パイプライン
- 実行モード
- エージェント間通信
- ポリシー
- 可観測性
プロジェクトの状況
