@tethora/langchain
v1.1.0
Published
LangChain integration for Tethora. Auto-log LLM calls, tool calls, and chain runs to your AI governance platform.
Downloads
42
Maintainers
Readme
@tethora/langchain
LangChain integration for Tethora - the AI agent governance and compliance platform.
Provides a callback handler that enforces policies and automatically logs LLM calls, chain runs, and tool calls. Actions that violate your policies are blocked before they execute.
Install
npm install @tethora/langchain tethora-sdk @langchain/coreUsage
import { Tethora } from 'tethora-sdk';
import { TethoraCallbackHandler } from '@tethora/langchain';
import { ChatOpenAI } from '@langchain/openai';
const tethora = new Tethora({ apiKey: 'your-tethora-api-key' });
const handler = new TethoraCallbackHandler({
client: tethora,
sessionId: 'conversation-123', // optional
});
const model = new ChatOpenAI({ model: 'gpt-4' });
const result = await model.invoke('Hello!', {
callbacks: [handler],
});Works With Chains and Agents
// Chains
const chain = prompt.pipe(model).pipe(outputParser);
await chain.invoke({ input: '...' }, { callbacks: [handler] });
// Agents with tools
const agent = createReactAgent({ llm: model, tools });
await agent.invoke({ messages: [...] }, { callbacks: [handler] });Policy Enforcement
Before each LLM call, chain run, and tool call, the handler checks your Tethora policies. If a policy blocks the action, a BlockedError is thrown and the operation is aborted:
import { BlockedError } from '@tethora/langchain';
try {
await chain.invoke({ input: '...' }, { callbacks: [handler] });
} catch (err) {
if (err instanceof BlockedError) {
console.log('Blocked by policy:', err.violations);
}
}To disable enforcement and use logging only:
const handler = new TethoraCallbackHandler({
client: tethora,
skipCheck: true, // Log only, no policy enforcement
});What Gets Logged
| Event Type | Actions | Data Captured |
|-----------|---------|---------------|
| llm_call | llm.start, llm.complete, llm.error, llm.blocked | Model name, prompts, token usage, duration |
| chain_run | chain.start, chain.complete, chain.error, chain.blocked | Chain name, inputs, outputs, duration |
| tool_call | tool.start, tool.complete, tool.error, tool.blocked | Tool name, input, output, duration |
Configuration
new TethoraCallbackHandler({
client: tethora, // Required: Tethora SDK instance
sessionId: '...', // Optional: group events by session
agentId: '...', // Optional: override default agent ID
skipCheck: false, // Optional: set true to disable policy enforcement
});Links
Licence
MIT
