Anbinden · Weg C

Python-SDK

Das SDK setzt die Kopfzeilen für Sie, klammert Läufe und wirft bei einem Stopp eine benannte Ausnahme. Es überträgt nichts, was Ihr Anbieter-Client nicht ohnehin schickt.

Installation

# Das SDK liegt im Tokenwacht-Repository unter sdk/python (Python ≥ 3.9, nur httpx als Abhängigkeit).
pip install ./sdk/python
# Veröffentlichung auf PyPI als „tokenwacht-sdk" ist vorbereitet; bis dahin aus dem Repository installieren.

Anthropic-Client mit Lauf-Klammer

import os
from anthropic import Anthropic
from tokenwacht_sdk import Wacht, BudgetUeberschritten

wacht = Wacht(schluessel=os.environ["TOKENWACHT_KEY"], agent="nils-icp-research", kunde="kunde-4711")
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"], base_url=wacht.anthropic_url(), http_client=wacht.http_client())

with wacht.lauf("RL-0815", budget_eur=2.5) as lauf:
    try:
        client.messages.create(model="claude-sonnet-5", max_tokens=800, messages=[…])
        lauf.schritt("leadliste_erzeugen")          # X-TW-Step und X-TW-Funktion ab hier
        client.messages.create(…)
    except BudgetUeberschritten as b:
        print("Tokenwacht hat den Lauf gestoppt:", b.hinweis, b.cockpit_url)

OpenAI-Client

from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"], base_url=wacht.openai_url(), http_client=wacht.http_client())

Was das SDK tut

  • wacht.http_client() liefert einen httpx-Client mit Ereignis-Hooks: vor jeder Anfrage setzt er X-TW-Key, X-TW-Agent, X-TW-Kunde, innerhalb einer Lauf-Klammer X-TW-Run, X-TW-Step, X-TW-Funktion.
  • Antwortet der Proxy mit 402 und einem Tokenwacht-Fehler, wirft es BudgetUeberschritten mit regel, grenze, verbraucht_eur, lauf_id, hinweis, cockpit_url.
  • wacht.lauf(id, budget_eur=…) ist ein Kontextmanager; verschachtelte Aufrufe in Threads oder Tasks erben den Lauf über eine Kontextvariable.
  • wacht.melden([...]) schickt eigene Zählwerte an die Ingest-Schnittstelle, z. B. aus einem Framework-Callback.

Frameworks

LangChain: Geben Sie dem ChatAnthropic- bzw. ChatOpenAI-Modell base_url und default_headers mit, oder übergeben Sie den httpx-Client des SDK. LlamaIndex, Haystack, pydantic-ai: dasselbe Muster, jedes dieser Frameworks erlaubt Basis-URL und Kopfzeilen am Modell-Client.

from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-sonnet-5", base_url=wacht.anthropic_url(),
                    default_headers=wacht.kopf())          # Kopfzeilen des aktuellen Kontexts
Prüfen: curl https://tokenwacht.de/v1/anbindung/pruefen -H "Authorization: Bearer $TOKENWACHT_KEY" — das letzte Ereignis muss Ihren Agentennamen tragen.