mirror of
https://github.com/langchain-ai/langsmith-trace-scripts.git
synced 2026-07-01 20:04:03 -04:00
d785edb9eb57a9684ec0fae8dd486077c0c1707b
Changed from 'Customer Workflow' and 'LangChain Team Workflow' to: - Extract and Scrub PII (customer actions) - Upload (LangChain team action) Clearer separation of responsibilities.
LangSmith Trace Export & PII Scrubbing
Simple bash scripts to extract, scrub, and upload LangSmith traces.
Quick Start
Extract and Scrub PII
Customers extract their trace and scrub sensitive data before sending:
# 1. Extract trace
export LANGSMITH_API_KEY='your-api-key'
./extract_trace.sh 00000000-0000-0000-f319-b36446ca3f23
# 2. Scrub PII
./scrub_trace.sh trace_00000000-0000-0000-f319-b36446ca3f23.json "inputs.messages,inputs.email"
# 3. Review scrubbed file manually
# 4. Send trace_00000000-0000-0000-f319-b36446ca3f23.scrubbed.json to support
Upload
LangChain team uploads the scrubbed trace:
export LANGSMITH_API_KEY='your-api-key'
./upload_trace.sh customer_trace.scrubbed.json "customer-issue-1234"
Requirements
bashcurljq(install:brew install jqorapt-get install jq)
Scripts
extract_trace.sh
Extract a trace by ID.
./extract_trace.sh <trace_id> [output_file]
Output: trace_<id>.json
scrub_trace.sh
Redact PII fields from trace.
./scrub_trace.sh <trace_file> "<field1>,<field2>,..."
Output: <trace_file>.scrubbed.json
Common fields to redact:
inputs.messages- User messagesinputs.email- Email addressesinputs.query- Search queriesoutputs.text- Generated textextra.metadata.session_id- Session IDsextra.metadata.user_id- User IDsextra.metadata.api_key- API keys
Handles nested fields: Use dot notation (e.g., extra.metadata.api_key)
upload_trace.sh
Upload scrubbed trace to LangSmith project.
./upload_trace.sh <trace_file> <project_name>
Complete Example
Extract and Scrub PII:
export LANGSMITH_API_KEY='lsv2_pt_...'
# Extract
./extract_trace.sh a1b2c3d4-5678-90ab-cdef-1234567890ab
# Scrub
./scrub_trace.sh trace_a1b2c3d4-5678-90ab-cdef-1234567890ab.json \
"inputs.messages,inputs.email,extra.metadata.session_id"
# Review and send trace_a1b2c3d4-5678-90ab-cdef-1234567890ab.scrubbed.json to support
Upload:
export LANGSMITH_API_KEY='lsv2_pt_...'
./upload_trace.sh trace_a1b2c3d4-5678-90ab-cdef-1234567890ab.scrubbed.json \
"customer-acme-issue-5678"
Help
Each script has a --help flag:
./extract_trace.sh --help
./scrub_trace.sh --help
./upload_trace.sh --help
EU Region
Set LANGSMITH_ENDPOINT for EU:
export LANGSMITH_ENDPOINT='https://eu.api.smith.langchain.com'
Troubleshooting
"jq required"
brew install jq # macOS
apt-get install jq # Linux
"No runs found"
- Trace ID doesn't exist
- Trace not fully ingested (wait a few seconds)
- Wrong API key
"Failed to create project"
- API key invalid or expired
- No write permissions
Important
Customers must manually review scrubbed files before sending to ensure all PII is removed.
Languages
Shell
100%