问题与目标
RAG 经过加载、切分、检索、重排和生成,多数问题不能从最终日志看出。LangSmith 用 Trace 保存一次请求及其子步骤,用 Dataset 保存可重复样本,用 Experiment 比较同一数据集上的不同配置。
本篇完成最小追踪与离线实验。LangSmith 是托管或可部署的平台能力,运行需要账号与配置;业务原文是否允许上传,必须先经过组织的数据合规判断。
核心概念
- Run:一次函数、检索器或模型步骤的执行;
- Trace:根 Run 与子 Run 构成的完整调用树;
- Dataset:输入、可选参考输出与元数据组成的样本集合;
- Experiment:某个应用版本在 Dataset 上的一组运行与评分;
- Evaluator:代码规则、人工、LLM-as-judge 或成对比较。
Trace 用于回答“这一次发生了什么”,Experiment 用于回答“修改前后整体是否更好”。失败生产 Trace 可以整理进 Dataset,修复后先离线回归再上线。
可运行实现
python -m pip install "langsmith>=0.3.13"
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="replace-with-your-key"
export LANGSMITH_PROJECT="stage07-rag"
先追踪一个本地目标函数:
from langsmith import traceable
@traceable(run_type="retriever", tags=["hybrid-v1"])
def retrieve(question: str) -> list[str]:
return ["关键告警必须立即通知负责人。"]
@traceable(name="rag-answer", metadata={"prompt_version": "answer-v2"})
def answer(inputs: dict) -> dict:
docs = retrieve(inputs["question"])
return {"answer": f"负责人 [S1]", "sources": ["S1"], "docs": docs}
print(answer({"question": "关键告警通知谁?"}))
再创建数据集并运行实验:
from langsmith import Client, evaluate
client = Client()
dataset_name = "stage07-rag-regression"
if not client.has_dataset(dataset_name=dataset_name):
dataset = client.create_dataset(dataset_name=dataset_name)
client.create_examples(
inputs=[{"question": "关键告警通知谁?"}],
outputs=[{"required": "负责人"}],
dataset_id=dataset.id,
)
def contains_required(run, example) -> dict:
required = example.outputs["required"]
return {"key": "contains_required", "score": int(required in run.outputs["answer"])}
evaluate(
answer,
data=dataset_name,
evaluators=[contains_required],
experiment_prefix="hybrid-v1-answer-v2",
metadata={"embedding": "embed-v1", "splitter": "recursive-500-80"},
)
SDK 小版本可能调整便捷方法,运行前以当前官方文档和安装版本为准。Experiment 名称和 metadata 应明确记录模型、Prompt、Embedding、切分、Top-k 与 Rerank 配置。
常见问题与排查
开启追踪但页面没有数据
检查环境变量是否在进程启动前设置、Project 名称、API Key 对应工作区,以及异常是否在上传前结束。先追踪一个纯函数缩小范围。
Trace 中出现密钥或敏感正文
在进入追踪前做字段级脱敏,配置采样和保留期;不要依赖事后手工删除。生产数据是否进入外部平台应由数据治理规则决定。
每次实验都换测试集
固定 Dataset 版本,在 metadata 中记录配置变量。新增失败样本时创建可追踪的数据集版本,并保留基线实验。
只比较总平均分
按问题类型、权限范围和可回答性分组,查看单条 Trace、延迟和 Token。平均分可能掩盖关键安全样本退化。
小结
LangSmith 把调试从“打印最终答案”推进到步骤级 Trace,把优化从主观体验推进到固定 Dataset 上的 Experiment。工具本身不会定义好指标,仍要先建立第 07.14 的评估口径和数据边界。
许可协议:CC BY-NC 4.0
更新于 1 小时前
觉得文章有帮助?点个赞吧!
0 条评论


