
1. 先搞清楚这套教程到底解决什么问题如果你刚接触AI大模型看到RAG、Agent、LangChain、Prompt、微调这些词第一反应可能是“每个字都认识连起来不知道在说什么”。这套教程最实际的价值是把这些看似高大上的概念拆解成可操作的步骤从怎么让大模型回答你公司的内部文档问题RAG到怎么让模型按流程执行任务Agent再到怎么用框架把多个工具串起来LangChain最后到怎么调教模型更懂你的需求Prompt和微调。我一般会先跟新手说别急着跑代码先弄明白每个技术到底解决什么场景的问题。RAG适合“模型知识库之外”的问答比如内部文档、最新政策、私有数据Agent适合“多步骤任务”比如先查天气再订机票LangChain是帮你把模型、工具、数据源连接起来的脚手架Prompt是告诉模型“具体怎么回答”的指令微调则是让模型彻底适应你的业务话术或专业领域。这套组合拳学下来你才能真正把大模型用起来而不是只停留在聊天界面。但要注意这些技术栈有学习梯度——建议按RAG → Prompt → LangChain → Agent → 微调的顺序推进别一上来就啃最难的。2. 环境准备最低什么配置能跑起来很多人卡在第一步环境装不上。这里我给一个最低可行配置以及推荐配置。最低配置能跑通DemoCPU4核以上Intel i5或同级内存8GB跑小模型或API调用磁盘20GB剩余空间放模型、依赖包系统Windows 10/11、macOS 10.15、Linux Ubuntu 18.04推荐Linux少踩坑网络能稳定访问Hugging Face、PyPI必要时配置镜像源推荐配置流畅学习小规模实测CPU8核以上Intel i7或同级内存16GB~32GB本地跑7B以下模型GPU可选但有GPU会快很多GTX 3060 12GB或以上能跑13B模型磁盘100GB SSD模型文件很大关键依赖清单Python 3.8~3.11别用3.12很多包还没适配pip 20.3虚拟环境必选用conda或venv隔离项目基础包torch、transformers、langchain、openai或其他模型API包安装时最容易翻车的是torch和CUDA版本不对应。我建议直接用官方命令查兼容版本# 查看CUDA版本 nvidia-smi # 根据CUDA版本安装torch示例为CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118如果没GPU就用CPU版torch但推理速度会慢10倍以上建议先跑小模型或直接用API如OpenAI、通义千问、DeepSeek。3. RAG实战从零搭建一个企业知识库问答RAGRetrieval-Augmented Generation是大模型落地最实用的技术之一。核心思路是先从你的文档里检索相关片段再让模型基于这些片段生成答案。这样模型就不会胡编乱造尤其适合内部文档、产品手册、法规条文等场景。3.1 文档处理四步走加载文档支持txt、pdf、word、markdown等。用LangChain的DocumentLoaderfrom langchain.document_loaders import TextLoader loader TextLoader(公司制度.txt) documents loader.load()切分文本大文档必须切块否则模型记不住。按段落或固定长度切from langchain.text_splitter import RecursiveCharacterTextSplitter splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) chunks splitter.split_documents(documents)向量化把文本变成数学向量才能快速检索。用Sentence-BERT或OpenAI Embeddingsfrom langchain.embeddings import HuggingFaceEmbeddings embeddings HuggingFaceEmbeddings(model_nameall-MiniLM-L6-v2)存储向量库用FAISS、Chroma等存起来方便后续检索from langchain.vectorstores import FAISS vectorstore FAISS.from_documents(chunks, embeddings) vectorstore.save_local(faiss_index)3.2 检索与生成闭环检索阶段最怕“搜不到”或“搜偏了”。建议先测试检索质量query 年假有多少天 docs vectorstore.similarity_search(query, k3) # 返回最相关的3个片段 for doc in docs: print(doc.page_content) # 看检索结果是否相关确认检索片段靠谱后再拼接到Prompt里给模型from langchain.llms import Ollama # 本地模型示例 llm Ollama(modelqwen2.5:7b) context \n.join([doc.page_content for doc in docs]) prompt f基于以下资料回答问题\n{context}\n问题{query} answer llm.invoke(prompt)3.3 避坑指南块大小不是越大越好超过模型上下文长度会截断一般设500~1000字。重叠度影响连贯性chunk_overlap设50~100避免关键信息被切碎。嵌入模型选通用的先用all-MiniLM-L6-v2这种通用模型别一上来就训专用模型。检索数量k3起步太少信息不足太多噪声大根据文档密度调整。如果输出答案还是胡编乱造90%是检索环节出了问题——不是文档没切好就是向量模型没选对。先别急着调模型把检索结果打印出来看看。4. Prompt工程让模型听懂人话的关键Prompt是你和模型沟通的“翻译器”。同样的模型Prompt水平差输出可能完全没法用。我总结了三层Prompt技巧基础指令、思维链、模板化。4.1 基础指令结构坏Prompt“介绍一下云计算” 好Prompt“用通俗易懂的方式向高中生介绍云计算包括定义、主要特点、常见服务形式。分点输出每点不超过20字。”好Prompt包含角色向高中生介绍任务介绍云计算要求通俗易懂、分点、每点20字内格式分点输出在代码里可以用LangChain的PromptTemplate规范起来from langchain.prompts import PromptTemplate template 你是一名{role}。请用{style}的方式回答以下问题 问题{question} {format_requirement} prompt PromptTemplate( input_variables[role, style, question, format_requirement], templatetemplate ) filled_prompt prompt.format( role科技科普作者, style通俗易懂, question什么是区块链, format_requirement分三点说明每点不超过30字 )4.2 思维链Chain-of-Thought对于复杂问题让模型“一步一步想”请逐步推理如果小明每天存10元存了30天后花掉一半然后又每天存15元存了20天最后有多少钱 第一步计算第一阶段存款... 第二步计算花掉一半后剩余... 第三步计算第二阶段存款... 第四步计算总额...在代码中可以用LangChain的LLMChain实现多步推理from langchain.chains import LLMChain chain LLMChain(llmllm, promptprompt) result chain.run({ role: 数学老师, style: 步骤清晰, question: 小明存款问题, format_requirement: 分四步推理最后给出答案 })4.3 模板化应对批量任务当你要处理大量相似问题时建一个Prompt模板库templates { summary: 用不超过100字总结以下内容{text}, qa: 基于已知信息回答已知{context} 问题{question}, classification: 将以下文本分类为{classes}中的一类{text} } # 使用时根据任务类型选择模板 prompt_type qa formatted templates[prompt_type].format(contextdoc_text, questionquery)常见错误Prompt太长导致截断。模型有上下文限制如4K、8K、16K token算上你的Prompt和输出别超限。看到prompt is too long错误时先压缩Prompt或换长上下文模型。5. LangChain框架把零散工具组装成流水线LangChain不是魔法它只是一个“连接器”——把模型、工具、数据源连接成可复用的流程。学LangChain最关键的是理解其核心概念Model I/O、Retrieval、Chains、Agents。5.1 Model I/O统一接口调用不同模型不管用OpenAI、本地模型还是开源API写法统一from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI from langchain.llms import Ollama # 三种调用方式示例 llm_openai OpenAI(api_key你的密钥) # OpenAI GPT chat_model ChatOpenAI(modelgpt-3.5-turbo) # 聊天模式 llm_local Ollama(modelqwen2.5:7b) # 本地模型 # 同样的调用方式 response llm_local.invoke(你好)这样换模型时只需改一行代码不用重写整个项目。5.2 Chains把多个步骤串起来比如先检索文档再生成答案的RAG链from langchain.chains import RetrievalQA qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, # 简单拼接检索结果 retrievervectorstore.as_retriever(), return_source_documentsTrue # 返回参考文档 ) result qa_chain.invoke({query: 公司年假政策}) print(result[result]) # 答案 print(result[source_documents]) # 参考来源Chain_type有四种选择stuff所有检索结果拼一起喂给模型简单快速map_reduce先分别处理每个片段再汇总处理长文档refine迭代式逐步完善答案质量高但慢map_rerank给每个片段打分选最好的平衡质量速度新手先用stuff文档大或要求高时用map_reduce。5.3 与LangGraph的区别LangChain是线性流水线LangGraph支持循环、分支等复杂流程。比如一个客服Agent用户提问→检索知识库→生成答案→用户不满意→转人工。这种带反馈循环的场景用LangGraph更合适。刚开始学不必纠结区别90%的场景LangChain够用。等需要复杂工作流时再上LangGraph。6. Agent开发让模型学会使用工具Agent是大模型应用的进阶阶段——模型不再只是回答问题而是能调用工具完成任务。比如“查一下北京天气然后推荐穿衣”这种多步骤任务。6.1 工具定义告诉模型能用什么首先定义工具函数from langchain.agents import tool import requests tool def get_weather(city: str) - str: 获取指定城市的天气情况 # 模拟API调用 return f{city}天气晴25℃ tool def recommend_clothing(temperature: int) - str: 根据温度推荐穿衣 if temperature 30: return 建议穿短袖 elif temperature 20: return 建议穿长袖 else: return 建议穿外套6.2 创建Agent组合工具和模型from langchain.agents import initialize_agent, AgentType from langchain.tools import Tool tools [get_weather, recommend_clothing] agent initialize_agent( toolstools, llmllm, agentAgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, # 最稳定的类型 verboseTrue # 显示思考过程 )6.3 执行任务看模型如何思考result agent.run(北京天气怎么样该穿什么衣服)设置verboseTrue后你会看到模型的思考过程Thought: 用户问了两个问题天气和穿衣建议。我需要先获取北京天气再根据温度推荐穿衣。 Action: get_weather Action Input: {city: 北京} Observation: 北京天气晴25℃ Thought: 现在温度是25℃需要调用推荐穿衣工具。 Action: recommend_clothing Action Input: {temperature: 25} Observation: 建议穿长袖 Final Answer: 北京天气晴朗25摄氏度建议穿长袖。这种结构化的思考-行动-观察循环就是Agent的核心。6.4 常见问题排查模型不调用工具检查工具描述是否清晰Prompt是否明确要求使用工具。工具参数错误确保工具的参数类型和描述匹配。无限循环设置max_iterations参数限制最大步数。对于复杂任务建议先用Hermes Agent、PI Agent这类现成框架它们已经处理了很多边界情况。7. 微调让模型真正理解你的业务当Prompt工程无法满足需求时比如需要特定术语、固定格式、专业领域知识就需要微调。但微调成本高要先判断是否必要。7.1 什么情况需要微调领域专有名词医疗、法律、金融等专业术语固定输出格式始终返回JSON、特定报告格式风格一致性公司特有的文案风格、客服话术大量私有数据成千上万的业务问答对如果只是偶尔需要特定格式用Prompt模板更划算如果需要处理大量私有数据且要求高一致性再考虑微调。7.2 微调数据准备数据质量决定微调效果。需要准备问答对或指令-响应对[ { instruction: 用公司标准格式介绍产品A, input: 产品A参数尺寸10x10cm重量200g, output: 产品A是一款尺寸为10x10cm、重量200g的优质产品... }, { instruction: 回答客户关于退换货政策的问题, input: 购买后7天内可以退换吗, output: 根据我司政策商品购买后7天内无理由退换货... } ]至少需要几百条高质量数据最好覆盖所有业务场景。7.3 微调实战步骤以Qwen2.5-7B为例使用PEFT参数高效微调技术from transformers import AutoModelForCausalLM, AutoTokenizer from peft import LoraConfig, get_peft_model # 加载基础模型 model AutoModelForCausalLM.from_pretrained(Qwen/Qwen2.5-7B) tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen2.5-7B) # 配置LoRA降低显存占用 lora_config LoraConfig( r8, # 秩 lora_alpha32, target_modules[q_proj, v_proj], # 注意力层 lora_dropout0.1 ) model get_peft_model(model, lora_config) # 训练配置 training_args TrainingArguments( output_dir./results, per_device_train_batch_size4, # 根据显存调整 gradient_accumulation_steps4, learning_rate2e-5, num_train_epochs3 )7.4 微调避坑指南显存不够用QLoRA进一步压缩4GB显存就能微调7B模型。过拟合早停early stopping、验证集监控、数据增强。效果不好检查数据质量、增加数据量、调整学习率。微调后一定要做评估准备测试集对比微调前后的回答质量。8. 完整项目实战搭建企业知识库问答系统现在我们把所有技术串起来搭建一个真实可用的系统。8.1 系统架构设计用户提问 → LangChain路由 → 简单问题: 直接Prompt回答 复杂问题: RAG检索 → 生成答案 多步骤问题: Agent调度工具 答案 → 格式检查 → 返回用户8.2 核心代码框架from langchain import LangChain from langchain.agents import AgentExecutor from langchain.chains import RetrievalQA class EnterpriseQASystem: def __init__(self): # 初始化组件 self.simple_llm load_model(local:7b) # 简单问题模型 self.rag_chain self.setup_rag() # RAG链 self.agent self.setup_agent() # Agent def setup_rag(self): # 加载已有向量库 vectorstore FAISS.load_local(faiss_index, embeddings) return RetrievalQA.from_chain_type(llmself.simple_llm, retrievervectorstore.as_retriever()) def setup_agent(self): tools [get_weather, search_internet, calculate] # 自定义工具 return initialize_agent(tools, self.simple_llm, agentAgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION) def route_question(self, question): # 简单路由逻辑 if len(question) 10: # 短问题直接回答 return self.simple_llm.invoke(question) elif 步骤 in question or 先 in question: # 多步骤用Agent return self.agent.run(question) else: # 复杂问题用RAG return self.rag_chain.invoke(question) # 使用系统 qa_system EnterpriseQASystem() answer qa_system.route_question(公司年假政策是什么)8.3 部署优化建议本地部署用Ollama、LM Studio管理本地模型避免API费用。API混合关键任务用付费API稳定性高内部测试用本地模型。缓存机制相同问题缓存答案减少模型调用。监控日志记录问答历史用于后续优化。9. 学习路线与资源推荐9.1 四阶段学习路径阶段1基础入门1-2周跑通第一个Prompt工程示例理解RAG基本概念和流程学会使用LangChain基础组件阶段2项目实战2-3周搭建个人知识库问答系统实现多工具调用的Agent掌握Prompt优化技巧阶段3进阶优化2-3周模型微调实战系统性能调优复杂工作流设计阶段4生产部署1-2周Docker容器化部署API服务化监控与维护9.2 优质资源官方文档LangChain、Hugging Face文档最权威实战项目从RAG系统开始逐步增加复杂度社区资源GitHub热门项目、技术博客、论文解读9.3 常见误区避免不要追求最新技术先掌握稳定可用的基础方案不要一上来就微调Prompt能解决的先用Prompt不要忽视数据质量垃圾进垃圾出不要过度设计架构从最小可行产品开始迭代最实用的建议先用一个周末把RAG系统跑通再花一周加入Agent功能一个月内你就能独立开发大多数AI应用了。关键是要动手写代码而不是只看理论。