Ben @ Grepture

Das Grepture Python SDK ist da

pip install grepture: PII-Redaktion, latenzfreies Tracing und Prompt-Management fuer Python-LLM-Apps. Eine Zeile ins OpenAI- oder Anthropic-SDK.

Das Gateway, jetzt in der Sprache deiner LLM-App

Der meiste produktive LLM-Code ist Python. Die Frameworks sind Python, das Agent-Tooling ist Python, und wenn eine Bibliothek in diesem Bereich archiviert wird, trifft es zuerst die Python-Teams. Bis heute war Greptures SDK-Story TypeScript-only: Der Proxy funktionierte immer aus jeder Sprache (er ist eine Base-URL), aber Trace-Modus, Prompt-Helfer und die ergonomische Client-Verdrahtung lebten allein in @grepture/sdk.

Diese Luecke ist geschlossen. pip install grepture bringt Python alles, was das TypeScript-SDK kann, sync und async, auf Python 3.9+ mit httpx als einziger Dependency.

Eine Zeile in deinen bestehenden Client

Das SDK haengt sich ueber client_options() in jeden OpenAI-artigen Client. Es liefert Base-URL, Key und einen vorverdrahteten HTTP-Client, dein bestehender Code laeuft unveraendert weiter:

import os
from openai import OpenAI
from grepture import Grepture

grepture = Grepture(
    api_key=os.environ["GREPTURE_API_KEY"],
    proxy_url="https://proxy.grepture.com",
)

client = OpenAI(
    **grepture.client_options(
        api_key=os.environ["OPENAI_API_KEY"],
        base_url="https://api.openai.com/v1",
    )
)

# Jeder Request wird jetzt gescannt, redigiert und geloggt
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": user_input}],
)

Dasselbe Muster funktioniert mit dem Anthropic-SDK, Azure OpenAI und jedem OpenAI-kompatiblen Anbieter. Unter der Haube steckt ein eigener httpx-Transport, kein Monkeypatch: Wir schreiben Pfad und Header auf Transport-Ebene um, was SDK-Upgrades uebersteht und Streaming ohne Sonderfaelle abdeckt. Dein Provider-Key wird per X-Grepture-Auth-Forward weitergereicht; reversible Redaktion und Secret-Scanning laufen, bevor irgendetwas deine Infrastruktur verlaesst.

Trace-Modus: Observability ohne den Hop

Der Proxy-Modus setzt Grepture auf den Request-Pfad. Der Trace-Modus nicht: Requests gehen direkt zum Anbieter, und das SDK erfasst Tokens, Modell, Latenz und Kosten im Hintergrund, gebatcht und asynchron verschickt.

grepture = Grepture(
    api_key=os.environ["GREPTURE_API_KEY"],
    proxy_url="https://proxy.grepture.com",
    mode="trace",
)

client = OpenAI(**grepture.client_options(
    api_key=os.environ["OPENAI_API_KEY"],
    base_url="https://api.openai.com/v1",
))

# ... deine Calls laufen mit voller Provider-Geschwindigkeit ...

grepture.flush()  # letzten Batch vor dem Exit ausliefern (Serverless!)

Streaming laeuft ueber einen Tee-Byte-Stream: Chunks gehen unveraendert an deinen Code durch, waehrend das SDK gerade genug vom SSE-Ende mitliest, um die Usage zu extrahieren. Null zusaetzliche Latenz, und der Trace landet trotzdem.

Fuer asyncio-Apps gibt es AsyncGrepture mit identischer Oberflaeche: AsyncOpenAI(**grepture.client_options(...)), await grepture.flush().

Der Rest ist auch mitgekommen

  • Labels, Metadaten und Log-Events fuer Kostenzuordnung: set_label("summarize"), set_metadata({"team": "support"}), log("cache-hit", {...}).
  • Prompt-Management: grepture.prompt.use() fuer serverseitige Aufloesung durch den Proxy, assemble() fuer lokale Aufloesung im Trace-Modus, mit denselben Handlebars-Templates wie im Dashboard.
  • PII-sichere Embeddings: grepture.embeddings.create(...) redigiert vor dem Embedden, und geblockte Requests werfen einen Fehler mit den erkannten Kategorien.
  • Typisierte Fehler (BlockedError, AuthError, ProxyError), damit ein geblockter Request eine fangbare Exception ist und kein mysterioeser 403.

Paritaet ist getestet, nicht versprochen

Zwei SDKs mit einem Wire-Protocol driften auseinander, wenn nichts sie daran hindert. Unser Etwas ist eine Fixture-Suite: Die Python-Tests fixieren exakt die Header-Namen, das Trace-Entry-JSON und die Batching-Konstanten, die das TypeScript-SDK sendet, bis hin zu Details wie JavaScript-Truthiness in der Template-Aufloesung (ein leeres Objekt ist in JS truthy, also auch in unserem Python-Port) und float-toleranten Token-Zaehlern. Bricht eine kuenftige Aenderung die Paritaet, faellt ein Test um, bevor ein Request es tut.

Wo sich die Plattformen wirklich unterscheiden, haben wir das Verhalten bewusst angeglichen: Pythons client_options() liefert einen http_client, wo TypeScript einen fetch-Wrapper liefert, und beide reichen deine konfigurierten Timeouts unangetastet durch.

Loslegen

Die Redact-PII-Guides zeigen TypeScript und Python jetzt nebeneinander mit einem Sprach-Umschalter, und das Examples-Repo enthaelt vier lauffaehige Python-Skripte fuer Proxy-Modus, Trace-Modus, Labels und asyncio. Das SDK selbst ist Open Source: Code und Issue-Tracker finden sich unter grepture/sdk-python.

Wenn du von einer archivierten Guardrails-Bibliothek kommst: Der llm-guard-Migrationsleitfaden hat jetzt eine erstklassige Antwort fuer sein "Nachher"-Snippet. Der Code, zu dem du migrierst, ist eine Base-URL-Aenderung plus pip install grepture, und die Scanner-Kette, die du loeschst, kommt nie wieder.

[Schützen Sie Ihren API-Traffic noch heute]

Scannen Sie Anfragen auf PII, Geheimnisse und sensible Daten in Minuten. Kostenloser Plan verfügbar.

Kostenlos starten