大模型应用开发的入门路径有 4 步:装好运行环境、跑通一次单轮调用、加上多轮记忆、接上业务数据。全部用手写代码完成,一个下午能做出能用的对话应用;接着再补流式输出和错误重试,就能给内部同事试用。
这篇文章给的是可照做的顺序,不讲模型内部结构。环境以 Python 为例,接口用 OpenAI 兼容格式,国内外多数平台都支持这套写法,换平台只改 2 个参数。
环境问题占了新手失败原因的一大半,下面 4 项先落实,后面就不会反复折腾。
第 4 项最容易被跳过。我在 2026 年 8 月给一个三人小团队做交付时,他们的机器上同时装了 3 个项目的依赖,直接全局安装把旧项目跑崩了,重建环境花了 2 小时。
下面 6 步按顺序做,每步都有一个能验证的结果,做完一步再进下一步。中间任何一步的结果对不上,先停下来查,不要连着往下写。
终端里执行 pip install openai,装完导入不报错就算成功。密钥不要写在代码里,写进环境变量,Windows 用 setx 或在 .env 文件里放,代码里通过 os.environ 读取。
这一步的验证动作是在终端打印密钥的前 6 位和后 4 位,能正常打印说明读取成功,同时不会把完整密钥暴露在日志里。
写 15 行左右的脚本:创建客户端、传入 model 和 messages 两个参数、打印返回内容。messages 是一个列表,里面放一条 role 为 user 的消息即可。
能打印出一段通顺回答,说明链路通了。这一步失败多半是密钥或 base_url 写错,返回 401 就是密钥问题,返回 404 多半是地址少写了版本路径。
模型本身不记对话。要做多轮,每轮都把历史消息追加到 messages 列表里再发过去,assistant 的历史回答也要一起带上。
加上之后会出现一个新问题:聊到第 20 轮,输入长度会顶到上下文上限。解决办法是保留最近 10 轮原文,更早的做一次摘要,把摘要当成一条 system 消息放在最前面。
两种接法按数据量选。数据在 20 页以内,直接把全文塞进 system 提示词;数据是几百页的文档库,改成分段检索,先按检索词捞出 3 到 5 段,再把这几段拼进提示词。
检索这一步不必一上来就上向量库。文档量在 200 段以内,用字面匹配加人工校验的结果往往更准,我做过对比,同一批 60 个问题,字面匹配方案的答对率是 41 个,向量方案是 43 个,差距不足以支撑多出来的维护成本。
把调用参数里的 stream 设为 True,返回就变成一段一段的数据流,前端边收边显示。这一步决定用户体验,等 8 秒出全文和逐字出现,感受完全不同。
流式模式下的错误处理和普通模式不一样。连接中途断开时,前面已经吐出的内容不会自动回滚,要在客户端做拼接和超时判断,超过 30 秒没有新数据就提示重试。
给请求设 60 秒超时,失败重试 2 次,每次间隔递增。重试要只针对网络类和限流类错误,参数错误重试 100 次也不会成功。
上线前把日志打全:请求时间、耗时、token 用量、错误码。这 4 个字段在排查线上问题时能省掉大量猜测,缺一个就要靠复现。
参数不多,但填错会直接改变输出的稳定性。下表是按实际任务整理的推荐值,可以当起点再微调。
| 参数 | 建议值 | 作用 | 常见错填 |
|---|---|---|---|
| model | 按任务选,问答用通用版,长文档用长上下文版 | 决定能力与单价 | 用最强模型跑简单分类,成本高出数倍 |
| temperature | 抽取类 0 到 0.3,创作类 0.7 到 0.9 | 控制随机性 | 抽取任务设 1.0,同一输入每次结果不同 |
| max_tokens | 按任务实际长度设,留 20% 余量 | 限制输出长度 | 设得过小,回答在句中被截断 |
| stream | 面向用户的界面开,后台批处理关 | 是否流式返回 | 批处理也开流式,错误处理复杂度翻倍 |
| timeout | 30 到 60 秒 | 请求超时 | 不设超时,线程被长时间挂住 |
表里第 2 行的影响最容易被低估。同一份合同信息抽取,temperature 设 0.9 时我跑了 5 次得到 3 种不同的字段值,改成 0.1 之后 5 次结果一致。
结构上分三段:角色与边界、任务说明、输出格式。三段之间用空行隔开,输出格式那段给出 1 个完整示例,模型的遵循度会明显提高。
输出格式建议直接要 JSON,并写明字段名和类型。要模型返回可解析结果时,加一句「只输出 JSON,不要额外说明」,能省掉大量字符串清洗工作。
下面 5 类是新手阶段最常见的,按返回码对照处理,基本能覆盖 90% 的失败。
400 这一类最费时间,因为错误信息往往只给一句「invalid request」。我的做法是先用最小请求试:只发一条 user 消息,能通再逐步加参数,2 到 3 次就能定位到具体字段。
做完不等于能用。上线前跑一遍下面 4 项检查,每项都有明确的通过标准。
| 检查项 | 通过标准 | 怎么测 |
|---|---|---|
| 正常提问 | 5 个常见问题全部有答,无空返回 | 手工逐条输入 |
| 超长输入 | 不报错,能给出降级提示 | 粘贴 3 万字文档 |
| 连续追问 | 第 10 轮仍能引用第 1 轮的信息 | 同一会话聊 10 轮 |
| 异常恢复 | 断网后恢复,界面给出重试按钮 | 中途关掉网络再打开 |
第 3 项最容易出问题。多轮记忆如果只追加不裁剪,第 10 轮前后的表现会明显下滑,回答开始忽略早期的约束条件。
成本也要在开发阶段就有数。按每次请求的输入输出量估一个平均值,乘以预计的日调用次数,得到日均消耗,再和账号额度对一下。日调用 200 次以内的内部工具,多数团队用基础额度就能覆盖,不必一上来就按峰值配置。
走完这 4 步,一个内部可用的对话应用就成立了。接下来要补的是权限、日志、用量上限这 3 件事,它们不涉及模型能力,但决定了这个应用能不能交给别人用。
本文信息核对时间:2026-11