All integrations
LangChain
Add a human approval checkpoint to any LangChain agent tool or chain step.
Install
npm install @cheqpoint/sdknpm install @cheqpoint/sdk
Create a reusable approval tool
TypeScript
import { CheqpointClient } from "@cheqpoint/sdk";
import { DynamicTool } from "langchain/tools";
const cheqpoint = new CheqpointClient({
apiKey: process.env.CHEQPOINT_API_KEY!,
});
export const approvalTool = new DynamicTool({
name: "request_human_approval",
description: "Request human approval before executing a sensitive action",
func: async (input: string) => {
const parsed = JSON.parse(input);
const result = await cheqpoint.checkpoint({
action: parsed.action,
summary: parsed.summary,
details: parsed,
riskLevel: parsed.riskLevel ?? "medium",
});
if (result.status === "APPROVED") {
return JSON.stringify({ approved: true, note: result.decisionNote });
}
throw new Error(`Action rejected: ${result.decisionNote ?? "No reason given"}`);
},
});import { CheqpointClient } from "@cheqpoint/sdk";
import { DynamicTool } from "langchain/tools";
const cheqpoint = new CheqpointClient({
apiKey: process.env.CHEQPOINT_API_KEY!,
});
export const approvalTool = new DynamicTool({
name: "request_human_approval",
description: "Request human approval before executing a sensitive action",
func: async (input: string) => {
const parsed = JSON.parse(input);
const result = await cheqpoint.checkpoint({
action: parsed.action,
summary: parsed.summary,
details: parsed,
riskLevel: parsed.riskLevel ?? "medium",
});
if (result.status === "APPROVED") {
return JSON.stringify({ approved: true, note: result.decisionNote });
}
throw new Error(`Action rejected: ${result.decisionNote ?? "No reason given"}`);
},
});Full agent example
TypeScript
import { ChatOpenAI } from "langchain/chat_models/openai";
import { AgentExecutor, createOpenAIFunctionsAgent } from "langchain/agents";
import { approvalTool } from "./approvalTool";
import { RefundTool } from "./tools/refund";
const model = new ChatOpenAI({ model: "gpt-4o", temperature: 0 });
const agent = await createOpenAIFunctionsAgent({
llm: model,
tools: [approvalTool, new RefundTool()],
prompt: yourPrompt,
});
const executor = new AgentExecutor({ agent, tools: [approvalTool, new RefundTool()] });
const result = await executor.invoke({
input: "Process a £500 refund for order #12345",
});import { ChatOpenAI } from "langchain/chat_models/openai";
import { AgentExecutor, createOpenAIFunctionsAgent } from "langchain/agents";
import { approvalTool } from "./approvalTool";
import { RefundTool } from "./tools/refund";
const model = new ChatOpenAI({ model: "gpt-4o", temperature: 0 });
const agent = await createOpenAIFunctionsAgent({
llm: model,
tools: [approvalTool, new RefundTool()],
prompt: yourPrompt,
});
const executor = new AgentExecutor({ agent, tools: [approvalTool, new RefundTool()] });
const result = await executor.invoke({
input: "Process a £500 refund for order #12345",
});