Zum Inhalt springen
Phronesis v0.1.0 Alpha ist verfügbarAnkündigung lesen
Phronesis

Open Source · Apache 2.0 · Python 3.11+

Praktische Weisheit für KI-Agentensysteme.

Phronesis (φρόνησις): für Aristoteles, praktische Weisheit - die Fähigkeit, gut zu deliberieren und in konkreten Situationen mit Urteilsvermögen zu handeln. Ein LLM verfügt über episteme (Wissen). Ein Agent benötigt phronesis.

hello_phronesis.py
from phronesis.agents import agent
from phronesis.providers import anthropic


@agent(
    model=anthropic(model="claude-sonnet-4-6"),
    system_prompt="You investigate questions thoroughly and cite sources.",
)
def researcher() -> str:
    """Investigate a question and synthesize a cited answer."""


result = await researcher.run("What is phronesis in Aristotelian ethics?")
print(result.output)

Warum Phronesis

Ein Agent ist kein Chatbot mit Tools.

LLMs wissen Dinge - das ist Episteme. Aber Agenten müssen entscheiden und handeln mit Urteilsvermögen in konkreten Situationen. Das ist Phronesis. Die meisten Agent-Frameworks behandeln Agenten als erweiterte Chatbots, die an eine Tool-Use-Schleife geklebt sind. Phronesis behandelt sie als deliberative Systeme mit expliziten Verträgen: typisierte Eingaben, deklarierte Effekte, begrenzter Speicher, benannte Ausführungsmuster.

Bestehende Frameworks erzwingen eine Wahl. Auf der einen Seite schreibt man beliebigen Kontrollfluss als Code: maximale Ausdrucksstärke und ein Multi-Agenten-System, das sechs Monate später niemand debuggen kann. Auf der anderen wird alles in YAML oder Graph-Buildern beschrieben: auf den ersten Blick lesbar, unmöglich, sobald etwas Nicht-Triviales nötig ist. Phronesis trennt deklarative Spezifikation von der Laufzeitausführung. Agenten, Tools, Speicher und Pipelines sind typisierte, unveränderliche, JSON-serialisierbare Specs. Ausführungsmuster stammen aus einem geschlossenen, klar definierten Katalog - Ausdrucksstärke ohne Chaos.

Jeder Lauf ist über OpenTelemetry beobachtbar, jede Spec ist versionierbar, jeder Vertrag ist eine Laufzeitprüfung, kein Kommentar in einem Prompt. Das ist der Unterschied zwischen einem Framework, das Demos produziert, und einem, das Systeme produziert, die man betreiben kann.

By the numbers

Built like infrastructure, not a demo.

Phronesis is early, but it is not thin. The surface is small on purpose - and every layer carries its own tests, types, and observability.
19

Execution modes

A closed, named catalog - from Sequence and Parallel to Reflexion and Tree Search.

22

Runnable examples

Every mode with a deterministic cassette, plus a full multi-agent mini-app.

1,600+

Tests

Branch coverage gated at 90% - the build fails below the floor.

14

Stable modules

Agents, tools, memory, providers, MCP, pipelines, observability and more.

100%

Typed surface

mypy --strict across the entire source tree, no escape hatches.

Apache 2.0

Open source

Permissive license, public roadmap, no enterprise gates.

Code-Tour

Die API in vier Snippets.

Echtes Python. Echte Form. Das Framework unten befindet sich im frühen Alpha - die Oberfläche wird wachsen, aber das Design bleibt so schlank.

Ein Agent bindet ein Modell, Tools und Speicher unter einer einzigen deklarativen Spec.

agent.py
from phronesis import ToolEffect
from phronesis.agents import agent
from phronesis.providers import anthropic
from phronesis.tools import tool


@tool(effects=(ToolEffect.NETWORK,))
async def search_web(query: str, limit: int = 5) -> list[str]:
    """Search the web and return ranked snippets."""
    ...


@agent(
    model=anthropic(model="claude-sonnet-4-6"),
    tools=(search_web,),
    system_prompt="You are a careful research assistant.",
    max_iterations=8,
)
def assistant() -> str:
    """Answer questions grounded in live search results."""

Prinzipien

Sechs Entscheidungen, überall angewandt.

  • Komposition statt Vererbung

    Agenten werden aus Teilen konfiguriert - Modell, Tools, Speicher, Prompts - nicht unterklassiert. Sie setzen zusammen; Sie überschreiben nicht.

  • Async zuerst

    Streaming, Nebenläufigkeit und Abbruch sind Grundannahmen. Es gibt keine synchrone Schatten-API zu pflegen.

  • Stark typisiert

    Pydantic v2 überall. Typen sind keine Dokumentation - sie sind Laufzeitverträge, die das Framework durchsetzt.

  • Unveränderliche Specs, veränderliche Läufe

    Definitionen sind JSON-serialisierbar und reproduzierbar. Ausführungszustand lebt getrennt, beobachtbar und abfragbar.

  • Observability eingebaut

    OpenTelemetry-Spans für jeden Agent-Lauf, Tool-Aufruf und jede Pipeline-Stufe - vom ersten Commit an, nicht nachträglich angeschraubt.

  • Geschlossener Katalog von Ausführungsmustern

    Sequence, Parallel, ReActLoop, Consensus, Debate, Handoff. Benannte Modi, über die man nachdenken kann - kein beliebiger Kontrollfluss.

Was drin ist

Eine kleine, prinzipientreue Oberfläche.

Das Framework ist absichtlich schmal. Jede Schicht verdient ihren Platz, indem sie ein System sicherer zu betreiben oder den Code sechs Monate später einfacher zu lesen macht.

Kern

Die Primitive, aus denen jeder Agent gebaut ist.

  • Agenten
  • Tools
  • MCP-Integration
  • Providers (Anthropic, OpenAI, Ollama, vLLM)
  • Context builders

Zustand und Kontext

Wie Agenten sich erinnern und was sie teilen.

  • Speicher (episodisch, semantisch, Arbeits-, gemeinsam)
  • Checkpoints (pause and resume)
  • Sitzungen

Orchestrierung

Wie Agenten sich zu Systemen komponieren.

  • Pipelines
  • Ausführungsmodi
  • Provider middleware
  • Record / replay cassettes
  • Observability

Engineering

The guarantees, not the promises.

An agent framework is only as trustworthy as the discipline behind it. These are the gates every change passes before it lands.
  • Typed end to end

    mypy --strict and Pydantic v2 specs across the whole source tree. No untyped escape hatches.

  • Tested to a floor

    1,600+ tests with branch coverage gated at 90% - the build fails below it, never above it on paper.

  • Deterministic replay

    Record once, replay forever: cassette-backed runs make agent behavior reproducible in tests and CI without a network.

  • Observable by construction

    OpenTelemetry spans for every agent run, tool call, pipeline stage, and MCP session - correlated by stable ids.

  • Immutable specs

    Agents, tools, and pipelines are frozen, JSON-serializable dataclasses - versionable, diffable, reproducible.

  • Lint-clean

    ruff format and a strict ruff check gate every commit, alongside the type and test suites.

Installieren

Ein Befehl. Python 3.11 oder neuer.

$pip install phronesis-framework

Projektstatus

Phronesis befindet sich im frühen Alpha.

Die API wird sich ändern. Wir arbeiten öffentlich, um ein Framework zu bauen, das Agentensysteme ernst nimmt - typisiert, komponierbar, beobachtbar. Keine Produktionsbehauptungen, keine erfundenen Fallstudien, keine Enterprise-Schranken. Nur der Code und ein ehrliches Bekenntnis zu seinem Design.

Feedback, Ideen und Beiträge sind über GitHub Discussions und Issues willkommen. Die Roadmap, die rauen Kanten und die offenen Fragen sind alle im Repository.