大模型为什么每次回答都不一样?一文搞懂 Temperature、Top K 与 Top P
大模å为ä»ä¹æ¯æ¬¡åçé½ä¸ä¸æ ·ï¼ä¸æææ TemperatureãTop K ä¸ Top P
Larcher 2026-08-10 0 é 读9åéåä¸å¥æç¤ºè¯è¿ç»é®ä¸éï¼å¤§æ¨¡å为ä»ä¹ä¼ç»åºä¸ç§ä¸åçåçï¼
ææå¼å§æè¿ç§ç°è±¡ç®åçè§£æâ模åä¼éæºè¯´è¯âãä½ç»§ç»å¾ä¸å¦æåç°ï¼éæºå¹¶ä¸çäºæ¯«æ è§å¾ãæ¨¡åæ¯çæä¸ä¸ª Tokenï¼é½ä¼å
å¾å°ä¸ç»åéåæ°ï¼åæç
§éæ ·è§åéåºä¸ä¸ä¸ª TokenãTemperatureãTop K å Top Pï¼æ§å¶çæ£æ¯è¿ä¸ªè¿ç¨ã
è¿ç¯æç« 䏿忰彿å 个å¤ç«çæé®ï¼èæ¯ä»ä¸æ¬¡ Token éæ©åºåï¼ççå®ä»¬å嫿¹åäºä»ä¹ï¼æååç¨ä¸ä¸ª LangChain.js å°å®éªè§å¯ä½æ¸©ä¸é«æ¸©è¾åºçå·®å«ã
ä¸ã模å䏿¯å¨âæ³ä¸å¥å®æ´çè¯â
å设ä¸ä¸ææ¯âä½ å¥½âï¼æ¨¡åæ£å¨é¢æµä¸ä¸ä¸ª Tokenãä¸ºäºæ¹ä¾¿çè§£ï¼æä»¬å èæä¸ç»æ¦çï¼
| åé Token | å | å | å | å¢ | å¦ |
|---|---|---|---|---|---|
| æ¦ç | 60% | 18% | 12% | 7% | 3% |
âåâçæ¦çæé«ï¼ä½è¿ä¸ä»£è¡¨å®æ¯æ¬¡é½å¿ ç¶è¢«éä¸ãåªè¦çæè¿ç¨éç¨éæ ·ï¼å ¶ä»åéä»ç¶ææºä¼åºç°ï¼åªæ¯æºä¼ä¸åã
è¿éè¯´çæ¯ Tokenï¼ä¸ä¸å®æ¯ä¸ä¸ªå®æ´æ±åæåè¯ãå®ä¹å¯è½æ¯è¯çä¸é¨åãæ ç¹æè ç©ºæ ¼ãæ¨¡åæ¯éåºä¸ä¸ª Tokenï¼å°±ä¼æå®å å ¥ä¸ä¸æï¼åç»§ç»é¢æµä¸ä¸ä¸ªï¼ç´å°çæç»æã
çè§£è¿ä¸ç¹åï¼ä¸ä¸ªåæ°çåå·¥å°±æ¸ æ¥å¤äºï¼
Temperatureæ¹ååéä¹é´çæ¦çå·®è·ï¼Top Kæåéæ°é缩å°èå´ï¼Top Pæç´¯è®¡æ¦ç缩å°èå´ã
äºãTemperatureï¼æ¹åæ¦çåå¸çâå½¢ç¶â
模åå 产çä¸ç»åå§åæ°ï¼ä¹å°±æ¯ logitsãTemperature ä¼åä¸ softmax 计ç®ï¼
p_i(T) = exp(z_i / T) / Σ_j exp(z_j / T)
ä¸å¿ è¢«å ¬å¼åå°ãå¯ä»¥æå®ææä¸æ¥ï¼
z_iæ¯ç¬¬i个åé Token çåå§åæ°ï¼- æ¯ä¸ªåæ°å
é¤ä»¥æ¸©åº¦
Tï¼ - softmax åæè¿äºåæ°è½¬æ¢ææ»å为 1 çæ¦çã
å½ T æ¯è¾å°çæ£æ°æ¶ï¼åæ¬çåæ°å·®è·ä¼è¢«æ¾å¤§ï¼æ¦çåå¸å徿´âå°âï¼é«ååéæ´å ä¼å¿ï¼è¾åºé常æ´éä¸ã
å½ T è¾å¤§æ¶ï¼åæ°å·®è·è¢«ç¼©å°ï¼æ¦çåå¸å徿´âå¹³âï¼æ´å¤åéææºä¼è¢«æ½ä¸ï¼è¾åºé常æ´åæ£ã
å æ¤ï¼Temperature 䏿¯âææä¸ªä½æ¦çè¯ç´æ¥éåºæ¥âï¼èæ¯å é塿´ç»æ¦çï¼å交ç»éæ ·è¿ç¨éæ©ã
è¿è¦æ³¨æä¸¤ä¸ªè¾¹çï¼
- Temperature çåæ³èå´ç±æ¨¡åä¾åºåå³å®ï¼ä¸è½ç¬¼ç»å°åææ°¸è¿æ¯
0ï½1ï¼ temperature: 0å¦ä½å¤çä¹åå³äºå ·ä½ APIï¼æçæå¡ä¼èµ°è¿ä¼¼ç¡®å®æ§çè·¯å¾ï¼æçæå¡ä¸æ¥å 0ã
æä»¥ï¼è°ååå çèªå·±ä½¿ç¨çæ¨¡åææ¡£ï¼æ¯è®°ä½ä¸ä¸ªåºå®èå´æ´å¯é ã
ä¸ãTop Kï¼åªçä¸å K ååé
Top K çè§åå¾ç´æ¥ï¼å
ææ¦çä»é«å°ä½æåºï¼åªä¿çå K 个åéï¼å
¶ä½åéæ¬è½®ä¸åä¸éæ ·ã
è¿æ¯ç¨åé¢çæ¦ç举ä¾ãè¥è®¾ç½® topK = 3ï¼åééåªå©ä¸ï¼
å 60% å 18% å 12%
âå¢âåâå¦âä¼è¢«æé¤ãéåï¼ç³»ç»ä¼å¯¹çä¸çåééæ°å½ä¸åï¼åè¿è¡éæ ·ã
Top K çä¼ç¹æ¯åéæ°é稳å®ï¼å®¹æçè§£ï¼å±éä¹å¾ææ¾ï¼æ 论å½åæ¦çæ¯ç¹å«éä¸è¿æ¯ç¹å«åæ£ï¼å®é½æºæ¢°å°ä¿ç K 个ã
æ´éè¦çæ¯ï¼å¹¶éæ¯ä¸ªæ¨¡å API é½æä¾ Top Kãåæ°æ¯å¦åå¨ãå« topK è¿æ¯ top_kãåºè¯¥å卿é åæ°è¿æ¯éä¼ åæ®µéï¼é½è¦ä»¥ä¾åºåå SDK ææ¡£ä¸ºåã
åãTop Pï¼è®©åéæ°éè·çæ¦çåå
Top P ä¹å« nucleus samplingï¼æ ¸éæ ·ï¼ãå®ä¸åºå®åéæ°éï¼èæ¯ä»æé«æ¦çå¼å§ç´¯å ï¼ç´å°ç´¯è®¡æ¦çè¾¾å°éå¼ Pã
å设设置 topP = 0.85ï¼
å 60% 累计 60%
å + å 累计 78%
å + å + å 累计 90% -> è¾¾å° 85%ï¼åæ¢
è¿ä¸è½®ä¼çä¸ 3 个åéã妿ä¸ä¸è½®çæ¦çæ´éä¸ï¼ä¹è®¸åªé 1ï½2 个åéå°±è½è¾¾å° 85%ï¼å¦ææ¦çæ´åæ£ï¼åå¯è½ä¿çæ´å¤åéã
è¿ä¹æ¯ Top P å¨è®¸å¤éç¨å¤§æ¨¡å API 䏿´å¸¸è§çåå ï¼åééè½éå½åä¸ä¸æå¨æååã
äºãä¸ä¸ªåæ°å°åºæ¯ä»ä¹å ³ç³»ï¼
| åæ° | æ¹åä»ä¹ | ç´è§ææ | 注æäºé¡¹ |
|---|---|---|---|
| Temperature | æ´ç»æ¦ççç¸å¯¹å·®è· | 使¸©æ´éä¸ï¼é«æ¸©æ´åæ£ | èå´å 0 çå¤çç±ä¾åºåå³å® |
| Top K | åééçæå¤§æ°é | åªå¨å K åä¸éæ© | å¾å¤ OpenAI å ¼å®¹æ¥å£å¹¶ä¸æ¯æ |
| Top P | åééç累计æ¦çèå´ | æå½ååå¸å¨æä¿çåé | P è¶å°ï¼åéèå´é常è¶çª |
å®ä»¬ä¸æ¯äºç¸æ¿ä»£çåä¸ä¸ªåæ°ï¼ä½ä¹æ²¡æâTemperature å Top K ç»å¯¹ä¸è½åæ¶å¾å¤§æåæ¶å¾å°âè¿æ ·ç硬è§åã
å®é ç³»ç»å¸¸è§çå¤çé¡ºåºæ¯ï¼å ç¨ Temperature æ¹åæ¦çåå¸ï¼åæ Top K æ Top P è¿æ»¤åéï¼æåéæ ·ãä½å ·ä½æå¡å¯è½åªæ´é²å ¶ä¸ä¸é¨ååæ°ï¼ä¹å¯è½è§å®ä¸è¦åæ¶ä¿®æ¹å¤ä¸ªéæ ·åæ°ã
æç¨³å¦¥çåæ³æ¯ï¼éæ©ä¸ä¸ªä¿å®åºçº¿ï¼æ¯æ¬¡åªæ¹åä¸ä¸ªåæ°ï¼ç¨åºå®è¯æµéè§å¯ç»æã
å ãä¸åä»»å¡å¯ä»¥ä»ä»ä¹åæ°å¼å§ï¼
ä¸é¢ä¸æ¯âæ åçæ¡âï¼åªæ¯ä¾¿äºå¯å¨å®éªçåèå¼ãä¸å模åå³ä½¿æ¥æ¶åååæ°ï¼è¡¨ç°ä¹å¯è½ä¸åã
| ä»»å¡ | Temperature èµ·ç¹ | Top P èµ·ç¹ | è§å¯éç¹ |
|---|---|---|---|
| 代ç çæãç»æåæ½å | 0.1ï½0.3 | 0.80ï½0.90 | æ ¼å¼ç¨³å®ã约æéµå®ã坿§è¡æ§ |
| åºäºèµæçäºå®é®ç | 0.2ï½0.4 | 0.85ï½0.95 | å¼ç¨ä¸è´ãçæ¡å®æ´ãæçè¾¹ç |
| æ®éææ¡ä¸æ»ç» | 0.5ï½0.7 | 0.90ï½0.98 | å¯è¯»æ§ãéå¤åº¦ãä¿¡æ¯ä¿ç |
| åæåä½ä¸è§è²è¡¨è¾¾ | 0.8ï½1.0 | 0.95ï½1.00 | æ°é¢åº¦ãè¿è´¯æ§ãè·é¢ç |
妿ä¾åºå建议åªè° Temperature æ Top Pï¼å°±å éµå¾ªå®ç建议ã䏿¬¡åæ¶æ¹ä¸¤ä¸ªåéï¼ä¼è®©ä½ å¾é¾å¤æç©¶ç«æ¯åªä¸ä¸ªåæ°å¸¦æ¥äºååã
ä¸ãç¨ LangChain.js å䏿¬¡å¯¹æ¯å®éª
åå¦ä¹ 示ä¾ä½¿ç¨äºä¸¤å¥ ChatOpenAI é
ç½®ï¼ä½æ¸©è´è´£â严谨âï¼é«æ¸©è´è´£âåæâãè¿ä¸ªå®éªæè·¯å¾å¥½ï¼ä½æ¬å°å®è£
ç @langchain/openai@1.5.5 æä¸ä¸ªå
¼å®¹æ§ç»èéè¦ä¿®æ£ã
å¨è¿ä¸ªçæ¬ä¸ï¼ChatOpenAI ç顶屿é åæ°ä¼è¯»å temperature å topPï¼å´ä¸ä¼è¯»åé¡¶å±ç topKãä¹å°±æ¯è¯´ï¼ä¸é¢è¿ç§åæ³è½ç¶ JavaScript ä¸ä¼æ¥éï¼topK å®é
ä¸ä¸ä¼è¿å
¥è¯·æ±ï¼
new ChatOpenAI({
temperature: 0.8,
topK: 4,
});
å¦ææ¨¡åä¾åºåæ¯æ Top Kï¼éè¦æç
§å®ç SDK æéä¼ åæ°ææ¡£é
ç½®ï¼ä¸è½é»è®¤ææ OpenAI å
¼å®¹æ¥å£é½æ¯æã为äºè®©æ¬æç¤ºä¾ä¸å½åæ¬å°ä¾èµå¹é
ï¼ä¸é¢æ¹ç¨å·²æ¯æç temperature + topPã
import "dotenv/config";
import { StringOutputParser } from "@langchain/core/output_parsers";
import { PromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";
const modelName = process.env.DEEPSEEK_MODEL;
if (!process.env.DEEPSEEK_API_KEY || !process.env.DEEPSEEK_API_URL || !modelName) {
throw new Error(
"请å
é
ç½® DEEPSEEK_API_KEYãDEEPSEEK_API_URL å DEEPSEEK_MODEL",
);
}
function createModel({ temperature, topP }) {
return new ChatOpenAI({
model: modelName,
temperature,
topP,
maxTokens: 600,
apiKey: process.env.DEEPSEEK_API_KEY,
configuration: {
baseURL: process.env.DEEPSEEK_API_URL,
},
});
}
const storyPrompt = PromptTemplate.fromTemplate(`
请åä¸ç¯çç¯æ£æï¼ä¸»é¢ï¼{theme}
飿 ¼æ¸©ææ²»æï¼ç¯å¹
200 åå·¦å³ï¼ä¸è¦åæ®µï¼æåç»è
»ãæç»é¢æã
`);
const outputParser = new StringOutputParser();
const preciseChain = storyPrompt
.pipe(createModel({ temperature: 0.2, topP: 0.8 }))
.pipe(outputParser);
const creativeChain = storyPrompt
.pipe(createModel({ temperature: 0.9, topP: 0.95 }))
.pipe(outputParser);
async function runChain(label, chain, theme, rounds = 3) {
console.log(`\n=== ${label} ===`);
for (let round = 1; round <= rounds; round += 1) {
const text = await chain.invoke({ theme });
console.log(`\n第 ${round} 次ï¼\n${text}`);
}
}
async function main() {
const theme = "ç§æ¥å±±éæé£";
await runChain("使¸©æ¨¡å¼", preciseChain, theme);
await runChain("髿¸©æ¨¡å¼", creativeChain, theme);
}
main().catch((error) => {
console.error("è°ç¨å¤±è´¥ï¼", error);
process.exitCode = 1;
});
è¿è¡åéè¦é
ç½®ä¸é¡¹ç¯å¢åéï¼DEEPSEEK_API_KEY 使ç¨èªå·±çå¯é¥ï¼DEEPSEEK_API_URL ä½¿ç¨æå¡åæä¾çå
¼å®¹æ¥å£å°åï¼DEEPSEEK_MODEL ä½¿ç¨æå¡åå®é
æ¯æçæ¨¡ååãä¸è¦ææªç»ç¡®è®¤ç模ååç§°åæ»å¨ä»£ç éï¼ä¹ä¸è¦æçå®å¯é¥æäº¤å°ä»åºã
å®è£ ä¾èµåè¿è¡ï¼
pnpm install
node main.mjs
示ä¾è®©æ¯æ¡é¾è¿ç»çæ 3 次ãè§å¯æ¶ä¸è¦åªæ¯è¾âåªç¯æ´å¥½âï¼è¿å¯ä»¥è®°å½ï¼
- ç¸åæè±¡åå¥å¼çéå¤ç¨åº¦ï¼
- ç¨è¯æ¯å¦æ´å¤§èï¼
- æ¯å¦å离âç§æ¥å±±éæé£âç主é¢ï¼
- 夿¬¡è¾åºä¹é´ç差弿å¤å¤§ã
è¿ææ¯è°èéæºæ§çæä¹ï¼ææè§åæå¯ä»¥éå¤è§å¯çå®éªã
å «ãéä½ Temperature è½è§£å³å¹»è§åï¼
ä¸è½ã
éä½ Temperature å¾å¾è½è®©è¾åºæ´ç¨³å®ï¼å´ä¸è½è®©æ¨¡åçªç¶ç¥éå®åæ¬ä¸ç¥éçäºå®ãä¸ä¸ªéè¯¯çæ¡ä¹å¯è½ä»¥é常稳å®ãé常èªä¿¡çæ¹å¼éå¤åºç°ã
妿ä¸å¡å ³å¿äºå®å¯é æ§ï¼è¿éè¦ç»åå ¶ä»ææ®µï¼
- ç¨ RAG 为åçæä¾å¯è¿½æº¯èµæï¼
- ç¨å·¥å ·è°ç¨æ¥è¯¢æ°æ®åºæå®æ¶æ¥å£ï¼
- ç¨ç»æåè¾åºåä¸å¡è§å约æç»æï¼
- 建ç«å 嫿£ç¡®çæ¡ãæçåºæ¯åè¾¹çæ ·æ¬çè¯æµéï¼
- 对é«é£é©ä»»å¡å¢å äººå·¥å¤æ ¸ã
Temperature ç®¡çæ¯âæä¹æ½æ ·âï¼ä¸æ¯âç¥è¯ä»åªéæ¥âãæè¿ä¸¤ä¸ªé®é¢åå¼ï¼æè½é¿å å¯¹åæ°äº§çä¸åå®é çæå¾ ã
ä¹ãæçè°åæ¸ å
以ååéå°éè¦æ§å¶å¤§æ¨¡åéæºæ§çéæ±ï¼æä¼æä¸é¢äºæ¥åï¼
- å å®ä¹ä»»å¡ç®æ ï¼è¦ç¨³å®ã宿´ãæåæï¼è¿æ¯å ¼é¡¾å 项ï¼
- éæ©ä¿å®åºçº¿ï¼å 使ç¨ä¾åºåé»è®¤å¼æè¾ä½ Temperatureã
- 䏿¬¡åªæ¹ä¸ä¸ªåéï¼å¦åæ æ³å¤æå忥èªåªéã
- åä¸è¾å ¥éå¤éæ ·ï¼å次è¾åºä¸è½ä»£è¡¨åæ°çæ´ä½ææã
- ç¨ææ è¯ä¼°è´¨éï¼åæ¶çæ£ç¡®çãæ ¼å¼éè¿çãéå¤åº¦ãè·é¢çå人工å好ã
æ»ç»
大模åççæä¸æ¯ä»è¯åºéé便æä¸ä¸ªè¯ï¼èæ¯å¨æ¯ä¸æ¥è®¡ç®åéåæ°ãå½¢ææ¦çåå¸ï¼åæç §éæ ·è§åéåºä¸ä¸ä¸ª Tokenã
- Temperature é塿¦çå·®è·ï¼
- Top K ç¨åºå®æ°ééå¶åéï¼
- Top P ç¨ç´¯è®¡æ¦ç卿éå¶åéã
åæ°æ²¡æè±ç¦»æ¨¡åãä»»å¡åè¯æµéçâä¸è½æé âãå çè§£æ¯ä¸ªæé®å°åºæ¹äºä»ä¹ï¼åéè¿éå¤å®éªè§å¯ææï¼ææ¯å¼åè æ´ææã乿´é è°±å°æ§å¶ AI éæºæ§çæ¹å¼ã
Aitishiku.com