FDE(Forward Deployed Engineer)的职责边界正在被重写。早期 FDE 交付的是数据管道与报表,验收标准是"跑通";今天在大模型落地场景中,FDE 交付的是一个必须在客户现场持续演进的自适应系统,验收标准变成"可评测、可观测、可回滚、可迭代"。本文从四个前沿方向拆解这种范式转变,并给出可复用的工程代码。
传统交付是"一条 pipeline 从头跑到尾",前沿交付是"给 agent 一套受约束的工具 + 编排闸门"。FDE 的核心资产从硬编码流程,变成 tool schema 与权限策略——因为客户业务流程本身在变,硬编码的流程第三周就会过时。
from typing import Literal
from pydantic import BaseModel
class ToolSpec(BaseModel):
name: str
desc: str
mutating: bool # 是否改变客户系统状态
requires_approval: bool
TOOLS = {
"query_order": ToolSpec(name="query_order", desc="按订单号查状态",
mutating=False, requires_approval=False),
"refund": ToolSpec(name="refund", desc="发起退款",
mutating=True, requires_approval=True),
"escalate": ToolSpec(name="escalate", desc="转人工",
mutating=False, requires_approval=False),
}
def dispatch(tool: str, args: dict, approved: bool = False):
spec = TOOLS[tool]
if spec.requires_approval and not approved:
raise PermissionError(f"{tool} 需要人工审批,prompt 约束不算数")
return EXECUTORS[tool](**args)要点:mutating 与 requires_approval 必须在代码层强制,绝不能依赖 prompt 里写"请不要随便退款"。这是 FDE 与 demo 工程师的第一道分水岭。
前沿 FDE 不只带一个离线评测集进场,而是在客户现场部署一条"人工修正 → 自动入库 → 回归闸门"的闭环。客户业务专家每一次改判,都是最有价值的标注数据——这是任何公开 benchmark 给不了的。
import json, hashlib
from datetime import datetime, timezone
class EvalFlywheel:
def __init__(self, path: str):
self.path = path
def capture(self, query: str, model_out: dict, human_fix: dict):
case = {
"id": hashlib.md5(query.encode()).hexdigest()[:12],
"query": query, "model": model_out, "gold": human_fix,
"ts": datetime.now(timezone.utc).isoformat(),
"source": "human_fix",
}
with open(self.path, "a") as f:
f.write(json.dumps(case, ensure_ascii=False) + "\n")
def gate(self, pipeline, threshold: float = 0.9, min_cases: int = 50) -> bool:
cases = [json.loads(l) for l in open(self.path)]
if len(cases) < min_cases:
return False # 样本不足不放行
acc = sum(pipeline(c["query"]) == c["gold"] for c in cases) / len(cases)
return acc >= threshold要点:threshold + min_cases 双闸门,防止"样本只有 3 条、全部命中就上线"的经典事故。发布前跑 gate(),不过就阻断。
现场排障不能靠猜。前沿实践是采用 OpenTelemetry 的 GenAI semantic conventions 做 span 埋点,让模型调用、token 消耗、延迟直接进入客户已有的 Datadog / Jaeger,而不是另起一套黑盒看板。
from opentelemetry import trace
tracer = trace.get_tracer("fde.pipeline")
def traced_invoke(llm, prompt: str, model: str):
with tracer.start_as_current_span("gen_ai.chat") as span:
span.set_attribute("gen_ai.system", "openai")
span.set_attribute("gen_ai.request.model", model)
span.set_attribute("gen_ai.request.temperature", 0.0)
resp = llm.complete(prompt)
span.set_attribute("gen_ai.usage.input_tokens", resp.usage.input)
span.set_attribute("gen_ai.usage.output_tokens", resp.usage.output)
return resp.text统一语义约定的收益是复利式的:换模型、换框架、换客户,trace 结构不变,SRE 的排障手册也不用重写。
成本与延迟是客户现场的硬约束,数据不出域是合规红线。前沿做法是分级路由 + 入口护栏,二者都在编排层落地。
def guard(text: str) -> str:
if contains_pii(text): # 客户内网数据不得出域
raise ValueError("PII blocked at ingress")
return text
def route(query: str) -> str:
if len(query) < 80 and is_simple(query):
return "local-vllm" # 私有化小模型,零边际成本
return "cloud-large" # 复杂查询才升级
def handle(query: str, llm_router):
q = guard(query)
model = route(q)
return traced_invoke(llm_router.get(model), q, model)要点:护栏放在入口而非出口——出口拦截意味着敏感数据已经进过第三方模型,合规上说不清。
FDE 前沿的本质变化只有一句话:交付物从"能跑的代码"变成"能被客户持续演进、可观测、可评测、可回滚的系统"。工具 schema 收敛权限、评测飞轮沉淀现场知识、OTel 打通排障链路、路由与护栏守住成本与合规底线——这四件事构成了今天 FDE 的专业分界线。模型能力会持续外溢,但把工程纪律带到非标现场的这套能力,才是 FDE 真正的护城河。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。