先说结论:这套“两周吃透 AI 大模型应用开发”的路线,核心不是让你把大模型原理背熟,而是让你快速具备“调模型、做应用、能上线”的工程能力。
标题里的“两周学完”是夸张说法,但“少走弯路”是真的。现在网上关于大模型的内容极度分散:有讲 Transformer 原理的,有讲 Prompt 的,有讲微调的,有讲 Agent 的,还有一堆卖课的。你如果今天看一篇原理、明天看一篇提示词,大概率两周后还是不会写一个能跑起来的应用。
这篇文章的价值,是帮你把 AI 大模型应用开发的学习顺序、技术栈、验证标准一次性理清楚。文章会从环境准备开始,按两周节奏拆解学习路线,覆盖模型选择、API 调用、RAG 知识库、Agent 工作流、本地部署、性能观测和排错清单,最后给出合规使用边界和工程化建议。
如果你是后端开发、全栈工程师、算法工程师,或者刚接触 AI 应用开发的在校生,这篇文章可以直接收藏。接下来按顺序走。
1. 核心能力速览
先把这套学习路线的关键信息整理成一张表,方便你快速判断是否需要继续往下读。
| 维度 | 说明 |
|---|---|
| 学习目标 | 掌握基于大模型的 AI 应用开发全流程:模型调用、Prompt 工程、RAG、Agent、部署上线 |
| 前置基础 | Python 基础语法、HTTP 基础即可,不需要精通深度学习原理 |
| 核心技能 | API 接入、Prompt 设计、向量检索、Agent 工具调用、本地模型部署 |
| 涉及工具 | OpenAI 兼容 API、Ollama、LangChain / Dify、FastAPI、Streamlit |
| 硬件门槛 | 纯 API 开发不需要 GPU;本地部署建议 16G 以上内存,显卡按需配置 |
| 启动方式 | 云端 API 直接调用;本地模型用 Ollama 一行命令启动 |
| 是否支持批量任务 | 支持,用异步任务队列或脚本循环即可 |
| 是否提供 API | 主流大模型平台均提供 HTTP API,本地 Ollama 也提供 OpenAI 兼容接口 |
| 适合人群 | 想快速上手 AI 应用开发、需要交付实际项目的开发者 |
| 不适合场景 | 想从零手写大模型训练代码、研究模型内部机制的场景 |
这张表里最值得记住的一句话是:大模型应用开发 ≠ 训练大模型。绝大多数业务场景,你只需要学会调用、编排、优化和部署,不需要自己训模型。
2. 适用场景与使用边界
2.1 这套路线能解决什么问题
- 快速搭建一个带知识库问答功能的 Web 应用。
- 让大模型调用外部工具,比如查天气、查数据库、发邮件。
- 把公司内部文档变成可对话的智能助手。
- 用本地模型处理隐私数据,避免直接调用云端 API。
- 掌握批量调用大模型接口完成内容生成、信息抽取、文本分类等任务。
2.2 不适合什么场景
- 想研究大模型内部原理、自己从零训练模型,这套路线不够。
- 需要极高吞吐量的生产级推理服务,需要补充 vLLM、TensorRT-LLM 等推理优化内容。
- 纯业务开发但不愿意碰任何代码,更适合用 Coze、Dify 等低代码平台,但这篇文章仍然有帮助。
2.3 使用边界与合规提醒
做 AI 应用开发时,有几个边界必须清楚:
- 调用云端 API 时,输入数据会经过第三方服务,涉及客户隐私、商业机密、未公开财务数据的场景,必须先做脱敏或改用本地部署。
- 用大模型生成内容后,对外发布前要做人工复核,尤其是医疗、法律、金融等领域,模型输出不能直接作为最终结论。
- 如果涉及人脸照片、声音素材、版权图片或视频,必须确认拥有合法授权。比如做 AI 换脸、声音克隆类应用,未获得当事人授权就是侵权。
- 不要用大模型生成或传播违法违规内容,不要试图绕过内容安全审核机制。
- 本地部署的模型同样有使用条款,商用前要确认模型的开源许可证。
3. 环境准备与前置条件
3.1 开发语言与工具版本
以下是一套通用且稳妥的环境建议,具体版本以你安装时的官方文档为准:
# Python 建议 3.10 及以上 python --version # 安装虚拟环境管理工具 pip install virtualenv# 创建并激活虚拟环境(Windows) python -m venv venv venv\Scripts\activate # 创建并激活虚拟环境(macOS / Linux) python3 -m venv venv source venv/bin/activate3.2 硬件检查清单
- 纯 API 开发:普通笔记本即可,不需要独立显卡。
- 本地部署小参数模型(如 7B、8B 量化版):建议内存 16G 以上,有 6G 以上显存更流畅。
- 本地部署大参数模型:建议显存 24G 以上,或者使用多卡方案。
- 磁盘空间:模型文件从几个 GB 到几十个 GB 不等,建议预留 50G 以上空闲空间。
3.3 GPU 环境检查
如果本机有 NVIDIA 显卡,先确认驱动和 CUDA 是否可用:
nvidia-smi如果命令不存在,说明驱动未安装或未加入 PATH。注意:CUDA 版本、PyTorch 版本、显卡驱动三者需要匹配,不能只看其中一项。
3.4 Python 依赖安装
建议先安装以下基础依赖,后续每个实战项目再按需补充:
pip install requests openai python-dotenv fastapi uvicornpip install streamlit langchain langchain-community chromadb安装失败时,优先检查网络、Python 版本和 pip 源是否可用。
4. 两周学习路线详细拆解
这一节是全文重点,按两个阶段拆解。第一阶段解决“能不能跑起来”,第二阶段解决“能不能做成产品”。
4.1 第一阶段:AI 应用开发基础(第 1-3 天)
第 1 天:理清大模型应用开发的整体架构
不要急着写代码,先用一天把下面这些问题搞清楚:
- 大模型应用开发的核心链路是什么?输入 Prompt → 模型推理 → 输出结果 → 应用层处理。
- 什么是 Token?Token 怎么影响成本和上下文长度。
- 什么是温度(temperature)、Top-P?它们怎么影响输出随机性。
- 什么是上下文窗口(context window)?超出上限怎么办。
- 什么是 OpenAI 兼容 API?为什么现在很多平台都支持这种协议。
搞清楚这些概念后,你后面看文档会非常快。
第 2 天:掌握 Prompt 工程基础
Prompt 是 AI 应用开发里性价比最高的技能。同样的模型,Prompt 写得好不好,效果差距很大。建议练习以下内容:
- 角色设定:给模型一个身份,比如“你是一名资深数据分析师”。
- 任务拆解:把复杂任务拆成步骤,让模型按步骤输出。
- 输出格式约束:要求模型输出 JSON,便于程序解析。
- 少样本示例:给几个输入输出示例,让模型模仿。
- 思维链:让模型先思考再回答,复杂推理任务效果更好。
练习方法:用你选择的模型 API 写一个小脚本,做中文文本分类任务,体验不同 Prompt 对结果的影响。
第 3 天:跑通第一个 API 调用
选择一个大模型 API 平台,注册账号、获取 API Key,然后写一个最简调用脚本。
from openai import OpenAI client = OpenAI( api_key="你的_API_Key", base_url="https://你的模型服务地址" # 不同平台地址不同,以官方文档为准 ) response = client.chat.completions.create( model="gpt-4o-mini", # 以你的账号可用模型为准 messages=[ {"role": "system", "content": "你是一个乐于助人的助手。"}, {"role": "user", "content": "用一句话介绍大模型应用开发。"} ], temperature=0.7 ) print(response.choices[0].message.content)判断标准:能正常打印出模型回复,能处理超时和报错。注意替换api_key、base_url、model为实际值。
4.2 第二阶段:工具链与函数调用(第 4-6 天)
第 4 天:掌握 OpenAPI 兼容接口与流式输出
真实应用里,用户不希望等模型全部生成完才看到文字,所以流式输出是必须会的。
from openai import OpenAI client = OpenAI( api_key="你的_API_Key", base_url="https://你的模型服务地址" ) stream = client.chat.completions.create( model="你的模型名", messages=[{"role": "user", "content": "写一篇关于AI的200字短文"}], stream=True ) for chunk in stream: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="")流式输出能显著提升用户体验,是后期做 Web 应用、接入前端对话框的基础。
第 5 天:学习 Function Calling 与工具调用
Function Calling 是 AI Agent 的基础。它的核心逻辑是:模型不直接执行动作,而是输出一个结构化的调用指令,由你的代码执行真实操作。
from openai import OpenAI client = OpenAI(api_key="你的_API_Key", base_url="https://你的模型服务地址") tools = [ { "type": "function", "function": { "name": "get_weather", "description": "获取指定城市的天气", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "城市名"} }, "required": ["city"] } } } ] response = client.chat.completions.create( model="你的模型名", messages=[{"role": "user", "content": "北京今天天气怎么样?"}], tools=tools ) print(response.choices[0].message.tool_calls)判断标准:模型能正确输出tool_calls,并且参数能被你的代码解析。
第 6 天:搭建一个 Web 聊天应用
用 Streamlit 或 FastAPI 把前面学的内容串起来,做一个简单的对话页面。
import streamlit as st from openai import OpenAI st.title("AI 对话助手") client = OpenAI(api_key="你的_API_Key", base_url="https://你的模型服务地址") if "messages" not in st.session_state: st.session_state.messages = [] for msg in st.session_state.messages: st.chat_message(msg["role"]).write(msg["content"]) if prompt := st.chat_input("请输入问题"): st.session_state.messages.append({"role": "user", "content": prompt}) st.chat_message("user").write(prompt) response = client.chat.completions.create( model="你的模型名", messages=st.session_state.messages ) reply = response.choices[0].message.content st.session_state.messages.append({"role": "assistant", "content": reply}) st.chat_message("assistant").write(reply)启动命令:
streamlit run app.py这一步完成,说明你已经具备开发完整聊天应用的基础能力。
4.3 第三阶段:RAG 知识库实战(第 7-9 天)
RAG(Retrieval-Augmented Generation,检索增强生成)是当前企业落地大模型最常用的方案。它解决的核心问题是:让模型回答私有知识,而不是只依赖训练数据。
第 7 天:理解 RAG 完整流程
一个标准的 RAG 流程包含下面几个环节:
- 文档加载:读取 PDF、Word、TXT、Markdown 等文件。
- 文本切分:把长文档切成适当大小的 chunk。
- 向量化:把文本转成向量,存入向量数据库。
- 检索:用户提问后,把问题转成向量,在向量库中找最相似的文本。
- 增强生成:把检索到的文本和用户问题一起拼入 Prompt,交给大模型回答。
第 8 天:构建一个最小可运行的 RAG 系统
下面是一个使用 LangChain 和 ChromaDB 的最小示例,实际使用时要替换目录路径和模型名。
from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.vectorstores import Chroma from langchain_openai import OpenAIEmbeddings # 1. 加载文档 loader = TextLoader("./data/knowledge.txt", encoding="utf-8") documents = loader.load() # 2. 切分文本 splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100) docs = splitter.split_documents(documents) # 3. 向量化并存入向量库 embeddings = OpenAIEmbeddings( model="你的Embedding模型名", api_key="你的_API_Key", base_url="https://你的模型服务地址" ) vectorstore = Chroma.from_documents(docs, embeddings, persist_directory="./chroma_db")写完后,检查chroma_db目录是否生成了向量数据文件。这一步成功,说明知识库链路已经跑通。
第 9 天:用 FastAPI 封装 RAG 接口
把 RAG 逻辑封装成 HTTP 接口,这样才能被前端或其他服务调用。
from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class QueryRequest(BaseModel): question: str @app.post("/rag/query") def query_rag(req: QueryRequest): # 这里按第 8 天的流程:检索向量库 + 调用大模型生成回答 # 下面是伪代码,需要替换为实际实现 retrieved_docs = retrieve_similar_chunks(req.question) context = "\n".join(retrieved_docs) prompt = f"请根据以下资料回答问题:\n{context}\n问题:{req.question}" answer = call_llm(prompt) return {"answer": answer}启动服务:
uvicorn app:app --host 127.0.0.1 --port 8000判断标准:用curl或浏览器访问接口,能返回回答内容。
curl -X POST "http://127.0.0.1:8000/rag/query" \ -H "Content-Type: application/json" \ -d '{"question": "这个项目的核心功能是什么?"}'4.4 第四阶段:Agent 与工作流开发(第 10-12 天)
RAG 解决“知道什么”,Agent 解决“能做什么”。Agent 的核心能力是:模型在多个工具之间做决策,自主规划步骤,完成多轮任务。
第 10 天:用 LangChain 搭建 ReAct 模式 Agent
from langchain_openai import ChatOpenAI from langchain.agents import create_react_agent, AgentExecutor from langchain.tools import Tool from langchain import hub llm = ChatOpenAI( model="你的模型名", api_key="你的_API_Key", base_url="https://你的模型服务地址" ) # 定义两个简单工具 def add(a: str, b: str) -> str: return str(int(a) + int(b)) def multiply(a: str, b: str) -> str: return str(int(a) * int(b)) tools = [ Tool(name="加法计算器", func=add, description="用于计算两个数字之和"), Tool(name="乘法计算器", func=multiply, description="用于计算两个数字之积"), ] prompt = hub.pull("hwchase17/react") agent = create_react_agent(llm, tools, prompt) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) result = agent_executor.invoke({"input": "计算 23 和 17 的和,再乘以 2"}) print(result["output"])判断标准:Agent 能自动选择工具、传入参数、返回最终结果。注意hub.pull可能受网络影响,也可以把 React Prompt 写成字符串常量。
第 11 天:用 Dify 快速搭建可视化 Agent
不想全写代码时,Dify 是很好的选择。Dify 支持:
- 可视化编排 Agent 工作流。
- 内置知识库、工具调用、对话管理。
- 支持创建 API 供外部访问。
- 可作为 RAG 和 Agent 的低代码方案。
建议完成一个实战:用 Dify 接入一个模型 API,创建一个“客服知识库 + 工单查询”的 Agent,导出接口给外部应用调用。
第 12 天:合并 RAG 与 Agent,做一个完整应用
把前 6 天的 Web 界面、第 8 天的 RAG、第 10 天的 Agent 合并成一个带知识库和工具调用的完整应用。这是两周学习路线里最重要的里程碑项目。
4.5 第五阶段:本地部署与性能优化(第 13-14 天)
第 13 天:用 Ollama 部署本地大模型
Ollama 是目前最方便的本地模型部署工具,支持 OpenAI 兼容 API,适合快速验证。
# 安装完成后拉取并运行模型 ollama run qwen2.5:7b启动后,模型自动以 API 服务形式监听本机 11434 端口。你可以用 curl 验证:
curl http://127.0.0.1:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen2.5:7b", "messages": [{"role": "user", "content": "你好"}] }'注意:实际可用的模型名、版本、显存占用以你本机测试为准,不同量化版本的差异很大。
第 14 天:总结项目、整理部署文档
最后一天做两件事:第一,把两周完成的练习项目整理成一个小型项目集,建议包含一个聊天应用、一个 RAG 知识库、一个 Agent 应用、一个本地模型部署 Demo。第二,写一份部署文档,记录环境版本、启动命令、常见报错。这份文档在面试和实际工作中都有用。
5. 模型选择与接口调用
5.1 云端 API 与本地模型的抉择
| 维度 | 云端 API | 本地模型 |
|---|---|---|
| 部署难度 | 低,注册即用 | 中,需要下载模型、配置环境 |
| 数据隐私 | 数据出内网,需评估合规风险 | 数据不出内网,隐私性更强 |
| 成本 | 按 Token 计费,量大成本高 | 一次性硬件投入,电力消耗持续 |
| 性能 | 推理快,并发高 | 取决于显卡,显存越大越好 |
| 离线能力 | 不支持 | 支持 |
| 推荐场景 | 快速上线、效果优先 | 隐私数据、长期高频调用、离线环境 |
5.2 OpenAI 兼容 API 调用模板
绝大多数主流模型平台和本地推理服务都支持 OpenAI 兼容协议,这意味着你只要会一种客户端,就能接入大部分模型服务。
from openai import OpenAI client = OpenAI( api_key="你的_API_Key", base_url="http://127.0.0.1:11434/v1" # 以实际服务地址为准 ) response = client.chat.completions.create( model="qwen2.5:7b", messages=[{"role": "user", "content": "你好,介绍一下你自己。"}], temperature=0.6 ) print(response.choices[0].message.content)5.3 批量任务实现思路
批量调用大模型接口时,遵循两个原则:控制并发、做好重试。下面是一个通用批量处理模板。
import time import json from openai import OpenAI client = OpenAI(api_key="你的_API_Key", base_url="https://你的模型服务地址") def process_one(item): try: response = client.chat.completions.create( model="你的模型名", messages=[ {"role": "system", "content": "你是一个文本分类器。"}, {"role": "user", "content": f"对以下文本分类:{item}"} ], temperature=0.2, timeout=30 ) return {"input": item, "output": response.choices[0].message.content, "status": "success"} except Exception as e: return {"input": item, "output": str(e), "status": "failed"} items = ["文本1", "文本2", "文本3"] results = [] for i, item in enumerate(items): result = process_one(item) results.append(result) # 控制请求频率 time.sleep(1) with open("results.json", "w", encoding="utf-8") as f: json.dump(results, f, ensure_ascii=False, indent=2) print("batch done")生产环境中,建议用asyncio或任务队列控制并发,并加入指数退避重试。
6. RAG 知识库实战要点
6.1 文本切分策略
文本切分直接影响检索效果。切分太粗,检索结果包含大量无关内容;切分太细,语义不完整。常用策略:
- Markdown 或 HTML 文档,按标题层级切分。
- 普通文本,设定固定的
chunk_size,并保留chunk_overlap。 - 如果文档有语义段落,优先按语义边界切分。
text_splitter = RecursiveCharacterTextSplitter( chunk_size=400, chunk_overlap=80, separators=["\n\n", "\n", "。", "!", "?", ".", "!", "?", " "] )6.2 效果验证方法
- 输入文档里明确存在的知识点,看模型能否准确回答。
- 输入一个文档里没有的问题,看模型是否承认不知道,而不是编造。
- 检索返回的 chunk 是否相关,可以用相似度分数判断。
- 测试不同 chunk 大小和 overlap 对回答质量的影响。
6.3 常见失败原因
- 文档加载乱码,检查文件编码。
- 检索结果为空,确认 Embedding 模型和向量库连接正常。
- 回答内容与文档无关,检查 Prompt 是否限制“只能根据资料回答”。
- 向量库持久化失败,检查磁盘写入权限。
7. 本地部署与性能观察
7.1 Ollama 常用操作
# 查看本地已有模型 ollama list # 拉取模型 ollama pull qwen2.5:7b # 启动模型并保持后台服务 ollama serve7.2 显存与内存观察
观察资源占用,最直接的方法是打开任务管理器(Windows)或nvidia-smi(Linux / macOS)。
核心观察点:
- 模型加载后,显存占用是否稳定。
- 对话过程中,显存峰值是多少。
- 多轮对话后,是否有显存持续增长的问题。
- 如果显存不足,优先尝试更小参数模型或量化版本。
7.3 降低资源占用的通用手段
- 使用量化模型,比如 Q4_K_M、Q8_0 等版本,具体以模型发布方提供的格式为准。
- 减小上下文长度限制。
- 用批量推理替代逐个调用。
- GPU 显存不足时,尝试纯 CPU 推理,但速度会明显下降。
- 关闭不必要的浏览器页面和后台程序,释放系统内存。
7.4 端口占用处理
如果服务启动后无法访问,优先检查端口是否被占用。
# Linux / macOS lsof -i :11434 # Windows netstat -ano | findstr 11434找到占用的进程后,结束进程或修改服务端口。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 依赖安装失败 | Python 版本不兼容或网络问题 | 查看 pip 报错信息 | 升级 Python 到 3.10+,更换 pip 源 |
| 模型 API 返回 401 | API Key 错误或没有访问权限 | 检查环境变量和代码中的 Key | 重新生成 API Key,确认模型在账号下可用 |
| 调用接口超时 | 网络慢或模型推理时间长 | 看具体报错是连接超时还是读取超时 | 增加 timeout,切换更快的模型或服务节点 |
| 模型输出乱码 | 编码问题 | 检查控制台和文件编码 | 统一使用 UTF-8 编码,打印时指定encoding="utf-8" |
| 本地模型加载后显存不足 | 模型参数过大或量化级别过高 | 运行ollama list查看模型大小,观察nvidia-smi | 换更小参数模型或更低精度量化版 |
| Ollama 服务已启动但访问失败 | 端口被占用或服务未监听 | 执行curl测试 11434 端口 | 重启 Ollama 服务,更换端口 |
| RAG 检索不到内容 | 向量库为空或 Embedding 服务异常 | 打印向量库统计信息 | 重新执行文档入库,检查 Embedding 接口 |
| 中文输出不稳定 | 提示词没有约束语言 | 在 Prompt 中明确要求中文回答 | 增加“请使用中文回答”等指令 |
| Web 页面无法打开 | Streamlit 未启动或端口被占用 | 查看启动日志 | 更换端口重新启动 |
| 批量任务部分失败 | 接口限流或单条文本超长 | 查看返回状态码 | 加入重试逻辑和请求间隔 |
9. 最佳实践与合规建议
9.1 工程化建议
- 第一次跑通时,用小参数模型、小 chunk、少数据量,先把链路跑通,再逐步加大规模。
- 保留一套最小可运行配置。后续改坏代码、换模型出问题时,随时可以回退验证。
- 项目目录建议分三块:
models存放模型相关配置,data存放输入数据,outputs存放结果。
ai-app-demo/ ├── app.py ├── config.py ├── data/ │ └── knowledge.txt ├── outputs/ │ └── results.json ├── models/ │ └── model_config.yaml └── requirements.txt- 批量任务必须加日志和失败重试。不要把所有失败结果直接丢掉,要落盘排查。
- 接口服务默认不要监听
0.0.0.0,除非明确需要对外提供服务。内网开发建议监听127.0.0.1。 - 涉及外部用户时,接口要加鉴权、限流和请求日志。不要直接暴露大模型 API 给公网。
- 商业项目发布前,对模型输出的典型场景做一轮人工复核,确认没有事实性错误和合规风险。
9.2 数据集与授权合规
- RAG 场景中,知识库文档来源必须合法。未公开的商业文档、内部数据、他人版权内容,不能未经授权就上传到云端向量库或云端模型服务。
- 涉及人像、声音、隐私数据,必须获得当事人书面授权。
- 本地部署可以降低数据出网风险,但不等于完全没有合规问题,模型本身的开源许可证和商用条款仍然需要确认。
9.3 成本控制建议
- 先用小模型验证效果,效果不够再换大模型。不要在任何验证阶段都用最强模型跑。
- 对重复调用的场景,考虑本地部署或缓存结果。
- 批量任务中,把输入文本做长度预检,避免不必要的 Token 浪费。
10. 总结与下一步
这套学习路线最值得做的不是把所有概念都学一遍,而是先完成三个最小闭环:API 调用闭环、RAG 知识库闭环、Agent 工具调用闭环。这三个闭环完成,你已经具备做大部分 AI 应用的能力。
建议的第一件事:今天就把 Python 环境装好,调用一次大模型 API,哪怕只是让模型回一句“你好”。很多人的问题不是不会写代码,而是卡在“没开始”。
最容易踩的坑有三个:一是跳过 API 基础,直接冲去学微调;二是资料看得多、项目做得少;三是本地部署时盲目追求大参数模型,结果显存不够,挫败感极强。
下一步可以按这个顺序扩展:把 RAG 的文档类型从 TXT 扩展到 PDF、Word、Markdown;把 Agent 的工具数量从 2 个扩展到 5 个以上;把本地模型从 7B 量级逐步尝试更大参数或更高量化精度;最后把完整应用部署到云服务器,用真实用户流量做一次稳定性测试。
按这套路线走到这里,你已经具备独立开发和上线 AI 大模型应用的能力。剩下的,交给实际问题来磨练。