从外包到甲方:我在技术深水区里摸爬滚打的真实实践
去年十月的一个雨夜,我坐在杭州城西某共享办公空间的角落,盯着屏幕上不断报错的CI/CD流水线,心里一阵发凉。
那天是我跳槽到甲方公司的第37天。从干了三年外包的“工具人”,终于熬成了这家中型互联网公司正式编制的Java后端开发。月薪从15k涨到了22k,虽然还没到传说中的“大厂水平”,但足够让我和老婆在余杭买了套小两居,每月还着6800块的房贷——这数字我现在闭着眼都能背出来。
可那一刻,我差点想放弃。
一场猝不及防的技术升级战
事情起因很简单:我们团队要给内部知识库系统加一个“智能问答”功能。老板说:“现在不是都搞AI吗?咱们也得跟上。”于是这个任务,莫名其妙地落到了我头上——可能是因为我在面试时随口提了一句“用过LangChain”。
说实话,当时我对GPT-4o、Embedding这些词的理解,还停留在知乎热帖和B站科普视频层面。真正动手才发现,理论和实践之间隔着一条钱塘江。
第一个坑就栽在Prompt工程上。
我一开始天真地以为,只要把用户问题原封不动喂给GPT-4o,它就能吐出标准答案。结果呢?有一次测试,同事问:“怎么重置测试环境的数据库?” GPT-4o居然建议他“联系DBA执行DROP DATABASE”……吓得运维老张直接冲进会议室:“谁写的这玩意儿?是要删库跑路吗?”
我脸都绿了。
那天晚上回家,老婆看我蔫头耷脑的样子,递了杯热茶过来:“又加班了?你不是说新公司节奏没那么卷吗?”
“是不卷……但活儿太新了,没人带,全靠自己摸索。”我苦笑,“感觉自己像个刚学会用筷子的人,突然被塞了一整只烤鸭。”
她拍拍我肩膀:“慢慢来呗,反正房贷还得起,大不了你再回去写外包?”
我知道她是安慰我。但这句话反而让我下定决心:不能再糊弄了。
真正的Prompt工程,不是“喂问题”那么简单
我开始系统性地研究Prompt设计。不是照搬网上的模板,而是结合我们业务场景一点点调。
比如,我们的知识库内容来自Confluence、Jira和内部Wiki,格式杂乱、术语密集。直接让GPT-4o读原始文本,它经常误解上下文。于是我做了三层处理:
- 角色设定前置:每次调用API前,先告诉模型“你是一个资深Java后端工程师,熟悉Spring Boot、MySQL和K8s,正在回答内部员工的技术问题”。
- 约束输出格式:强制要求返回JSON结构,包含
answer、confidence_score和source_links字段。这样即使答错了,前端也能友好提示“该回答可信度较低”。 - 加入负面示例:在system prompt里明确写:“禁止建议删除、覆盖或重置生产环境数据;如不确定,请回答‘请咨询相关负责人’。”
最让我惊喜的是,GPT-4o对这类结构化指令的理解能力远超我的预期。以前用GPT-3.5时,经常跑偏;但4o版本似乎真的“懂事”了。
有一次,同事问:“线上OOM了怎么办?”
GPT-4o没有直接甩命令,而是分步骤回复:
- 第一步:确认是否为内存泄漏(附jstat命令)
- 第二步:如非泄漏,检查堆内存配置(附-Xmx参数说明)
- 第三步:建议联系SRE团队介入,并附上内部工单链接
那一刻,我差点热泪盈眶——不是因为技术多牛,而是终于不用再背锅了!
Embedding:让AI“读懂”你的业务语言
但光靠Prompt还不够。很快我发现,有些问题GPT-4o根本答不上来,因为它压根没“见过”我们内部文档。
这时候,Embedding就成了关键。
简单说,Embedding就是把文字转换成向量,让机器能“理解”语义相似性。比如“重启服务”和“重新部署应用”在我们团队语境下几乎是同义词,但GPT默认可能不这么认为。
我用开源的text-embedding-3-small模型(便宜又够用),把公司近三年的Confluence页面、故障复盘报告、API文档全都向量化,存进Milvus向量数据库。
然后搭建了一个检索增强生成(RAG)流程:
- 用户提问 → 转成Embedding
- 在向量库中搜索Top 3最相似的内部文档片段
- 把这些片段 + 原始问题一起喂给GPT-4o
- GPT基于真实上下文生成答案
效果立竿见影。
以前问“订单状态机流转逻辑”,GPT只能泛泛而谈;现在它能准确引用我们去年Q3重构的状态机图,并指出“待支付超时自动取消”的具体时间窗口是30分钟。
更妙的是,这套机制还能自动过滤过期信息。比如有篇文档写了“用Redis做分布式锁”,但实际半年前我们就切换成ZooKeeper了。因为新文档的Embedding权重更高,GPT自然优先采用最新方案。
那些深夜debug的崩溃与顿悟
当然,过程绝非一帆风顺。
记得上周五晚上,我卡在一个诡异的问题上:向量检索结果明明很相关,但GPT-4o生成的答案却驴唇不对马嘴。查了整整三小时,最后发现是Embedding模型和GPT的tokenization方式不一致——中文分词导致语义断裂。
凌晨一点,我瘫在椅子上,看着窗外阿里园区依旧亮着的几栋楼,突然想起三年前在外包公司改需求的日子。那时候,客户一句话“这个按钮颜色不好看”,我就得改八版,还不敢问为什么。技术?那是什么?能换钱吗?
而现在,我居然在折腾Embedding和RAG架构。虽然累,但每解决一个问题,都感觉自己离“真正的工程师”更近了一步。
第二天早上,我把解决方案写成文档发到团队群。CTO回了个👍,还说:“下周技术分享会,你来讲讲这个。”
我愣了一下,回了个“好”。那一刻,忽然觉得6800的房贷也没那么可怕了。
给同样在路上的朋友几点真心话
如果你也像我一样,刚从外包杀进甲方,面对新技术既兴奋又恐慌,我想分享几点血泪经验:
- 别怕“不懂装懂”:我面试时其实对AI一知半解,但敢于承认“我会学”。甲方更看重学习能力和责任心,而不是现成技能。
- Prompt是手艺活:别指望一次写完美。像调咖啡一样,小步迭代,记录每次改动的效果。我有个Notion表格专门记“坏Prompt vs 好Prompt”。
- Embedding不是银弹:它依赖高质量的源数据。如果你们公司文档本身就是一团乱麻,先花两周整理知识资产,比直接上AI靠谱得多。
- 善用GPT-4o的“思维链”能力:让它一步步推理,而不是直接要答案。比如问“为什么这个SQL慢?”,可以引导它先分析执行计划,再看索引,最后给优化建议。
最重要的是:别把自己当成AI的搬运工,而要成为AI与业务之间的翻译官。
GPT-4o再强,也不懂你们公司“灰度发布”的具体流程,不知道“订单补偿”背后有多少血泪教训。你的价值,恰恰在于把这些隐性知识显性化、结构化,再交给AI去放大。
写在最后:技术人的尊严,在于解决问题
上周日,我和老婆去宜家逛,路过儿童区,她指着一个小桌子说:“等以后孩子上学,就让他在这写作业。”
我笑着点头,心里却在想:或许未来某天,他问我“爸爸你是做什么的?”,我可以骄傲地说:“我是个程序员,帮很多人解决了他们解决不了的问题。”
从外包到甲方,从CRUD Boy到能主导一个AI增强系统的落地,这条路走得磕磕绊绊。但每一次深夜的debug、每一个修复的bug、每一行经过思考的代码,都在悄悄重塑我对“技术”二字的理解。
技术探索从来不是炫技,而是用工具去照亮那些原本模糊不清的角落。无论是GPT-4o、Prompt工程还是Embedding,它们只是锤子;而我们要做的,是找到值得敲打的钉子。
房贷还要还三十年,但至少现在,我睡得踏实了。
共勉。

评论 0