
最近在尝试将大模型应用到实际业务中从简单的对话到复杂的知识库问答踩了不少坑。网上资料虽然多但要么太零散不成体系要么只讲理论缺乏实操。为了帮助大家系统性地掌握 AI 应用开发的核心链路我花了大量时间整理和实战最终形成了这份覆盖从基础到进阶的完整教程。本教程将围绕AI 大模型应用开发的核心路径展开内容涵盖Python 基础、Prompt Engineering、RAG 技术、Coze 智能体、Dify 工作流等关键模块共计 21 节。无论你是零基础的开发者还是希望将 AI 能力集成到现有系统的工程师都能从中找到清晰的步骤和可运行的代码。学完后你将能够独立搭建一个具备私有知识问答、自动化工作流能力的 AI 应用。1. 课程全景与学习路线图在深入细节之前我们先对 AI 应用开发的全景有一个整体认识。一个典型的、面向生产的 AI 应用其技术栈可以抽象为以下几个层次基础层Infrastructure 提供算力和模型服务。包括云厂商的模型 API如 OpenAI GPT、百度文心、智谱 GLM、开源模型本地部署如 Llama、Qwen、以及向量数据库如 Milvus、Chroma。能力层Capabilities 核心 AI 功能的实现。主要包括Prompt Engineering让模型理解并执行指令、RAG为模型注入外部知识、以及Agent让模型具备规划和使用工具的能力。编排与开发层Orchestration Development 将底层能力组装成完整应用。低代码平台如Coze、Dify在此发挥作用而使用Python框架如 LangChain、LlamaIndex进行编程开发则提供了更高的灵活性。应用层Application 最终呈现给用户的界面或服务。可能是聊天机器人、内容生成工具、数据分析助手等。本课程的学习路线正是自底向上从夯实基础开始逐步构建复杂能力第一阶段第1-5节 打好 Python 和 Prompt 基础。这是与模型“对话”的起点。第二阶段第6-12节 深入 RAG 技术。解决模型“知识截止”和“幻觉”问题构建私有知识库应用。第三阶段第13-17节 探索 AI Agent 与工作流。让模型学会思考、规划和调用工具。第四阶段第18-21节 工程化与平台化。使用 Coze、Dify 等平台快速构建应用并了解生产环境的最佳实践。接下来我们从最核心的“对话”技能——Prompt Engineering 开始。2. Prompt Engineering与大模型高效沟通的艺术很多人认为调用大模型就是发一段文本然后等待回复。但实际上Prompt提示词的质量直接决定了模型输出的效果。糟糕的 Prompt 会导致答案答非所问、格式混乱、甚至包含错误信息。本节将系统讲解 Prompt 的核心原则与高级技巧。2.1 核心原则清晰、具体、结构化一个有效的 Prompt 通常包含以下几个部分角色Role 定义模型需要扮演的角色如“你是一位资深 Python 开发专家”。任务Task 清晰、具体地描述你希望模型完成什么。上下文Context 提供完成任务所需的背景信息。输入Input 需要模型处理的具体数据或问题。输出格式Output Format 明确指定回答的格式如 JSON、Markdown 列表、代码块等。示例一个糟糕的 Prompt vs 一个优秀的 Prompt# 糟糕的 Prompt模糊、不具体 prompt_bad 帮我写个函数。 # 优秀的 Prompt清晰、具体、结构化 prompt_good 你是一位经验丰富的 Python 开发工程师。请根据以下要求编写一个函数。 **任务** 编写一个函数用于安全地删除一个文件。如果文件不存在则记录警告信息而不抛出异常如果删除成功则记录信息。 **上下文** - 项目使用 Python 3.8。 - 使用内置的 os 和 logging 模块。 - 函数需要具备良好的错误处理机制。 **输入** - file_path字符串类型表示要删除的文件路径。 **输出格式** - 返回一个布尔值True 表示删除成功或文件不存在False 表示删除过程中发生其他错误。 - 在函数内部使用 logging.warning 和 logging.info 进行记录。 - 请提供完整的函数代码包含函数定义、文档字符串docstring和必要的导入语句。 2.2 高级技巧Few-Shot 与 Chain-of-Thought当简单指令无法达到效果时我们需要更高级的技巧。Few-Shot Prompting少样本提示 通过提供几个输入-输出的例子让模型“照葫芦画瓢”。这对于格式固定、逻辑复杂的任务非常有效。# Few-Shot Prompting 示例让模型学习将用户查询转换为搜索引擎关键词 few_shot_prompt 请将用户的问题转换成更适合搜索引擎查询的关键词列表。 示例1 用户问题 “北京最近有什么好看的科幻电影上映” 搜索引擎关键词 [“北京” “科幻电影” “上映” “近期”] 示例2 用户问题 “如何用Python爬取天气数据并保存到Excel” 搜索引擎关键词 [“Python” “爬虫” “天气数据” “保存” “Excel”] 现在请转换以下问题 用户问题 “学习机器学习需要哪些数学基础” 搜索引擎关键词 Chain-of-ThoughtCoT思维链 引导模型展示其推理步骤而不是直接给出最终答案。这能显著提升模型在复杂逻辑、数学问题上的准确性。你可以直接要求模型“逐步思考”或提供 CoT 的示例。# Chain-of-Thought Prompting 示例 cot_prompt 请逐步推理解决以下数学问题。 问题一个篮子里有15个苹果。小明拿走了3个小红又放入了比小明拿走的多2倍的苹果。现在篮子里有多少个苹果 让我们一步步思考 1. 最初有15个苹果。 2. 小明拿走了3个所以剩下 15 - 3 12 个苹果。 3. 小红放入的苹果数量是“比小明拿走的多2倍”。小明拿走了3个“多2倍”意味着是 3 * (21) 9 个吗不这里需要仔细理解。“比A多2倍”通常理解为 A 2A 3A。所以比3个多2倍就是 3 3*2 9 个。或者直接是 3 * 3 9 个。 4. 小红放入了9个苹果。现在篮子里的苹果是 12 9 21 个。 5. 所以现在篮子里有21个苹果。 答案21掌握了如何与模型沟通后我们面临下一个核心问题如何让模型知晓它训练数据之外的最新信息或私有知识这就需要引入 RAG 技术。3. RAG 技术详解为模型注入“新鲜记忆”RAGRetrieval-Augmented Generation检索增强生成是当前构建企业级知识库问答系统的核心技术。它通过“检索”相关文档片段并将其作为上下文“增强”给生成模型从而让模型能够基于特定知识库给出准确回答。3.1 RAG 的核心工作流程一个标准的 RAG 流程包含以下关键步骤文档加载与切分 将 PDF、Word、TXT、网页等原始文档加载进来并切分成大小适中的“块”Chunks。切分策略按段落、按字符数、重叠窗口直接影响检索效果。文本向量化Embedding 使用嵌入模型如 text-embedding-ada-002、BGE、M3E将文本块转换为高维向量。语义相似的文本其向量在空间中的距离也更近。向量存储 将向量和对应的原始文本块存入向量数据库如 Chroma、Milvus、Qdrant、PGVector。检索 当用户提问时将问题同样转换为向量并在向量数据库中搜索与之最相似的 K 个文本块。增强生成 将检索到的文本块作为上下文与用户问题一起组合成最终的 Prompt发送给大语言模型LLM生成答案。3.2 动手搭建一个简易 RAG 系统下面我们使用langchain和chromadb库快速实现一个本地 RAG 问答系统。环境准备确保你已安装 Python 3.8并使用以下命令安装依赖pip install langchain langchain-community langchain-chroma chromadb # 我们使用 OpenAI 的 Embedding 和 Chat 模型需要安装 openai 库并配置 API_KEY pip install openai核心代码实现# file: simple_rag.py import os from langchain_community.document_loaders import TextLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_chroma import Chroma from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnablePassthrough from langchain_core.output_parsers import StrOutputParser # 1. 设置你的 OpenAI API Key (请替换为你的真实密钥或使用环境变量) os.environ[OPENAI_API_KEY] your-api-key-here # 2. 加载并切分文档 loader TextLoader(./knowledge_base.txt, encodingutf-8) # 假设你有一个知识库文件 documents loader.load() text_splitter RecursiveCharacterTextSplitter( chunk_size500, # 每个块的大小 chunk_overlap50, # 块之间的重叠字符避免语义割裂 separators[\n\n, \n, 。, , , , 、, ] ) docs text_splitter.split_documents(documents) print(f文档被切分为 {len(docs)} 个块) # 3. 创建向量存储 embeddings OpenAIEmbeddings() vectorstore Chroma.from_documents( documentsdocs, embeddingembeddings, persist_directory./chroma_db # 向量数据库持久化目录 ) # 创建检索器 retriever vectorstore.as_retriever(search_kwargs{k: 3}) # 检索最相关的3个块 # 4. 定义 Prompt 模板 template 请根据以下上下文回答用户的问题。如果你不知道答案就说你不知道不要编造。 上下文 {context} 问题{question} 请用中文给出有帮助的答案 prompt ChatPromptTemplate.from_template(template) # 5. 初始化 LLM llm ChatOpenAI(modelgpt-3.5-turbo, temperature0) # 6. 构建 RAG 链 rag_chain ( {context: retriever, question: RunnablePassthrough()} | prompt | llm | StrOutputParser() ) # 7. 进行问答 if __name__ __main__: while True: user_question input(\n请输入你的问题 (输入 quit 退出): ) if user_question.lower() quit: break answer rag_chain.invoke(user_question) print(f\n答案{answer})运行与验证在脚本同目录下创建一个knowledge_base.txt文件写入一些知识内容例如关于你公司产品的介绍。运行脚本python simple_rag.py。输入问题观察模型是否能根据你的文本内容回答。这个简易系统涵盖了 RAG 的核心流程。但在生产环境中我们还需要考虑更多因素例如检索质量优化。3.3 RAG 的优化策略重排序与混合检索基础的向量相似度检索有时会返回相关但不精确的片段。重排序Re-ranking技术可以对此进行优化。它使用一个更精细的交叉编码器模型对初步检索到的结果进行二次评分和排序将最相关的结果排在前面。# 伪代码展示重排序思路 # 假设我们已有一个初步检索结果列表 initial_docs from sentence_transformers import CrossEncoder # 加载一个重排序模型 reranker CrossEncoder(cross-encoder/ms-marco-MiniLM-L-6-v2) # 为每个查询文档对打分 pairs [[user_question, doc.page_content] for doc in initial_docs] scores reranker.predict(pairs) # 根据分数对文档重新排序 ranked_docs [doc for _, doc in sorted(zip(scores, initial_docs), reverseTrue)] # 将排名最高的文档用于生成此外混合检索Hybrid Search结合了稠密检索向量相似度和稀疏检索如 BM25 关键词匹配能同时捕捉语义相似性和关键词匹配在多样化的查询上表现更鲁棒。许多现代向量数据库如 Weaviate, Qdrant已原生支持混合检索。4. 从脚本到应用使用 Dify 构建可视化 AI 工作流当我们掌握了 RAG、Prompt 等核心能力后如何快速将其产品化并提供一个友好的用户界面Dify这样的 AI 应用开发平台提供了完美的解决方案。它是一个开源的 LLM 应用开发平台允许你通过可视化工作流的方式编排模型、提示词、知识库和工具。4.1 Dify 核心概念与本地部署Dify 将 AI 应用开发抽象为几个核心概念提示词编排 提供强大的 Prompt 编辑器支持变量、上下文、条件判断。知识库 内置文档处理、向量化、检索能力轻松创建 RAG 应用。工作流 通过拖拽节点LLM调用、代码执行、条件分支、API调用等构建复杂的 AI 业务流程。模型与工具 支持接入数十种主流模型并可自定义 API 工具。本地部署 Dify使用 Docker Compose这是最推荐的部署方式适合开发和测试。环境准备 确保服务器已安装 Docker 和 Docker Compose。克隆仓库并启动# 克隆 dify 仓库 git clone https://github.com/langgenius/dify.git cd dify/docker # 启动所有服务 docker-compose up -d访问与初始化 等待几分钟后在浏览器访问http://localhost:3000。首次访问会进入初始化页面设置管理员账号并配置初始模型如 OpenAI API。4.2 实战在 Dify 中构建一个智能客服助手我们将构建一个结合了知识库RAG和对话能力的客服助手。步骤 1创建知识库在 Dify 侧边栏进入“知识库” - “创建知识库”。输入名称如“产品手册”。在“处理方式”中选择分段规则和嵌入模型可使用 Dify 内置或配置自己的。点击“创建”然后进入知识库通过“上传文件”或“同步网站”添加你的产品文档PDF、Word等。Dify 会自动完成切分、向量化和索引。步骤 2构建工作流进入“工作流” - “创建空白工作流”。从左侧节点区拖拽组件构建流程开始节点 接收用户问题。知识库检索节点 连接到上一步创建的“产品手册”知识库。将“开始节点”的query变量输入到此节点。LLM 节点 选择你的对话模型如 GPT-3.5-Turbo。在提示词框中编写 Prompt例如你是一个专业的客服助手。请严格根据以下提供的产品知识来回答用户的问题。 如果知识库内容不足以回答问题请礼貌地告知用户你暂时无法解答并建议其通过其他渠道咨询。 产品知识 {{#context#}} !-- 这是知识库检索节点返回的上下文变量 -- 用户问题{{query}}结束节点 将 LLM 节点的回答输出。连接各个节点从节点的输出端口拖拽到下一个节点的输入端口。点击右上角“发布”为工作流命名并保存。步骤 3创建 AI 应用并发布进入“应用” - “创建应用”选择“工作流”类型。选择你刚刚创建的工作流。进入应用后你可以测试对话效果。Dify 会自动生成一个 Web 聊天界面。在“发布”选项卡你可以获取 API 端点以便集成到自己的业务系统中也可以将聊天窗口以 iframe 形式嵌入网站。通过 Dify我们无需编写大量后端和前端代码就快速搭建了一个具备私有知识问答能力的 AI 应用。接下来我们看看另一个热门平台——Coze。5. Coze 实战快速创建与分发 AI 智能体如果说 Dify 侧重于企业级应用开发和编排那么Coze则更侧重于快速创建和分享个性化的 AI 智能体Bot。Coze 提供了丰富的插件、工作流和知识库能力让每个人都能像搭积木一样构建自己的 AI 助手。5.1 Coze 智能体核心构成一个 Coze 智能体主要由以下几部分组成人设与回复逻辑 定义 Bot 的身份、性格和基础对话风格。提示词 核心指令定义 Bot 的能力范围和回答规则。知识库 上传文件让 Bot 拥有特定领域的专业知识。插件 扩展 Bot 的能力边界例如搜索网页、生成图片、查询天气、执行代码等。工作流 当任务需要多步骤完成时可以用工作流来定义复杂的逻辑。例如用户说“总结今天AI领域的新闻”工作流可以依次调用“搜索插件”获取新闻、“总结插件”提炼内容、“发布插件”发送到群组。开场白与建议问题 优化用户体验。5.2 案例创建一个“技术文档翻译与润色专家” Bot目标创建一个 Bot用户上传英文技术文档如 API 文档Bot 能将其翻译成流畅、专业的中文并确保技术术语准确。创建步骤进入 Coze 官网创建新的 Bot。设定人设与提示词名称 TechDoc Translator简介 专注于技术文档的翻译与润色专家。提示词你是一位资深技术文档工程师和翻译专家。你的任务是将用户提供的英文技术文档如 API 文档、产品说明书、开发指南翻译成中文。 请遵循以下原则 1. **准确性第一**技术术语必须准确翻译可参考行业通用译法。不确定的术语在括号内保留英文原文。 2. **符合中文技术文档风格**语言简洁、客观、逻辑清晰。避免口语化。 3. **格式保持**尽量保留原文的标题层级如 #, ##、列表、代码块等 Markdown 格式。 4. **语句流畅**翻译后的中文应通顺自然避免生硬的直译。可以对长句进行合理切分。 5. **专业润色**检查并修正原文中可能存在的拼写或语法错误在不改变原意的前提下。 如果用户提供的是文档片段请直接输出翻译结果。如果用户提供的是整个文档文件请告知用户你已开始处理并分部分提供翻译。添加知识库点击“知识库” - “创建”上传一份你认可的优质技术文档中文翻译范例如某开源项目的官方中文文档。这有助于 Bot 学习专业的翻译风格和术语。配置插件可选增强添加“网页搜索”插件。当遇到非常新的、知识库中未收录的技术术语时Bot 可以尝试联网搜索以确认准确译法。发布与分享配置完成后点击发布。你可以将 Bot 发布到 Coze 平台获取链接分享给他人也可以将其接入 Discord、飞书、微信等平台。通过 Coze我们在几分钟内就创建了一个功能聚焦的 AI 智能体无需关心服务器、模型部署等底层细节。这非常适合快速原型验证和轻量级场景。6. 工程化与生产环境最佳实践无论是使用 Python 自行开发还是借助 Dify/Coze 等平台当 AI 应用走向生产环境时我们必须关注稳定性、安全性、成本和可维护性。6.1 稳定性与容错API 调用重试与退避 网络波动或模型服务商限流可能导致调用失败。必须实现带有指数退避机制的自动重试。import time from tenacity import retry, stop_after_attempt, wait_exponential retry(stopstop_after_attempt(3), waitwait_exponential(multiplier1, min4, max10)) def call_llm_with_retry(prompt): # 这里是调用 LLM API 的代码 response client.chat.completions.create(...) return response设置超时 为所有外部调用模型 API、向量数据库检索设置合理的超时时间避免线程阻塞。熔断与降级 当模型服务持续不可用时应触发熔断机制并切换到降级方案如返回缓存答案、使用更简单的规则引擎。6.2 安全与合规输入输出过滤与审查 对用户的输入和模型的输出进行安全检查防止注入攻击、敏感信息泄露或生成有害内容。权限控制 在 RAG 系统中确保用户只能检索其有权访问的知识库文档。这需要在向量检索前或后加入权限过滤层。数据隐私 如果使用第三方模型 API需确认其隐私政策。对敏感数据优先考虑使用本地部署的开源模型。审计日志 记录所有用户查询和模型响应用于问题排查、效果分析和合规审计。6.3 成本优化缓存策略 对相同或相似的查询结果进行缓存避免重复调用昂贵的模型 API。提示词优化 精简 Prompt移除不必要的指令。使用max_tokens参数限制生成长度。模型选型 根据任务复杂度选择合适的模型。简单的分类、提取任务可以使用更便宜、更快的模型如 GPT-3.5-Turbo复杂的创作、推理任务再使用能力更强的模型如 GPT-4。异步与批处理 对于非实时任务可以将请求队列化进行批量处理有时能获得更优的费率。6.4 可观测性与持续改进全面监控 监控 API 延迟、错误率、Token 消耗、知识库检索命中率等关键指标。效果评估 建立评估体系定期用测试集评估 AI 应用的回答准确率、相关性和有用性。可以结合人工评审和自动指标如 ROUGE, BLEU。反馈闭环 提供用户反馈渠道如“点赞/点踩”将标注后的低质量回答加入改进流程用于优化 Prompt、知识库或模型微调。从基础的 Python 和 Prompt 编写到复杂的 RAG 系统搭建再到利用 Coze、Dify 实现快速开发最后关注生产环境的工程实践这条路径涵盖了 AI 大模型应用开发的核心技能栈。技术的迭代日新月异但掌握这些核心概念和实操能力能让你在快速变化的领域中保持竞争力。真正的掌握源于动手实践建议你从第一个 Python 脚本和第一个 Prompt 开始逐步构建起属于自己的 AI 应用。