LangChain
KI-Governance für LangChain-Pipelines — automatische Policy-Checks, PII-Maskierung und Audit-Trails für jeden LLM-Call, Tool-Aufruf und Chain-Run.
LangChain Integration
Fügen Sie einen Callback-Handler zu Ihrer LangChain-Pipeline hinzu. Jeder Prompt, Tool-Call und LLM-Output wird automatisch gegen Ihre Palveron-Governance-Policies geprüft.
Installation
pip install palveron-langchainSchnellstart
from palveron_langchain import PalveronCallbackHandler
from langchain_openai import ChatOpenAI
handler = PalveronCallbackHandler(api_key="pv_live_xxx")
llm = ChatOpenAI(model="gpt-4o", callbacks=[handler])
# Jeder Aufruf wird jetzt governiert
result = llm.invoke("Fasse die Kundendaten für Max Mustermann, [email protected] zusammen")
# → PalveronGovernanceError: Blockiert — PII erkannt (E-Mail-Adresse)Was geprüft wird
| Event | Wann | Was |
|---|---|---|
on_llm_start | Vor Text-Completion | Prompt-Text |
on_chat_model_start | Vor Chat-Model-Call | Alle Nachrichten |
on_tool_start | Vor Tool-Ausführung | Tool-Name + Input |
on_llm_end | Nach Generierung (opt-in) | LLM-Output-Text |
Konfiguration
handler = PalveronCallbackHandler(
api_key="pv_live_xxx",
base_url="https://gateway.intern.firma.de:8080", # On-Prem
check_prompts=True, # Inputs vor LLM prüfen (Standard)
check_outputs=False, # LLM-Outputs prüfen (opt-in)
check_tools=True, # Tool-Inputs prüfen (Standard)
raise_on_block=True, # Exception bei BLOCKED (Standard)
fail_open=False, # Blockieren bei Gateway-Ausfall (Standard)
metadata={"team": "ml"}, # Zusätzliche Metadata pro Trace
)Mit Agents
from langchain.agents import create_react_agent, AgentExecutor
handler = PalveronCallbackHandler(api_key="pv_live_xxx")
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, callbacks=[handler])
# Sowohl LLM-Calls ALS AUCH Tool-Ausführungen werden governiert
result = executor.invoke({"input": "Lösche alle Kundendatensätze"})Mit LCEL Chains
from langchain_core.prompts import ChatPromptTemplate
handler = PalveronCallbackHandler(api_key="pv_live_xxx")
chain = ChatPromptTemplate.from_template("Zusammenfassung: {text}") | llm
result = chain.invoke(
{"text": sensibles_dokument},
config={"callbacks": [handler]},
)Governance Records
Programmatischer Zugriff auf den Audit-Trail nach der Ausführung:
print(f"Blockiert: {handler.blocked_count}")
print(f"Trace IDs: {handler.trace_ids}")
for record in handler.records:
print(f"{record.event}: {record.decision} ({record.latency_ms:.0f}ms)")Fehlerbehandlung
from palveron_langchain import PalveronCallbackHandler, PalveronGovernanceError
try:
result = llm.invoke("Sende SVN 12 345 678 A 90 an den Kunden")
except PalveronGovernanceError as e:
print(e.decision) # "BLOCKED"
print(e.trace_id) # "trc_abc123"
print(e.reason) # "PII erkannt: Sozialversicherungsnummer"Einschränkungen
LangChain Callbacks sind beobachtend — sie können Prompts nicht im Flug ändern. Der Handler kann Requests blockieren (durch Exception) und Modifikationen loggen, aber den eigentlichen Prompt-Text nicht umschreiben, bevor er das LLM erreicht.
Für vollständiges Input-Rewriting mit PII-Maskierung bevor das Model die Daten sieht, verwenden Sie den Palveron Gateway Proxy.
Source Code
Open Source (MIT): github.com/palveron/adapter-langchain.
Nächste Schritte
- Eigene Policies erstellen für Ihre LangChain-Workflows
- Gateway Proxy für vollständiges Input/Output-Rewriting
- CrewAI Integration für Multi-Agent-Governance