LLM应用开发四大核心技术 LLM应用开发四大核心技术Prompt Engineering、Context Engineering、RAG与工具调用新手实战指南从一份AI工程师招聘要求出发把Prompt Engineering、Context Engineering、RAG、多模型集成与工具调用这四个硬通货技术一次性讲清楚。全文附可运行代码读完就能动手。目录一、先搞清楚这四个技术到底是什么关系二、Prompt Engineering和AI沟通的基本功三、Context Engineering别再把所有资料无脑丢给模型了四、RAG给大模型配一个外挂知识库五、多模型集成与工具调用让AI从聊天变成干活六、把这四项技术串起来一个完整的实战思路七、总结给新手的下一步建议一、先搞清楚这四个技术到底是什么关系最近在研究AI大模型岗位的招聘要求发现几乎所有LLM应用开发的岗位都会提到同一组关键词Prompt Engineering、Context Engineering、RAG、多模型集成与工具调用。这四个技术到底是什么它们之间有什么关系我用一个比喻来解释想象你请了一位超级聪明的实习生大模型来帮你工作。Prompt Engineering 你怎么给实习生下指令让他听懂你要什么Context Engineering 你给了实习生一摞参考资料怎么整理才能让他最快找到答案RAG 实习生遇到不懂的问题时自动去公司知识库里查资料再回来回答你多模型集成与工具调用 实习生不仅会用脑子还会用计算器、查天气、发邮件变成一个真正的办事员这四个技术层层递进Prompt是基础Context是进阶RAG是知识扩展工具调用是能力扩展。一个合格的LLM应用开发者需要把这四张牌组合着打。下面我会逐项拆解每项都配上概念解释和能跑的代码。二、Prompt Engineering和AI沟通的基本功2.1 什么是Prompt EngineeringPrompt Engineering提示工程指的是通过设计和优化输入给大模型的文本指令来引导模型输出更精准、更符合预期的结果。很多新手有个误区Prompt Engineering就是把问题写清楚。远不止如此。它是一套系统化的沟通方法论。2.2 我常用的四个黄金法则经过大量实践我总结出四个让Prompt效果立竿见影的原则法则一角色扮演 受众明确别只说写一份报告要告诉模型它是谁、写给谁看请你扮演一位有5年经验的数据分析师面向公司技术VP 撰写一份关于用户留存率下降的分析报告。 要求 1. 核心结论放在最前面不超过100字 2. 用bullet points列出3个主要原因 3. 每个原因附上可落地的改进建议 4. 语言专业但避免过度技术化法则二分解复杂任务模型一次处理复杂任务容易出错。把大任务拆成步骤第一步阅读以下用户反馈文本提取所有提到的产品问题 第二步将这些问题按功能缺陷、性能问题、体验建议分类 第三步对每个类别给出优先级排序P0/P1/P2和简要理由法则三给示例Few-shot Learning如果你想让模型按特定格式输出最好的方式不是描述格式而是直接给例子请按以下格式提取实体关系 输入马云创立了阿里巴巴 输出{实体1: 马云, 关系: 创立, 实体2: 阿里巴巴} 输入苹果公司发布了iPhone 15 输出{实体1: 苹果公司, 关系: 发布, 实体2: iPhone 15} 输入{用户输入} 输出法则四给思考空间Chain-of-Thought对于推理类问题让模型一步一步想请解答以下数学问题并在给出最终答案前先展示你的推理过程。 问题一个水箱有进水管和出水管进水管单独注满需要6小时 出水管单独排空需要4小时。如果同时打开进水管和出水管 多少小时能把空水箱注满 推理过程2.3 代码实战一个Prompt优化对比fromopenaiimportOpenAI clientOpenAI(api_keyyour-api-key)# 反面教材模糊的Promptbad_prompt写一段关于Python的介绍# 正面教材结构化的Promptgood_prompt 请你扮演一位Python编程入门讲师面向完全不懂编程的大学生 用通俗易懂的语言介绍Python语言。 要求 1. 字数控制在200字以内 2. 包含Python的2个主要优势 3. 举一个生活中的类比帮助理解 4. 语气亲切、有亲和力 defget_response(prompt):responseclient.chat.completions.create(modelgpt-4o-mini,messages[{role:user,content:prompt}])returnresponse.choices[0].message.contentprint( 模糊Prompt的输出 )print(get_response(bad_prompt))print(\n 优化Prompt的输出 )print(get_response(good_prompt))运行这段代码你会发现优化后的Prompt输出质量提升非常明显。Prompt Engineering是性价比最高的模型优化手段——不需要改模型只需要改输入的文字。三、Context Engineering别再把所有资料无脑丢给模型了3.1 从Prompt Engineering到Context EngineeringPrompt Engineering关注的是怎么下指令。Context Engineering关注的是**“除了指令还应该给模型看什么信息”**。$TRAE_REF大模型没有长期记忆每次对话它只能看到你这一次发给它的内容。这些内容统称为Context上下文包括用户的问题、历史对话、参考资料、工具列表、工具执行结果等。3.2 为什么Context Engineering很重要很多新手容易犯一个错误既然模型支持长上下文那我把所有相关资料都丢进去不就行了$TRAE_REF实际上行不通原因有三窗口有限大多数模型的Context Window并没有想象中那么大。GPT-4o是12.8万tokenClaude 4是20万token如果资料太多根本装不下。信息过载即使装得下不加筛选的杂乱信息会让模型找不到重点输出含糊其辞。成本问题API调用按token计费塞入无关内容就是在浪费钱。3.3 Context Engineering的四大策略参考LangChain的框架Context Engineering可以分为四个策略方向策略含义典型场景保存把重要信息筛选总结后持久化存储ChatGPT的记忆功能、用户画像存储选择从海量信息中挑出最相关的部分RAG检索、工具选择、记忆召回压缩把历史信息总结提炼释放窗口空间Agent长对话时的历史记录压缩隔离不同模块使用独立的ContextMulti-Agent系统中各Agent独立运行$TRAE_REF3.4 实战示例动态选择Context假设你有一个包含100篇产品文档的知识库用户问了一个具体问题你怎么选择最相关的文档片段fromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.metrics.pairwiseimportcosine_similarity# 模拟知识库documents[Python是一种解释型编程语言语法简洁适合初学者。,Java是一种面向对象的编程语言广泛用于企业级开发。,Python的NumPy库提供了高效的多维数组操作。,Docker是一种容器化技术可以打包应用及其依赖。,Python的Flask框架适合快速开发Web应用。]# 用户问题queryPython适合做什么类型的开发# 使用TF-IDF 余弦相似度选择最相关的文档vectorizerTfidfVectorizer()doc_vectorsvectorizer.fit_transform(documents)query_vectorvectorizer.transform([query])# 计算相似度similaritiescosine_similarity(query_vector,doc_vectors).flatten()# 选择Top 2最相关的文档top_indicessimilarities.argsort()[-2:][::-1]selected_context\n.join([documents[i]foriintop_indices])print(用户问题,query)print(\n选择的Context)print(selected_context)print(\n相似度分数,[f{similarities[i]:.3f}foriintop_indices])这个例子展示了选择Context的核心思想不是全给而是只给最相关的。在真实项目中我们会用更专业的向量数据库如Milvus、Pinecone和Embedding模型来做这件事。四、RAG给大模型配一个外挂知识库4.1 为什么需要RAG大模型有两个天生短板知识有截止日期训练数据只到某个时间点不知道最新信息没有你的私有数据不知道你公司的产品文档、内部规范、客户资料RAGRetrieval-Augmented Generation检索增强生成就是解决这两个问题的关键技术。$TRAE_REF4.2 RAG的工作原理RAG的工作流程可以概括为三步索引Indexing把知识库文档切分成小块用Embedding模型转成向量存入向量数据库检索Retrieval用户提问时把问题也转成向量去数据库里找最相似的文档片段生成Generation把检索到的文档片段和用户问题一起拼成Prompt送给大模型生成答案简单来说先查资料再回答。就像开卷考试允许你先翻书再找答案。4.3 代码实战用Python搭建一个最小RAG系统fromopenaiimportOpenAIimportnumpyasnp clientOpenAI(api_keyyour-api-key)# 第1步准备知识库 knowledge_base[{content:我们公司旗舰产品智能助手Pro于2024年3月发布支持多语言对话。,source:产品手册},{content:智能助手Pro的企业版定价为每月299元/席位包含API调用权限。,source:价格表},{content:智能助手Pro支持接入微信、钉钉、飞书三大平台。,source:集成文档},{content:免费试用期为14天试用期结束后需购买正式版。,source:销售政策},]# 第2步把知识库文本转成向量Embedding defget_embedding(text):responseclient.embeddings.create(modeltext-embedding-3-small,inputtext)returnresponse.data[0].embedding# 为每条知识生成向量foriteminknowledge_base:item[embedding]get_embedding(item[content])# 第3步检索函数 defretrieve(query,top_k2):query_vecnp.array(get_embedding(query))# 计算余弦相似度results[]foriteminknowledge_base:doc_vecnp.array(item[embedding])similaritynp.dot(query_vec,doc_vec)/(np.linalg.norm(query_vec)*np.linalg.norm(doc_vec))results.append((similarity,item))# 按相似度排序返回Top Kresults.sort(keylambdax:x[0],reverseTrue)returnresults[:top_k]# 第4步生成回答 defrag_answer(query):# 检索相关文档retrievedretrieve(query,top_k2)context\n.join([f[{item[source]}]{item[content]}for_,iteminretrieved])# 构建RAG Promptpromptf你是一个专业的客服助手。请根据以下参考资料回答用户问题。 如果参考资料中没有相关信息请诚实告知你无法回答。 参考资料{context}用户问题{query}请给出简洁准确的回答responseclient.chat.completions.create(modelgpt-4o-mini,messages[{role:user,content:prompt}])returnresponse.choices[0].message.content# 测试 test_queries[智能助手Pro多少钱,支持哪些平台接入,你们的CEO是谁# 知识库中没有的信息测试模型是否会编造]forqintest_queries:print(f\n问题{q})print(f回答{rag_answer(q)})运行这段代码你会发现对于知识库中有的问题模型能准确回答对于知识库中没有的问题如CEO是谁模型会诚实地说不知道而不是瞎编这就是RAG的核心价值让大模型基于事实回答问题显著减少幻觉。五、多模型集成与工具调用让AI从聊天变成干活5.1 从聊天机器人到AI Agent前面的技术让大模型能更好地回答问题。但现实中的AI应用往往需要模型**“做事情”**——查天气、算数学、发邮件、调数据库。这就是**多模型集成与工具调用Tool Calling / Function Calling**要解决的问题。5.2 工具调用的基本原理工具调用的核心逻辑是你预先定义好一组工具函数每个工具都有名称、描述和参数规范用户提出需求时大模型判断是否需要调用工具如果需要模型输出一个工具调用请求包含工具名和参数你的程序执行这个工具拿到结果把工具执行结果再送回给大模型模型基于结果生成最终回答5.3 代码实战让大模型调用计算器工具fromopenaiimportOpenAIimportjson clientOpenAI(api_keyyour-api-key)# 第1步定义工具 tools[{type:function,function:{name:calculator,description:执行基础数学运算,parameters:{type:object,properties:{expression:{type:string,description:数学表达式如 15 * 23 或 (100 50) / 3}},required:[expression]}}},{type:function,function:{name:get_weather,description:查询指定城市的天气,parameters:{type:object,properties:{city:{type:string,description:城市名称如北京、上海}},required:[city]}}}]# 第2步实现工具函数 defcalculator(expression):try:# 安全计算只允许数字和基础运算符allowed_charsset(0123456789-*/(). )ifnotall(cinallowed_charsforcinexpression):return错误表达式包含非法字符resulteval(expression)returnf计算结果{result}exceptExceptionase:returnf计算出错{str(e)}defget_weather(city):# 模拟天气查询实际项目中会调用真实APIweather_db{北京:晴天25°C,上海:多云28°C,深圳:小雨30°C}returnweather_db.get(city,f暂无{city}的天气数据)# 第3步工具调用流程 defchat_with_tools(user_message):messages[{role:user,content:user_message}]# 第一次调用让模型判断是否需要工具responseclient.chat.completions.create(modelgpt-4o-mini,messagesmessages,toolstools,tool_choiceauto)assistant_messageresponse.choices[0].message# 检查模型是否请求了工具调用ifassistant_message.tool_calls:# 把模型的工具调用请求加入对话历史messages.append({role:assistant,tool_calls:[{id:tc.id,type:tc.type,function:{name:tc.function.name,arguments:tc.function.arguments}}fortcinassistant_message.tool_calls]})# 执行工具调用fortool_callinassistant_message.tool_calls:function_nametool_call.function.name function_argsjson.loads(tool_call.function.arguments)print(f[工具调用]{function_name}({function_args}))iffunction_namecalculator:resultcalculator(function_args[expression])eliffunction_nameget_weather:resultget_weather(function_args[city])else:result未知工具# 把工具执行结果送回模型messages.append({role:tool,tool_call_id:tool_call.id,content:result})# 第二次调用让模型基于工具结果生成最终回答final_responseclient.chat.completions.create(modelgpt-4o-mini,messagesmessages)returnfinal_response.choices[0].message.contentelse:# 模型直接回答了不需要工具returnassistant_message.content# 测试 test_messages[帮我算一下 123 乘以 456 等于多少,北京今天天气怎么样,你好请介绍一下你自己]formsgintest_messages:print(f\n用户{msg})print(f助手{chat_with_tools(msg)})运行这段代码你会发现对于数学问题模型会自动调用calculator工具对于天气问题模型会自动调用get_weather工具对于闲聊问题模型直接回答不调用任何工具这就是工具调用Tool Calling的威力大模型不再是孤立的聊天机器人而是能够感知环境、调用工具、完成实际任务的AI Agent。5.4 多模型集成在实际项目中不同的模型有不同的特长模型类型擅长场景典型选择轻量模型简单分类、意图识别、成本敏感场景GPT-4o-mini、Claude Haiku主力模型通用对话、复杂推理、内容生成GPT-4o、Claude Sonnet重载模型高难度推理、代码生成、深度分析GPT-4.5、Claude Opus、DeepSeek-R1专用模型图像理解、语音处理、垂直领域DALL-E、Whisper、领域微调模型多模型集成的核心思想是根据任务难度和类型自动选择最合适的模型在保证质量的同时控制成本。# 多模型路由的简单示例defroute_to_model(task_type,complexity):ifcomplexitylow:returngpt-4o-mini# 便宜、快eliftask_typecoding:returngpt-4o# 代码能力强elifcomplexityhigh:returngpt-4.5# 推理能力最强else:returngpt-4o# 默认主力六、把这四项技术串起来一个完整的实战思路现在我们把四项技术串起来看一个完整的LLM应用是怎么工作的。假设你要做一个智能客服系统处理用户关于公司产品的咨询用户提问 | v [Step 1: 多模型路由] - 判断问题类型和复杂度 - 选择合适的模型 | v [Step 2: Context Engineering - 选择] - 从用户记忆库中召回该用户的历史记录 - 从工具列表中选择可能用到的工具 | v [Step 3: RAG检索] - 把用户问题向量化 - 从产品知识库中检索Top 3相关文档 | v [Step 4: Prompt Engineering] - 组装最终Prompt角色设定 检索到的文档 用户问题 格式要求 | v [Step 5: 模型生成 工具调用] - 模型判断是否需要调用工具如查询订单状态 - 如需调用执行工具并将结果返回模型 | v [Step 6: 输出回答] - 模型生成最终回答 - 记录本次对话到Context供下次使用这个流程展示了四项技术的协同Prompt Engineering决定了模型如何组织最终回答Context Engineering决定了哪些信息被纳入考虑RAG提供了模型原本不知道的私有知识工具调用让模型具备了执行实际动作的能力七、总结给新手的下一步建议面对这四个技术我建议按以下顺序学习阶段学习内容目标第1周Prompt Engineering能和模型高效沟通输出稳定可控第2-3周RAG基础能搭建一个基于私有知识库的问答系统第4周Context Engineering理解Agent的Context管理能优化长对话体验第5-6周工具调用 多模型集成能做一个会干活的AI Agent$TRAE_REF最后分享一个心得这四项技术不是孤立的真正的LLM应用开发者需要像搭积木一样灵活组合它们。先掌握每一项的单独使用再练习它们的组合搭配这样才能在面试和实战中游刃有余。这篇文章是我根据AI大模型工程师的招聘要求系统梳理LLM应用开发四大核心技术后的学习笔记。如果对你有帮助欢迎点赞收藏也欢迎在评论区交流讨论。