OpenAI Agents SDK 04 - 使用 Sessions 輕鬆管理 AI 記憶

更新 發佈閱讀 11 分鐘
編按:持續在慢慢研究OpenAI Agents SDK,其中最近 OpenAI 更新了「Session」機制,我覺得讓「管理 AI 記憶」這件事情變得超級方便!不必將繁冗的「{"system": "...", "user": "...", "assistant": "..."}」 記憶手動匯入,真的很方便。

不過大型部署使用,對不熟資料庫的朋友來說就會相對吃力一點;不過自用的話,很推薦直接引入這個機制!
以下內容是從 OpenAI Agents SDK - Sessions 翻譯並摘錄整理。

什麼是 session?為什麼需要它?

在開發支援對話型 AI、工具代理人(Agent)或聊天機器人平台時,「上下文記憶」是關鍵。假如沒有 session,每一次用戶發問都像第一次,用戶和 Agent 的對話「完全沒有共同記憶」,很難實現多輪對話、任務追蹤、甚至連帶問題處理(像 LINE、Messenger 的客服一樣)。

OpenAI Agents SDK 裡的 session 機制,就是要幫你把「同一串對話」的所有歷史訊息(用戶、Agent、工具等回應)自動串成一條「對話線(session)」管理,讓 agent 可以做到「延續式多輪會話」——比如問一次再追問、以代名詞稱呼上一個階段的討論——應當都沒問題。

之前版本的 Agents SDK ,要自己管理每次對話的 .to_input_list() 或自己組 prompt,但現在 SDK 幫你簡單匯入這些記憶。

原理

每次 Agent 執行前,SDK 會自動把該 session id 的「所有歷史對話」先查出來,全部加在本次交互的 prompt 最前面因此,你不需自己組 prompt、引入歷史紀錄,只要 session id 一致,之前說過的話、 AI 回答、工具操作都會幫你直接引入。

Agent 執行結束後,這一輪新產生的內容(用戶輸入、AI 回覆、工具調用細節等)會自動寫進這個 session 的資料檔或資料庫當中。歷史紀錄會持續疊加。

三個 session 記憶方法

沒記憶

# Default behavior - no session memory
result = await Runner.run(agent, "Hello")

如果要新增記憶的話,只要在 Runner.run 內,新增一個參數「session」就完成了!!

接著我們來看看加入這個 session 的三種方法搭配:

記憶方法1:OpenAI Conversations API 儲存

使用 OpenAI 官方 Conversations API,讓會話全部自動存在 OpenAI 的雲端(不需自建資料庫)。直接呼叫 OpenAIConversationsSession(),可選擇指定 conversation_id。

  • 優勢:不用架DB、雲端自動記憶、快速部署!適合初學者使用!
  • 劣勢:資料不在自己家、進階客製有限
from agents import OpenAIConversationsSession

session = OpenAIConversationsSession()

# Optionally resume a previous conversation by passing a conversation ID
# session = OpenAIConversationsSession(conversation_id="conv_123")

result = await Runner.run(
agent,
"Hello",
session=session,
)

記憶方法2:SQLite memory - 快速單機部署

在 Local 端使用 SQLite(可以是記憶體或檔案型)儲存每個 session 的對話紀錄。

  • 優勢:相較於儲存於 OpenAI,使用此方式完全控管資料;適合初學者使用!
  • 劣勢:Local 端SQL 管理僅適合單機、測試使用,大用量較不建議。
from agents import SQLiteSession

# In-memory database (lost when process ends)
session = SQLiteSession("user_123")

# Persistent file-based database
session = SQLiteSession("user_123", "conversations.db")

# Use the session
result = await Runner.run(
agent,
"Hello",
session=session
)

此外,也可支援多個 session 存在同個 DB。

記憶方法3:透過 SQLAlchemySession 串接自建資料庫

進階用法,使用 SQLAlchemy 支援的多種資料庫(如 PostgreSQL、MySQL、SQLite 等)作為 session 記憶後端,常用於生產環境、多人系統、或已經有現成資料庫的架構。資源管理更靈活。

  • 優勢:完全控管資料、彈性大、支援多人使用、可結合雲/地端 等
  • 劣勢:SQLAlchemy需架DB,對初學者有門檻。

1. 快速部署:使用 in-memory SQLite(透過 from_url參數)

import asyncio
from agents import Agent, Runner
from agents.extensions.memory.sqlalchemy_session import SQLAlchemySession

async def main():
agent = Agent("Assistant")
session = SQLAlchemySession.from_url(
"user-123",
url="sqlite+aiosqlite:///:memory:",
create_tables=True, # Auto-create tables for the demo
)

result = await Runner.run(agent, "Hello", session=session)

if __name__ == "__main__":
asyncio.run(main())

2. 產品化部署:結合既有 SQLAlchemy Engine

import asyncio
from agents import Agent, Runner
from agents.extensions.memory.sqlalchemy_session import SQLAlchemySession
from sqlalchemy.ext.asyncio import create_async_engine

async def main():
# In your application, you would use your existing engine
engine = create_async_engine("sqlite+aiosqlite:///conversations.db")

agent = Agent("Assistant")
session = SQLAlchemySession(
"user-456",
engine=engine,
create_tables=True, # Auto-create tables for the demo
)

result = await Runner.run(agent, "Hello", session=session)
print(result.final_output)

await engine.dispose()

if __name__ == "__main__":
asyncio.run(main())

自訂記憶體管理

除了用內建的 memory(如 Conversations API、SQLite、SQLAlchemy session)之外,也可以自己設計和實作一套 memory 機制。使用 Sessions 參數。

Session 管理

Session ID 命名

  • 建議用有意義的命名方式管理不同的對話 session,例如:
    • 以用戶為單位:"user_12345"
    • 以討論串為單位:"thread_abc123"
    • 以專案、客服工單等上下文命名:"support_ticket_456"

記憶體持久化策略

  • 臨時對話可選用記憶體內 SQLite(SQLiteSession("session_id")),適合測試和短時應用。
  • 長期保存建議用檔案型 SQLite(SQLiteSession("session_id", "path/to/db.sqlite"))或 SQLAlchemy(支援外部或雲端資料庫)。
  • 也可選 OpenAI 雲端 API 或自訂任何 storage,例如 Redis、Django 等。

Session 操作方式

  • 隨時可以呼叫 clear_session() 清除對話(像重設會話)。
  • 支援「多 agent 共享一個 session」──只要 session ID 一致,所有 agent 都能讀寫相同歷史。
  • 支援「多個 session」──不同 session ID 則各自維護歷史,互不干擾。
編按:覺得後兩項對於對話管理非常重要,尤其是 Agent 化的聊天機器人設計!

進階用法

  • 可以自製 session 記憶的實作方式,打造完全客製化的記憶中介層,滿足架構、資安、彈性等各種需求。







留言
avatar-img
留言分享你的想法!
avatar-img
CT
81會員
91內容數
加入沙龍追蹤 CT 更多文章!
CT的其他內容
2025/09/01
深入探討 OpenAI Agents SDK 的核心功能,包含 Agent、Context 使用、結構化輸出 (Output Types)、Handoffs、工具使用行為控制、以及進階技巧如強迫工具使用、自訂工具函式和 Tool Use Behavior 等建立更強大且高效的 AI Agent。
Thumbnail
2025/09/01
深入探討 OpenAI Agents SDK 的核心功能,包含 Agent、Context 使用、結構化輸出 (Output Types)、Handoffs、工具使用行為控制、以及進階技巧如強迫工具使用、自訂工具函式和 Tool Use Behavior 等建立更強大且高效的 AI Agent。
Thumbnail
2025/07/18
Claude Code 提供了一套 可自動化執行的 Hooks 機制,幫助我們在大型專案中避免常見錯誤、保持程式碼品質穩定。這篇文章將分享幾個實用的 Claude Code Hooks 範例與進階技巧,讓你打造更聰明、更可靠的開發流程。
Thumbnail
2025/07/18
Claude Code 提供了一套 可自動化執行的 Hooks 機制,幫助我們在大型專案中避免常見錯誤、保持程式碼品質穩定。這篇文章將分享幾個實用的 Claude Code Hooks 範例與進階技巧,讓你打造更聰明、更可靠的開發流程。
Thumbnail
2025/06/20
自從 Anthropic 釋出 Claude Code 之後,近幾週開始有人認為可以取代、甚至超越 Cursor 等 AI 寫程式工具!以下整理我最愛、最推薦新手立即上手的功能,也分享幾個小技巧,希望幫助你快速體驗 Claude Code 的魅力。
Thumbnail
2025/06/20
自從 Anthropic 釋出 Claude Code 之後,近幾週開始有人認為可以取代、甚至超越 Cursor 等 AI 寫程式工具!以下整理我最愛、最推薦新手立即上手的功能,也分享幾個小技巧,希望幫助你快速體驗 Claude Code 的魅力。
Thumbnail
看更多
你可能也想看
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
Introduction AI PDF editors not only enhance efficiency but also bring a more intelligent and convenient user experience.
Thumbnail
Introduction AI PDF editors not only enhance efficiency but also bring a more intelligent and convenient user experience.
Thumbnail
透過 No Code 自動化建立「待辦事項 AI 助理」,你只要上傳語音檔在 LINE 聊天室,AI 即自動摘要語音內容,同時新增待辦事項在 Todoist 待辦事項 APP,讓你管理任務更輕鬆!即使臨時接收口頭任務交付,或當下忙著處理別的事情,也能輕鬆建立待辦事項!
Thumbnail
透過 No Code 自動化建立「待辦事項 AI 助理」,你只要上傳語音檔在 LINE 聊天室,AI 即自動摘要語音內容,同時新增待辦事項在 Todoist 待辦事項 APP,讓你管理任務更輕鬆!即使臨時接收口頭任務交付,或當下忙著處理別的事情,也能輕鬆建立待辦事項!
Thumbnail
AI 生產力工具是一款免費、開源的應用程式,適用於 Windows 系統,整合了 ChatGPT 聊天和多個 AI 圖片/影片調整功能。提供完整、輕量兩種版本,差別在於輕量版沒有 ChatGPT 聊天。
Thumbnail
AI 生產力工具是一款免費、開源的應用程式,適用於 Windows 系統,整合了 ChatGPT 聊天和多個 AI 圖片/影片調整功能。提供完整、輕量兩種版本,差別在於輕量版沒有 ChatGPT 聊天。
Thumbnail
這篇文章描述作者如何利用 AI 技術(如 ChatGPT)來輔助撰寫文章的過程。作者詳細拆解了自己的寫作流程,並闡述了每個環節中如何使用 AI 來提高效率。文章強調 AI 在工作流程中所帶來的改變,並指出要適應這種改變需要一定的時間和練習。
Thumbnail
這篇文章描述作者如何利用 AI 技術(如 ChatGPT)來輔助撰寫文章的過程。作者詳細拆解了自己的寫作流程,並闡述了每個環節中如何使用 AI 來提高效率。文章強調 AI 在工作流程中所帶來的改變,並指出要適應這種改變需要一定的時間和練習。
Thumbnail
基於大型語言模型的 AI 聊天服務可以協助完成多項工作,為了提升 AI 聊天的互動便利性,許多開發者打造了不同性質的擴充功能,Ask Screenshot for Gemini 就是一款能快速將網頁文字與截圖傳送至 Gemini 對話框的實用工具。
Thumbnail
基於大型語言模型的 AI 聊天服務可以協助完成多項工作,為了提升 AI 聊天的互動便利性,許多開發者打造了不同性質的擴充功能,Ask Screenshot for Gemini 就是一款能快速將網頁文字與截圖傳送至 Gemini 對話框的實用工具。
Thumbnail
本文介紹了AI科研文獻管理工具,包括Connected Papers、EasyScholar、Research Rabbit、ReadPaper、立理 LitLit、海鯨AI學術、pdftopdf.ai等。這些工具能幫助科研人員實現高效的文獻管理和利用文獻資源,並提高科研工作的效率和質量。
Thumbnail
本文介紹了AI科研文獻管理工具,包括Connected Papers、EasyScholar、Research Rabbit、ReadPaper、立理 LitLit、海鯨AI學術、pdftopdf.ai等。這些工具能幫助科研人員實現高效的文獻管理和利用文獻資源,並提高科研工作的效率和質量。
Thumbnail
本文介紹如何使用 TG Bot 來操作 MongoDB,包括讀取所有 domain、讀取特定 domain、新增 domain、批量新增 domain、修改 domain 和刪除 domain。透過 TG Bot 的指令操作,實現了自動化管理和多環境管理。
Thumbnail
本文介紹如何使用 TG Bot 來操作 MongoDB,包括讀取所有 domain、讀取特定 domain、新增 domain、批量新增 domain、修改 domain 和刪除 domain。透過 TG Bot 的指令操作,實現了自動化管理和多環境管理。
Thumbnail
Offision是一種以AI驅動的智慧辦公室平臺,能夠協助您管理辦公室並節省成本。本文將探討如何透過Offision實現會議室預訂、辦公桌預訂、訪客管理和辦公室數據分析的零程式自動化流程。
Thumbnail
Offision是一種以AI驅動的智慧辦公室平臺,能夠協助您管理辦公室並節省成本。本文將探討如何透過Offision實現會議室預訂、辦公桌預訂、訪客管理和辦公室數據分析的零程式自動化流程。
Thumbnail
AI生成圖片並非完全可控,所以需要很多額外手段去控制,這篇要來試試幾個方法讓生成的圖片更加可控。
Thumbnail
AI生成圖片並非完全可控,所以需要很多額外手段去控制,這篇要來試試幾個方法讓生成的圖片更加可控。
Thumbnail
分享在工作場景中使用AI生成帶狀節目腳本的實際應用,並提供了關於AI腳本生成的效率革命、腳本生成流程拆解、定期內容創作的AI應用、AI腳本生成步驟拆解以及AI協作的相關內容。讓AI幫助做出精彩演出,提升工作效率,減輕負擔。
Thumbnail
分享在工作場景中使用AI生成帶狀節目腳本的實際應用,並提供了關於AI腳本生成的效率革命、腳本生成流程拆解、定期內容創作的AI應用、AI腳本生成步驟拆解以及AI協作的相關內容。讓AI幫助做出精彩演出,提升工作效率,減輕負擔。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News