大模型应用开发实战:从RAG到Agent,7天掌握AI应用构建全流程

📅 发布时间:2026/8/18 10:32:57
大模型应用开发实战:从RAG到Agent,7天掌握AI应用构建全流程
最近在尝试将大模型应用到实际业务中时你是否也遇到过这样的困境网上资料要么是零散的概念科普要么是付费课程里语焉不详的片段真正能让你从零跑通一个完整项目理解RAG、Agent核心原理并能用上Coze、Cursor这些新锐工具的实战教程少之又少。面对海量的信息反而不知从何下手。本文正是为了解决这个问题而生。它不是简单的概念罗列而是一套整合了最新实践、完整代码与核心原理的“从环境到上线”全流程指南。无论你是想快速入门大模型应用开发的在校学生还是希望将AI能力集成到现有系统的后端工程师甚至是寻求技术转型的开发者都能在这里找到清晰的路径。七天时间我们将系统性地攻克大模型应用开发的核心模块从搭建本地知识库问答RAG到构建能自主决策的智能体Agent再到利用Coze平台快速搭建应用最后掌握Cursor这一“AI原生”IDE的高效开发技巧。学完后你将有能力独立设计并实现一个具备行业实用性的AI应用原型。1. 大模型应用开发全景与核心概念扫盲在直接动手写代码之前我们需要建立一个清晰的认知地图。大模型应用开发绝不仅仅是调用一个API那么简单。它是一套系统工程旨在让通用的大语言模型LLM具备解决特定领域问题的能力。1.1 为什么需要“应用开发”直接使用ChatGPT不行吗直接使用ChatGPT等对话模型在处理开放域、常识性问题时表现卓越。但在企业级或专业化场景下会面临三大核心瓶颈知识滞后性大模型的训练数据有截止日期无法获取最新的、非公开的信息如公司内部文档、当天新闻。幻觉与事实性错误模型可能会“自信地”编造看似合理但完全错误的信息这在法律、医疗、金融等领域是致命的。缺乏深度推理与执行能力模型本身无法执行代码、查询数据库、调用外部API它只是一个“思考者”而非“行动者”。因此大模型应用开发的核心目标就是为LLM装上“外挂”和“手脚”使其能可靠、安全、高效地解决实际问题。1.2 核心范式RAG 与 Agent当前大模型应用的两大主流范式是RAG和Agent它们分别解决了上述的不同问题。RAG检索增强生成专治“知识滞后”和“幻觉”。其核心思想是“先检索后生成”。工作原理当用户提问时系统首先从外部的、可信的知识库如向量数据库中的公司文档中检索出与问题最相关的文档片段。然后将这些片段作为上下文连同用户问题一起提交给大模型要求模型基于给定的上下文生成答案。类比就像开卷考试。模型不需要记住所有知识闭卷但被允许在答题时查阅指定的资料开卷从而保证答案的准确性和时效性。核心组件文档加载与切分、文本向量化Embedding、向量数据库、检索器、提示词模板。Agent智能体赋予大模型“行动”的能力。其核心思想是“思考-行动-观察”循环。工作原理Agent是一个由大模型驱动的自主系统。它接收一个目标如“帮我查一下北京明天的天气并推荐合适的着装”然后大模型作为“大脑”进行规划决定需要调用哪些工具Tools如搜索工具、计算器、代码执行器。调用工具后观察结果再决定下一步行动如此循环直至完成任务。类比就像一个配备了多种专业工具螺丝刀、尺子、计算器的工程师。大脑LLM负责制定维修计划手Tools负责具体操作眼睛观察操作结果反馈给大脑进行下一步决策。核心组件大模型规划器、工具集Tools、记忆Memory、执行循环。关系RAG和Agent不是互斥的而是可以紧密结合。一个Agent可以使用RAG作为其“知识查询”工具从而在行动过程中获取准确的外部知识。1.3 关键工具与平台Coze 与 CursorCoze扣子字节跳动推出的AI Bot开发平台。它极大地降低了AI应用开发的门槛。定位无代码/低代码的AI智能体与工作流搭建平台。核心功能插件预置了数百个工具如联网搜索、知识库、文本处理、多模态等一键调用。工作流通过可视化拖拽的方式将多个插件、条件判断、变量处理等节点连接起来构建复杂的自动化流程。知识库便捷地上传文档PDF、Word、Excel等自动构建向量索引为Bot提供专属知识。发布可将创建的Bot一键发布到飞书、微信、Web等渠道。价值对于产品经理、运营或非技术背景的开发者可以快速验证AI想法构建客服机器人、内容助手等应用。Cursor一款深度融合了AI能力的代码编辑器基于VS Code内核。定位“AI原生”的集成开发环境IDE。核心功能智能代码补全与生成通过Cmd/Ctrl K可以用自然语言描述需求直接生成代码块、函数甚至整个文件。代码聊天与编辑选中代码后通过Cmd/Ctrl L可以要求AI解释、重构、优化、调试或为代码添加注释。项目级理解能理解整个项目的上下文提供更准确的建议。终端集成可以直接在编辑器内与AI讨论命令行操作。价值极大提升开发者的编码效率尤其适合探索新框架、编写样板代码、重构旧代码和理解复杂逻辑。它是我们进行RAG、Agent等“有代码”开发时的利器。2. 环境准备打造你的AI开发工作台工欲善其事必先利其器。我们将搭建一个兼顾灵活性与效率的开发环境。2.1 基础软件安装Python环境大模型生态的基石。推荐使用Miniconda或Anaconda管理Python环境避免包冲突。# 以Miniconda为例从官网下载对应操作系统的安装包并安装。 # 创建一个名为llm-dev的独立环境Python版本选择3.9或3.10兼容性最好 conda create -n llm-dev python3.10 conda activate llm-dev代码编辑器/IDE主力Cursor。从官网下载安装。它是我们后续编码的主要工具。备选VSCode 或 PyCharm。确保安装了Python和Jupyter相关插件。Git用于版本控制和克隆示例项目。# 安装后验证 git --version2.2 关键Python库安装我们将使用LangChain和LangChain-Chatchat一个基于LangChain的本地知识库问答开源项目作为核心框架。同时需要向量数据库和Embedding模型。# 激活环境后安装核心依赖 pip install -U langchain langchain-community langchain-core # 安装用于解析文档的库 pip install pypdf python-docx markdown # 安装向量数据库客户端以Chroma为例轻量且易用 pip install chromadb # 安装Sentence Transformers用于本地Embedding也可用OpenAI API pip install sentence-transformers # 安装用于调用开源大模型的库以Ollama为例方便本地运行模型 pip install ollama2.3 大模型访问配置你有两种选择本地模型推荐入门/学习使用Ollama在本地运行开源模型免费且无网络限制。# 首先安装Ollama客户端前往官网下载 # 拉取一个较小的模型如Qwen2.5:7B ollama pull qwen2.5:7b # 运行模型服务 ollama run qwen2.5:7b云端API稳定、强大使用OpenAI GPT、DeepSeek、智谱AI等商业API。需要注册并获取API Key。# 安装OpenAI SDK pip install openai重要API Key是敏感信息切勿提交到代码仓库。应使用环境变量管理# Linux/Mac export OPENAI_API_KEYyour-api-key-here # Windows (PowerShell) $env:OPENAI_API_KEYyour-api-key-here2.4 项目结构初始化在Cursor中新建一个项目文件夹例如llm-app-tutorial并创建如下初步结构llm-app-tutorial/ ├── data/ # 存放待处理的原始文档 │ └── example.pdf ├── knowledge_base/ # 向量数据库存储目录 ├── src/ # 源代码 │ ├── __init__.py │ ├── rag_pipeline.py # RAG核心流程 │ └── simple_agent.py # 简单Agent示例 ├── configs/ # 配置文件 │ └── config.yaml ├── requirements.txt # 项目依赖 └── README.md在requirements.txt中记录依赖langchain0.1.0 langchain-community0.0.10 chromadb0.4.22 sentence-transformers2.2.2 pypdf3.17.0 python-docx1.1.0 openai1.12.03. 实战一构建你的第一个RAG知识库问答系统我们将从本地文档如PDF中提取知识构建一个能回答特定领域问题的智能问答系统。3.1 文档加载与预处理原始文档需要被切分成适合检索的“块”Chunks。太大信息冗余太小失去上下文。通常200-500个字符为一个块相邻块之间可以有一定重叠。# src/rag_pipeline.py (部分代码) from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter def load_and_split_documents(file_path): 加载PDF文档并进行智能分块。 # 1. 加载文档 loader PyPDFLoader(file_path) documents loader.load() # 此时documents是一个列表每个元素是一个Document对象包含页面内容和元数据 # 2. 创建文本分割器 # chunk_size: 每个块的最大字符数 # chunk_overlap: 块之间的重叠字符数保持上下文连贯 # separators: 优先按这些分隔符进行分割 text_splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap50, separators[\n\n, \n, 。, , , , , , ] ) # 3. 执行分割 split_docs text_splitter.split_documents(documents) print(f原始文档页数: {len(documents)}) print(f分割后文档块数: {len(split_docs)}) # 打印前两个块的内容预览 for i, doc in enumerate(split_docs[:2]): print(f\n--- Chunk {i} ---) print(doc.page_content[:200] ...) # 预览前200字符 print(f元数据: {doc.metadata}) return split_docs if __name__ __main__: # 假设你的PDF文件放在data目录下 docs load_and_split_documents(./data/example.pdf)3.2 向量化与存储将文本块转换为计算机能理解的“向量”一组数字并存入向量数据库以便后续进行相似度检索。# src/rag_pipeline.py (续) from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_community.vectorstores import Chroma import os def create_vector_store(documents, persist_directory./knowledge_base): 创建或加载向量数据库。 # 1. 选择Embedding模型 # 使用开源的sentence-transformers模型无需API Key # model_name 可以替换为其他模型如 all-MiniLM-L6-v2 embedding_model HuggingFaceEmbeddings( model_namesentence-transformers/paraphrase-multilingual-MiniLM-L12-v2, model_kwargs{device: cpu}, # 如果GPU可用可改为 cuda encode_kwargs{normalize_embeddings: True} # 归一化提升检索效果 ) # 2. 创建向量存储 # persist_directory 指定数据库持久化路径 # embedding_function 指定使用的嵌入模型 vectorstore Chroma.from_documents( documentsdocuments, embeddingembedding_model, persist_directorypersist_directory ) # 持久化到磁盘 vectorstore.persist() print(f向量数据库已创建并保存至: {os.path.abspath(persist_directory)}) return vectorstore def load_vector_store(persist_directory./knowledge_base): 加载已存在的向量数据库 embedding_model HuggingFaceEmbeddings( model_namesentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 ) vectorstore Chroma( persist_directorypersist_directory, embedding_functionembedding_model ) print(f已从 {persist_directory} 加载向量数据库。) return vectorstore3.3 检索与生成这是RAG的核心根据问题检索相关文档并组合成提示词交给大模型生成答案。# src/rag_pipeline.py (续) from langchain.chains import RetrievalQA from langchain_community.llms import Ollama # 如果使用OpenAI API则使用以下导入 # from langchain_openai import ChatOpenAI def setup_qa_chain(vectorstore, use_local_llmTrue): 设置检索问答链。 # 1. 选择大模型 if use_local_llm: # 使用本地Ollama运行的模型 llm Ollama(modelqwen2.5:7b, temperature0.1) # temperature控制创造性越低越确定 else: # 使用OpenAI API (需设置环境变量 OPENAI_API_KEY) # llm ChatOpenAI(modelgpt-3.5-turbo, temperature0.1) # 使用DeepSeek API示例 (需安装 langchain_community) from langchain_community.chat_models import ChatDeepSeek llm ChatDeepSeek(modeldeepseek-chat, temperature0.1) pass # 2. 创建检索器 # search_type 可选 similarity (相似度), mmr (最大边际相关性-兼顾相关性与多样性) # k 是检索返回的文档块数量 retriever vectorstore.as_retriever(search_typesimilarity, search_kwargs{k: 4}) # 3. 创建检索问答链 # chain_type 可选 stuff (将所有文档拼接到提示词), map_reduce, refine等处理长文档 qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrieverretriever, return_source_documentsTrue, # 返回源文档便于追溯 verboseTrue # 打印详细日志便于调试 ) return qa_chain def ask_question(qa_chain, question): 向RAG系统提问。 # 调用链 result qa_chain.invoke({query: question}) # 打印结果 print(f\n问题: {question}) print(f答案: {result[result]}) print(\n--- 参考来源 ---) for i, doc in enumerate(result[source_documents]): print(f[来源{i1}] {doc.page_content[:150]}...) # 预览源文档片段 print(f 元数据: {doc.metadata}\n) return result if __name__ __main__: # 完整流程示例 print(步骤1: 加载并分割文档...) split_docs load_and_split_documents(./data/example.pdf) print(\n步骤2: 创建向量数据库...) vectorstore create_vector_store(split_docs) print(\n步骤3: 设置QA链...) qa_chain setup_qa_chain(vectorstore, use_local_llmTrue) print(\n步骤4: 开始提问) questions [ 文档的主要主题是什么, 根据文档XXX的具体步骤有哪些, # 替换为你的文档中的具体问题 ] for q in questions: ask_question(qa_chain, q)3.4 运行与验证将你的PDF文档如一份产品说明书、技术白皮书放入data/文件夹并重命名为example.pdf。在项目根目录下运行python src/rag_pipeline.py观察控制台输出查看文档分割情况、向量化过程以及最终的问答结果。如果使用了本地Ollama模型请确保ollama run qwen2.5:7b服务已在运行。至此一个本地化、可运行的RAG系统就搭建完成了。你可以通过修改data/下的文档轻松更换知识库内容。4. 实战二开发一个能调用工具的AI智能体Agent现在我们让大模型不仅能“回答”还能“做事”。我们将构建一个简单的Agent它可以查询天气、进行计算并根据结果给出建议。4.1 定义工具Tools工具是Agent能力的延伸。每个工具都是一个函数Agent通过描述知道何时以及如何调用它。# src/simple_agent.py from langchain.agents import tool from datetime import datetime import requests import json # 使用 tool 装饰器来定义工具LangChain会自动为其生成描述。 tool def get_current_time(timezone: str Asia/Shanghai): 获取指定时区的当前时间。 Args: timezone: 时区字符串例如 Asia/Shanghai, America/New_York. Returns: 格式化后的当前时间字符串。 # 这是一个简化实现实际应用中可能需要pytz库 from datetime import datetime, timezone as tz, timedelta # 简单模拟时区偏移 tz_map {Asia/Shanghai: 8, America/New_York: -4} offset tz_map.get(timezone, 8) now_utc datetime.now(tz.utc) now_local now_utc timedelta(hoursoffset) return now_local.strftime(%Y-%m-%d %H:%M:%S) tool def calculate(expression: str): 执行一个数学表达式计算。支持加减乘除(-*/)和括号。 Args: expression: 数学表达式字符串例如 (3 5) * 2. Returns: 计算结果浮点数或整数。 # 警告使用eval存在安全风险仅用于演示。生产环境应使用安全计算库如ast.literal_eval或限制表达式。 try: # 简单安全检查只允许数字、运算符和括号 allowed_chars set(0123456789-*/(). ) if not all(c in allowed_chars for c in expression): return 错误表达式中包含不安全字符。 result eval(expression) return f{expression} {result} except Exception as e: return f计算错误: {e} tool def search_weather(city: str): 查询指定城市的天气情况模拟。 Args: city: 城市名称例如 北京。 Returns: 该城市的模拟天气信息。 # 注意这里使用模拟数据。真实场景应调用天气API如和风天气、OpenWeatherMap。 # 需要注册并获取API Key并处理网络请求和JSON解析。 weather_data { 北京: {city: 北京, condition: 晴, temp: 22, humidity: 40}, 上海: {city: 上海, condition: 多云, temp: 25, humidity: 65}, 广州: {city: 广州, condition: 阵雨, temp: 28, humidity: 80}, } info weather_data.get(city, {city: city, condition: 未知, temp: N/A, humidity: N/A}) return json.dumps(info, ensure_asciiFalse) # 将所有工具放在一个列表中 tools [get_current_time, calculate, search_weather]4.2 创建Agent执行器我们将使用LangChain的ReAct框架这是最经典的Agent范式之一。# src/simple_agent.py (续) from langchain.agents import create_react_agent, AgentExecutor from langchain import hub from langchain_community.llms import Ollama # 或 from langchain_openai import ChatOpenAI def create_agent_executor(): 创建并配置一个ReAct Agent执行器。 # 1. 选择大模型 llm Ollama(modelqwen2.5:7b, temperature0) # Agent任务需要确定性 # llm ChatOpenAI(modelgpt-3.5-turbo, temperature0) # 2. 获取ReAct提示词模板 # LangChain Hub 上预置了优秀的提示词模板 prompt hub.pull(hwchase17/react) # 3. 创建Agent agent create_react_agent(llm, tools, prompt) # 4. 创建执行器 # verboseTrue 会打印Agent的思考过程对调试至关重要 # handle_parsing_errorsTrue 优雅处理解析错误 agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, handle_parsing_errorsTrue, max_iterations5 # 限制最大迭代次数防止死循环 ) return agent_executor def run_agent_demo(): 运行Agent演示。 print(初始化Agent...) agent_executor create_agent_executor() # 定义一系列测试问题 test_queries [ 现在上海是几点钟, 计算一下 (15 7) * 3 等于多少, 北京和广州的天气怎么样, 先查一下北京的天气如果温度高于25度就建议我带伞否则建议我穿外套。, ] for query in test_queries: print(f\n{*50}) print(f用户问题: {query}) print(f{*50}) try: result agent_executor.invoke({input: query}) print(f\n最终答案: {result[output]}) except Exception as e: print(f执行出错: {e}) if __name__ __main__: run_agent_demo()4.3 理解Agent的思考过程运行上述代码时设置verboseTrue会输出类似下面的日志这是理解Agent如何工作的关键 Entering new AgentExecutor chain... 我需要回答用户关于上海当前时间的问题。我有一个工具可以获取指定时区的当前时间。 Action: get_current_time Action Input: {timezone: Asia/Shanghai} Observation: 2024-03-15 14:30:25 Thought: 我已经获得了上海当前的时间可以回答用户了。 Action: Final Answer 上海当前时间是 2024-03-15 14:30:25。 Finished chain.这个过程清晰地展示了ReAct框架的“思考-行动-观察”循环。Agent通过分析问题决定调用get_current_time工具传入参数观察工具返回的结果最后综合信息给出最终答案。对于更复杂的问题如最后一个测试问题Agent会进行多轮的工具调用和推理。5. 实战三零代码在Coze平台快速搭建AI应用对于没有编程背景或需要快速原型验证的场景Coze平台是绝佳选择。我们以构建一个“旅行规划助手”Bot为例。5.1 创建Bot与配置基础信息登录Coze访问Coze官网并登录。创建Bot点击“创建Bot”输入名称如“旅行小助手”和描述。选择模型在“模型与配置”中可以选择不同的底层大模型如字节的豆包大模型、GPT-4等并配置温度、最大输出长度等参数。5.2 添加插件扩展能力插件是Coze Bot的“工具”。进入Bot编辑页面的“插件”选项卡。搜索并添加关键插件搜索必装。让Bot能获取实时信息如最新景点开放时间、机票价格趋势。知识库上传你的旅行攻略PDF、Excel预算表等让Bot拥有专属知识。天气直接查询目的地天气。多模态如果希望Bot能生成或理解图片可以添加。配置插件对于“知识库”插件点击进入后上传你的文档支持PDF、Word、TXT等。Coze会自动完成向量化处理。5.3 设计提示词人设与回复逻辑提示词是Bot的灵魂在“提示词”页面编写。你是一个专业、热情且细心的旅行规划助手。 你的核心任务是根据用户的需求为他们制定详细、可行、个性化的旅行计划。 **你的能力** 1. 你可以通过“搜索”插件获取最新的旅行信息、景点评价、交通方式等。 2. 你可以查阅“知识库”中我提供的独家旅行攻略和预算模板。 3. 你可以查询“天气”插件了解目的地未来天气。 **回复要求** 1. 首先主动询问用户的旅行偏好如目的地、时间、预算、人数、兴趣点等。 2. 根据用户回答利用你的能力规划一个包含以下要点的行程 - 每日行程安排上午、下午、晚上 - 交通建议 - 餐饮推荐 - 大致预算估算 - 必备物品提醒 3. 如果信息不足主动向用户提问。 4. 回答时语气友好条理清晰使用列表和分段提升可读性。 5. 最后总是询问用户是否需要对计划进行调整。 **示例开场白** “你好我是你的专属旅行规划师。为了为你量身打造完美的旅程请告诉我 1. 你想去哪里旅行 2. 计划出行几天 3. 大概的预算是多少 4. 你对什么类型的活动最感兴趣如美食、历史、自然风光、购物”提示词编写技巧角色清晰、任务明确、步骤分解、示例引导、格式要求。5.4 使用工作流处理复杂逻辑对于需要多步骤判断或数据处理的复杂任务可以使用“工作流”。场景用户问“帮我规划一个周末的北京文化之旅预算控制在2000元以内。”触发在“工作流”页面创建新工作流设置触发条件为“当用户意图匹配‘规划旅行’时”。节点设计开始-意图识别解析用户输入提取目的地、时间、预算等实体。条件判断判断预算是否合理例如调用一个计算节点对比目的地平均消费。并行调用分支一调用“搜索”插件获取北京本周末的文化活动列表。分支二调用“知识库”插件获取北京的经典文化景点攻略。分支三调用“天气”插件获取北京周末天气。信息聚合将三个分支的结果汇总。LLM节点将汇总的信息和用户需求发送给大模型让其生成结构化的行程计划。结束输出最终行程。测试与发布在工作流界面使用测试功能输入样例查看执行过程和结果。调试无误后保存Bot并发布到“豆包”或“微信公众号”等渠道。通过Coze你可以在半小时内将一个复杂的AI应用想法变成可交互的机器人而无需写一行代码。6. 实战四用Cursor提升大模型开发效率Cursor不仅仅是一个编辑器它是一个“思考伙伴”。我们将用它来重构和优化我们之前写的RAG代码。6.1 智能代码生成与补全自然语言生成代码在src/目录下新建一个cursor_demo.py文件。将光标放在空白处按下Cmd/Ctrl K输入“写一个函数使用LangChain的RecursiveCharacterTextSplitter来分割文本要求块大小300重叠50并打印分割结果统计信息。” Cursor会生成完整的函数代码甚至包含导入语句和示例调用。代码补全与续写当你开始输入def load_documents(时Cursor会根据项目上下文自动提示可能的参数和完整的函数体。6.2 代码聊天、解释与重构这是Cursor最强大的功能之一。解释代码选中src/rag_pipeline.py中create_vector_store函数的全部代码按Cmd/Ctrl L在聊天框输入“请详细解释这段代码每一步在做什么特别是Chroma.from_documents方法的参数含义。” Cursor会给出逐行解释。重构代码继续选中同一段代码在聊天框输入“将这个函数重构一下增加一个参数embedding_model_name让用户可以动态选择不同的Embedding模型并添加详细的错误处理。” Cursor会生成重构后的代码逻辑清晰并添加了try-except块。查找Bug如果你的代码报错将错误信息复制到聊天框问“我的程序报错ImportError: cannot import name ... from langchain可能是什么原因” Cursor会分析可能的原因如版本不匹配、导入路径错误并给出更新requirements.txt或修改导入语句的建议。6.3 利用Cursor进行项目级开发理解项目结构在项目根目录打开Cursor它已经对整个项目文件有了感知。你可以问“我们这个项目里哪个文件负责RAG的检索部分” Cursor能快速定位到rag_pipeline.py。生成测试代码在src/目录下按Cmd/Ctrl K输入“为simple_agent.py中的calculate工具函数写一个单元测试使用pytest要测试正常情况和异常情况如除零错误、非法字符。” Cursor会生成一个test_simple_agent.py文件包含完整的测试用例。编写文档选中src/rag_pipeline.py文件在聊天框输入“根据这个文件的代码生成一个README.md的使用说明包括如何安装、如何准备数据、如何运行。” Cursor能提取主要函数和流程生成结构清晰的Markdown文档。Cursor使用心法把它当作一个随时待命、精通你整个项目技术栈的资深工程师。不要只问“怎么写”多问“为什么这么写更好”、“有没有潜在问题”、“如何优化”。它能显著降低你查阅外部文档和调试的时间成本。7. 常见问题、排查思路与进阶优化在实际开发中你一定会遇到各种问题。这里汇总了高频问题及其解决方案。7.1 RAG 相关问题问题现象可能原因排查思路与解决方案检索不到相关内容1. 文档分块不合理太大或太小。2. Embedding模型不匹配如中文文档用英文模型。3. 向量数据库未正确持久化或加载。1. 调整chunk_size和chunk_overlap并打印分块内容检查。2. 更换为多语言或中文优化的Embedding模型如text2vec系列。3. 检查persist_directory路径确认chromadb文件夹内是否有数据。答案仍有幻觉或不准1. 检索到的文档块数量k值太少或太多。2. 提示词未强制模型“基于上下文”回答。3. 源文档质量差。1. 调整search_kwargs{“k”: n}尝试3-6之间的值。2. 在提示词模板中加入“请严格根据以下上下文信息回答问题如果上下文没有提供足够信息请回答‘我不知道’。”3. 预处理文档去除无关内容页眉页脚。处理长文档速度慢/内存溢出1. 一次性加载整个大文件。2. 未使用流式或分页加载。1. 使用UnstructuredFileLoader等支持分页的加载器。2. 对于超大文档考虑先按章节分割再对每个章节进行分块。无法解析特定格式文档缺少对应的文档加载库。安装专用库pip install pdfplumber(复杂PDF)pip install tabula-py(PDF表格)pip install pptx(PPT)。7.2 Agent 相关问题问题现象可能原因排查思路与解决方案Agent陷入死循环不断调用同一个工具1. 工具描述不清晰导致模型无法理解输出。2. 最大迭代次数max_iterations设置过高。1. 检查工具函数的docstring确保清晰描述了输入、输出和功能。2. 将max_iterations设为一个较小值如10并确保verboseTrue观察思考链。模型无法正确选择工具1. 工具描述相似度过高。2. 模型能力不足。1. 为每个工具起一个独特、描述性的名字并在docstring中明确其适用场景。2. 尝试使用更强大的模型如GPT-4或为ReAct提示词提供更详细的工具选择示例Few-shot。工具执行出错如网络API调用失败工具函数内部没有完善的错误处理。在每个工具函数内部添加try...except返回明确的错误信息帮助Agent进行下一步决策。7.3 模型与API相关问题问题现象可能原因排查思路与解决方案本地Ollama模型响应慢1. 模型参数过大硬件跟不上。2. 未使用GPU加速。1. 换用更小的模型如qwen2.5:1.5b,llama3.2:1b。2. 确保Ollama支持你的GPUNVIDIA并在运行时指定-–gpu。检查ollama ps看模型是否加载到GPU。OpenAI/DeepSeek API调用超时或报错1. 网络问题。2. API Key无效或余额不足。3. 请求速率超限。1. 检查网络连接设置合理的timeout参数。2. 在对应平台控制台检查API Key状态和余额。3. 添加请求间隔如time.sleep(1)或使用指数退避重试策略。7.4 进阶优化建议当你跑通基础流程后可以考虑以下优化方向让系统更健壮、更高效RAG优化混合检索结合基于关键词的稀疏检索如BM25和向量检索提升召回率。重排序检索出Top K个文档后使用一个更精细的模型交叉编码器对它们进行重排序将最相关的放在前面。元数据过滤在检索时加入过滤器如“只检索某年之后的文档”、“只检索某个类别的文档”。查询转换对用户原始查询进行改写、扩展或生成假设性答案再用改写后的查询去检索效果更好。Agent优化规划与反思采用更先进的框架如LangGraph让Agent具备子任务分解和行动后反思的能力。工具抽象将复杂的工具调用封装成更高级的“技能”如“预订机票”技能内部可能调用查询航班、比价、下单等多个底层工具。长期记忆为Agent添加对话历史记忆或向量数据库记忆使其能记住之前的交互。工程化与部署配置化管理将模型参数、API Key、文件路径等全部移入config.yaml文件便于管理。日志与监控为关键步骤添加结构化日志便于追踪问题和分析性能。API服务化使用FastAPI或Gradio将你的RAG或Agent系统封装成HTTP API方便集成到其他应用。容器化使用Docker将整个应用及其环境打包确保在任何地方运行一致。8. 学习路线与持续精进通过本文的七个模块你已经走完了大模型应用开发从入门到实战的核心路径。为了让你能持续精进形成自己的知识体系这里提供一份学习路线图第一阶段巩固基础1-2周目标反复练习本文的RAG和Agent示例做到理解每一行代码。行动更换不同的本地文档技术博客、产品手册测试你的RAG系统。为你的Agent添加1-2个新的工具如查询股票价格、发送邮件提醒。在Coze上复刻一个你喜欢的Bot如健身教练、学习伙伴。用Cursor重构你之前写过的旧代码体验其威力。第二阶段深入原理2-4周目标理解底层机制能自行排查复杂问题。行动Embedding学习不同Embedding模型OpenAI text-embedding, BGE, Jina的原理与差异在MTEB等排行榜上查看性能。向量数据库深入理解Chroma、Milvus、Qdrant等的工作原理索引算法、持久化策略。LangChain框架阅读其官方文档理解Chain、Agent、Memory等核心抽象。提示词工程系统学习CoT思维链、Few-shot、角色设定等高级技巧。第三阶段项目实战1-2个月目标独立完成一个完整的、有实用价值的项目。项目灵感智能客服基于企业内部知识库的RAG问答系统。数据分析助手Agent调用SQL工具查询数据库并用自然语言解释结果。自动化报告生成工作流串联数据获取、分析、图表生成和报告撰写。行动明确项目需求和技术选型。设计系统架构数据流、模块划分。编码实现并撰写详细的开发文档。部署上线本地服务器或云服务并收集用户反馈迭代。第四阶段关注前沿与社区信息源论文关注arXiv上cs.CL计算语言学和cs.AI人工智能类别的最新论文。开源项目在GitHub上关注langchain-ai、chroma、ollama等核心项目的更新。技术社区积极参与CSDN、知乎、Reddit的r/LocalLLaMA、r/LangChain等板块的讨论。保持动手技术迭代飞快最好的学习方式永远是动手实践。将学到的新框架如DSPy、新模型如最新的开源大模型应用到你的项目中持续优化。大模型应用开发是一片充满机遇的新大陆其核心在于将强大的AI能力与具体的业务场景相结合创造真实的价值。这条路没有终点但有了RAG、Agent、Coze、Cursor这些利器在手你已经拥有了探索这片大陆的指南针和工具箱。从今天开始选择一个你感兴趣的点动手构建你的第一个AI应用吧。