来源:互联网 更新时间:2026-07-22 07:59
今天我们来聊聊一个非常实际的话题——如何用 LangChain 把大模型的随机性参数玩明白,并且真正组装成一条可用的 AI 工作流。这篇文章会沿着一条清晰的路径展开:先搞清楚大模型为什么能“随机说话”,再把这些参数落地到代码里,最后看看 LangChain 这个框架究竟能做什么。

先看整体脉络。整个学习路径有三个文件,它们的依赖关系非常清晰:
复制代码readme0721.md(参数理论:Temperature、Top-k、Top-p 是什么)
↓ 理论落地
main.js(实践代码:双温度模型 + PromptTemplate + pipe 串联)
↓ 框架展开
langchain-explained/readme.md(LangChain 全模块生态概览)
教学逻辑是
大模型每生成一个词,本质是从一个概率分布里做一次"抽奖"。输入「你好」,模型会说:
复制代码下一个词候选:
「吗」35% 「啊」20% 「世界」15% 「我是AI」10% 「呀」7% 「哈哈」5%
从这个概率分布出发,有三个参数可以玩。
底层公式很简单:
复制代码调整后分数 = logits / Temperature
最终概率 = softmax(调整后分数)
Temperature < 1(低温)——除以一个小数放大差距,强者更强:
复制代码T=0.3: 吗 72% 啊 18% 世界 6% 我是AI 3%
↑ 几乎锁死在「吗」
Temperature > 1(高温)——除以一个大数拉平差距,人人有机会:
复制代码T=2.0: 吗 22% 啊 18% 世界 17% 我是AI 15% 呀 13%
↑ 百花齐放
不是——它只调整概率分布的"陡峭度",最终还是从新分布里随机采样。T=0.3 时「吗」占 72%,但依然有 28% 的概率抽到别的词。
Temperature 设高了之后,那些只占 1%-2% 的垃圾词也被一起拉高概率了——输出会不会崩?这就引出第二个参数
复制代码用户输入「你好」:
原始 → 吗 35% 啊 20% 世界 15% 我是AI 10% 呀 7% 哈哈 5% 哦 4%...Top-k=4 → 只留:吗、啊、世界、我是AI,其他概率归零,永无出头之日
而
一句话:
实际用法是
复制代码原始概率 → ① Top-k 砍掉垃圾 → ② Temperature 调平/调陡 → ③ 随机采样
以 k=4, T=0.5 走一遍:
复制代码原始:吗35% 啊20% 世界15% 我是AI10% ...① Top-k=4 → 保留前4个,重新归一化:吗50% 啊29% 世界21%
② T=0.5 → 加剧分化的马太效应:吗78% 啊16% 世界6%
③ 随机采样 → 大概率输出「你好吗」
直接调 OpenAI API 的话你得这么写:
复制代码const prompt = '请写一篇散文,主题:' + theme + '...' // 字符串拼接,换主题得改代码
const res = await fetch('...', { body: JSON.stringify({ model, temperature }) })
const data = await res.json()
const text = data.choices[0].message.content // 手动剥好几层壳
Prompt 散落在代码各处,返回结果要手取 .content,步骤一多就成面条。LangChain 把这些都模块化了。
复制代码// 创意型:高温 + 小 Top-k = 发散但不跑偏
const creativeModel = new ChatOpenAI({
model: 'deepseek-v4-flash', // 轻量、速度快
temperature: 0.8, // 高温 → 更多可能性
topK: 4, // 只从概率前4的词汇里采样
maxToken: 600,
})// 严谨型:低温 + 中 Top-k = 准确且完整
const preciseModel = new ChatOpenAI({
model: 'deepseek-v4-pro', // 更强模型,质量优先
temperature: 0.2, // 低温 → 确定性输出
topK: 8, // 更大的候选池,保证信息完整性
maxToken: 600,
})
代码里的 temperature 和 topK 和前面的理论一一对应:creative 是"高温小池",precise 是"低温大池"。
复制代码const storyPrompt = PromptTemplate.fromTemplate(
`请写一篇短篇散文,主题:{theme}
风格治愈温柔,篇幅200字左右,不要分段,文字细腻有画面感。`
)
字符串拼接时,prompt 的结构逻辑和业务数据混在一起,换个主题就得改代码。PromptTemplate 把**不变的结构(模板)
{theme} 就直接复用。Agent 应用里,同一套 AI 逻辑换不同用户身份(诗人 vs 律师),变的只是参数,代码完全不动——这就是模板化的价值。
复制代码const outputParser = new StringOutputParser()
// 内部等价于:result.content ?? result.toString()
单独用确实不值。但当你把它挂在 chain 末尾时,价值就出来了——链条外面拿到手直接就是干净的字符串,不用再 .content。管道里的最后一道工序。
复制代码const creativeChain = storyPrompt // 1️⃣ 填入 {theme},产出完整 prompt 字符串
.pipe(creativeModel) // 2️⃣ LLM 推理,产出消息对象
.pipe(outputParser) // 3️⃣ 剥出 content,产出纯字符串const preciseChain = storyPrompt
.pipe(preciseModel)
.pipe(outputParser)
pipe 做的事非常简单——
.invoke() 的输出,自动变成下一个 .invoke() 的输入 复制代码{ theme: '秋日山野晚风' }
→ ① storyPrompt.invoke() → 完整 prompt 字符串
→ ② creativeModel.invoke() → { content: "晚风轻拂...", ... }
→ ③ outputParser.invoke() → "晚风轻拂..."
你最后只需一句 creativeChain.invoke({ theme }),整条链自动流转。
复制代码async function runWriteDemo() {
const theme = "秋日山野晚风" console.log('创意写作模式')
const creativeText = await creativeChain.invoke({ theme })
console.log(creativeText) // 散文风格,文字细腻有画面感 console.log('严谨写实模式')
const preciseText = await preciseChain.invoke({ theme })
console.log(preciseText) // 更克制、更准确的表达
}runWriteDemo().catch(err => console.error(err))
顶层 .catch() 兜住一切——API Key 没配、网络超时、{theme} 忘传——避免 Node 直接崩出 UnhandledPromiseRejection。
走完最简工作流,整个框架的全景也就清晰了:
| 模块 | 职责 | 一句话 |
|---|---|---|
Prompts | 模板化提示词 | 结构变数分离,复用不重写 |
Messages | 标准化对话格式 | System / Human / AI 三类,所有 LLM 通用 |
Output Parsers | 解析返回内容 | String / JSON / Structured 三种解析器 |
Tools | 给模型挂外部能力 | 模型自己决定调用工具(查天气、搜资料) |
Vector Stores | 向量化存储+搜索 | RAG 核心——让模型"读取"海量文档 |
Document Loaders | 加载各类文件 | PDF、TXT、CSV → 统一文档对象 |
Text Splitters | 切分长文本 | 按 chunkSize 切块,overlap 保留上下文 |
今天按"概念 → 落地 → 全景"的顺序覆盖了:
ChatOpenAI 构造函数里 temperature / topK 的实际配置.content.pipe() 管道串联——自动传递,代码即流水线下一步可以沿 Tools → Agent 方向深入自主决策型应用,或走 RAG 路线做私有知识库问答。
七麦数据官网网页地址 七麦数据官方入口在线首页
问卷星官方网站入口地址 问卷星网页版在线使用
币安Binance官方中文网站 币安App最新版下载及新手注册指南
闲鱼的严选验货在哪里看?闲鱼严选和验货宝哪个可靠
PokePay加密卡2026完整指南:申请开卡全攻略+多场景应用技巧
淘宝直播如何看回放在哪里看?怎么查看淘宝直播回放
摩托车活塞环性能如何
为何比特币BTC价格跌破7.3万美元?一文拆解影响近期比特币行情的五大原因
豆包AI专业版使用教程【新手必看】
索尼限时赠送PS Plus Premium七日会员,需手
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
迷你网名古风男生霸气(精选100个)
文雅简易网名男生可爱(精选100个)
GPT5.6惨遭切脑,Fable 5回归要变弱鸡版?
《梦幻西游》特殊鬼怪怎么抓-隐藏变异鬼应对要点
币圈十大实用工具:从实时行情监控到数据分析、资产管理
王者荣耀「西行封妖记」【孙权-仙扇使者】6月25日上线!
闲鱼严选和验货宝哪个可靠?闲鱼的验货宝怎么样,,
币安杀入美股市场,重头戏bStocks还没来
陈姓和杨姓网名大全男生(精选100个)
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc