大模型应用开发怎么起步:从装环境到上线 7 步

1小时前发布

大模型应用开发的最小闭环是 7 步:定 1 个具体场景、备 20 条测试题、装 3 个依赖、跑通 20 行调用、把提示词拆成 4 块、加一层资料检索、部署到 1 台机器。全程 1 到 2 周,代码量 300 行上下,一个人能做。

去年 11 月我接过一个设备维保的活,客户有 200 页操作手册,想让师傅在现场用手机问「这个报警码怎么处理」。做完这 7 步,测试集 20 题答对 17 题,单次响应 4 秒,硬件是一台 2 核 4G 的云服务器。

一、先准备:4 件事没做完别写代码

这 4 件事里,第 1 件和第 2 件决定后面返工几次。

  1. 场景收窄到 1 个。写清楚谁在什么设备上问什么话,例子要具体到「夜班师傅在车间用手机问报警码含义」。范围写「公司全部知识」的项目,80% 会拖成烂尾。
  2. 测试题 20 条。从真实提问里抄,别自己编。20 条里留 5 条故意问倒系统的问题,用来观察它会不会硬编答案。
  3. Python 3.10 以上,建 1 个虚拟环境。python -m venv .venv 之后激活,再 pip install openai fastapi uvicorn,3 个包,装完 1 分钟内能导入。
  4. 接口密钥 1 个。国内几家平台的控制台都能建,拿到 sk- 开头的字符串,存进环境变量 LLM_KEY。密钥写进代码提交到仓库,是新手最常见的 1 个事故。
夜间办公桌上两台显示器与数据线

二、操作步骤:7 步做出第 1 个可用版本

第 1 到 3 步:把骨架立起来

  1. 第 1 步,写 1 个 config 文件。放 3 项:接口地址、模型名、超时秒数(填 60)。其余配置后面再加,先只留这 3 项。
  2. 第 2 步,跑通最小调用。20 行代码:读密钥、建 client、发 1 条 messages、打印返回。这一步的验收标准是终端能打出 30 字以上回答,跑不通就别往下走。
  3. 第 3 步,把问答包成 1 个函数。入参 2 个(问题、历史),出参 2 个(答案、token 数)。函数化之后,换模型只要改 config 里 1 行。

第 4 到 5 步:让回答像样

  1. 第 4 步,提示词拆成 4 块:角色 1 句、任务 1 段、禁区 1 列、输出格式 1 段。禁区那列写「不知道就说不知道,不要推测」,这一句能挡掉一半乱答。
  2. 第 5 步,用 20 条测试题跑 1 遍,记录每题的对错和 token 数。做完这步你会拿到 1 张表:哪些题型必错、平均消耗多少。表里的错题决定第 6 步怎么设计。

第 6 到 7 步:接资料、上线

  1. 第 6 步,加检索。手册按 600 字切块,块间重叠 80 字,切完存成文本文件;提问时先用关键词或向量找出前 3 块,拼进提示词,再让模型回答。这一步做完,手册类问题的准确率通常会跳一档。
  2. 第 7 步,部署。FastAPI 写 1 个 POST 接口,uvicorn main:app 起在 8000 端口,前面挂 nginx 转 443。1 台 2 核 4G 的机器能撑每天 2000 次调用。

第 6 步的切块长度我调过 3 轮。400 字切太碎,答案常常缺上下文;1000 字切太大,1 次塞 3 块就是 3000 字,成本翻倍。600 字加 80 字重叠,在 200 页手册上试下来最稳。

提示词的 4 块各写什么

角色 1 句,写清身份和说话对象:「你是设备维保工程师,回答的对象是车间操作工,用短句,不用术语」。身份定得太宽(写成「你是助手」)等于没写。

任务 1 段,写清输入是什么、输出要几段、要不要举例子。禁区 1 列,3 到 5 条,每条对应 1 类错答,比如「资料里没有的参数直接说没有」「不给操作建议以外的安全判断」。格式 1 段,写「答案控制在 150 字内,先给结论,再给 2 条依据」。

这 4 块的顺序别换。我第一次把格式写在最前面,模型每次都先摆格式再想内容,答案前两句全是废话。

机房通道两侧亮着指示灯的机柜

三、参数怎么填

下面 5 个字段决定输出的样子,按调试顺序排。

字段填什么填错的后果
system角色 + 禁区,80 到 150 字写太长(超 500 字)会挤占用户问题,答案跑偏
temperature问答类 0.2 到 0.4,创意类 0.9 以上问答填 1.2,同一问题 3 次回答给 3 个说法
max_tokens按答案长度定,摘要 300,讲解 800填成输入长度,1 次对话多花 3 倍钱
top_k(检索)3 到 5 块填 10 块,提示词过长,模型抓不住重点
timeout60 秒,长文生成填 120默认值偏短,长答案被掐断,前端报错

temperature 是第 1 个该动的参数。手册问答这类任务,0.3 和 1.0 的差别不在文采,在事实一致性:0.3 时 20 题里 3 题两次回答不一致,1.0 时是 9 题。

top_k 填几,看资料的密度。手册类资料一段话讲 1 件事,填 3 就够;法规类资料一条要跨 3 节才完整,填 5 到 6。填完用 20 条测试题跑 1 遍,把 top_k 从 3 调到 6,答对数如果没有变,就退回 3,多出来的 3 块纯属浪费钱。

四、报错怎么排查

调试期 90% 的报错落在这 5 类里,按顺序对一遍。

  1. 401。密钥没读到。打印环境变量长度,0 就是没加载;35 位左右才算读到了。Windows 改完环境变量要重开终端。
  2. 400 带 model 字样。模型名拼错,或者账号没开通那个模型。去控制台的模型列表页抄名字。
  3. 429。并发太高。把批量任务的并发从 8 降到 2,或者每条之间加 1 秒间隔。
  4. 回答只出半句。max_tokens 给小了,改成 800 再试。半句现象在第 1 周出现得最多。
  5. 中文变乱码。多半是读取文件时没指定编码,open(..., encoding="utf-8") 加上就好。
  6. 502 或连不上。看服务进程还在不在,ps aux | grep uvicorn 查一下;进程在就查 nginx 的转发端口跟 uvicorn 起的端口是否一致,8000 对 8080 这种错位,日志里只有 1 行 upstream 超时。

五、怎么验证做完了

3 条验收线,全过才算收工。

  1. 20 条测试题答对 16 条以上,5 条「问倒题」里有 3 条明确回答「资料里没有」。低于这个数,回去改提示词的禁区段。
  2. 平均响应 6 秒内,单次成本压到 1 分钱以下。看接口返回的 usage 字段,别估。
  3. 换 1 台设备打开页面,手机端能正常提问。缩放错位、输入框被键盘顶掉这类问题,只在真机上出现。
桌面上摊开的图纸与金属直尺

上线第 1 天只看 3 个数:调用次数、平均 token、报错条数。调用次数低于 20 次,说明入口藏得深,去问 5 个测试用户从哪进;平均 token 突然翻倍,多半有人贴了长文档进来,加 1 个输入长度上限 3000 字;报错条数超过 10 条,先把日志按状态码分组看一眼,别急着重启服务。

六、做完第 1 版之后做什么

第 1 版能跑就该停手,先让 5 个真实用户用 1 周。我踩过的坑是:功能加到第 9 个,用户只用第 1 个,剩下的都在给服务器加负担。

第 2 轮改动的优先级按这个顺序:错题里出现 3 次以上的题型 → 检索召回率低的章节 → 界面上的 1 处卡点。改动每 1 项都重跑 20 条测试题,记下通过数,别凭感觉说变好了。

有人问我为什么不直接上框架。300 行能跑通的东西,套 1 个框架要读 2000 行文档,改 1 个参数要翻 3 层配置。等你的测试题涨到 200 条、场景涨到 4 个再考虑框架,那时候省下的重复活才抵得上学习成本。

第 1 周最常返工的 3 处

第 1 处是检索块太大。有人直接把 200 页手册塞进提示词,1 次 9 万 token,既贵又答不准,模型会挑最像的那段抄。切成 600 字再用,同一批 20 题的正确数从 11 涨到 17。

第 2 处是禁区没写。不写「不知道就说不知道」,模型遇到手册里没有的型号,会按相似型号推一个答案出来,师傅照着操作就出事。这类答案在测试里看着通顺,最难被发现。

第 3 处是前端没做超时。后端 60 秒超时,前端默认 30 秒就断开,用户看到的是空白页,日志里却记着成功。两边时间写同一个数,或者在页面上加 1 行「正在生成,请稍等」。

本文信息核对时间:2026-11