其他
需要给应用加 LangSmith 追踪或查询/导出…
适用于使用 LangSmith 追踪 LLM 应用并查询、过滤、导出 trace/run 数据的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 58/100 ×0.15
适用场景
需要给应用加 LangSmith 追踪或特定
解决思路
- 设置环境变量:LANGSMITH_API_KEY=lsv2_pt_your_api_key_here(必需);LANGSMITH_PROJECT=your-project-name(可选,默认项目);LANGSMITH_WORKSPACE_ID=your-workspace-id(可选,用于 org-scoped key)。
- 认证必须:设置 LANGSMITH_API_KEY 环境变量,或在 CLI 命令传 --api-key(优先):`langsmith trace list --project my-project --api-key $LANGSMITH_API_KEY`。
- 在查询或与 LangSmith 交互前,始终检查环境变量或 .env 文件中的 LANGSMITH_PROJECT,以确定相关 traces/data 所在项目;如果 LangSmith 项目不可用,用最佳判断识别正确项目。
- 安装 CLI:`curl -sSL https://raw.githubusercontent.com/langchain-ai/langsmith-cli/main/scripts/install.sh | sh`。
- 仅在遇到实际 CLI 失败、未记录 workaround、令人困惑输出或缺失能力后,针对任务中每个不同问题提交一条简洁产品反馈;不要报告被追踪应用本身的常规成功或失败。
- 使用 `langsmith feedback` 前确认 LangSmith CLI v0.2.58 或更高;用 `langsmith --version` 检查。
- 检查 `langsmith feedback --help` 中的 `feedback <note>` 和 `--category`;如果不可用,跳过反馈,不要用 raw HTTP 或未发布构建。
- 提交反馈时使用现有已认证 profile、endpoint 和 workspace;反馈会发往 LangSmith Cloud(包括通过 BYOC relay);独立 self-hosted 跳过。
- 遵守用户/组织限制;如果发送反馈权限不明确,先询问。
- 反馈中用自己话总结期望 vs 观察到的 CLI 行为及 workaround;绝不发送 secrets、客户数据、trace payloads、prompts、完整堆栈、复制的命令输出、原始参数、环境变量值、本地路径、资源标识符。
- CLI 会附带 version/OS/architecture,但不会脱敏你的 note;如果无法安全脱敏则跳过。
- 选择类别:`bug`、`feature-request`、`usability`、`documentation` 或 `other`;这是 CLI 产品反馈,不是 run evaluation feedback。
- 仅在确实遇到时按示例形状提交,例如:`langsmith feedback --category usability --format json "The trace list output made it hard to distinguish root runs from child runs."`。
- 不要重试失败或限流的反馈提交、不要切换凭据/endpoint 绕过失败、不要因反馈阻塞原任务。
- LangChain/LangGraph 应用:设置 `export LANGSMITH_TRACING=true`、`export LANGSMITH_API_KEY=<your-api-key>`、`export OPENAI_API_KEY=<your-openai-api-key>`(或其它 LLM provider key),追踪自动启用。
- 可选设置 `LANGSMITH_PROJECT` 指定项目名(默认 'default')。
- 可选设置 `LANGCHAIN_CALLBACKS_BACKGROUND=false`(Python serverless),确保函数退出前 traces 完成。
- 非 LangChain 应用:如果框架原生支持 OpenTelemetry,使用 LangSmith 的 OpenTelemetry 集成。
- 如果应用未用框架,或框架无自动 OTel 支持,使用 traceable decorator/wrapper 并包装 LLM 客户端。
- Python:使用 `@traceable` 装饰器,并用 `wrap_openai()` 自动追踪:`from langsmith import traceable`、`from langsmith.wrappers import wrap_openai`、`from openai import OpenAI`、`client = wrap_openai(OpenAI())`;用 `@traceable` 装饰 `my_llm_pipeline`。
- Python 嵌套追踪:对 `rag_pipeline` 也加 `@traceable`;对 `retrieve_docs` 使用 `@traceable(name='retrieve_docs')`;对 `generate_answer` 使用 `@traceable(name='generate_answer')`;在 pipeline 内调用它们。
- TypeScript:使用 `traceable()` 包装器和 `wrapOpenAI()` 自动追踪:`import { traceable } from 'langsmith/traceable'`、`import { wrapOpenAI } from 'langsmith/wrappers'`、`import OpenAI from 'openai'`、`const client = wrapOpenAI(new OpenAI())`;用 `traceable(async (...) => ..., { name: 'my_llm_pipeline' })` 包装函数。
- TypeScript 嵌套追踪:用 `traceable(..., { name: 'retrieve_docs' })`、`traceable(..., { name: 'generate_answer' })`、`traceable(..., { name: 'rag_pipeline' })` 包装并互相调用。
- 最佳实践:把 `traceable` 应用到所有希望出现在 LangSmith 中的嵌套函数。
- 最佳实践:包装后的客户端会自动追踪所有调用——`wrap_openai()`/`wrapOpenAI()` 记录每次 LLM 调用。
- 最佳实践:给 traces 命名,便于过滤。
- 最佳实践:添加 metadata,便于搜索。
- 区分 Trace(完整执行树:root run + 所有 child runs,代表一次完整 agent 调用及所有 LLM 调用、工具调用和嵌套操作)与 Run(树中单个节点,如一次 LLM 调用或一次工具调用)。
- 一般先查询 traces——它们提供完整上下文并保留层级,适合 trajectory 分析和 dataset 生成。
- 使用 `langsmith` CLI 查询 trace 数据;命令与语言无关。
- 命令组 `trace`:`list` 列出 traces(过滤器作用于 root run)、`get` 获取单个 trace 及完整层级、`export` 导出 traces 到 JSONL 文件(每 trace 一个文件);优先使用。
- 命令组 `run`:`list` 列出 runs(扁平,过滤器作用于任意 run)、`get` 获取单个 run、`export` 导出 runs 到单个 JSONL 文件(扁平)。
- 命令组 `dataset`:`list`、`get`、`create`、`delete`、`export`、`upload`。
- 命令组 `example`:`list`、`create`、`delete`。
- 命令组 `evaluator`:`list`、`upload`、`delete`。
- 命令组 `experiment`:`list`、`get`。
- 命令组 `thread`:`list`、`get`。
- 命令组 `project`:`list`。
- 记住 traces 与 runs 关键差异:`traces *` 过滤器仅作用于 root run,无 `--run-type`,返回完整层级,导出输出为目录(每 trace 一个文件);`runs *` 过滤器作用于任意匹配 run,有 `--run-type`,返回扁平列表,导出为单文件。
- 列出最近 traces(最常见操作):`langsmith trace list --limit 10 --project my-project --api-key $LANGSMITH_API_KEY`。
- 列出带 metadata 的 traces(timing、tokens、costs):`langsmith trace list --limit 10 --include-metadata --api-key $LANGSMITH_API_KEY`。
- 按时间过滤 traces:`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`。
- 获取特定 trace 及完整层级:`langsmith trace get <trace-id> --api-key $LANGSMITH_API_KEY`。
- 列出 traces 并内联显示层级:`langsmith trace list --limit 5 --show-hierarchy --api-key $LANGSMITH_API_KEY`。
- 导出 traces 到 JSONL(每 trace 一个文件,含所有 runs):`langsmith trace export ./traces --limit 20 --full --api-key $LANGSMITH_API_KEY`。
- 按性能过滤 traces:慢 traces(>=5s)用 `langsmith trace list --min-latency 5.0 --limit 10 --api-key $LANGSMITH_API_KEY`;失败 traces 用 `langsmith trace list --error --last-n-minutes 60 --api-key $LANGSMITH_API_KEY`。
- 列出特定 run 类型(扁平列表):`langsmith run list --run-type llm --limit 20 --api-key $LANGSMITH_API_KEY`。
- 所有命令支持这些过滤且以 AND 组合;基本过滤:`--trace-ids abc,def` 过滤到特定 traces。
- 基本过滤:`--limit N` 最大结果数。
- 基本过滤:`--project NAME` 项目名。
- 基本过滤:`--last-n-minutes N` 时间过滤。
- 基本过滤:`--since TIMESTAMP` 时间过滤(ISO 格式)。
- 基本过滤:`--error / --no-error` 错误状态。
- 基本过滤:`--name PATTERN` 名称包含(大小写不敏感)。
- 性能过滤:`--min-latency SECONDS` 最小延迟(如 5 表示 >=5s)。
- 性能过滤:`--max-latency SECONDS` 最大延迟。
- 性能过滤:`--min-tokens N` 最小总 tokens。
- 性能过滤:`--tags tag1,tag2` 包含任一标签。
- 高级过滤:`--filter QUERY` 原始 LangSmith filter query,用于复杂情况(feedback、metadata 等),例如按 feedback score 过滤:`langsmith trace list --filter 'and(eq(feedback_key, "correctness"), gte(feedback_score, 0.8))' --api-key $LANGSMITH_API_KEY`。
- 导出格式:export 创建 `.jsonl` 文件(一行一个 run),字段包括 `run_id`、`trace_id`、`name`、`run_type`、`parent_run_id`、`inputs`、`outputs`。
- 使用 `--include-io` 或 `--full` 包含 inputs/outputs(dataset 生成必需)。
- 提示:从 traces 开始——它们提供 trajectory 和 dataset 生成所需的完整上下文。
- 提示:对要批量进入 datasets 的数据使用 `trace export --full`。
- 提示:总是指定 `--project`,避免混合不同项目的数据。
- 提示:临时导出使用 `/tmp`。
- 提示:需要性能/成本分析时包含 `--include-metadata`。
- 提示:拼接文件:`cat ./traces/*.jsonl > all.jsonl`。
适用边界 · 注意事项
- 没有 LangSmith API key/账号或无法访问 LangSmith Cloud 时无法使用。
- 独立 self-hosted LangSmith 环境不要提交 CLI 产品反馈。
- 不需要给应用添加 LangSmith 追踪,或不需要查询/导出 trace 数据时不要用。