作者:一位Android开发工程师 | 2026年5月26日
系列:第1天已跑通基础API调用,本篇拆解 temperature 和 max_tokens


前言

第1天我学会了用3行代码调用LLM:

response = client.chat.completions.create(
    model="turing/gpt-4o-mini",
    messages=[{"role": "user", "content": "问题"}],
)
answer = response.choices[0].message.content

但这3行代码里还藏着几个关键参数没有动过。今天的目标:把 temperaturemax_tokens 拆开,看它们到底控制什么。


temperature:控制LLM的"创造力"

temperature 影响LLM输出时的随机性。类似Kotlin中 Random(seed) 的概念——种子固定,输出就固定;种子随机,输出就随机。

实验设计

同一个问题 "给我3个App名字的建议,面向健身人群",用了三档temperature:

for temp in [0.0, 1.0, 1.5]:
    response = client.chat.completions.create(
        model="turing/gpt-4o-mini",
        messages=[{"role": "user", "content": question}],
        temperature=temp,
        max_tokens=200,
    )
    print(f"--- temperature={temp} ---")
    print(response.choices[0].message.content)

实验结果

temperature=0.0

1. FitJourney - 强调健身过程中的成长与进步
2. PowerPulse - 传达力量与活力的感觉
3. WellnessHub - 集中于整体健康与健身

temperature=1.0

1. FitJourney - 强调健身过程中的旅程
2. PowerPace - 强调增强力量和运动节奏
3. HealthHaven - 传达健康的避风港概念

前两档看起来挺正常。前两个名字几乎一样,第三个换了个说法。

temperature=1.5

1. 动全力(MoveFull) - 强调全面性的连贯锻炼体验
2. 健身伙伴(FitBuddy) - 与好友一起参与健身
3. 强身日记(StrengthDiary) - 代览个人进展与可以为悄供密貼广阴展定位她,
   同时也兼修设目标与360度评 Lamb protein goods死皮加强米好gem设计发展意义...

后半段直接变成了无意义乱码:死皮加强米好gem设计Lamb protein goods——LLM疯了

这不是API故障。temperature=1.5时概率分布过于平坦,低概率token(包括无意义字符)也被采样出来。

修正实验:安全区间

把温度改成 [0.0, 0.3, 0.7] 重新跑,全部正常输出:

temperature 名字 描述
0.0 FitJourney/PowerPulse/WellnessHub 长描述,正经
0.3 FitJourney/PowerPulse/FlexTrack 长描述,微调
0.7 FitJourney/PowerPulse/WellnessHub 短描述,随意

temperature使用指南

0.0 → 代码生成、JSON输出(每次结果必须一致)
0.3~0.5 → 翻译、格式化任务(稳定但有点变化)
0.7 → 日常聊天(自然,不死板)
1.0+ → 头脑风暴、起名字(但要小心别超过1.2)

max_tokens:控制回答长度

另一个参数 max_tokens 限制LLM输出的最大长度。不设的话LLM可能一直写到自己停不下来。

实验设计

同一问题 "详细介绍Kotlin协程原理和使用场景",设三档上限:

for max_tok in [30, 100, 300]:
    response = client.chat.completions.create(
        model="turing/gpt-4o-mini",
        messages=[{"role": "user", "content": long_question}],
        temperature=0.7,
        max_tokens=max_tok,
    )

实验结果

max_tokens=30(输出约38字):

Kotlin协程是一种轻量级的线程管理工具,旨在简化异步编程和并发编程。它

话说到一半就被截断了。

max_tokens=100(输出约144字):

Kotlin协程是用于简化异步编程的一种机制...下面详细介绍原理和使用场景。

### 原理
1. 协程的概念:协程是一种轻量级的线程,它们

讲完了概念,原理部分又被截断。

max_tokens=300(输出约479字):

完整介绍了概念、挂起函数、协程构建器(launch/async)、
调度器(Dispatchers.Main/IO/Default)、使用场景...

结构完整、内容充分。

max_tokens使用指南

50 → 一句话回答
200 → 一段话
500+ → 长文章或详细分析

如果怕浪费token,先设小一点看看够不够,不够再放大。比不限制让LLM写了删要好得多。


今天的一句话总结

temperature=0 是"你给我老实点",temperature=1.5 是"放开说"——但放开太狠LLM直接说胡话了。安全区间0~0.7,生产环境建议0.3。


下一篇预告

第3天:system prompt——同一个API,换一行"人设",输出从代码变成产品报告再变成生活比喻。


本系列记录一位Android开发者转行AI Agent的完整学习过程,欢迎关注交流。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐