HARNESS ENGINEERING · 4-Q REPORT · 2026-08-07 PART 3 OF 4 · APPLICATION
Q3 OF 4

项目中如何应用
Harness Engineering?

5 种典型项目 × 必做 3 件 · 落地优先级 · 不同项目类型映射
mapping · 5 项目类型 × 必做
1单轮问答 (ChatGPT 替代) — 1 个 best practice 必做
2RAG 文档问答 — 2 个
3多步 agent / tool-calling — 3 个全做

Q2 给出了"8 best practice + 3 必做 + 5 nice-to-have"。Q3 进入下一步:不同项目类型 · 不同的应用组合。5 种典型项目 × 必做 3 件 × 落地优先级。

§15 种典型项目 × 必做映射

项目类型 Eval Suite Tracing Log/Debug CI Monitoring 何时应用
① 单轮问答 必做 Day 1
② RAG 文档问答 必做 Day 1
③ 多步 agent 必做 必做 必做 Day 1
④ Production Agent 必做 必做 必做 必做 Week 2+
⑤ ToB / 合规 Agent 必做 必做 必做 必做 必做 Month 1+

核心洞察Eval Suite 永远是 Day 1 — 即使是最简单的项目。其他根据可靠性要求递进。

§2项目类型 1 · 单轮问答

场景:替代 ChatGPT 完成某领域问答(投资分析 / 代码 review / 文档总结)。

必做

代码示例 · 单轮问答的 Eval Suite

import json
from langchain import ChatOpenAI

llm = ChatOpenAI(model="gpt-5")

# Eval cases
eval_cases = [
    {"input": "什么是市盈率?", "expected_keywords": ["P/E", "股价", "每股收益"]},
    {"input": "ROE 怎么算?", "expected_keywords": ["净利润", "股东权益"]},
]

def run_eval(case):
    response = llm.invoke(case["input"]).content
    return all(kw in response for kw case["expected_keywords"])

pass_rate = sum(run_eval(c) for c eval_cases) / len(eval_cases)
print(f"Pass rate: {pass_rate:.0%}")

# 保存 baseline
with open(".eval-baseline.json", "w") as f:
    json.dump({"pass_rate": pass_rate, "version": "v0-baseline"}, f)

§3项目类型 2 · RAG 文档问答

场景:企业内部文档 / 法律法规 / 学术论文问答。

必做

代码示例 · RAGAS 评测

from ragas import evaluate
from ragas.metrics import (
    faithfulness,
    answer_relevancy,
    context_relevancy,
    context_precision,
)

# 准备 eval dataset
dataset = [
    {
        "question": "什么是 context engineering?",
        "answer": rag_response.answer,
        "contexts": rag_response.contexts,
        "ground_truth": "...",
    },
    # ... 20 个 cases
]

# 跑 RAGAS 评测
results = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_relevancy, context_precision],
)

print(f"Faithfulness: {results['faithfulness']:.2f}")
print(f"Answer relevance: {results['answer_relevancy']:.2f}")
print(f"Context relevance: {results['context_relevancy']:.2f}")
print(f"Context precision: {results['context_precision']:.2f}")

§4项目类型 3 · 多步 Agent

场景:需要 LLM 调用多个工具完成复杂任务。

必做 · 3 件全做

代码示例 · LangSmith 全 trace

from langsmith import traceable, Client

# 1. 所有函数都 @traceable
@traceable(run_type="tool")
def search(query: str) -> str:
    return search_api(query)

@traceable(run_type="llm")
def llm_call(prompt: str) -> str:
    return llm.invoke(prompt).content

@traceable(run_type="chain")
def agent_step(state):
    # 1. think
    thought = llm_call(state["prompt"])
    # 2. act
    result = search(thought)
    # 3. observe
    return {"thought": thought, "result": result}

# 2. 跑 eval suite (LangSmith client)
client = Client()
results = client.evaluate_run(
    runnable=agent_step,
    dataset_name="agent-v1",
    evaluators=["correctness", "embedding_distance"],
)

print(f"Agent pass rate: {results.aggregate_metrics['correctness']:.0%}")

§5项目类型 4 · Production Agent

场景:多步 agent + 真实用户 + 可靠性要求 > 95%。

完整 harness — Eval + Tracing + Log + CI regression + Monitoring。详细对比见 Q4。

§6项目类型 5 · ToB / 合规 Agent

场景:金融 / 医疗 / 法律场景,需要合规 + 审计 + 红队测试。

全套 5 件 harness + 额外的:

§7所以 · Q3 答案

5 种项目 × 必做映射:
单轮问答 · Eval only
RAG · Eval + RAGAS
多步 Agent · Eval + Tracing + Log/Debug
Production Agent · + CI regression
ToB / 合规 · 全 5 件 + Red Team
核心原则 · Eval Suite 永远是 Day 1,其他根据可靠性要求递进。
— Q3 答 · Hermes Agent · 2026-08-07

§8下一个问题

Q3 给出了"5 项目类型 × 必做映射"。Q4 进入 效果到底多大 — Inset Magnifier · 4 角色 · 复合效应 vs 单点效应 · 量化数据。

03 / Q3