
1. 背景当“会不会被 AI 替代”成为日常焦虑最近在程序员社区包括 Hacker News 这类技术论坛里一个话题反复被讨论AI 时代开发者如何保持自己的市场价值这个问题不是空穴来风。过去一年AI 编程助手从“能补全代码”进化到“能理解整个仓库的上下文并生成跨文件改动”大模型可以完成基础的代码生成、单元测试撰写、SQL 查询编写甚至能根据一张截图生成前端页面。于是很多开发者开始产生两个极端想法一端是焦虑派“既然 AI 都能写代码了初级开发岗位会不会消失”另一端是乐观派“AI 只是工具掌握提示词就能躺赢。”从我做技术落地和工程实践的观察来看这两种想法都有问题。焦虑派低估了软件工程的复杂度乐观派低估了工具化落地的门槛。AI 时代真正有价值的开发者不是和 AI 比拼代码生成速度的人而是能定义问题、拆解需求、评估结果、兜底错误的人。这篇文章不打算贩卖焦虑也不打算吹捧“AI 万能论”。我会从能力模型、技术栈选择、工程实践、常见误区几条线展开整理一套在 AI 时代保持市场竞争力、可落地执行的思路。无论你是后端、测试、前端还是算法工程师都能在其中找到自己的生态位。2. 环境与能力准备先盘点你的“AI 时代基本盘”在讨论“学什么新技术”之前先做一次能力盘点。很多人在 AI 时代感觉迷茫不是因为新东西太多而是因为不知道自己已经拥有哪些可迁移的能力。2.1 基础工程能力依然是底盘AI 再强也需要运行在真实的工程环境里。以下这几项基础能力在 AI 时代不仅没有贬值反而变得更加重要代码阅读与调试能力AI 生成的代码可能风格优美但逻辑有隐性缺陷。你需要能读懂、能调试、能修正。数据结构与算法当 AI 帮你写出 O(n²) 的代码时你需要能判断它该不该被优化。数据库与事务思维AI 可以帮你写 SQL但不会帮你理解索引、锁、事务隔离级别对业务的影响。基础网络与安全知识AI 生成的接口代码可能没有鉴权、没有参数校验、存在注入风险。最终把关的还是人。我见过不少新人把大量时间花在“研究提示词技巧”上反而忽略了基本功。这其实是本末倒置。提示词技巧的衰退周期非常快而基础工程能力的半衰期是以十年计的。2.2 工具链准备在动手实践 AI 应用开发之前建议先准备好下面的环境。不同项目的版本差异较大重点理解思路再按实际情况调整类别推荐选择说明操作系统Windows / macOS / Linux 均可本文示例以通用命令行操作为主编程语言Python 3.9 或 Java 17Python 适合快速原型Java 适合企业集成AI 模型访问OpenAI 兼容接口 / 国内大模型平台关注 API 兼容性便于替换厂商开发框架LangChain / Spring AI / 原生 SDK按团队技术栈选择向量数据库Chroma / Milvus / PGVector用于 RAG 检索版本管理Git必备部署环境Docker / Docker Compose保证环境一致性如果你所在的公司已有统一的 AI 平台或网关优先使用公司内部的模型服务这样可以避免数据出境和合规风险。个人学习则可以使用云厂商的模型 API 或者本地部署的小参数模型。3. 核心能力拆解AI 时代技术人需要掌握的 6 项硬技能下面这六项技能是我认为 AI 时代技术人最值得投入的方向。它们之间互相交叉但侧重点不同。3.1 AI 应用开发从“调用 API”到“设计 AI 功能”AI 应用开发不是简单地用openai.ChatCompletion.create()调一次接口就完事而是需要你以“功能设计”的视角思考用户的真实问题是什么这些问题适合用大模型解决吗模型输出不稳定的情况下如何设计兜底策略需要给模型多少上下文哪些信息应该通过检索注入模型返回的结果如何和后端业务逻辑、数据库状态联动举一个最简单的例子为一个客服系统增加“智能摘要”功能。初级做法是直接把历史工单文本塞给模型让它生成摘要。但工程化做法会考虑工单文本过长超出模型上下文窗口怎么办工单中包含用户隐私信息能不能直接发送给模型服务摘要结果需要保存吗保存在哪里模型超时了是重试还是降级为抽取第一段文本这些问题不是提示词能解决的而是典型的工程问题。# 文件路径ai_summary_service.py # 示例思路对长文本进行分块摘要合并避免超出上下文窗口 def summarize_long_text(text: str, chunk_size: int 2000) - str: # 1. 判断长度如果短文本直接返回 if len(text) chunk_size: return call_llm_summary(text) # 2. 长文本分块 chunks [text[i:ichunk_size] for i in range(0, len(text), chunk_size)] # 3. 每块单独摘要 chunk_summaries [call_llm_summary(chunk) for chunk in chunks] # 4. 合并摘要并做二次摘要 merged \n.join(chunk_summaries) return call_llm_summary(merged)上面这段代码的核心思路是不要把模型的上下文窗口当作无限大而是通过分治策略把大任务拆解成模型能够处理的小任务。这个思路适用于很多 AI 应用场景。当然这只是一个演示片段。生产环境里你还需要加入超时控制、异常捕获、结果校验等逻辑。3.2 提示词工程不是“咒语”而是“需求结构化”提示词工程这两年被严重神化。很多人以为学会几个模板就能成为 AI 时代的赢家。实际上提示词工程本质上是一种需求分析方法论你如何把一个模糊的诉求转变成模型能够理解并执行的结构化指令。我认为值得掌握的提示词设计模式有三个模式一角色 任务 约束 输出格式你是一名资深 Java 开发工程师。 请审查下面的代码指出潜在的内存泄漏风险。 约束只列出风险点不重写代码。 输出格式Markdown 无序列表每个风险点附上严重程度高/中/低。模式二示例驱动Few-shot对于格式要求严格的任务比如从文本中提取结构化信息给出 2-3 个输入输出示例效果通常比空泛的“请提取实体”要好得多。模式三思维链Chain of Thought对于需要多步推理的任务比如数学应用题、SQL 生成让模型“先分析再作答”往往能显著提升准确率。在提示词中加上“请先逐步思考再给出最终答案”就属于一种简单的思维链引导。这里要特别提醒提示词属于强实践、强领域相关的知识不同模型的提示词敏感度差异很大。同一个提示词在 GPT 上效果好在国产模型上未必效果一致。方法论可以迁移具体的模板需要你自己在测试集中反复调优。3.3 RAG让模型接入你的私有知识库RAGRetrieval-Augmented Generation检索增强生成是目前企业落地 AI 应用最主流的方式。它的核心思想是在模型回答问题之前先从企业知识库中检索相关内容把检索结果作为上下文“喂”给模型让模型基于真实资料生成答案。RAG 的意义在于解决两个核心问题大模型的训练数据有截止时间不知道企业内部的实时信息。大模型在专业领域会产生“一本正经地胡说八道”幻觉需要限定答案范围。RAG 的基本流程可以拆成五个步骤文档加载读取 PDF、Word、Markdown 等格式。文本分块按固定长度或语义边界把文档切成若干 chunk。向量化把每个 chunk 通过 Embedding 模型转成向量。向量存储写入向量数据库。检索生成用户提问时把问题向量化在向量库中检索相似 chunk拼接后交给大模型生成回答。这个流程看起来不复杂但每一步都有工程细节。比如文本分块的分块大小会影响检索精度分块太小导致上下文缺失分块太大导致向量检索不精准。向量数据库的选择涉及性能、运维复杂度、成本等多方面因素。我建议每个做 AI 应用开发的开发者都手动实现一遍 RAG 的完整流程。不是为了重复造轮子而是为了理解每一步的输入输出和潜在瓶颈。3.4 理解 AI Agent从“问答”到“行动”如果说 RAG 解决的是“让模型知道更多”的问题那么 AI Agent智能体解决的是“让模型做更多事情”的问题。一个简单的 Agent 至少包含以下要素大模型作为决策核心理解用户意图决定下一步动作。工具集Tools比如搜索、计算器、发送 HTTP 请求、操作数据库、执行代码。循环机制模型决定调用哪个工具 - 工具返回结果 - 模型根据结果决定下一步 - 直到任务完成。从工程视角看Agent 开发的难度不在于让模型说出“我要调用工具”而在于如何定义清晰、稳定的工具描述Tool Schema如何进行多轮工具调用的状态管理如何限制 Agent 的权限边界防止它执行危险操作如何设置最大迭代次数避免 Agent 陷入死循环比如下面这个极简示例展示了一个“查询订单并支持退款申请”的 Agent 思路{ tools: [ { type: function, function: { name: query_order, description: 根据订单号查询订单状态和金额, parameters: { type: object, properties: { order_id: { type: string, description: 订单号 } }, required: [order_id] } } }, { type: function, function: { name: apply_refund, description: 为指定订单提交退款申请该操作不可逆, parameters: { type: object, properties: { order_id: { type: string, description: 订单号 } }, required: [order_id] } } } ] }这段 JSON 的作用是向模型声明“我可以调用哪些函数”以及“每个函数的参数结构是什么”。模型本身不执行函数它只负责生成一个“调用请求”真正执行业务逻辑的是你的后端代码。在实际项目中apply_refund这类敏感操作必须加权限校验、二次确认、操作日志不能因为模型说“可以”就执行。3.5 AI 模型部署与推理优化从开发到上线很多开发者会写 AI 应用但一提到部署就头疼。这里说的“AI 模型部署”分两种情况使用厂商 API不需要自己部署模型只需要关注 API 网关、限流、成本控制。私有化部署开源模型需要用 vLLM、TGI 等推理框架或者通过 Ollama 在本地运行小模型。对于大多数业务团队我建议优先考虑使用 API 的方式因为模型迭代速度太快自己部署一个开源模型没过多久可能就落后了。但在以下场景私有化部署是必要的数据敏感不允许出域。需要完全自定义模型行为微调成本可控。离线环境无法访问公网 API。如果你负责模型的私有化部署需要关注显存与吞吐量模型参数量不是唯一指标通过量化如 INT8、INT4可以在降低显存占用的同时提升吞吐量但会引入一定精度损失。并发与排队多个业务方共用模型服务时需要设计排队策略和优先级。监控与告警记录推理延迟、输入输出 token 数、错误率。3.6 AI 编程提效把工具用成杠杆AI 编程助手已经成了很多开发者的日常伙伴。但同样是用 AI 编程不同人的效率差异巨大。关键差别在于会用的人把 AI 当结对编程伙伴不会用的人把 AI 当搜索引擎。高效使用 AI 编程工具的几个建议先想后问在要求 AI 生成代码之前先用自己的语言描述清楚问题、输入、输出和约束。让 AI 解释代码而不是生成代码遇到不熟悉的开源库让 AI 逐段解释现有代码比直接问“怎么写”更有价值。用 AI 生成测试用例让 AI 为你的核心函数生成边界测试然后人工补充遗漏。不要把 AI 的输出直接粘贴到生产环境再好的代码生成工具也需要代码 review。4. 实战案例从零构建一个企业文档问答助手下面用一到两个实战案例把前面提到的 RAG、提示词工程、AI 应用开发串联起来。这个项目的目标是输入一批企业内部的 Markdown 文档用户可以针对文档内容提问回答必须基于文档而非模型臆想。4.1 项目结构设计doc-qa/ ├── app.py # FastAPI 入口 ├── ingest.py # 文档导入与向量化 ├── retriever.py # 检索逻辑 ├── embeddings.py # Embedding 模型封装 ├── config.py # 配置项 ├── docs/ # 存放原始文档 └── requirements.txt # 依赖清单4.2 核心流程先看文档导入阶段。这里把文档按 Markdown 标题和段落拆分成块chunk并对每个 chunk 生成 embedding 向量。# 文件路径ingest.py # 说明示例使用伪代码风格需结合具体向量库 SDK 调整 from pathlib import Path from typing import List def split_markdown_by_heading(file_path: str) - List[str]: 按一级标题和二级标题拆分 Markdown 文档保持语义完整性。 content Path(file_path).read_text(encodingutf-8) chunks [] current_chunk [] for line in content.splitlines(): # 遇到新的二级标题时把前面的内容作为一个 chunk if line.startswith(## ) and current_chunk: chunks.append(\n.join(current_chunk)) current_chunk [] current_chunk.append(line) if current_chunk: chunks.append(\n.join(current_chunk)) return chunks这个简单的分块策略比单纯的“按固定字符数切分”更能保留语义边界。实际的 RAG 项目中分块策略的设计往往决定了检索质量的上限。接下来是检索与生成阶段。用户提问时系统需要把问题向量化然后到向量库中检索相似内容最后把检索结果和问题一起拼接给大模型。# 文件路径retriever.py # 说明展示检索 增强生成的核心思路 def ask(question: str, k: int 3) - str: # 1. 问题向量化 question_vector embedding_model.encode(question) # 2. 向量库相似度检索 related_chunks vector_store.search(question_vector, top_kk) # 3. 构建增强上下文 context \n\n.join(related_chunks) # 4. 构造提示词 prompt f请基于以下资料回答问题。 如果资料中没有相关信息请直接回答“资料中未找到相关内容”不要编造。 资料 {context} 问题{question} # 5. 调用大模型生成回答 response call_llm(prompt) return response这里的提示词设计有一个关键点显式告诉模型“资料中没有就如实回答”。这个约束可以有效降低幻觉问题但也要求检索质量足够高否则用户问的问题明明存在却因为检索不到而回答“未找到”体验反而更差。4.3 接入 Web 服务为了让这个问答助手可以被前端页面或聊天工具调用用 FastAPI 包一层 HTTP 接口非常方便。# 文件路径app.py from fastapi import FastAPI from pydantic import BaseModel import retriever app FastAPI() class QueryRequest(BaseModel): question: str class QueryResponse(BaseModel): answer: str app.post(/ask, response_modelQueryResponse) def ask_question(req: QueryRequest): answer retriever.ask(req.question) return QueryResponse(answeranswer)这样一个最小可运行的文档问答服务就完成了。你可以把它扩展为内部 Wiki 机器人、客服辅助系统、运维故障知识库等等。4.4 运行验证启动服务后可以用curl做一次冒烟测试curl -X POST http://localhost:8000/ask \ -H Content-Type: application/json \ -d {question: 设备的保养周期是多少}预期返回{answer: 根据资料显示设备的保养周期为每三个月一次具体步骤见第三章。}需要注意的是不同的 embedding 模型、不同的向量库、不同的大模型服务都会影响最终效果。上述代码更像是一个“脚手架”需要替换成你实际使用的 SDK。5. 常见问题与排查思路在学习和落地 AI 应用的过程中开发者容易踩到一些共性坑。下面整理成一份排查速查表问题现象常见原因解决思路模型回答与资料矛盾RAG 检索到的上下文不相关或缺失检查分块大小、embedding 模型、检索 top_k 设置回答包含资料之外的信息提示词未限定范围在提示词中强制要求“只能基于资料回答”长文档问答效果差分块策略不合理上下文语义割裂改为按标题或段落语义分块适当重叠调用模型超时上下文过长、网络波动控制输入长度、设置重试机制、使用流式输出Agent 反复调用同一个工具提示词缺少终止条件设置最大迭代轮数明确“完成任务后停止”向量检索结果不相关文档语言与问题语言不一致统一语言必要时先翻译再向量化模型响应被安全策略拦截输入内容含敏感信息检查数据合规边界避免上传敏感生产数据AI 生成代码在生产环境报错未进行代码审查和测试建立 AI 代码强制 review 和单测机制在团队落地 AI 功能时非常建议建立一套评估集Eval Set。准备几十条包含标准答案的测试问题每次修改提示词、调整检索参数后都跑一遍评估集对比回答准确率。没有评估集的提示词调优本质上就是玄学调参。6. 最佳实践与工程化建议6.1 代码与工程规范结构化 AI 调用层不要在每个业务代码里直接写模型 API 调用封装一个独立的llm_client或AiService统一处理 API Key、超时、重试、日志。结果校验模型返回的内容不能直接信任。对 JSON 格式输出要做解析校验和容错必要时让模型输出后再用代码做二次清洗。可观测性记录每次模型调用的输入、输出、token 消耗、耗时。这样出了问题可以回溯同时还能做成本分析。配置管理模型名称、温度参数、最大 token 数、prompt 模板都应该放入配置文件或配置中心而不是硬编码在代码里。6.2 数据安全与合规边界这是所有 AI 应用开发中不可忽视的一条。只向模型服务发送“完成任务所必需的最小数据”。涉及个人隐私、商业机密的字段脱敏后再传递。严格遵循公司内部的 AI 使用规范和数据出境审查。在测试环境中充分验证生产环境的变更需要走评审、备份和回滚流程。6.3 成本控制AI 应用的边际成本比传统应用高得多。每一次模型调用都在花钱。以下几点可以有效控制成本缓存复用对于相同或相似的问题在缓存层命中后直接返回结果不重复调用模型。模型分级简单任务用轻量模型复杂任务才用大模型。精简上下文不要把所有历史记录都塞进上下文做摘要或裁剪。设置配额为每个业务方设置 token 配额和告警阈值。6.4 持续学习的策略AI 技术迭代速度极快与其追逐每一个新模型不如关注不变的方法论每周花时间阅读自己所在领域的大厂技术博客了解 AI 工程实践的新趋势。每月亲手完成一个小的 AI 项目比如做一个 Agent、做一个 RAG 应用。每季度复盘自己在用的 AI 工具审视它们是否真的提升了效率。7. 学习路线AI 时代开发者如何循序渐进最后给出一条相对稳健的学习路线。不管你是后端、前端、测试还是运维都可以参考这个顺序第一阶段会用1-2 周熟练使用一个 AI 编程助手把它融入自己的开发流程。学会阅读 AI 生成的代码能判断其正确性。掌握与模型高效对话的基础沟通原则。第二阶段能调2-4 周调用大模型的 API 完成一个简单功能。理解 token、temperature、system prompt 等基础概念。完成一个包含提示词设计和异常处理的完整功能模块。第三阶段能应用1-2 个月实现一个完整的 RAG 问答应用。理解文本分块、向量检索、重排的基本原理。尝试给班级或团队做一个内部知识的机器人收集反馈并迭代。第四阶段能工程化3 个月以上掌握 AI Agent 的开发模式了解工具调用和循环机制。关注模型评测、成本控制、安全和合规问题。在自己负责的业务中找到 1-2 个可以落地 AI 的场景做出一个对团队有用的小工具。回头看“如何保持市场价值”这个问题我的答案其实很简单不要把自己定位成“会写代码的人”而是把自己定位成“能用 AI 解决业务问题的人”。代码生成的下限已经被 AI 拉高了但业务理解、系统设计、工程稳定性、数据安全意识、沟通协作能力这些仍然是人类开发者不可替代的核心竞争壁垒。保持竞争力的方法不是恐惧 AI而是把它当成杠杆把时间花在更高价值的思考和决策上。如果你能亲手完成一个 AI 应用从设计到上线都走一遍那种“AI 也不过如此”的失控感就会慢慢消失取而代之的是掌控感。希望这篇文章能帮你在 AI 时代找到一个清晰的方向。