
Langsmith Trace
- 3.2k installs
- 142 repo stars
- Updated April 9, 2026
- langchain-ai/langsmith-skills
langsmith-trace is an agent skill that adds LangSmith tracing to LLM applications and queries traces via the langsmith CLI for debugging and analysis.
About
langsmith-trace is a LangSmith skill covering two topics: adding tracing to applications and querying traces for debugging and analysis in Python and JavaScript. Setup requires LANGSMITH_API_KEY and optionally LANGSMITH_PROJECT and LANGSMITH_WORKSPACE_ID; CLI commands accept --api-key when env vars are unset. For LangChain and LangGraph apps, tracing is automatic once LANGSMITH_TRACING and LANGSMITH_API_KEY are exported, with LANGCHAIN_CALLBACKS_BACKGROUND=false recommended for serverless. Non-LangChain apps use OpenTelemetry when available or the traceable decorator plus wrap_openai for Python client instrumentation with nested span examples for RAG pipelines. The langsmith CLI installs via curl from langchain-ai/langsmith-cli and supports trace list and export operations against named projects. The skill stresses checking LANGSMITH_PROJECT in the environment before querying so agents target the correct trace store. Developers invoke it when instrumenting LLM pipelines or pulling production traces for latency, failure, and prompt debugging.
- Covers both adding tracing and querying or exporting LangSmith traces.
- LangChain and LangGraph tracing activates with LANGSMITH_TRACING and API key env vars.
- Python path uses traceable decorator and wrap_openai for non-framework apps.
- langsmith CLI installs from langchain-ai/langsmith-cli install script.
- Requires checking LANGSMITH_PROJECT before querying the right trace project.
Langsmith Trace by the numbers
- 3,233 all-time installs (skills.sh)
- +120 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #245 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
langsmith-trace capabilities & compatibility
- Capabilities
- langchain automatic tracing configuration · python traceable and wrap_openai instrumentation · langsmith cli trace query and export
- Use cases
- debugging · orchestration
- Pricing
- Bring your own API key
What langsmith-trace says it does
LANGSMITH_API_KEY=lsv2_pt_your_api_key_here # REQUIRED
For LangChain/LangGraph apps, tracing is automatic. Just set environment variables:
npx skills add https://github.com/langchain-ai/langsmith-skills --skill langsmith-traceAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3.2k |
|---|---|
| repo stars | ★ 142 |
| Security audit | 2 / 3 scanners passed |
| Last updated | April 9, 2026 |
| Repository | langchain-ai/langsmith-skills ↗ |
How do I instrument my LangChain or custom LLM app with LangSmith and pull traces when something fails in production?
Add LangSmith tracing to LangChain or custom apps and query or export traces using the langsmith CLI.
Who is it for?
Developers operating LangChain, LangGraph, or OpenAI-wrapped Python apps who need LangSmith observability and trace queries.
Skip if: Skip when the stack has no LangSmith account or tracing is handled entirely by another APM with no LLM spans needed.
When should I use this skill?
User works with LangSmith tracing, langsmith CLI, traceable decorator, or exporting LLM run traces.
What you get
Configured tracing env vars, instrumented code paths, and CLI commands to list or export traces from the target project.
- tracing configuration
- LangSmith run exports
- span-level debug reports
Files
<oneliner> Two main topics: adding tracing to your application, and querying traces for debugging and analysis. Python and Javascript implementations are both supported. </oneliner>
<setup> Environment Variables
LANGSMITH_API_KEY=lsv2_pt_your_api_key_here # REQUIRED
LANGSMITH_PROJECT=your-project-name # Optional: default project
LANGSMITH_WORKSPACE_ID=your-workspace-id # Optional: for org-scoped keysAuthentication is REQUIRED: either set the LANGSMITH_API_KEY environment variable, or pass the --api-key flag to CLI commands (preferred):
langsmith trace list --project my-project --api-key $LANGSMITH_API_KEYIMPORTANT: Always check the environment variables or .env file for LANGSMITH_PROJECT before querying or interacting with LangSmith. This tells you which project contains the relevant traces and data. If the LangSmith project is not available, use your best judgement to identify the right one.
CLI Tool
curl -sSL https://raw.githubusercontent.com/langchain-ai/langsmith-cli/main/scripts/install.sh | sh</setup>
<trace_langchain_oss> For LangChain/LangGraph apps, tracing is automatic. Just set environment variables:
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY=<your-api-key>
export OPENAI_API_KEY=<your-openai-api-key> # or your LLM provider's keyOptional variables:
LANGSMITH_PROJECT- specify project name (defaults to "default")LANGCHAIN_CALLBACKS_BACKGROUND=false- use for serverless to ensure traces complete before function exit (Python)
</trace_langchain_oss>
<trace_other_frameworks> For non-LangChain apps, if the framework has native OpenTelemetry support, use LangSmith's OpenTelemetry integration.
If the app is NOT using a framework, or using one without automatic OTel support, use the traceable decorator/wrapper and wrap your LLM client.
<python> Use @traceable decorator and wrap_openai() for automatic tracing.
from langsmith import traceable
from langsmith.wrappers import wrap_openai
from openai import OpenAI
client = wrap_openai(OpenAI())
@traceable
def my_llm_pipeline(question: str) -> str:
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": question}],
)
return resp.choices[0].message.content
# Nested tracing example
@traceable
def rag_pipeline(question: str) -> str:
docs = retrieve_docs(question)
return generate_answer(question, docs)
@traceable(name="retrieve_docs")
def retrieve_docs(query: str) -> list[str]:
return docs
@traceable(name="generate_answer")
def generate_answer(question: str, docs: list[str]) -> str:
return client.chat.completions.create(...)</python>
<typescript> Use traceable() wrapper and wrapOpenAI() for automatic tracing.
import { traceable } from "langsmith/traceable";
import { wrapOpenAI } from "langsmith/wrappers";
import OpenAI from "openai";
const client = wrapOpenAI(new OpenAI());
const myLlmPipeline = traceable(async (question: string): Promise<string> => {
const resp = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: question }],
});
return resp.choices[0].message.content || "";
}, { name: "my_llm_pipeline" });
// Nested tracing example
const retrieveDocs = traceable(async (query: string): Promise<string[]> => {
return docs;
}, { name: "retrieve_docs" });
const generateAnswer = traceable(async (question: string, docs: string[]): Promise<string> => {
const resp = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: `${question}\nContext: ${docs.join("\n")}` }],
});
return resp.choices[0].message.content || "";
}, { name: "generate_answer" });
const ragPipeline = traceable(async (question: string): Promise<string> => {
const docs = await retrieveDocs(question);
return await generateAnswer(question, docs);
}, { name: "rag_pipeline" });</typescript>
Best Practices:
- Apply traceable to all nested functions you want visible in LangSmith
- Wrapped clients auto-trace all calls —
wrap_openai()/wrapOpenAI()records every LLM call - Name your traces for easier filtering
- Add metadata for searchability
</trace_other_frameworks>
<traces_vs_runs> Use the langsmith CLI to query trace data.
Understanding the difference is critical:
- Trace = A complete execution tree (root run + all child runs). A trace represents one full agent invocation with all its LLM calls, tool calls, and nested operations.
- Run = A single node in the tree (one LLM call, one tool call, etc.)
Generally, query traces first — they provide complete context and preserve hierarchy needed for trajectory analysis and dataset generation. </traces_vs_runs>
<command_structure> Two command groups with consistent behavior:
langsmith
├── trace (operations on trace trees - USE THIS FIRST)
│ ├── list - List traces (filters apply to root run)
│ ├── get - Get single trace with full hierarchy
│ └── export - Export traces to JSONL files (one file per trace)
│
├── run (operations on individual runs - for specific analysis)
│ ├── list - List runs (flat, filters apply to any run)
│ ├── get - Get single run
│ └── export - Export runs to single JSONL file (flat)
│
├── dataset (dataset operations)
│ ├── list - List datasets
│ ├── get - Get dataset details
│ ├── create - Create empty dataset
│ ├── delete - Delete dataset
│ ├── export - Export dataset to file
│ └── upload - Upload local JSON as dataset
│
├── example (example operations)
│ ├── list - List examples in a dataset
│ ├── create - Add example to a dataset
│ └── delete - Delete an example
│
├── evaluator (evaluator operations)
│ ├── list - List evaluators
│ ├── upload - Upload evaluator
│ └── delete - Delete evaluator
│
├── experiment (experiment operations)
│ ├── list - List experiments
│ └── get - Get experiment results
│
├── thread (thread operations)
│ ├── list - List conversation threads
│ └── get - Get thread details
│
└── project (project operations)
└── list - List tracing projectsKey differences:
traces * | runs * | |
|---|---|---|
| Filters apply to | Root run only | Any matching run |
--run-type | Not available | Available |
| Returns | Full hierarchy | Flat list |
| Export output | Directory (one file/trace) | Single file |
</command_structure>
<querying_traces> Query traces using the langsmith CLI. Commands are language-agnostic.
# List recent traces (most common operation)
langsmith trace list --limit 10 --project my-project --api-key $LANGSMITH_API_KEY
# List traces with metadata (timing, tokens, costs)
langsmith trace list --limit 10 --include-metadata --api-key $LANGSMITH_API_KEY
# Filter traces by time
langsmith trace list --last-n-minutes 60 --api-key $LANGSMITH_API_KEY
langsmith trace list --since 2025-01-20T10:00:00Z --api-key $LANGSMITH_API_KEY
# Get specific trace with full hierarchy
langsmith trace get <trace-id> --api-key $LANGSMITH_API_KEY
# List traces and show hierarchy inline
langsmith trace list --limit 5 --show-hierarchy --api-key $LANGSMITH_API_KEY
# Export traces to JSONL (one file per trace, includes all runs)
langsmith trace export ./traces --limit 20 --full --api-key $LANGSMITH_API_KEY
# Filter traces by performance
langsmith trace list --min-latency 5.0 --limit 10 --api-key $LANGSMITH_API_KEY # Slow traces (>= 5s)
langsmith trace list --error --last-n-minutes 60 --api-key $LANGSMITH_API_KEY # Failed traces
# List specific run types (flat list)
langsmith run list --run-type llm --limit 20 --api-key $LANGSMITH_API_KEY</querying_traces>
<filters> All commands support these filters (all AND together):
Basic filters:
--trace-ids abc,def- Filter to specific traces--limit N- Max results--project NAME- Project name--last-n-minutes N- Time filter--since TIMESTAMP- Time filter (ISO format)--error / --no-error- Error status--name PATTERN- Name contains (case-insensitive)
Performance filters:
--min-latency SECONDS- Minimum latency (e.g.,5for >= 5s)--max-latency SECONDS- Maximum latency--min-tokens N- Minimum total tokens--tags tag1,tag2- Has any of these tags
Advanced filter:
--filter QUERY- Raw LangSmith filter query for complex cases (feedback, metadata, etc.)
# Filter traces by feedback score using raw LangSmith query
langsmith trace list --filter 'and(eq(feedback_key, "correctness"), gte(feedback_score, 0.8))' --api-key $LANGSMITH_API_KEY</filters>
<export_format> Export creates .jsonl files (one run per line) with these fields:
{"run_id": "...", "trace_id": "...", "name": "...", "run_type": "...", "parent_run_id": "...", "inputs": {...}, "outputs": {...}}Use --include-io or --full to include inputs/outputs (required for dataset generation). </export_format>
<tips>
- Start with traces — they provide complete context needed for trajectory and dataset generation
- Use
traces export --fullfor bulk data destined for datasets - Always specify
--projectto avoid mixing data from different projects - Use
/tmpfor temporary exports - Include
--include-metadatafor performance/cost analysis - Stitch files:
cat ./traces/*.jsonl > all.jsonl
</tips>
Related skills
Forks & variants (1)
Langsmith Trace has 1 known copy in the catalog totaling 35 installs. They canonicalize to this original listing.
- langchain-ai - 35 installs
How it compares
LangSmith-specific tracing and CLI queries, not generic application logging setup.
FAQ
What environment variables are required?
LANGSMITH_API_KEY is required; LANGSMITH_PROJECT and LANGSMITH_WORKSPACE_ID are optional but project should be checked before querying.
How does LangChain tracing start?
Set LANGSMITH_TRACING=true and LANGSMITH_API_KEY; tracing is automatic for LangChain and LangGraph apps.
Is Langsmith Trace safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.