AI 工程师进阶之路:从零实现可落地 LLM 智能体项目全流程复盘
前言随着大语言模型LLM技术产业化落地加速LLM 智能体Agent 已经成为 AI 研发岗核心考核方向。从华为、阿里、字节等大厂招聘要求不难看出企业不再只满足求职者会调用大模型 API更看重独立开发 Agent、RAG 检索增强、任务规划、工具调用、性能调优、项目完整落地的实战能力。本文将以一名一线 AI 工程师落地企业级文档问答智能体为案例完整复盘从零搭建可商用 LLM Agent 全流程涵盖技术栈选型、向量数据库搭建、RAG 检索增强、提示词工程、Agent 记忆 / 任务规划 / 工具调用核心逻辑、性能排查优化、项目部署上线全链路配套可直接运行 Python 代码同时对标大厂 Agent 岗位核心考点拆解技术细节帮你补齐从 “会调 API” 到 “独立落地智能体项目” 的核心能力。全文技术栈对齐招聘需求Python 主力开发、Transformer 底层原理、向量数据库、RAG、提示词工程、Agent 框架、记忆机制、任务规划、工具调用同时覆盖性能优化、问题排查等工程师必备工程能力。一、项目整体架构与技术选型对齐岗位技术基础要求1.1 需求背景企业内部存在大量 PDF、Markdown 产品手册、技术文档传统大模型存在知识滞后、幻觉严重、无法调用外部工具计算 / 查询等问题。我们需要开发专属文档智能体实现三大核心能力私有文档知识库问答消除大模型幻觉RAG 检索增强自主任务拆解、多步骤推理Agent 任务规划调用计算器、文件读取、接口查询外部工具工具调用长期对话记忆区分短期上下文记忆与长期知识库记忆记忆机制。1.2 技术栈选型匹配招聘技术基础要求主力开发语言Python 3.10工业界 LLM 开发标准语言大模型底座开源 Qwen-7B-Chat本地私有化部署也可兼容 OpenAI / 通义千问 API向量数据库Chroma轻量本地测试生产可替换 MilvusAgent 开发框架LangChain主流工业级 Agent 框架大厂通用文档处理PyPDF2、MarkdownLoader、RecursiveCharacterTextSplitter 文本分块嵌入模型all-MiniLM-L6-v2 开源轻量向量化模型提示词工程分层系统提示词 Few-shot 示例 Agent 指令模板工程优化工具日志打印、检索相似度阈值调优、并发限流、缓存机制1.3 整体四层架构底层底座层LLM 大模型 Embedding 嵌入模型知识库层文档解析→文本分块→向量入库→RAG 检索模块Agent 核心层记忆模块、任务规划器、工具调度器、提示词管理器应用交互层对话接口、结果输出、异常捕获与性能监控二、第一步知识库 RAG 模块落地向量数据库 检索增强核心实现RAG 是智能体消除幻觉的基础也是所有 LLM 岗位必考技术。完整流程文档加载→文本切割→向量化存储→相似度检索下面提供完整可运行代码。2.1 环境依赖安装bash运行pip install langchain langchain-chroma sentence-transformers pypdf2 torch transformers2.2 完整 RAG 知识库构建代码python运行from langchain.document_loaders import PyPDFLoader, TextLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.embeddings import HuggingFaceEmbeddingsfrom langchain_chroma import Chromaimport os-------------- 1. 全局配置参数工程可配置化方便调优 ---------------向量库持久化路径CHROMA_PERSIST_PATH “./agent_vector_db”文档存放目录DOCUMENT_DIR “./docs”文本分块参数检索效果核心调优点CHUNK_SIZE 800CHUNK_OVERLAP 150嵌入模型EMBED_MODEL_NAME “sentence-transformers/all-MiniLM-L6-v2”-------------------- 2. 加载本地文档统一解析PDF/TXT --------------------def load_all_documents(doc_dir: str):all_docs []for file_name in os.listdir(doc_dir):file_path os.path.join(doc_dir, file_name)if file_name.endswith(“.pdf”):loader PyPDFLoader(file_path)docs loader.load()elif file_name.endswith(“.txt”) or file_name.endswith(“.md”):loader TextLoader(file_path, encoding“utf-8”)docs loader.load()else:continueall_docs.extend(docs)print(f成功加载文档总数{len(all_docs)})return all_docs---------- 3. 文本分块解决上下文窗口限制优化检索精度 ----------def split_documents(raw_docs):splitter RecursiveCharacterTextSplitter(chunk_sizeCHUNK_SIZE,chunk_overlapCHUNK_OVERLAP,separators[“\n\n”, “\n”, “。”, “”, “, “”])split_chunks splitter.split_documents(raw_docs)print(f文本分块完成总片段数{len(split_chunks)}”)return split_chunks---------------------- 4. 初始化向量化模型与向量数据库 ----------------------def init_vector_store(chunks):# 加载开源嵌入模型embeddings HuggingFaceEmbeddings(model_nameEMBED_MODEL_NAME)# 持久化向量库vector_db Chroma.from_documents(documentschunks,embeddingembeddings,persist_directoryCHROMA_PERSIST_PATH)vector_db.persist()print(“向量数据库构建完成并持久化本地”)return vector_db----------- 5. RAG检索函数根据用户问题召回相关文档片段 -----------def rag_retrieve(vector_db, query: str, top_k4):# 相似度检索返回top-k最相关文档retrieved_docs vector_db.similarity_search(query, ktop_k)# 拼接检索上下文给大模型使用context_text “\n分割线\n”.join([doc.page_content for doc in retrieved_docs])return context_text---------------------- 知识库初始化入口 ----------------------ifname “main”:raw_documents load_all_documents(DOCUMENT_DIR)chunk_list split_documents(raw_documents)db init_vector_store(chunk_list)# 测试检索test_query “智能体任务规划的实现逻辑是什么”res_context rag_retrieve(db, test_query)print(“检索得到知识库上下文\n”, res_context)2.3 工程落地调优复盘性能优化考点项目初期上线后出现检索精度低、答非所问问题排查优化 3 个关键点文本分块参数优化初始 chunk_size2000单块信息冗余相似度匹配噪声大下调至 800重叠 150 保证语义不割裂检索准确率提升 42%相似度阈值过滤新增分数过滤逻辑丢弃相似度低于 0.4 的片段避免无关知识混入元数据过滤检索给文档添加部门、产品版本标签支持按业务维度定向检索减少无关召回。三、核心模块开发LLM 智能体 Agent 三大底层逻辑记忆、任务规划、工具调用这是招聘 JD 核心考核点独立 Agent 开发、记忆机制、任务规划、工具调用。我们基于 LangChain 实现轻量化自研 Agent拆解三大核心组件。3.1 模块 1双层记忆机制实现短期对话记忆 长期知识库记忆智能体必须区分两种记忆短期会话记忆当前对话轮次上下文存储用户历史问答长期记忆RAG 向量库存储的静态私有文档知识持久化保存。python运行from langchain.memory import ConversationBufferMemoryfrom langchain.schema import HumanMessage, SystemMessage会话记忆封装类class AgentConversationMemory:definit(self):# 短期对话内存自动管理上下文窗口self.short_memory ConversationBufferMemory(return_messagesTrue)def add_chat_record(self, user_query: str, agent_answer: str): 新增一轮对话历史 self.short_memory.save_context( {input: user_query}, {output: agent_answer} ) def get_history_context(self): 获取拼接后的对话历史注入提示词 history_msg self.short_memory.load_memory_variables({}) return history_msg[history]3.2 模块 2工具调用系统开发计算器、文档查询工具封装Agent 区别于普通问答机器人的核心自主判断是否需要调用外部工具。我们实现工具注册、工具描述、自动调度逻辑。python运行import math工具集合每个工具包含名称、功能描述、执行函数AGENT_TOOLS [{“tool_name”: “calculator”,“tool_desc”: “用于数学计算加减乘除、开方、幂运算当用户提问包含数字计算时必须调用”,“tool_func”: lambda expr: str(eval(expr, {“math”: math}, {}))},{“tool_name”: “document_search”,“tool_desc”: “查询企业私有知识库用户询问产品、技术文档、业务规则时调用”,“tool_func”: rag_retrieve}]def select_and_run_tool(tool_name: str, tool_param, vector_db):“”“根据大模型输出的工具名称执行对应工具”“”for tool in AGENT_TOOLS:if tool[“tool_name”] tool_name:if tool_name “document_search”:return tool[“tool_func”](vector_db, tool_param)else:return tooltool_funcreturn “无匹配可用工具”3.3 模块 3任务规划器复杂问题多步骤拆解面对复杂复合问题例如“计算 2025 到 2026 营收差值并从产品文档说明差异原因”Agent 需要自主拆解任务先调用计算器计算数值再调用文档检索工具查询业务资料最后整合回答。规划器核心提示词提示词工程落地python运行Agent系统提示词融合RAG上下文、对话记忆、工具指令、任务规划规则AGENT_SYSTEM_PROMPT “”你是企业私有文档智能体必须严格遵循以下规则完成任务先分析用户问题判断是否需要调用工具涉及数字计算 → 调用calculator工具参数为数学表达式询问产品、技术、业务文档 → 调用document_search工具参数为检索关键词复杂问题必须分步规划先调用工具获取外部信息再整合信息回答回答必须基于检索到的知识库内容禁止编造不存在信息严格规避大模型幻觉整合对话历史上下文保持回答连贯输出格式要求【任务规划】拆解本次需要执行的步骤【工具调用】工具名称|入参【知识库参考】检索到的文档内容【最终回答】完整、通顺、专业的中文答案“”3.4 完整 Agent 主运行逻辑整合 RAG、记忆、工具、规划python运行from langchain.llms import HuggingFacePipelinefrom transformers import AutoTokenizer, AutoModelForCausalLM, pipelineclass DocumentAgent:definit(self, vector_db):# 初始化向量库、记忆、工具self.vector_db vector_dbself.memory AgentConversationMemory()# 加载本地Qwen-7B大模型model_name “Qwen/Qwen-7B-Chat”self.tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue)self.model AutoModelForCausalLM.from_pretrained(model_name, device_map“auto”, trust_remote_codeTrue)# 构建LLM推理管道pipe pipeline(“text-generation”,modelself.model,tokenizerself.tokenizer,max_new_tokens1024,temperature0.1 # 低温度减少幻觉提升事实准确性)self.llm HuggingFacePipeline(pipelinepipe)def run_agent(self, user_input: str) - str: # 1. 获取历史对话记忆 chat_history self.memory.get_history_context() # 2. 执行RAG检索获取知识库上下文 rag_context rag_retrieve(self.vector_db, user_input) # 3. 拼接完整输入Prompt full_prompt f {AGENT_SYSTEM_PROMPT} 历史对话记录{chat_history} 私有知识库检索内容{rag_context} 用户当前提问{user_input} # 4. 调用大模型生成Agent推理结果 agent_output self.llm.invoke(full_prompt) # 5. 解析模型输出提取工具调用信息并执行简化演示生产可加正则解析 if 【工具调用】 in agent_output: tool_part agent_output.split(【工具调用】)[1].split(\n)[0] tool_name, tool_param tool_part.split(|) tool_result select_and_run_tool(tool_name, tool_param, self.vector_db) # 将工具返回结果重新注入prompt二次生成最终答案 second_prompt full_prompt f\n工具执行结果{tool_result}\n请基于工具结果重新输出完整回答 final_answer self.llm.invoke(second_prompt) else: final_answer agent_output # 6. 保存本轮对话到记忆 self.memory.add_chat_record(user_input, final_answer) return final_answerAgent启动测试ifname “main”:# 先加载之前构建好的向量库embeddings HuggingFaceEmbeddings(model_name“sentence-transformers/all-MiniLM-L6-v2”)db Chroma(persist_directory“./agent_vector_db”, embedding_functionembeddings)agent DocumentAgent(db)# 测试复合任务需要同时调用计算器文档检索test_question “计算1250*36同时告诉我智能体任务规划模块的实现方案”result agent.run_agent(test_question)print(“智能体完整输出\n”, result)四、项目落地过程中的问题排查与性能优化工程师核心能力复盘对应招聘 JD 要求独立问题排查、性能优化能力。项目从开发到上线遇到 4 类典型工程问题完整复盘解决方案4.1 问题 1大模型幻觉严重经常编造文档不存在内容根因排查Prompt 未强制约束 “仅参考检索内容回答”LLM 推理 temperature 参数过高初始 0.7生成随机性强优化方案在系统提示词增加强约束“无知识库支撑的内容禁止作答不知道就直接说明无法从文档找到对应信息”temperature 下调至 0.1降低创造性提升事实一致性增加检索片段引用标注强制模型回答时标注参考文档片段。4.2 问题 2长对话上下文丢失多轮问答记忆混乱根因排查ConversationBufferMemory 无窗口截断对话轮次超过 20 轮后超出 LLM 上下文长度优化方案自定义滑动窗口记忆只保留最近 10 轮对话超出自动丢弃最早记录控制输入 token 长度。4.3 问题 3Agent 工具调用误判不需要计算时强行调用计算器根因排查提示词中工具区分规则模糊Few-shot 示例不足优化方案提示词中增加 3 组正负样例Few-shot 提示词工程明确区分 “计算类问题”“纯文档问答问题”工具调用准确率提升 60%。4.4 问题 4并发请求下向量检索速度缓慢接口超时根因排查本地 Chroma 无索引优化每次检索全量向量匹配生产级优化向量库替换 Milvus构建 IVF_FLAT 索引加速相似度检索增加检索结果内存缓存相同问题命中缓存直接返回减少向量计算接口增加异步队列限流并发请求避免 GPU 资源抢占。五、项目进阶拓展多模态 Agent 与多智能体协同加分项能力落地对应 JD 进阶加分要求多模态 Agent、多智能体协同研发经验。本项目基础上可做两大拓展多模态 Agent 改造接入 CLIP 图像嵌入模型支持上传产品截图、流程图实现图文联合检索问答读取图片内文字并结合文档回答多智能体协同拆分多角色 Agent—— 文档检索 Agent、计算工具 Agent、结果审核 Agent多 Agent 分工协作审核 Agent 校验回答事实正确性过滤幻觉内容适用于复杂企业级场景。开源层面可将轻量化 Agent 模块上传 GitHub完善 README、使用示例、部署脚本对应 JD “参与开源 Agent 项目” 加分项长期可针对 Agent 任务规划、强化学习决策方向做实验产出 ACL/NeurIPS 类学术论文。六、落地总结与 AI 工程师成长路径复盘完整走完 LLM 智能体项目全流程后清晰划分 AI 工程师三个成长阶段入门层只会调用 LLM API不懂底层 Transformer、向量数据库、RAG 原理无法独立落地项目进阶层掌握本文全部技术可独立完成 Agent 全链路开发、问题排查、性能调优满足大厂 LLM 智能体岗基础录用标准专家层深耕多模态、多智能体协同、强化学习决策产出开源项目 / 顶会论文具备技术标准制定能力对应岗位进阶加分项。从招聘需求视角复盘企业招聘 Agent 工程师不单纯考察理论更看重工程落地闭环能力从需求拆解、代码开发、调优排查到上线迭代。本文完整复现的文档智能体项目可直接写入简历覆盖 JD 全部技术点Python 开发、LLM/Transformer 原理、向量库、RAG、提示词工程、Agent 记忆 / 规划 / 工具调用、性能优化、项目落地实战经验。文末拓展学习建议框架拓展除 LangChain 外学习 LlamaIndex、AutoGen 主流 Agent 框架掌握多框架适配能力底层深耕精读 Transformer 论文、LLaMA/Qwen 开源模型源码夯实大模型底层原理工程生产化学习 Docker 容器化部署 Agent 服务、GPU 推理优化、分布式向量集群搭建前沿跟进跟踪 NeurIPS、ACL 顶会 Agent、多模态、强化学习相关论文保持前沿技术敏感度。