經過多次實作,我們逐漸在完善我們的AI agent,不過目前還有一個問題,我們在一次對話中,前面講過的內容,Agent 到底能不能記住,如果每次對話都是獨立的,Agent 就不會知道前面發生過什麼。
所以今天就來加入 Agent Memory。
我們一樣基於之前的程式碼去做修改,這次我們先使用最簡單的方式,把整段對話保存在 contents 裡。
contents = []
使用者輸入時,把訊息加入:
contents.append(
types.Content(
role="user",
parts=[
types.Part(
text=user_input
)
]
)
)
Gemini 回覆後,也同樣保存:
contents.append(
response.candidates[0].content
)
這樣 contents 就會保存目前的對話,這裡的重點其實很簡單,我們並不是讓 Gemini 本身產生永久記憶,而是每次呼叫 Gemini 時,把之前保存的對話一起傳給它。
因此對 Gemini 來說,它每次收到的內容都包含前面的對話,自然就能根據這些資訊繼續回答。
執行 Agent python agent.py 開始測試,以下是我的執行結果:

可以看到在這次對話後,我們確實可以讓 Agent 獲得短期記憶,它記住了我是呱呱。
而且這個 Memory 也可以和前面做好的 MCP Tool 一起使用,例如前面使用 Calculator Tool 算出的結果,也會保留在這次對話中,像下面這樣

現在的 Memory 只是保存這一次執行中的對話,如果關閉程式,Agent 關閉 contents 消失,之前的對話也不見了,所以這還不算真正的長期記憶。
另外,如果對話越來越長,contents 裡保存的內容也會越來越多,每次都把完整對話傳給模型也會增加 Token 的使用量,之後如果需要讓 Agent 記住更久的資訊,就可以再搭配資料庫或 Vector Database 來保存重要記憶。
今天我們讓 Agent 開始具備基本的 Memory,可以記住目前對話中前面出現過的資訊,到這裡,Agent 已經不只是會使用 Tool,也開始能夠參考之前的對話來完成後續任務。