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.