diff --git a/src/oss/langgraph/observability.mdx b/src/oss/langgraph/observability.mdx index dc67ae0aa..89821a23a 100644 --- a/src/oss/langgraph/observability.mdx +++ b/src/oss/langgraph/observability.mdx @@ -30,6 +30,61 @@ export LANGSMITH_API_KEY= By default, the trace will be logged to the project with the name `default`. To configure a custom project name, see [Log to a project](#log-to-a-project). -For more information, see [Trace with LangGraph](langsmith/trace-with-langgraph). +For more information, see [Trace with LangGraph](/langsmith/trace-with-langgraph). + +## Use anonymizers to prevent logging of sensitive data in traces + +You may want to mask sensitive data to prevent it from being logged to LangSmith. You can create [anonymizers](/langsmith/mask-inputs-outputs#rule-based-masking-of-inputs-and-outputs) and apply them to +your graph using configuration. This example will redact anything matching the Social Security Number format XXX-XX-XXXX from traces sent to LangSmith. + +:::python +```python Python +from langchain_core.tracers.langchain import LangChainTracer +from langgraph.graph import StateGraph, MessagesState +from langsmith import Client +from langsmith.anonymizer import create_anonymizer + +anonymizer = create_anonymizer([ + # Matches SSNs + { "pattern": r"\b\d{3}-?\d{2}-?\d{4}\b", "replace": "" } +]) + +tracer_client = Client(anonymizer=anonymizer) +tracer = LangChainTracer(client=tracer_client) +# Define the graph +graph = ( + StateGraph(MessagesState) + ... + .compile() + .with_config({'callbacks': [tracer]}) +) +``` +::: +:::js +```typescript TypeScript +import { StateGraph } from "@langchain/langgraph"; +import { LangChainTracer } from "@langchain/core/tracers/tracer_langchain"; +import { StateAnnotation } from "./state.js"; +import { createAnonymizer } from "langsmith/anonymizer" +import { Client } from "langsmith" + + +const anonymizer = createAnonymizer([ + # Matches SSNs + { pattern: /\b\d{3}-?\d{2}-?\d{4}\b/, replace: "" } +]) + +const langsmithClient = new Client({ anonymizer }) +const tracer = new LangChainTracer({ + client: langsmithClient, +}); + +export const graph = new StateGraph(StateAnnotation) + .compile() + .withConfig({ + callbacks: [tracer], +}); +``` +:::