第1899篇:我眼中的理想AI工程师——能力、心态与职业准则
第1899篇:我眼中的理想AI工程师——能力、心态与职业准则
写这篇的时候,我想了很久从哪里切入。这个话题太容易写成一篇正确但无聊的"职场成功学",我不想那样写。
我决定从自己真实的观察开始——这些年接触过很多AI工程师,有些人让我印象深刻,有些人让我觉得可惜。把这些观察整理出来,试着回答"什么样的AI工程师是我真正佩服的"。
一、让我印象深刻的AI工程师,有什么共同点
先从具体的人说起。
A是个做了七年Java的工程师,两年前开始做AI应用。他从来不是那种追新技术最快的人,但他做的每个AI项目,线上稳定性都是最好的。他的代码里有大量防御性设计:大模型挂了怎么降级,答案质量低了怎么兜底,Token超限了怎么处理。他跟我说过一句话:"AI系统不一定要最聪明,但一定要稳。"
B是个产品出身的工程师,后来转了AI方向。他跟真正懂技术的工程师比,代码能力普通,但他极其擅长"把业务问题转化成AI能解决的形式"。每次需求分析,他能说清楚:哪些部分可以用大模型,哪些部分不该用大模型,整个链路应该怎么设计。这种判断力,是纯技术出身的人往往缺失的。
C是个我见过的少数几个能真正理解大模型原理的工程师之一。他能从模型的预训练目标、注意力机制出发,解释为什么某个Prompt能work、为什么某类任务大模型一定会犯的错误。这种对底层的理解,让他在处理复杂问题时有一种其他人没有的视角。
这三个人代表了我眼中AI工程师的三个核心维度:工程严谨性、业务判断力、技术深度。但理想的AI工程师,这三个维度要都有。
二、能力维度一:工程严谨性
工程严谨性,是我认为被低估最严重的能力。
很多人做AI应用,demo好看,但上了生产就各种问题。根本原因是把AI系统当成"语言应用"在做,而不是当成"分布式系统"在做。
AI系统在工程层面面临的挑战,一点不比传统分布式系统少:
可靠性问题
大模型API会超时、会限速、会挂掉。你的系统必须能优雅处理这些情况。
@Service
public class ResilientChatService {
private final ChatClient chatClient;
// 带重试和熔断的大模型调用
@Retry(name = "llmRetry", fallbackMethod = "fallbackResponse")
@CircuitBreaker(name = "llmCircuitBreaker", fallbackMethod = "fallbackResponse")
@TimeLimiter(name = "llmTimeout")
public CompletableFuture<String> chat(String message) {
return CompletableFuture.supplyAsync(() ->
chatClient.prompt()
.user(message)
.call()
.content()
);
}
// 熔断或降级时的兜底响应
public CompletableFuture<String> fallbackResponse(String message, Exception ex) {
log.warn("LLM call failed, using fallback. Message: {}, Error: {}",
message, ex.getMessage());
// 根据问题类型返回预设的兜底答案
String fallback = fallbackAnswerService.getFallback(message);
return CompletableFuture.completedFuture(fallback);
}
}
// resilience4j配置
// resilience4j:
// retry:
// instances:
// llmRetry:
// maxAttempts: 3
// waitDuration: 1s
// retryExceptions: [io.netty.channel.ConnectTimeoutException]
// circuitbreaker:
// instances:
// llmCircuitBreaker:
// failureRateThreshold: 50
// waitDurationInOpenState: 30s
// timelimiter:
// instances:
// llmTimeout:
// timeoutDuration: 30s一致性问题
同样的输入,大模型可能给出不同的输出。对于需要一致性的场景,要有明确的策略:是接受不一致?还是通过缓存保证一致?还是设置temperature=0?
@Service
public class ConsistentResponseService {
private final ChatClient chatClient;
private final Cache<String, String> responseCache;
public String getConsistentResponse(String key, String prompt) {
// 对于相同key,总是返回相同结果
return responseCache.get(key, k -> {
return chatClient.prompt()
.user(prompt)
.options(OpenAiChatOptions.builder()
.withTemperature(0.0f) // 确定性输出
.withSeed(42) // 固定随机种子
.build())
.call()
.content();
});
}
}成本控制问题
Token用量直接影响成本,生产系统必须有成本控制机制:
@Aspect
@Component
public class TokenCostMonitor {
@Around("@annotation(MonitorTokenCost)")
public Object monitorCost(ProceedingJoinPoint pjp) throws Throwable {
long startTime = System.currentTimeMillis();
Object result = pjp.proceed();
if (result instanceof ChatResponse chatResponse) {
TokenUsage usage = chatResponse.getMetadata().getUsage();
// 记录Token使用量
metricsRegistry.counter("llm.tokens.input",
"model", getModelName())
.increment(usage.getPromptTokens());
metricsRegistry.counter("llm.tokens.output",
"model", getModelName())
.increment(usage.getGenerationTokens());
// 计算成本(按模型定价)
double cost = calculateCost(usage, getModelName());
// 如果单次调用成本过高,告警
if (cost > COST_ALERT_THRESHOLD) {
alertService.send("LLM单次调用成本过高: " + cost + "元");
}
}
return result;
}
}严谨的工程师,会把这些工程细节做到位,而不是"能跑就行"。
三、能力维度二:业务判断力
这个能力很难量化,但是你在项目里接触不同的工程师,马上能感受到差别。
有业务判断力的工程师,在拿到需求的时候会问这样的问题:
- 这个问题用AI解决,真的是最优路径吗?还是用规则引擎更简单可靠?
- 用户真正的痛点是什么?AI功能是在解决真实痛点,还是在做酷炫的demo?
- 这个功能上线后怎么衡量成功?准确率?满意度?减少人工处理量?
没有业务判断力的工程师,给他一个需求就开始写代码,不问"为什么要做",也不问"做完之后怎么算成功"。
业务判断力的来源:
- 深入的场景理解:真正用过你在做的应用的目标用户,了解他们的工作流和痛点
- 结果导向的思维习惯:不只问"怎么做",更问"做了有什么用,用什么衡量"
- 见过足够多的失败案例:知道哪些AI应用的坑最容易踩,提前避开
四、能力维度三:技术深度
技术深度指的不是"会用多少工具",而是"对底层原理的理解深度"。
AI工程师的技术深度,我认为有三个层次:
第一层:应用层理解
- 知道怎么调用大模型API
- 会做RAG的基础实现
- 会写Prompt工程
大部分工程师到这层就够用了。
第二层:机制层理解
- 理解Transformer架构的基本原理(不需要推公式,但要理解注意力机制是什么)
- 理解模型的涌现能力从哪里来
- 理解为什么in-context learning能work
- 理解向量语义搜索的原理
到这层,你能解释很多"为什么这个Prompt能work而那个不行",能设计更稳定的系统。
第三层:研究层理解
- 能读懂最新的AI论文
- 理解Fine-tuning、RLHF、DPO的原理
- 能做简单的模型实验
工程师通常不需要到这层,但如果你在做AI核心基础设施或者模型相关产品,这层是必要的。
五、心态维度一:对不确定性的舒适度
AI系统有一个根本的不确定性——输出是概率性的,不总是对的,有时候让人意外。
对不确定性感到不舒服的工程师,往往会做两种极端的事:要么过度设计各种兜底,把系统搞得很复杂;要么直接放弃AI,说"这东西不可靠"。
理想的AI工程师,能跟不确定性共处:他们接受大模型会犯错这个事实,但会系统性地设计机制来管理这个风险——不是消灭不确定性(那不可能),而是把不确定性控制在业务可以接受的范围内。
这个心态背后需要一个清晰的认知:AI系统不是要追求100%正确,而是要在某个可接受的错误率下,提供足够大的价值。
六、心态维度二:持续学习的主动性
AI领域的知识更新速度,比任何你以前经历过的技术方向都快。半年不跟进,你就会感觉和行业脱节。
但"持续学习"这四个字说起来容易,真正做到的人不多。
我见过的真正持续学习的工程师,有几个共同特征:
- 他们有固定的信息摄取习惯(订阅哪些newsletter,关注哪些GitHub repo,定期读哪些论文)
- 他们学新东西的时候,会立刻找场景来用——不只是看,而是做
- 他们不会每个新东西都追,而是有选择地深入某些方向
没有主动学习习惯的工程师,在AI时代的半衰期比以前短很多。
七、职业准则——我认为AI工程师应该守住的底线
最后说几条我认为重要的职业准则,不是什么官方宣言,是我自己觉得真正重要的东西。
准则一:对你的AI系统的输出负责
"是AI说的,不是我说的"——这句话不应该成为推卸责任的借口。你设计了这个系统,你有责任确保它的输出不会对用户造成伤害。
如果你的系统在某类情况下会输出错误或有害的内容,解决这个问题是你的责任,不是用户的责任,也不是大模型厂商的责任。
准则二:不过度夸大AI的能力
向非技术的产品经理、老板、客户解释AI能力时,说实话,不要过度承诺。
AI能做的事情,实事求是地说清楚;AI不能做的事情,要有勇气讲出来,即使这可能意味着失去一个项目或者和老板起冲突。
我见过太多因为早期过度承诺AI能力,后来上线失败、损害信任的案例。长远来看,诚实是更好的策略。
准则三:关注AI应用对人的影响
你做的AI应用,会影响真实的人。可能会改变他们的工作方式,可能会减少他们的工作机会,可能会影响他们的决策。
不需要把每个技术决策都上升到社会层面,但保有这个意识——你做的事情对真实的人有影响——会让你的技术决策更负责任。
准则四:保持技术诚实
在技术讨论里,不懂的说不懂,不确定的说不确定。AI领域现在充斥着太多"听起来很专业但其实没说清楚任何事情"的表达方式。
能把复杂的技术讲清楚,是一种能力;能坦诚地说"这个问题我没有好答案",是一种更难得的品质。
八、理想AI工程师的画像
把以上整合成一个画像:
没有人能同时做到所有这些,包括我自己。这是一个努力方向,不是一个考核标准。
结语
这篇文章里写的"理想AI工程师",多少也是在写我对自己的期待。
AI转型这条路,走的人越来越多,但真正走得扎实的不多。技术能力可以学,心态和准则却需要自己去建立。
希望这篇能给你一些参考。
