ChatGPT的記憶
GPT模型的輸入有一個(gè)最大標(biāo)記(token)限制,這個(gè)限制在不同的GPT版本和API使用上可能會(huì)有所不同。GPT-3模型有一個(gè)最大標(biāo)記限制為4096個(gè)標(biāo)記,而較新的GPT-3.5模型則有一個(gè)最大標(biāo)記限制為4096個(gè)標(biāo)記。
在對(duì)話歷史中,每個(gè)標(biāo)記可以是一個(gè)單詞、一個(gè)字符或一個(gè)子詞。因此,對(duì)話歷史中的標(biāo)記總數(shù)將取決于對(duì)話的長(zhǎng)度以及標(biāo)記化的方式。
需要注意的是,如果對(duì)話歷史超過(guò)了模型的最大標(biāo)記限制,您將需要進(jìn)行截?cái)嗷蚱渌绞降奶幚?,以確保對(duì)話歷史適應(yīng)模型的要求。超過(guò)模型限制的對(duì)話歷史將被截?cái)啵⑶夷P蛯⒅荒芸吹角懊娴牟糠帧?/p>
此外,GPT模型的輸入還包括其他信息,如提示(prompt),以指導(dǎo)生成的回復(fù)。這些額外的信息也會(huì)消耗模型輸入的標(biāo)記數(shù)量。因此,在實(shí)際應(yīng)用中,您需要根據(jù)模型的最大標(biāo)記限制以及所需的其他輸入來(lái)合理控制對(duì)話歷史的長(zhǎng)度。

ChatGPT本身并沒(méi)有內(nèi)置的記憶功能,它是一種生成式語(yǔ)言模型,以逐個(gè)輸入和輸出的方式進(jìn)行對(duì)話。每次提供給ChatGPT的輸入都被視為獨(dú)立的,它沒(méi)有顯式的記憶或理解先前對(duì)話的能力。
然而,為了在一個(gè)會(huì)話中保持歷史內(nèi)容,您可以在與ChatGPT交互時(shí),將對(duì)話歷史記錄在一個(gè)變量中,并將其作為模型的輸入傳遞。這樣,模型就可以在生成回復(fù)時(shí)考慮到之前的對(duì)話。
下面是一個(gè)示例,展示了如何在Python中實(shí)現(xiàn)這一點(diǎn):
在這個(gè)例子中,我們使用了OpenAI的文本生成API來(lái)獲取ChatGPT的回復(fù)。每次用戶輸入后,我們將用戶輸入添加到對(duì)話歷史中,并將整個(gè)對(duì)話歷史作為模型的輸入傳遞。模型的回復(fù)被提取并添加到對(duì)話歷史中,然后循環(huán)繼續(xù)。
請(qǐng)注意,這種方法僅允許模型在每個(gè)時(shí)間步驟上只能看到有限的上下文。如果對(duì)話變得非常長(zhǎng),模型可能會(huì)開始忘記先前的對(duì)話內(nèi)容。另外,由于GPT模型的生成性質(zhì),它可能會(huì)在后續(xù)回復(fù)中有時(shí)候不完全遵循先前的對(duì)話內(nèi)容。