大模型是怎么随机说话的?从 Temperature 到 LangChain 工作流实战
作为一名 AI 应用开发者,你一定遇到过这样的困惑:同样一段 prompt,大模型有时妙语连珠,有时却答非所问;想让 AI 写首诗,结果却蹦出一堆逻辑混乱的“幻觉”内容。这背后的“罪魁祸首”正是随机性控制参数——Temperature 和 TopK。而要让它们稳定、可控地服务于业务,我们还得请出 LangChain 这位“工作流编排大师”。

今天,我们就从这两个参数说起,一路聊到如何用 LangChain 把“随机”驯服成“创意”和“严谨”两条生产链。
一、随机性的“旋钮”:Temperature 与 TopK
大模型本质上是基于概率预测下一个词(token)的机器。每次生成时,模型会为词典里所有词打分,然后根据概率分布采样。随机性参数就是调整这个采样策略的阀门。
️ Temperature(温度)
-
取值范围:通常 0 ~ 1(部分框架支持 >1)
-
作用:控制概率分布的“锐度”
- 低温度(如 0.2) :高分词概率更突出,模型倾向于选择最可能的词,结果确定性强、严谨,适合代码生成、合同起草、法律文书。
- 高温度(如 0.8) :概率分布被“拉平”,低分词也有机会被选中,结果多样性高、有创意,适合小说写作、广告文案、多模态艺术生成。
TopK(采样候选集)
-
取值:正整数,默认常为 8
-
作用:只保留概率最高的 K 个词作为候选池,再从中采样
- 小 TopK(如 3~4) :缩小选择范围,防止“跑偏”,但可能丢失一些优质低频词。
- 大 TopK(如 8~10) :保留更多候选,信息完整性好,但随机性也增大。
二、幻觉问题:随机性是把双刃剑
提高随机性能带来惊喜,但也可能引发“幻觉”——模型生成看似合理但完全错误的内容。如何驾驭?
- 创作类场景:希望有“惊喜”,但不想质量崩塌 → 可以用
temperature=0.8, TopK=4,既发散又约束。 - 严谨类场景:代码、财务、法律 → 必须压低随机性,用
temperature=0.2, TopK=8保证信息完整且保守。
所以,不要试图用一个模型解决所有问题,而是为不同业务配备不同的参数配置。而这,正是 LangChain 的用武之地。
三、为什么需要 LangChain?
如果每次调用 API 都硬编码 prompt、手动拼接输出,项目会变得臃肿难维护。LangChain 提供了一套标准化的 AI 工作流(Chain) ,把“输入 → 提示词模板 → 模型调用 → 输出解析”串成一条流水线。
核心模块(@langchain/core)
messages:对话消息列表,管理多轮交互。output_parsers:输出解析器,帮我们把模型返回的复杂结构(如 JSON)自动转成 Python 对象或纯文本。tools:工具调用,让 AI 能联网、查数据库等。prompts:提示词模板,将业务逻辑与 prompt 文案解耦,复用性强。
开发效率提升
- 业务驱动:同一套提示词模板,只需切换模型参数就能产出不同风格的内容。
- AI Agent 友好:工作流中的每个节点可插拔,便于调试和观测。
- 避免“黑盒焦虑” :把复杂的生成过程拆成清晰的步骤,你知道每一步在干什么。
四、实战:搭建“创意”与“严谨”双写作流水线
下面我们用 LangChain + DeepSeek 模型(兼容 OpenAI API)实现两条写作链。一条 temperature=0.8, TopK=4 专攻创意散文,另一条 temperature=0.2, TopK=8 用于写实记录。
1. 环境准备
javascript
复制代码// .env 文件
DEEPSEEK_API_KEY=your_api_key
DEEPSEEK_API_BASE_URL=
bash
复制代码pnpm add dotenv @langchain/openai @langchain/core
2. 导入依赖与模型初始化
javascript
复制代码// JSmain.mjs
import 'dotenv/config';
import { ChatOpenAI } from '@langchain/openai';
import { StringOutputParser } from '@langchain/core/output_parsers';
import { PromptTemplate } from '@langchain/core/prompts';// ---------- 创意模型(高温度,小TopK) ----------
// 适合写故事、诗歌、广告语,需要发散但不脱离主题
const creativeModel = new ChatOpenAI({
model: 'deepseek-v4-pro',
temperature: 0.8, // 高随机性,激发灵感
topK: 4, // 只从概率前4个词采样,防止跑偏
maxTokens: 600,
apiKey: process.env.DEEPSEEK_API_KEY,
configuration: {
baseURL: process.env.DEEPSEEK_API_BASE_URL,
},
});// ---------- 严谨模型(低温度,大TopK) ----------
// 适合描述事实、技术文档、合同条款
const preciseModel = new ChatOpenAI({
model: 'deepseek-v4-pro',
temperature: 0.2, // 保守,选最高概率词
topK: 8, // 保留更多候选,保证信息完整性
maxTokens: 600,
apiKey: process.env.DEEPSEEK_API_KEY,
configuration: {
baseURL: process.env.DEEPSEEK_API_BASE_URL,
},
});
3. 定义提示词模板(PromptTemplate)
将主题和风格要求抽离为变量,方便复用。
javascript
复制代码// 模板里同时包含“任务”和“风格指令”
const storyPrompt = PromptTemplate.fromTemplate(`
请写一篇短篇散文,主题:{theme}。
风格要求:温柔治愈,篇幅在200字左右,不要分段,文字细腻有画面感。
`);
4. 输出解析器(统一返回纯文本)
StringOutputParser 会把模型返回的复杂消息对象转成简单的字符串,便于下游使用。
javascript
复制代码const outputParser = new StringOutputParser();
5. 构建工作流(Chain)
使用 .pipe() 方法把“模板 → 模型 → 解析器”串联起来,形成两条独立的流水线。
javascript
复制代码// 创意写作链:模板 → 创意模型 → 解析器
const creativeChain = storyPrompt.pipe(creativeModel).pipe(outputParser);// 严谨写作链:模板 → 严谨模型 → 解析器
const preciseChain = storyPrompt.pipe(preciseModel).pipe(outputParser);
6. 执行调用(喂入原料)
javascript
复制代码async function runWriteDemo() {
const theme = '秋日山野晚风'; console.log(' 创意写作模式(temperature=0.8, topK=4)');
const creativeText = await creativeChain.invoke({ theme });
console.log(creativeText);
console.log('n------------------n'); console.log(' 严谨写实模式(temperature=0.2, topK=8)');
const preciseText = await preciseChain.invoke({ theme });
console.log(preciseText);
}runWriteDemo().catch(err => {
console.error(' 运行出错:', err);
});
7. 运行结果对比(示例)
- 创意版可能会用“晚风揉碎了一池金黄,银杏叶打着旋儿落在肩头”这样的诗意表达。
- 严谨版则会平实描写“傍晚的山野,气温下降,光线渐暗,林间有风吹过树叶的沙沙声”。
五、总结:驯服随机性,打造可靠AI应用
| 参数组合 | 适用场景 | 效果特征 |
|---|---|---|
| temp=0.2, topK=8 | 代码、法律、事实 | 稳定、准确、信息完整 |
| temp=0.8, topK=4 | 创意写作、营销文案 | 丰富、有惊喜、但不偏离主题 |
| temp=0.5, topK=6 | 聊天机器人、通用 | 平衡,日常对话 |
- Temperature 和 TopK 是随机性的两个独立维度,组合使用才能精准控制。
- LangChain 将随机性管理嵌入工作流,让不同业务线共享模板,只切换模型配置,维护成本直线下降。
- 善用输出解析器和提示词模板,把 AI 生成从“黑盒”变成“透明流水线”。
最后,记住一句话:AI 的随机性不是缺陷,而是创意源泉;但只有用工程化手段驾驭它,才能成为生产力工具。
-
07.22
生化危机9方舟黑白浣熊收集位置合集指南
-
07.22
燕云十六声新手如何培养毕业唐横刀
-
07.22
明末渊虚之羽朱由检的回响效果怎么获取
-
07.22
神奇海洋今日3月16日答案更新
-
07.22
Edge浏览器如何开启自动登录功能
-
07.22
盗墓笔记启程王胖子厉害吗
-
- 炉石传说36.0.3补丁更新内容详情
- 07.22
-
- 乌克兰战场揭示未来战争形态!
- 07.22
-
-
-
-
- 从 400 行到 30 个文件:我只做了一件事
- 07.22
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏