调模型不只是写 Prompt,后台那几个参数开关用对了,输出质量和推理成本能差出好几倍。下面这几条都是实战里踩坑踩出来的,照着设就行。
1. Temperature 和 Top-p:先认准场景再调
- factual / 代码 / JSON 输出:Temperature 直接给 0 或 0.1,追求确定性,降低胡编概率。
- 创意写作 / 头脑风暴:Temperature 给 0.7~1.0,Top-p 给 0.9~1.0。
- 别两个同时死磕:日常二选一即可;如果一起用,先调 Temperature,Top-p 保持 1.0,否则效果会变得不可预测。
2. Max Tokens:按任务给天花板,别全开
- 不是越大越好。留足输出空间就行,多出来的长度不会提升质量,只会烧钱和增加延迟。
- 建议:先估计业务最长需要多少 Token(比如摘要 300、邮件 800),往上再富余 20%,设为上限。输入+输出总和一定要小于模型的上下文窗口,留点余量给系统 Prompt。
3. Frequency / Presence Penalty:专治车轱辘话
- Frequency Penalty(频率惩罚):模型重复同一句话时给它“扣分”。如果输出总爱绕来绕去,设 0.2~0.5。
- Presence Penalty(存在惩罚):鼓励模型聊新内容,适合发散性任务。一般别超过 1.0,否则输出会跑偏。
- 做结构化数据提取时,这两个都保持 0,避免模型为了“不重复”而故意换词,导致字段名对不上。
4. Stop Sequences:精准刹车,省 Token
- 如果你要模型生成 JSON、SQL 或固定格式,务必设置 Stop Sequence。比如让模型遇到 "``
" 或特定结束标记[END]` 立刻停止,防止它继续往下胡扯。 - 这个小开关经常被忽略,但能显著减少后期清洗工作。
5. System Prompt:最隐蔽的配置项
- 把“角色定义、输出格式、禁忌事项”写进 System Prompt,而不是每次在用户消息里重复。这样做既省 Token,效果又更稳。
- 示例:不要只在用户消息里写“请用中文回答”,而是写进 System Prompt:
你是一位专业的技术顾问,所有回复使用简体中文,禁止出现英文术语缩写。
6. 流式输出(Streaming)与超时
- 对交互式场景(对话、客服),一定开启 Streaming。首字延迟从几秒降到几百毫秒,用户体感天差地别。
- 同时给 API 调用设一个合理的超时(如 30 秒),避免模型偶尔“卡壳”把前端拖死。
7. 部署层:Batch Size 和 GPU 层数(本地 / 私有部署)
- Batch Size:不是越大越快。先从小批量(如 4 或 8)开始,用监控工具看 GPU 利用率,稳定在 80%~90% 为最佳,再往上加往往边际递减。
- n_gpu_layers:用 llama.cpp/vLLM 等框架时,把尽可能多的层 offload 到 GPU,别只放一半。剩下的层在 CPU 和 GPU 之间来回倒,延迟反而爆炸。
一句话总结:做事实性任务时把 Temperature 压到 0,用 Stop 控制结尾,用 Max Tokens 卡死长度,再把系统人设写进 System Prompt——这四件套配齐,模型至少能稳定发挥 80% 的功力。