langchain-ai/langsmith · hamel-ai/evals · openai/evals · langfuse/langfuse如果说 Context Engineering 是「模型看到什么」 — 那 Harness Engineering 是「你怎么知道模型做得对」 + 「错的时候怎么 debug」 + 「生产环境怎么监控」。Harness 是 LLM 应用的"测试基础设施 + 监控 + 调试",是 Eval 的超集。
它跟 Eval 的区别,按 Hamel Husain + LangSmith 论文:
| 维度 | Eval | Harness |
|---|---|---|
| 关注点 | "对不对" (单次评估) | "为什么对 / 为什么错 + 怎么持续监控" |
| 修改对象 | test cases + pass rate | eval + observability + log + tracing + regression |
| 任务复杂度 | 单次评估 / 一次性 | 持续监控 / 跨版本回归 / 失败回放 |
| 关键问题 | "pass rate 多少" | "为什么这个 case 失败 + 跨版本回归率" |
1 句话总结:Eval 关注"对不对" — Harness 关注"为什么 + 怎么持续知道"。 后者是前者的超集,也是 LLM 应用的可靠性质保。
Harness Engineering 不是单一技术 — 它由 4 大组件构成:
| # | 组件 | 做什么 | 代表工具 |
|---|---|---|---|
| 1 | Eval Suite | test cases + pass rate + 自动化 | Hamel Evals / OpenAI Evals / LangSmith Evals |
| 2 | Tracing / Observability | 每次 LLM call 记录 prompt + response + latency + token cost | LangSmith / Langfuse / Arize Phoenix / Helicone |
| 3 | Log / Debug | 失败 case 回放 + 上下文栈 + token 流向 | LangSmith Debug / Helicone Playground |
| 4 | Regression / CI | 版本对比 · 跨 release pass rate · 自动报警 | LangSmith CI / Braintrust / DeepEval |
这 4 件里,Eval Suite 是 Day 1 必做,其余 3 件在 production 阶段加上。
| # | Repo | Stars | 做什么 | 应用 |
|---|---|---|---|---|
| 1 | langchain-ai/langsmith |
~1K | Eval + observability + tracing + CI · LangChain 官方 | 生产级 LLM 监控 |
| 2 | langfuse/langfuse |
~5K | 开源 LLM observability · 自托管 · 与 LangSmith 类似 | 企业自托管 |
| 3 | openai/evals |
~3K | OpenAI 官方 eval 框架 · eval cases + grading | OpenAI 模型 eval |
| 4 | confident-ai/deepeval |
~3K | DeepEval · LLM eval 框架 · G-Eval / RAG metrics | 学术 + 生产 |
| 5 | explodinggradients/ragas |
~9K | RAG eval 框架 · faithfulness / relevance / precision | RAG 应用 |
| 6 | promptfoo/promptfoo |
~5K | Prompt + LLM 评测 · 红队 · CI/CD 集成 | CI / 安全 |
这 4-Q 系列跟 Context Engineering 4-Q 是 互补关系,不是替代:
| 问题 | Context Engineering 答 | Harness Engineering 答 |
|---|---|---|
| "模型该看到什么" | Context 设计的 8 best practice · 4 类失败模式 | — |
| "模型做得对不对" | — | Eval Suite + pass rate |
| "为什么失败" | — | Tracing + Log + Debug |
| "跨版本回归" | — | Regression test + CI |
| "生产监控" | — | Observability + Alert |
核心洞察:Context Engineering 设计 → Harness 验证 + 监控。前者是 craft(手艺),后者是 engineering(工程)。两者一起才完整。
Hamel Husain 的 "evals first" 范式 + LangSmith 实现:
from langsmith import Client, evaluate from langchain import ChatOpenAI # Step 1: 写 eval cases client = Client() dataset = client.create_dataset("invest-qa-v1") client.create_examples( inputs=[ {"question": "什么是市盈率?"}, {"question": "ROE 怎么算?"}, {"question": "DCF 模型三要素?"}, ], outputs=[ {"answer": "P/E 是 股价 / 每股收益"}, {"answer": "净利润 / 股东权益"}, {< class="str">"answer": "现金流 + 折现率 + 终值"}, ], dataset_id=dataset.id, ) # Step 2: 定义 predict + grader def predict(inputs): return llm.invoke(inputs["question"]).content def grade(run, example): # 用 LLM-as-judge 评分 grader_prompt = f"""Is the answer semantically equivalent to the expected? Expected: {example.outputs['answer']} Actual: {run.outputs['answer']} Answer YES or NO.""" verdict = llm.invoke(grader_prompt).content return {"score": 1 if "YES" in verdict.upper() else 0} # Step 3: 跑 eval results = evaluate( predict, data=dataset.name, evaluators=[grade], experiment_prefix="v1-baseline", ) # Step 4: 看 pass rate print(f"Pass rate: {results.aggregate_metrics['pass_rate']:.0%}")
关键设计:用 LangSmith 把 eval cases + grading + run history 都存起来 — 每一版本都有 trace。这就是 harness 的核心。
Q1 给出了"4 大组件 + 6 repo + 与 Context Engineering 互补"。Q2 进入 如何做好 Harness Engineering — Ranked Ladder 8 个 best practice · 哪些最重要 / 哪些是 nice to have。