Skip to content

Latest commit

 

History

History
93 lines (65 loc) · 3.86 KB

File metadata and controls

93 lines (65 loc) · 3.86 KB

LangSmith 评估套件

这个套件复用 local 的任务集,并把每次 (task, treatment) 运行同步到 LangSmith:

  • 每个任务是一个 dataset example(inputs = 任务/treatment,reference_outputs = 预期产物 / 必需 Skill / rubric 判据)。
  • 每个 treatment 是一个 experiment;CONTROL 与注入 Skill 的 treatment 可在实验对比页并排看。
  • 每个 run 记录 outputs(轮次、工具调用、耗时、token、成本、调用的 Skill)和 feedback(每个 rubric 维度分 + checks_pass_rate)。
  • 可选:Claude Code 的完整轨迹(trajectory)通过官方 langsmith-tracing 插件嵌套在同一个 run 下。

默认复用:

  • ../local/tasks
  • ../local/treatments
  • ../local/skills

报告和产物写入:

logs/experiments/

安装

cd eval
uv sync --extra langsmith

运行

结果上报(rubric + treatment 对比)只需要 LANGSMITH_API_KEY。推荐在 eval/.enveval/langsmith/.env 中设置:

LANGSMITH_API_KEY=lsv2_pt_...
LANGSMITH_PROJECT=comet-skill-eval
LANGSMITH_TRACING=true

Comet 会从这组 LANGSMITH_* 配置自动派生 Claude Code 官方插件需要的 TRACE_TO_LANGSMITHCC_LANGSMITH_API_KEYCC_LANGSMITH_PROJECT。只有需要覆盖插件行为时,才需要显式设置这些 CC_* / TRACE_TO_LANGSMITH 变量。

eval/ 目录运行:

# 一个 treatment = 一个 experiment;用 LANGSMITH_EXPERIMENT 命名便于对比
LANGSMITH_EXPERIMENT=COMET_FULL_040_BETA \
  uv run pytest langsmith/tests/tasks/test_tasks.py \
  --task=comet-fix-median --treatment=COMET_FULL_040_BETA -v

# 再跑 CONTROL 作为对照
LANGSMITH_EXPERIMENT=CONTROL \
  uv run pytest langsmith/tests/tasks/test_tasks.py \
  --task=comet-fix-median --treatment=CONTROL -v

生成 Skill manifest 示例:

uv run pytest langsmith/tests/tasks/test_tasks.py \
  --eval-manifest=/path/to/my-skill/comet/eval.yaml -v

轨迹追踪(可选,官方 Claude Code 插件)

轨迹追踪用官方 langsmith-tracing 插件,容器内以 headless(claude -p)方式启用。默认情况下,LangSmith suite 会在首次运行时用 node:20 一次性构建插件到 eval/.cache/langsmith-cc-plugin,后续运行复用这个缓存目录并挂载到任务容器的 /opt/langsmith-cc-plugin

因为 eval 在 Linux 容器里运行,不要在 Windows 宿主机直接 pnpm build 后挂载,避免跨平台 node_modules 失效。你通常只需要设置:

LANGSMITH_TRACING=true

如果要提前手动构建缓存,可以从 eval/ 目录运行:

docker run --rm -v "$PWD/.cache:/out" node:20 sh -c \
  "cd /tmp && git clone https://github.com/langchain-ai/langsmith-claude-code-plugins && cd langsmith-claude-code-plugins && corepack enable && pnpm install && pnpm build && cp -r . /out/langsmith-cc-plugin"

PowerShell 中可用 ${PWD}

docker run --rm -v "${PWD}\.cache:/out" node:20 sh -c "cd /tmp && git clone https://github.com/langchain-ai/langsmith-claude-code-plugins && cd langsmith-claude-code-plugins && corepack enable && pnpm install && pnpm build && cp -r . /out/langsmith-cc-plugin"

如果要覆盖默认缓存目录,可以把构建好的插件目录显式指给评估(宿主机路径):

export CC_LANGSMITH_PLUGIN_DIR=/abs/path/to/comet/eval/.cache/langsmith-cc-plugin
  • 设置后,插件目录会以 /opt/langsmith-cc-plugin 只读挂载进容器,claude--plugin-dir 启用;轨迹通过自动派生的 Claude Code 插件配置和 CC_LANGSMITH_PARENT_DOTTED_ORDER 嵌套在对应 pytest run 下。
  • 未设置时,轨迹追踪自动跳过(不报错),rubric 与 treatment 对比照常上报。
  • 如果不希望 suite 自动构建插件,设置 CC_LANGSMITH_PLUGIN_AUTO_BUILD=false