96SEO 2026-08-09 22:10 25
在 LangChain 工作流里。
如果把代码抽象成一张图。它大致如下:

import 'dotenv/config';import { ChatOpenAI } from "@langchain/openai";import { StringOutputParser } from '@langchain/core/output_parsers';import { PromptTemplate } from '@langchain/core/prompts';// 创意模型——温度拉高,Top‑K 收窄
const creativeModel = new ChatOpenAI({
model这方面,'deepseek-v4-pro',temperature: 1.2,// 高温度,鼓励发散
topK的观点是,20。// 小 K,只保留最靠谱的候选
maxTokens: 512,apiKey: process.env.DEEPSEEK_API_KEY,configuration: { baseURL: 'https://api.deepseek.com' }
});// 严谨模型——温度压低,Top‑K 放宽
const preciseModel = new ChatOpenAI({
再看model,'deepseek-v4-pro',temperature: 0.3,// 低温度,保持稳健
再看topK,80。// 大 K,保留更多候选防止遗漏
maxTokens: 512,apiKey: process.env.DEEPSEEK_API_KEY,configuration: { baseURL: 'https://api.deepseek.com' }
});// Prompt 模板化——可复用、可维护
const storyPrompt = PromptTemplate.fromTemplate(`
请写一篇短片散文。主题: {me}
风格温柔治愈,篇幅150字左右,不要分段,文字细腻又有画面感。`),const outputParser = new StringOutputParser;// 两条工作流——同一套 Prompt,不同的模型参数。不同的“性格”
const creativeChain = storyPrompt.pipe.pipe;const preciseChain = storyPrompt.pipe.pipe;async function runWriteDemo {
const me = "杀手辣条和王sir的故事";console.log,const creativeText = await creativeChain.invoke;console.log,老实说,console.log;const preciseText = await preciseChain.invoke;按理说,console.log;}
runWriteDemo.catch);
这段代码完成了三件事:
temperature 与 topK 当作业务语义直接写进配置。PromptTemplate 把提示词抽离出来实现“一套模板,多种场景”。StringOutputParser避免手写 res.choices.message.content 的重复代码。
常见误区:很多新人以为只要 fetch/SDK 调一次接口就能完成 AI 功能。一个可维护的 AI 产品往往需要:
| 业务需求 | 直接调 API 的问题 | 工作流方案的价值 |
|---|---|---|
| 同一 Prompt 要兼容创意风 & 严谨风 | 维护成本翻倍。改动容易遗漏 改动后需重新部署 | 通过 Chain 把 Prompt 与模型参数解耦,只修改模板或配置即可。 |
| 产品临时要切换成 “伤感风”“悬疑风” | 需要改所有硬编码字符串,发布。 | |
| 需要记录每次请求的 Token 消耗与耗时 | 手动埋点侵入业务逻辑。 | |
| 后续要接入 RAG | 代码结构混乱,难以插入检索节点。 | |
| MULTI‑TURN 对话需要维护 Message History | 自行管理对话数组易出错;LangChain 提供 MessagesPlaceholder | |
User Pain Point :
The model predicts a probability for every token in vocabulary. Tuning temperature scales those logits before sampling.
If you keep only top K tokens。all ors are discarded regardless of ir absolute probability.
| K 值大小对结果的影响 |
|---|
| K 小:仅保留最可能的几个词 → 在高温度下仍能防止跑偏,但可能丢失一些有价值的创新词。按理说, |
| K 大:保留更多备选 → 在低温度下增加安全边际。但会带来额外计算开销, |
You accumulate tokens sorted by probability until sum reaches P . All tokens inside that cumulative mass form candidate pool.
The typical production pipeline:
- Tune
broadcast temperature: shape overall randomness.- Add
topP: let model decide how many tokens are “reasonable” for current context.IfP=0.95"在 LangChain 工作流里temperature、Top‑K、Top‑P是控制模型「创意」与「可靠」之间平衡的三把关键阀门。下面通过完整源码示例、真实业务痛点还有面试级别的详细说明,为你一步步拆解「怎么配」还有「为什么这么配」。全程使用 HTML 标签组织,可直接拷贝进项目文档或 Wiki 中阅读。If you abstract code into a diagram it looks like this:
import 'dotenv/config';import { ChatOpenAI } from "@langchain/openai";import { StringOutputParser } from '@langchain/core/output_parsers';import { PromptTemplate } from '@langchain/core/prompts';不过,// 创意模型 —— 温度↑,Top‑K ↓ const creativeModel = new ChatOpenAI({ model的观点是,'deepseek-v4-pro',temperature: 1.2,// 高温,让概率分布更平坦 从topK来看。20,// 小 K,仅从最高概率集合中抽样 maxTokens: 512,apiKey: process.env.DEEPSEEK_API_KEY,configuration:{ baseURL:'https://api.deepseek.com' } });// 严谨模型 —— 温度↓,Top‑K ↑ const preciseModel = new ChatOpenAI({ model的观点是,'deepseek-v4-pro',temperature:0.3,// 低温,让分布更尖锐 topK这方面,80。 // 大 K,保留更多备选避免遗漏关键信息 maxTokens:512,apiKey:process.env.DEEPSEEK_API_KEY,configuration:{ baseURL:'https://api.deepseek.com' } });// Prompt 模板化 —— 可复用、可维护 const storyPrompt = PromptTemplate.fromTemplate(` 请写一篇短片散文。主题:{me} 风格温柔治愈,篇幅150字左右,不要分段,文字细腻又有画面感。`),const outputParser = new StringOutputParser;// 两条 Chain —— 同一套 Prompt,不同模型参数得到不同「性格」 const creativeChain = storyPrompt.pipe.pipe;怎么说呢,const preciseChain = storyPrompt.pipe.pipe;async function runWriteDemo { const me = "杀手辣条和王sir的故事";老实说,console.log;const creativeText = await creativeChain.invoke;console.log,console.log;const preciseText = await preciseChain.invoke;不过,console.log;} runWriteDemo.catch);This snippet does three things:
- 模型配置参数化:
btemperature & topK不再是黑盒,而是业务语义的一部分。- Prompt 模板化:
PpromptTemplate让提示词从硬编码字符串升级为可复用对象。未来换主题或换风格只改模板,无需触碰业务逻辑。- 输出解析标准化:
.SStringOutputParser统一返回格式,从此不必手写.choices.message.content这种重复代码。🔍 类比说明: 把「做饭」从每次重新切菜调火升级成了「预制菜流水线」——工序固定、配料可换、火候可调。很多刚接触 AI 应用开发的人会想:“这段代码不就是 fetch 调了个接口吗?多包装几层有什么意义,”,在生产环境里一个 AI 功能往往不是“一次调用就完事”。下面列举几个常见痛点还有对应工作流方法:
业务需求 直接调 API 的问题 工作流方案 同一个 Prompt 要同时支持创意 & 严谨两种口径 复制粘贴两套硬编码代码;改动时容易漏掉其中一个版本 将 Prompt 抽象为模板;Temperature / Top‑K 成为可配置字段。一处改动,全链路生效, 产品临时要切换成 “伤感风”“悬疑风”等新主题 必须遍历所有硬编码字符串并重新部署 只修改 storyPrompt.format;或者新增一个 Template 子类即可。需要记录每次请求的 Token 消耗和响应时间 在每个 fetch 调用里手动埋点;埋点逻辑侵入业务代码 利用 Chain 中间件统一拦截日志;不过,日志收集与业务解耦。说起来, 后续要接入 RAG或多轮对话 必须重构调用层并自行管理历史消息 在 Chain 上插入 retriever / MessagesPlaceholder 节点即可。无需改动上层业务, <\/tbody> 性能瓶颈:极端情况下 Top‑P 导致候选池过大 只能通过增减 P 值折中;没有安全阈值 再加一个 Top‑K 上限作为兜底阀门,实现 “最多取前 N 个”。 >> 使用者最关心的痛点 <
- A) 重复代码导致维护成本指数级增长。
- B) 参数与业务逻辑强耦合,一次需求变更可能引发全链路回滚。
- C) 缺少统一监控/埋点程序,很难评估费用与性能指标。
- D) 想在已有流程中平滑加入检索或多轮对话等高级特性,却因结构混乱而陷入 “改了一半报错” 的死循环。
1️⃣ Temperature —— 控制「胆量」
- logits 被放大后归一化,使得最高概率词几乎垄断抽样过程 → 输出更加确定且稳定。
- logits 被压缩。使得原本微小概率也能进入抽样范围 → 模型敢于尝试罕见表达,从而产生创新文本。
2️⃣ Top-K —— 硬性截断候选词数量
规则: 仅保留排序前 K 位的 token。其余全部剔除,无论它们实际概率多少。怎么说呢,
K 值大小对结果影响 K 小 :仅从最靠谱的一小撮 token 中抽样。即使在高温环境下也能防止跑偏,但可能牺牲部分潜在好词。怎么说呢, 适用于需要强约束但仍想保留一点创造性的场景。如短句生成或标题推荐,<\/tr> K 大 :放宽筛选力度。让更多备选进入抽样池,可提高信息完整性,但会带来额外计算开销。 适用于严肃问答或需要覆盖更多事实细节的任务。<\/tr> 3️⃣ Top-P —— 动态阈值
- 规则: 先按概率降序排列 token,接下来累计直到累计概率 ≥ P 为止;所有进入累计过程中的 token 成为候选池。<\/ul>
P 值大小 行为表现 <\/tr> P=0.6 :只保留占总体概率前60%的 token → 更保守、更聚焦于高置信答案。 适用于数学推理、API 调用等需要高度确定性的场景。<\/tr P=0.95 :几乎把所有合理 token 都纳入候选池 → 文本更丰富、多元。但极端情况下可能出现数百甚至上千 token 的候选集合,从而拖慢推理速度。 适用于创意写作、头脑风暴等希望保持开放性的任务。<\/tr> ⚡️ 第四步:工业级“三板斧”组合拳 — Temperature → Top-P → Top-K ⚡️
>> 典型生产流水线 <
- Tune
/temperature/ : 改变整个分布形状,让模型决定是否敢冒险。<\/ li>- Add
/topP/ : 根据上下文动态裁剪候选池,实现自适应收放。<\/ li>- If candidate pool 超过设定上限,则再做一次硬截断
/topK/ : 防止极端情况下出现数千 token 导致算力飙升。<\/ li>>> 工程推荐配置表 <
场景 Temperature Top-P Top-K / tr>/ad/< /代码生成 / 数学推理 / API 调用 /0 – .5 /— /200
Now we will produce final answer again correctly formatted and complete without errors...
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback