发布时间:2026/7/13 1:10:28
大模型应用开发实战:从LangChain到RAG与Agent智能体全流程 今天我们来深入探讨大模型应用开发的核心技术栈从零基础入门到项目实战重点覆盖大模型基础知识、LangChain、RAG、Agent智能体开发和LangGraph全流程。这个教程基于2026年的最新技术趋势旨在帮助开发者快速掌握大模型应用开发的核心技能。大模型技术已经进入应用爆发期但很多开发者面临概念懂但不会用的困境。本文将从实战角度出发通过具体的代码示例和项目案例带你构建完整的智能问答系统。无论你是刚接触大模型的初学者还是希望深化应用开发经验的中级开发者这篇文章都能提供实用的技术指导。1. 核心能力速览能力项技术说明技术栈覆盖大模型基础 → LangChain → RAG → Agent → LangGraph 全链路学习门槛Python基础无需大模型开发经验硬件要求普通开发机即可主要使用云API服务核心功能文档检索、智能问答、决策路由、工作流编排项目产出可运行的智能问答系统支持文档检索和智能决策技术深度从基础概念到高级应用包含完整代码实现2. 大模型基础知识要点大模型应用开发的核心是理解如何与LLM进行有效交互。现代大模型如GPT-4、Claude等已经具备了强大的理解和生成能力但直接使用原始API往往无法满足复杂业务需求。2.1 大模型的核心能力大模型的核心价值在于其理解和生成自然语言的能力。在实际应用中我们需要关注几个关键指标上下文长度决定单次交互能处理的信息量推理能力逻辑推理、数学计算、代码生成等工具调用执行外部操作、调用API等多轮对话保持对话上下文的一致性2.2 提示词工程基础有效的提示词设计是大模型应用成功的关键。以下是一个基础提示词模板# 基础提示词结构 basic_prompt 你是一个专业的{角色}助手。请根据以下要求完成{任务} 背景信息{背景上下文} 用户问题{用户输入} 任务要求{具体指令} 请以{格式要求}的形式回复。 在实际开发中我们通常使用更结构化的方式管理提示词from langchain.prompts import ChatPromptTemplate prompt_template ChatPromptTemplate.from_messages([ (system, 你是一个专业的AI助手擅长回答技术问题。), (human, 请回答以下问题{question}) ])3. LangChain框架深度解析LangChain是大模型应用开发的核心框架提供了组件化的开发模式。让我们从实际代码开始理解其核心概念。3.1 环境准备与安装首先配置开发环境# 安装核心依赖 pip install langchain langchain-community langchain-core pip install langchain-openai langchain-anthropic # 安装文本处理相关 pip install langchain-text-splitters beautifulsoup4 # 安装向量数据库支持 pip install chromadb faiss-cpu3.2 基础链式调用LangChain的核心思想是将复杂任务分解为可组合的组件。以下是一个简单的链式调用示例from langchain.chat_models import ChatOpenAI from langchain.schema import HumanMessage from langchain.chains import LLMChain from langchain.prompts import PromptTemplate # 初始化模型 llm ChatOpenAI(modelgpt-3.5-turbo, temperature0.7) # 创建提示词模板 prompt PromptTemplate( input_variables[topic], template请用通俗易懂的方式解释以下技术概念{topic} ) # 创建链 chain LLMChain(llmllm, promptprompt) # 执行调用 result chain.run(机器学习中的梯度下降算法) print(result)3.3 文档加载与处理实际应用中我们经常需要处理外部文档from langchain.document_loaders import WebBaseLoader from langchain.text_splitter import RecursiveCharacterTextSplitter # 加载网页文档 loader WebBaseLoader([https://example.com/technical-article]) documents loader.load() # 文档分割 text_splitter RecursiveCharacterTextSplitter( chunk_size1000, chunk_overlap200 ) splits text_splitter.split_documents(documents) print(f原始文档数{len(documents)}) print(f分割后块数{len(splits)})4. RAG系统构建实战RAGRetrieval-Augmented Generation是目前最实用的知识增强生成技术。我们将构建一个完整的RAG系统。4.1 向量数据库与检索器from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma # 创建嵌入模型 embeddings OpenAIEmbeddings() # 创建向量数据库 vectorstore Chroma.from_documents( documentssplits, embeddingembeddings ) # 创建检索器 retriever vectorstore.as_retriever( search_typesimilarity, search_kwargs{k: 3} ) # 测试检索 query 什么是深度学习 relevant_docs retriever.get_relevant_documents(query) print(f检索到 {len(relevant_docs)} 个相关文档)4.2 RAG链的实现from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI # 创建RAG链 qa_chain RetrievalQA.from_chain_type( llmChatOpenAI(), chain_typestuff, retrieverretriever, return_source_documentsTrue ) # 执行问答 result qa_chain({query: 请解释神经网络的基本原理}) print(答案, result[result]) print(来源文档数, len(result[source_documents]))5. Agent智能体开发Agent是能够自主决策和执行任务的智能体。我们将构建一个能够使用工具的智能体。5.1 工具定义与封装from langchain.tools import tool from langchain.agents import AgentType, initialize_agent from langchain.chat_models import ChatOpenAI tool def get_weather(city: str) - str: 获取指定城市的天气信息 # 这里应该是实际的API调用简化示例 return f{city}的天气晴25°C tool def calculate_expression(expression: str) - str: 计算数学表达式 try: result eval(expression) return f{expression} {result} except: return 无法计算该表达式 # 工具列表 tools [get_weather, calculate_expression] # 创建智能体 llm ChatOpenAI(temperature0) agent initialize_agent( toolstools, llmllm, agentAgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, verboseTrue )5.2 智能体执行测试# 测试智能体决策能力 questions [ 北京现在的天气怎么样然后计算123*456等于多少, 先计算(1527)*3的值再告诉我上海的天气 ] for question in questions: print(f\n问题{question}) result agent.run(question) print(f答案{result})6. LangGraph工作流编排LangGraph提供了更强大的工作流编排能力特别适合复杂的多步骤任务。6.1 基础图结构定义from langgraph.graph import StateGraph, END from typing import TypedDict, List from langchain.schema import BaseMessage, HumanMessage class AgentState(TypedDict): messages: List[BaseMessage] current_step: str # 创建图工作流 workflow StateGraph(AgentState) # 定义节点函数 def process_input(state: AgentState): 处理用户输入 user_message state[messages][-1] # 这里可以添加复杂的输入处理逻辑 return {messages: [user_message], current_step: input_processed} def generate_response(state: AgentState): 生成响应 llm ChatOpenAI() response llm.invoke(state[messages]) return {messages: response, current_step: response_generated} # 添加节点 workflow.add_node(process_input, process_input) workflow.add_node(generate_response, generate_response) # 定义边 workflow.add_edge(process_input, generate_response) workflow.add_edge(generate_response, END) # 编译图 graph workflow.compile()6.2 复杂条件工作流基于网络搜索材料中的RAG Agent示例我们实现一个更复杂的条件工作流from langgraph.graph import MessagesState from langchain.tools import tool from typing import Literal # 定义检索工具简化版 tool def retrieve_documents(query: str) - str: 检索相关文档 # 实际应用中这里会连接向量数据库 return f检索到关于{query}的3篇相关文档 def route_based_on_question(state: MessagesState) - str: 基于问题类型路由到不同处理节点 last_message state[messages][-1] question last_message.content.lower() if 计算 in question or 数学 in question: return calculation_node elif 天气 in question: return weather_node else: return general_qa_node def calculation_node(state: MessagesState): 处理计算问题 # 实现计算逻辑 return {messages: [{role: assistant, content: 计算完成}]} def weather_node(state: MessagesState): 处理天气查询 return {messages: [{role: assistant, content: 天气信息查询完成}]} def general_qa_node(state: MessagesState): 处理一般问答 return {messages: [{role: assistant, content: 智能问答完成}]} # 构建条件工作流 workflow StateGraph(MessagesState) workflow.add_node(calculation, calculation_node) workflow.add_node(weather, weather_node) workflow.add_node(general_qa, general_qa_node) workflow.add_conditional_edges( input_node, route_based_on_question, { calculation_node: calculation, weather_node: weather, general_qa_node: general_qa } ) workflow.add_edge(calculation, END) workflow.add_edge(weather, END) workflow.add_edge(general_qa, END)7. 完整项目实战智能问答系统现在我们将所有技术整合构建一个完整的智能问答系统。7.1 系统架构设计import os from typing import List, Dict, Any from langchain.chat_models import ChatOpenAI from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.agents import Tool, initialize_agent from langchain.memory import ConversationBufferMemory class SmartQASystem: def __init__(self, knowledge_base_path: str): self.llm ChatOpenAI(modelgpt-3.5-turbo) self.embeddings OpenAIEmbeddings() self.memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue) # 初始化知识库 self.setup_knowledge_base(knowledge_base_path) # 初始化工具 self.setup_tools() # 初始化智能体 self.setup_agent() def setup_knowledge_base(self, path: str): 设置知识库 if os.path.exists(path): loader TextLoader(path) documents loader.load() text_splitter RecursiveCharacterTextSplitter( chunk_size1000, chunk_overlap200 ) splits text_splitter.split_documents(documents) self.vectorstore Chroma.from_documents( documentssplits, embeddingself.embeddings ) self.retriever self.vectorstore.as_retriever() else: # 如果没有本地知识库使用空检索器 self.retriever None def setup_tools(self): 设置工具集 self.tools [] # 知识检索工具 if self.retriever: from langchain.tools import RetrievalTool retrieval_tool RetrievalTool( nameknowledge_search, description搜索知识库中的相关信息, retrieverself.retriever ) self.tools.append(retrieval_tool) def setup_agent(self): 初始化智能体 self.agent initialize_agent( toolsself.tools, llmself.llm, agentchat-conversational-react-description, memoryself.memory, verboseTrue ) def ask_question(self, question: str) - str: 提问接口 try: response self.agent.run(question) return response except Exception as e: return f处理问题时出现错误{str(e)}7.2 系统测试与验证# 初始化系统 qa_system SmartQASystem(knowledge_base.txt) # 测试问答 test_questions [ 你能做什么, 请解释一下机器学习的基本概念, 深度学习和机器学习有什么区别 ] for question in test_questions: print(f\n用户问题{question}) response qa_system.ask_question(question) print(f系统回答{response})8. 性能优化与最佳实践在实际部署中我们需要关注系统性能和用户体验。8.1 响应速度优化import time from functools import lru_cache from concurrent.futures import ThreadPoolExecutor class OptimizedQASystem(SmartQASystem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.executor ThreadPoolExecutor(max_workers3) lru_cache(maxsize100) def cached_retrieval(self, query: str) - List[str]: 带缓存的检索 if not self.retriever: return [] docs self.retriever.get_relevant_documents(query) return [doc.page_content for doc in docs] def async_ask_question(self, question: str): 异步处理问题 future self.executor.submit(self.ask_question, question) return future8.2 错误处理与降级策略class RobustQASystem(OptimizedQASystem): def ask_question(self, question: str, fallback: bool True) - str: 带错误处理和降级的提问 try: # 尝试使用完整流程 if len(question) 500: return 问题过长请简化您的问题 start_time time.time() response super().ask_question(question) end_time time.time() # 记录响应时间 response_time end_time - start_time if response_time 10: # 超过10秒警告 response f\n\n(响应时间{response_time:.2f}秒) return response except Exception as e: if fallback: # 降级到基础问答 return self.fallback_response(question) else: return f系统暂时无法处理此问题{str(e)} def fallback_response(self, question: str) - str: 降级响应 simple_llm ChatOpenAI(temperature0.7) prompt f请直接回答以下问题{question} return simple_llm.predict(prompt)9. 部署与生产环境考虑将开发好的系统部署到生产环境需要考虑多个因素。9.1 API服务封装from fastapi import FastAPI, HTTPException from pydantic import BaseModel import uvicorn app FastAPI(title智能问答系统API) class QuestionRequest(BaseModel): question: str user_id: str anonymous class QuestionResponse(BaseModel): answer: str response_time: float success: bool # 全局系统实例 qa_system None app.on_event(startup) async def startup_event(): global qa_system qa_system SmartQASystem(knowledge_base.txt) app.post(/ask, response_modelQuestionResponse) async def ask_question(request: QuestionRequest): try: start_time time.time() answer qa_system.ask_question(request.question) response_time time.time() - start_time return QuestionResponse( answeranswer, response_timeresponse_time, successTrue ) except Exception as e: raise HTTPException(status_code500, detailstr(e)) if __name__ __main__: uvicorn.run(app, host0.0.0.0, port8000)9.2 配置管理import yaml from dataclasses import dataclass dataclass class SystemConfig: model_name: str gpt-3.5-turbo temperature: float 0.7 max_tokens: int 1000 chunk_size: int 1000 chunk_overlap: int 200 classmethod def from_yaml(cls, config_path: str): with open(config_path, r, encodingutf-8) as f: config_data yaml.safe_load(f) return cls(**config_data) # 配置文件示例 config_yaml model_name: gpt-3.5-turbo temperature: 0.7 max_tokens: 1000 chunk_size: 1000 chunk_overlap: 200 # 保存配置 with open(config.yaml, w, encodingutf-8) as f: f.write(config_yaml)10. 常见问题排查与调试在实际开发中会遇到各种问题这里提供系统的排查方法。10.1 API连接问题def check_api_connectivity(): 检查API连接性 import requests from langchain.chat_models import ChatOpenAI try: # 测试OpenAI API llm ChatOpenAI() test_response llm.predict(Hello) print(✅ OpenAI API连接正常) return True except Exception as e: print(f❌ API连接失败{e}) return False def diagnose_system(): 系统诊断 checks [ (API连接, check_api_connectivity), (依赖包版本, lambda: print(请检查requirements.txt)), (配置文件, lambda: print(检查config.yaml完整性)), (知识库文件, lambda: print(确认knowledge_base.txt存在)) ] for check_name, check_func in checks: print(f\n检查{check_name}) try: check_func() except Exception as e: print(f检查失败{e})10.2 性能监控import psutil import GPUtil from datetime import datetime class SystemMonitor: staticmethod def get_system_status(): 获取系统状态 status { timestamp: datetime.now().isoformat(), cpu_percent: psutil.cpu_percent(), memory_percent: psutil.virtual_memory().percent, disk_usage: psutil.disk_usage(/).percent } try: gpus GPUtil.getGPUs() status[gpu_usage] [{ id: gpu.id, load: gpu.load, memory_used: gpu.memoryUsed, memory_total: gpu.memoryTotal } for gpu in gpus] except: status[gpu_usage] N/A return status # 在问答系统中集成监控 class MonitoredQASystem(SmartQASystem): def ask_question(self, question: str): start_time time.time() start_status SystemMonitor.get_system_status() response super().ask_question(question) end_time time.time() end_status SystemMonitor.get_system_status() # 记录性能数据 performance_data { question_length: len(question), response_time: end_time - start_time, start_status: start_status, end_status: end_status } # 这里可以保存到日志或数据库 print(f性能数据{performance_data}) return response通过这个完整的教程你已经掌握了大模型应用开发的核心技术栈。从基础概念到项目实战从单一功能到系统集成这套技术方案可以应对大多数智能问答场景的需求。实际项目中还需要根据具体业务需求进行调整和优化。建议先从简单的RAG系统开始逐步添加Agent和LangGraph的复杂功能。每个组件都先单独测试验证再集成到完整系统中。这样既能保证开发效率也能确保系统稳定性。

相关新闻

2026/7/13 1:10:28

EM3080-W与PIC18F4550构建高效条码识别系统

1. 硬件选型与系统架构设计在构建基于EM3080-W和PIC18F4550的条形码识别系统时,硬件选型直接决定了系统的性能和可靠性。EM3080-W是一款专业级条码解码芯片,而PIC18F4550则是Microchip公司推出的经典8位微控制器,两者的组合能够在成本和性能之…

2026/7/13 1:05:28

一条 undo 栈引发的 use-after-free

Qt 编辑器关窗崩溃:一条 undo 栈引发的 use-after-free 环境:Qt 5.x Windows 7 高复现 Windows 10 偶发不现 现象:用户对画布做过编辑后关闭窗口,进程以 c0000005 崩溃,栈顶常在 Qt5Widgets.dll 1. 现象 某宿主程序内嵌一个画布编辑器窗口 CanvasEditorWindow : public…

2026/7/13 2:50:33

基于扩散模型的3D胸部CT生成技术解析与应用实践

这次我们来看一个在医学图像处理领域很有前景的技术——基于扩散模型生成可控3D胸部CT。这个项目来自NVIDIA的MAISI模型,专门解决医学成像中的数据稀缺和隐私问题。通过潜在扩散模型(LDMs)和ControlNet条件控制,能够生成高分辨率3…

2026/7/13 2:50:33

Git 2.54.0 浅克隆深度优化:3种场景实测,克隆速度提升 80%

Git 2.54.0 浅克隆深度优化:3种场景实测与性能调优指南引言在持续集成与大规模代码仓库成为主流的今天,Git浅克隆技术正在经历革命性进化。最新发布的Git 2.54.0版本对--depth参数进行了深度优化,实测显示在典型开发场景下克隆速度可提升80%。…

2026/7/13 2:50:33

用户生命状态分析(看板搭建)

1.1 概念​对已有客户的生命状态进行分类分析。这里用了两个维度「最近一次登录距今的时间」和「第一次登录距今的时间」。根据这两个维度,可以将客户简单的分为四个类别新用户:刚开始在较短的一段时期内登录/购买了产品的客户。 一次性用户:…

2026/7/13 2:50:33

《P14073 [GESP202509 五级] 数字选取》

题目背景 对应的选择、判断题:试题 - GESP 202509 C 五级 - 洛谷有题 题目描述 给定正整数 n,现在有 1,2,…,n 共计 n 个整数。你需要从这 n 个整数中选取一些整数,使得所选取的整数中任意两个不同的整数均互质(也就是说&#…

2026/7/13 2:50:33

多维聚合实战:超越GROUP BY的维度对齐与指标重权

1. 项目概述:多维聚合中的数据操作,远不止GROUP BY那么简单“Part 20: Data Manipulation in Multi-Dimensional Aggregation”这个标题乍看像教科书里的章节编号,但如果你正在处理销售报表、用户行为宽表、IoT设备时序汇总,或是财…

2026/7/13 2:45:33

思源接入本地 ollama 部署的 qwen3-embedding

前言 思源3.7后,官网已经接入Agent和语义搜索功能,语义搜索需要agent embedding,实现方式有两种: 调用商用的agent api,比如qwen-embedding3等模型自己搭建。 我这里选择的方式是第二种,通过ollama部署qw…

2026/7/12 0:01:29

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/12 0:01:29

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/12 0:01:29

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/13 0:00:24

广氟 PTFE 高速线缆膜 —— 高端线缆绝缘材料新选择

PTFE高速线缆膜的基本概念与特点 PTFE 高速线缆膜是以聚四氟乙烯树脂为原料,经膨化双向拉伸制成的多孔绝缘薄膜,作为高速高频通信线缆的核心介质材料,内部形成均匀连通的微孔结构,兼具极低介电常数与介电损耗,能有效降…

2026/7/12 11:21:32

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…