代理程式記憶體
此頁面顯示具體 Oracle AI 代理程式記憶體實行。
Oracle 代理程式記憶體
注意:OracleAgentMemory.delete_thread() 是執行緒作用領域重疊清除的支援路徑。它會將執行緒與相關聯的訊息、持久記憶體及受管理的擷取資料一起移除。大於 OracleThread.delete_message(),只刪除原始訊息資料列。在刪除執行緒之前,它會等待此從屬端已知該執行緒的較早接受背景擷取。進行刪除時,它不會序列化相同執行緒的每個並行作業。
類別 oracleagentmemory.core.OracleAgentMemory
基本:IAgentMemory
由 Oracle DB 或來電者提供的存放區所支援的代理程式記憶體從屬端。
建立記憶體從屬端。
- 參數:
- store
OracleMemoryStore– 選擇性的預先配置存放區執行處理。提供時,從屬端會直接使用此存放區,而不是建立自己的存放區。當呼叫程式需要將組態儲存到OracleAgentMemory顯示的建構子選項之外時,此功能十分有用。 - connection
object– 選擇性 Oracle DB 連線 / 集區。提供時,會使用資料庫存放區。傳送原始連線可為此從屬端執行處理啟用單一階段作業模式,因此並行要求應改用連線集區。省略時,呼叫者必須傳送明確的store。 - embedder
IEmbedder | str– Embedder 實作實例或 LiteLLM 內嵌模型識別碼。省略時,不會附加任何嵌入器。僅向量資料庫搜尋接著需要透過較低層級儲存 API 預先計算的向量,而關鍵字資料庫搜尋則可以直接從查詢文字執行。混合資料庫搜尋需要OracleDBEmbedder執行處理,因此受管理的混合索引和主要內嵌程式會使用相同的資料庫內模型。 - LLM
ILlm– 供執行緒用於記憶體擷取和 / 或環境定義摘要的選擇性 LLM 配接器。依照預設,從此從屬端建立或載入的繫線需要 LLM,因此可針對持久的記憶體處理最新的訊息。請在此處傳送llm,稍後在create_thread中提供,或使用memory_extraction_config=MemoryExtractionConfig(extract_memories=False)停用自動擷取。 - memory_extraction_config
MemoryExtractionConfig– 選擇性的用戶端層次記憶體擷取組態。您可以使用它來控制自動記憶體擷取設定值,例如擷取模式、摘要行為以及擷取限制。省略的欄位使用 SDK 預設值。 - schema_policy
SchemaPolicy | str– 資料庫綱要設定原則,只在從connection建構資料庫存放區時使用。預設為SchemaPolicy.REQUIRE_EXISTING。先在現有綱要上啟用關鍵字或混合搜尋,或開啟支援的舊版受管理綱要時,請使用SchemaPolicy.CREATE_IF_NECESSARY,讓 SDK 可以套用非破壞性綱要升級,並新增所需的文字搜尋物件。應改為重新建立已宣告目前版本資源配置的開發或部分更新綱要。 - memory_store_id
str– 只有在從connection建構資料庫存放區時,才會使用受管理資料庫記憶體存放區的穩定 ID。重複使用相同的 ID 來重新開啟相同的受管理商店。ID 會以底線結合至受管理資料庫物件名稱,因此必須以字母為開頭、僅包含字母、數字及底線,且最多 16 個字元。傳送此項目或table_name_prefix,但不可同時傳送兩者。如果省略,當同時省略table_name_prefix時,資料庫存放區會使用table_name_prefix或前綴的預設值。 -
table_name_prefix
str–從
connection建構資料庫存放區時,才會使用選擇性的資料庫表格 / 索引前置碼。傳送此項目或memory_store_id,但不可同時傳送兩者。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_store_id。 - search_strategy
SearchStrategy– 從connection建構資料庫存放區時,選取資料庫搜尋後端的SearchStrategy值。使用SearchStrategy.VECTOR(預設) 進行僅限向量擷取,使用SearchStrategy.HYBRID透過預存搜尋文字查詢受管理的 Oracle 混合向量索引,或使用SearchStrategy.KEYWORD依關鍵字 / 文字比對在預存搜尋文字上進行排名 (不含向量融合)。KEYWORD不需要內嵌程式。HYBRID需要embedder作為OracleDBEmbedder。現有綱要使用不相容的策略時,從屬端啟動會失敗,因為該綱要可能未包含策略所需的預存搜尋狀態。 - search_index_sync
SearchIndexSyncMode–SearchIndexSyncMode值,可選取SearchStrategy.HYBRID和SearchStrategy.KEYWORD的受管理搜尋索引重新整理行為。SearchIndexSyncMode.ON_COMMIT是預設值,可在寫入交易確認後立即搜尋記錄。SearchIndexSyncMode.MANUAL會將重新整理留給明確的資料庫端同步作業。SearchIndexSyncMode.AUTO可讓 Oracle 以非同步方式重新整理受管理混合索引,且僅支援SearchStrategy.HYBRID;關鍵字搜尋拒絕AUTO。 -
extract_memories
bool–True時,由此從屬端建立或載入的繫線需要 LLM 和自動記憶體擷取功能保持啟用狀態。設為False以停用自動記憶體擷取,並允許這些繫線在沒有 LLM 的情況下運作。預設為True,因此遺漏擷取 LLM 會快速失敗。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_custom_instructions
str–此從屬端所建立或載入之繫線的自動記憶體擷取系統提示附加選擇性自訂指示。優先使用傳遞至
create_thread、get_thread或update_thread的執行緒值。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 - memory_retention_config
MemoryRetentionConfig– 選擇性記憶體保留組態,僅在從connection建構資料庫存放區時使用。MemoryRetentionConfig.default_ttl_days會套用至寫入呼叫會省略ttl_days的新訊息和記憶體。MemoryRetentionConfig.max_ttl_days會將明確的每筆記錄持續時間固定在設定的最大值上方並加上警告,設定時,ttl_days=None會使用該最大值,而不是建立非到期的記錄。使用SchemaPolicy.CREATE_IF_NECESSARY時,明確的組態會重新整理現有最新受管理綱要上儲存的中繼資料,但不會更新現有的到期日;省略時會保留現有的設定。如果明確組態在NOT_SET_MARKER留下default_ttl_days或max_ttl_days,則 SDK 會先將該屬性解析為其預設值 (None),再比較或儲存綱要描述資料。根據儲存在記錄中的預期資訊、應用程式保留的原因,以及任何應用程式或管制保留承諾來選擇此組態。
- store
警告:SchemaPolicy.CREATE_IF_NECESSARY 可能比一般從屬端啟動更昂貴,因為在初始化成功之前,它可能會套用受管理的綱要 DDL 和最佳效果資料重新寫入。當該綱要可能包含許多資料列時,計畫第一個開啟的舊受管理綱要作為移轉或維護作業。
如果綱要設定必須建立受管理過期記錄永久清除工作,但資料庫使用者缺乏 Scheduler-job 權限,初始化會警告並繼續。已過期的訊息和記憶體會保持隱藏,無法讀取和搜尋,但要等到工作由具備 CREATE JOB 或同等排程器權限的使用者建立後,才會實際將它們整個清除。
SchemaPolicy.CREATE_IF_NECESSARY 先透過現有綱要建立受管理的混合索引時,Oracle 會掃描儲存的搜尋文字,並從設定的資料庫內模型建立受管理的混合索引狀態。用戶端啟動會等待該 DDL 完成,因此請將第一個混合式升級規劃為大型綱要的移轉或維護作業。SearchIndexSyncMode 控制索引存在之後的進行中維護;它不會使第一個索引建立成為非同步。
- 發出:ValueError – 如果提供衝突的存放區組態,例如同時傳送
store和connection、沒有資料庫連線的資料庫特定選項,或同時省略store和connection。 - 參數:
- 存放區
OracleMemoryStore - 連線
object - 組譯器
IEmbedder | str - llm
ILlm - memory_extraction_config
MemoryExtractionConfig - schema_policy
SchemaPolicy | str - memory_store_id
str - table_name_prefix
str - search_strategy
SearchStrategy - 搜尋索引同步
SearchIndexSyncMode - extract_memories
bool - memory_extraction_custom_instructions
str - memory_retention_config
MemoryRetentionConfig
- 存放區
範例
from oracleagentmemory.core import (
MemoryExtractionConfig,
SearchIndexSyncMode,
OracleAgentMemory,
SchemaPolicy,
SearchStrategy,
)
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
read_only_client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
使用資料庫內內嵌模型來利用 Oracle 混合索引搜尋:
from oracleagentmemory.core.embedders import OracleDBEmbedder
db_embedder = OracleDBEmbedder(
connection=db_pool,
model="DOC_MODEL",
embedding_dimension=768,
)
hybrid_client = OracleAgentMemory(
connection=db_pool,
embedder=db_embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
search_strategy=SearchStrategy.HYBRID,
search_index_sync=SearchIndexSyncMode.ON_COMMIT,
)
方法 add_agent
新增專員資料檔記錄至商店。
- 參數:
- agent_id
str– 代理程式 ID。 - 資訊
str– 代理程式的任意格式資訊。 - 中繼資料
dict[str, Any] | None– 儲存在代理程式設定檔資料列上的選擇性中繼資料對應。
- agent_id
- 傳回:預存代理程式設定檔的 ID。
- 傳回類型: str
注意事項
客服員資料檔記錄會儲存在客戶層級商店中,故意不受範圍限制。傳回的記錄識別碼與應用程式用作 agent_id 的公用識別碼相同。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent(
"a1",
"Support assistant",
metadata={"source": "catalog"},
)
'a1'
方法 add_memory
在記憶體系統中新增屬於指示之使用者、代理程式以及繫線的記憶體。
- 參數:
- content
str– 要保留的記憶體內容。 - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker– 要儲存的記憶體類別。支援的值為"memory"、"fact"、"guideline"和"preference"。省略時,內容會儲存為一般"memory"。 - user_id
str– 與已儲存記憶體關聯的選擇性範圍識別碼。 - agent_id
str– 與儲存的記憶體關聯的選擇性範圍識別碼。 - thread_id
str– 與儲存的記憶體關聯的選擇性範圍識別碼。 - memory_id
str– 此記憶體資料列的選擇性呼叫程式提供穩定 ID。 - 中繼資料
dict[str, Any] | None– 可選中繼資料以保留儲存的記憶體。 - timestamp
str | None– 為此記憶體儲存的選擇性時戳。它代表記憶體建立的時間。省略或None時,存放區會使用目前的時間。當ttl_anchor為TimeToLiveAnchor.TIMESTAMP時,不含時區的 ISO-8601 時戳會被視為 UTC。 - ttl_days
int | None– 選擇性存留時間持續時間 (天)。省略此引數以使用綱要預設存留時間持續時間。PassNoneto useMemoryRetentionConfig.max_ttl_dayswhen the retention configuration sets one, or to store a non-expiring memory when it does not. 超過MemoryRetentionConfig.max_ttl_days的值會固定至該上限,但有警告。 - ttl_anchor
TimeToLiveAnchor– 選擇性存留時間錨點。使用TimeToLiveAnchor.CREATED_AT作為資料庫建立時間,或使用TimeToLiveAnchor.TIMESTAMP作為記憶體時戳。沒有時區的 ISO-8601 時間戳記會被視為 UTC。 - **store_kwargs ( 任一 ) – 轉送至備份存放區的存放區特定寫入選項。
- content
- 傳回:插入之記憶體記錄的 ID。
- 傳回類型: str
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("User likes pizza", memory_id="mem-1")
memory_id
'mem-1'
方法 add_memory_async (非同步)
非同步新增記憶體記錄至用戶端。
- 參數:
- content
str– 要儲存為記憶體的文字內容。 - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker– 要儲存的記憶體類別。支援的值為"memory"、"fact"、"guideline"和"preference"。省略時,內容會儲存為一般"memory"。 - user_id
str– 與記憶體建立關聯的選擇性使用者 ID。 - agent_id
str– 與記憶體關聯的選擇性代理程式 ID。 - thread_id
str– 與記憶體關聯的選擇性繫線 ID。 - memory_id
str– 可選呼叫程式提供的穩定識別碼。省略時,商店會產生一個。 - 中繼資料
dict[str, Any] | None– 要與記憶體列一起保存的選擇性中繼資料。 - timestamp
str | None– 為此記憶體儲存的選擇性時戳。它代表記憶體建立的時間。省略或None時,存放區會使用目前的時間。 - ttl_days
int | None– 選擇性存留時間持續時間 (天)。省略此引數以使用綱要預設存留時間持續時間。傳送None以儲存未過期的記憶體。 - ttl_anchor
TimeToLiveAnchor– 選擇性存留時間錨點。使用TimeToLiveAnchor.CREATED_AT作為資料庫建立時間,或使用TimeToLiveAnchor.TIMESTAMP作為記憶體時戳。 - **store_kwargs ( 任一 ) – 轉送至備份存放區的實行特定寫入選項。
- content
- 傳回:插入之記憶體記錄的 ID。
- 傳回類型: str
方法 add_user
新增使用者資料檔記錄至商店。
- 參數:
- user_id
str– 使用者 ID。 - 資訊
str– 使用者的任意格式資訊。 - 中繼資料
dict[str, Any] | None– 儲存在使用者設定檔資料列上的選擇性中繼資料對應。
- user_id
- 傳回:已儲存使用者設定檔的 ID。
- 傳回類型: str
注意事項
使用者基本資料記錄儲存在用戶端層級儲存區中,故意不受範圍限制。傳回的記錄識別碼與應用程式用作 user_id 的公用識別碼相同。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user(
"u1",
"Prefers concise answers.",
metadata={"source": "crm"},
)
'u1'
方法 close
關閉代理程式記憶體元件。
關閉會停止接受新的背景擷取工作,並等待擱置中背景記憶體擷取完成到設定的逾時。如果逾時到期,即使部分背景擷取工作仍未完成,close() 仍會傳回。方法為冪等。
- 參數:timeout
float | None– 選擇性等待接受的背景擷取工作完成的秒數上限。預設為300。傳遞None以無限期等待。 - 傳回類型:無
範例
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.close()
方法 close_async (非同步)
非同步關閉代理程式記憶體元件。
此方法遵循與 close() 相同的關閉行為。如果逾時到期,則可以在背景擷取工作仍在執行中時傳回。
- 參數:timeout
float | None– 選擇性等待接受的背景擷取工作完成的秒數上限。預設為300。傳遞None以無限期等待。 - 傳回類型:無
範例
await client.close_async()
方法 create_thread
建立與註冊執行緒。
- 參數:
- thread_id
str– 繫線 ID。如果省略,則會產生新的項目。 - user_id
str– 附加至此執行緒記錄的使用者識別碼。如果省略,則會產生新的項目。 - agent_id
str– 附加至此執行緒記錄的代理程式識別碼。如果省略,則會產生新的項目。 - 中繼資料
dict[str, Any] | None– 選擇性類似 JSON 的中繼資料會保存在對話執行緒中。 - LLM
ILlm– 此執行緒的選擇性 LLM 覆寫。如果省略,則會使用在施工階段設定的用戶端層級 LLM。依照預設,從屬端或繫線必須提供 LLM,才能執行自動記憶體擷取。請在此或用戶端上設定memory_extraction_config=MemoryExtractionConfig(extract_memories=False)以選擇退出該要求。 - max_message_token_length
int– 在記憶體擷取和相關資訊環境摘要更新期間截斷或摘要之前的提示時間訊息大小上限。儲存的訊息內容維持不變。省略時,預設為15_000記號。 - message_shortening_input_token_limit
int– 縮短過大提示時間訊息複本時,傳送給 LLM 之訊息摘錄的最大大小 (記號)。省略時,預設為30_000記號。 - memory_extraction_config
MemoryExtractionConfig– 選擇性的每個執行緒記憶體擷取組態。省略的欄位會繼承自代理程式記憶體元件。解析的組態會與繫線一起儲存,因此稍後載入會保留建立階段行為。 - context_card_token_limit
int– LLM 提示的最大輸入記號預算,用於建立內容卡中所含的摘要和主題清單。省略時,預設為100_000。 - context_card_type_search_concurrency
int– 使用min_relevant_results_by_type建立內容卡時,要同時執行的記憶體式記錄搜尋次數上限。省略時,預設為5。 -
extract_memories
bool–可選擇的依執行緒覆寫,自動擷取記憶體。當
True時,此繫線需要 LLM 才能執行自動擷取。設為False以停用此繫線的自動擷取,並允許沒有 LLM 的作業。省略時,會使用用戶端層級的extract_memories設定。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_window
int–擷取記憶體時要包括的最新訊息數目。設為
-1,即可使用整批新增的訊息,對每一add_messages呼叫執行一次擷取。省略時,預設為-1。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
context_summary_update_frequency
int–內容摘要重新整理的頻率。設為
-1,即可使用整批新增的訊息,對每一add_messages呼叫執行一次摘要更新。省略時,預設為-1。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_frequency
int–記憶體擷取更新頻率。設為
-1,即可使用整批新增的訊息,對每一add_messages呼叫執行一次擷取。省略時,預設為-1。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_token_limit
int–用於記憶體擷取和執行摘要更新的 LLM 提示大小上限 (記號)。省略時,預設為
100_000。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_custom_instructions
str–附加至此執行緒之記憶體擷取系統提示的選擇性自訂指示。提供時,解析值會與執行緒執行時期組態一起保存。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–從來源訊息複製到自動擷取記憶體之描述資料 (選擇性) 的每個繫線覆寫。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
enable_context_summary
bool–是否保留此繫線的執行中相關資訊環境摘要。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 - **kwargs ( 任一 ) – 其他實行特定的繫線選項。
- thread_id
- 傳回:
OracleThread執行處理。 - 傳回類型:OracleThread
- 摘要:ValueError – 如果沒有 LLM 可用於自動記憶體擷取,且繫線和從屬端未設定
memory_extraction_config=MemoryExtractionConfig(extract_memories=False)。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c1", user_id="u1")
thread.thread_id
'c1'
方法 delete_agent
依識別碼刪除專員資料檔記錄。
- 參數:
- agent_id
str– 應移除其設定檔的代理程式 ID。 - cascade
bool– 當True(預設值) 時,也會刪除作用領域至此代理程式的記錄。這包括刪除擁有的繫線本身、隨這些繫線移除的訊息和類似記憶體的記錄,以及任何剩餘的代理程式作用領域記錄 (例如訊息、記憶體、準則、事實或偏好設定)。當缺少相符的代理程式設定檔資料列時,仍會執行此作用領域清除。設為False以僅移除資料檔記錄。
- agent_id
- 傳回:刪除的代理程式設定檔資料列數目 (
0或1)。在重複套用清除期間移除作用領域資料列時,這仍可能是0。 - 傳回類型:整數
- 發出:TimeoutError – 在內部刪除等待逾時之前,先前接受的已知自有執行緒背景擷取未完成時觸發。
注意事項
階層式刪除是在後備儲存中進行計畫與執行,因此設定檔刪除與所有範圍的下階刪除都會在一個商店作業中進行。執行重疊刪除之前,此方法會等待此代理程式記憶體元件當時已知之擁有繫線的先前背景擷取。它不會等到等待開始後才接受工作,也不會等到其他代理程式記憶體元件或處理作業啟動工作。不支援在進行刪除時使用並行動作者作用領域。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent("a-delete", "Support assistant")
'a-delete'
client.delete_agent("a-delete")
1
方法 delete_memory
依識別碼刪除類似記憶體的記錄 (例如,記憶體、事實、偏好或準則)。
- 參數: memory_id
str– 記憶體 ID。此 ID 可以參照儲存的memory、guideline、fact或preference記錄。 - 傳回:刪除的類似記憶體資料列數目 (
0或1)。 - 傳回類型:整數
範例
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("Temporary memory", memory_id="mem-delete")
client.delete_memory(memory_id)
1
方法 delete_memory_async (非同步)
以非同步方式依識別碼刪除類似記憶體的記錄 (例如記憶體、事實、偏好或準則)。
- 參數:memory_id
str– 要移除之類似記憶體記錄的 ID。 - 傳回:已刪除類似記憶體的記錄數目。
- 傳回類型:整數
方法 delete_thread
刪除所有與執行緒識別碼相關聯的記錄。
- 參數: thread_id
str– 要刪除的繫線 ID。 - 傳回:已刪除的對話繫線數目 (
0或1)。 - 傳回類型:整數
- 發出:TimeoutError – 會在先前接受的此繫線背景擷取未在內部刪除等待逾時之前完成時觸發。
注意事項
當您需要完全移除執行緒的保留時,請使用此作業。備份存放區會將繫線連同相關的繫線作用領域訊息、持久的記憶體,以及受管理的擷取資料一起刪除。這與 OracleThread.delete_message() 不同,它只會移除原始訊息記錄,不會串聯至從該訊息建立的衍生記憶體。刪除繫線之前,此方法會等待先前已透過此代理程式記憶體元件接受該繫線的背景擷取。在等待開始後或由其他代理程式記憶體元件或處理作業啟動工作之後,它就不會等待接受背景工作。不支援在進行刪除時同時使用相同的繫線。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c-delete")
client.delete_thread(thread.thread_id)
1
方法 delete_user
依識別碼刪除使用者設定檔記錄。
- 參數:
- user_id
str– 應移除其設定檔的使用者 ID。 - cascade
bool– 當True(預設) 時,也會刪除作用領域為此使用者的記錄。這包括刪除自有的執行緒本身、隨著這些執行緒移除的訊息與類似記憶體的記錄,以及任何剩餘直接使用者範圍的記錄,例如訊息、備忘錄、準則、事實或偏好設定。當沒有相符的使用者設定檔資料列時,此作用領域清除仍然會執行。設為False以僅移除資料檔記錄。
- user_id
- 傳回:已刪除的使用者設定檔資料列數目 (
0或1)。在重複套用清除期間移除作用領域資料列時,這仍可能是0。 - 傳回類型:整數
- 發出:TimeoutError – 在內部刪除等待逾時之前,先前接受的已知自有執行緒背景擷取未完成時觸發。
注意事項
階層式刪除是在後備儲存中進行計畫與執行,因此設定檔刪除與所有範圍的下階刪除都會在一個商店作業中進行。執行重疊刪除之前,此方法會等待此代理程式記憶體元件當時已知之擁有繫線的先前背景擷取。它不會等到等待開始後才接受工作,也不會等到其他代理程式記憶體元件或處理作業啟動工作。不支援在進行刪除時使用並行動作者作用領域。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user("u-delete", "Prefers concise answers.")
'u-delete'
client.delete_user("u-delete")
1
方法 get_thread
擷取先前建立的執行緒。
- 參數:
- thread_id
str– 建立執行緒時使用的識別碼。 - LLM
ILlm– 選用的 LLM 會覆寫重新開啟的執行緒。省略時,會使用在施工期間設定的用戶端層級 LLM。 - max_message_token_length
int– 在記憶體擷取和相關資訊環境摘要更新期間截斷或摘要之前,選擇性覆寫提示時間訊息大小上限。儲存的訊息內容維持不變。 - message_shortening_input_token_limit
int– 縮短過大提示時間訊息複本時,傳送給 LLM 之訊息摘錄的最大大小 (記號) 可選擇性覆寫。 - memory_extraction_config
MemoryExtractionConfig– 傳回之OracleThread執行處理的選擇性群組擷取組態。省略的欄位會繼承自儲存的繫線組態和代理程式記憶體元件。覆寫只會套用至傳回的OracleThread執行處理,不會寫回儲存的對話繫線組態。 - context_card_token_limit
int– 傳回之OracleThread執行處理的選擇性覆寫。它會設定 LLM 提示的輸入變數替代字預算,用於建立內容卡中所含的摘要與主題清單。 - context_card_type_search_concurrency
int– 傳回之OracleThread執行處理的選擇性覆寫。它會設定使用min_relevant_results_by_type建置相關資訊環境卡時,要同時執行的類似記憶體的記錄搜尋數目。 -
extract_memories
bool–可選擇覆寫重新開啟之繫線上的自動記憶體擷取。省略時,會使用用戶端層級的
extract_memories設定。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_window
int–選擇性覆寫記憶體擷取期間使用的最近訊息數目。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
context_summary_update_frequency
int–內容摘要重新整理頻率的選擇性修訂。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_frequency
int–記憶體擷取更新頻率的選擇性覆寫。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_token_limit
int–可選擇覆寫用於記憶體擷取和執行摘要更新的 LLM 提示大小上限 (記號)。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_custom_instructions
str | None–自訂記憶體擷取指示的選擇性覆寫。傳送
None會清除傳回之OracleThread執行處理的執行緒層級自訂指示,而不會更新儲存的對話執行緒組態;設定時仍會套用用戶端層級預設值。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–從來源訊息複製到自動擷取之記憶體的描述資料選擇性覆寫。覆寫只會套用到傳回的
OracleThread執行處理。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
enable_context_summary
bool–選擇性覆寫重新開啟的繫線是否應保留執行中的相關資訊環境摘要。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。
- thread_id
- 傳回:從存放區描述資料重新建構的
OracleThread執行處理。 - 傳回類型:OracleThread
- 發生:
- KeyError – 如果此用戶端實例不明執行緒 ID。
- ValueError – 如果沒有可供自動記憶體擷取使用的 LLM,且用戶端未設定
memory_extraction_config=MemoryExtractionConfig(extract_memories=False)。
注意事項
優先採用明確的每通電話置換。若省略程式實際執行覆寫,重新開啟的繫線會在回到 SDK 預設值之前使用保存的程式實際執行組態 (若有的話)。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
created = client.create_thread(thread_id="c1", user_id="u1")
loaded = client.get_thread("c1")
loaded.user_id
'u1'
方法 search
同步搜尋與查詢相關的記錄。
- 參數:
- query
str– 自然語言查詢字串。 - user_id
str | None– 使用者 ID 篩選。除非提供scope,否則 OracleAgentMemory 從屬端搜尋需要明確的使用者範圍。將具體user_id傳送至該使用者的目標,或將None傳送至僅鎖定未作用領域的使用者記錄。 - agent_id
str | None– 選擇性的代理程式 ID 篩選。提供scope時會被忽略。 - thread_id
str | None– 選擇性執行緒識別碼篩選。提供scope時會被忽略。 - exact_user_match
bool– 是否應嚴格比對使用者。OracleAgentMemory 從屬端搜尋需要完全相符的使用者並拒絕False。提供scope時會被忽略。 - exact_agent_match
bool– 是否應嚴格比對代理程式。提供scope時會被忽略。 - exact_thread_match
bool– 是否應嚴格比對執行緒。提供scope時會被忽略。 - max_results
int– 可選擇傳回的最大結果數。若有提供,至少必須為1。省略此引數使用預設值10。此為上限:當篩選條件的限制性太大、有較少的非過期相符記錄存在,或因為實作特定的搜尋行為而導致呼叫傳回的結果可能少於max_results。 - record_types
list[str]– 要包含的選擇性記錄類型清單,例如"memory"或"message"。 -
metadata_filter
dict[str, Any] | None–作為範圍與記錄類型篩選後之其他篩選的選擇性描述資料篩選對應。
metadata_filter中的項目會與 AND 語意結合。值不是欄位層次運算子說明的項目,會使用完全相符的語意:要求的索引鍵必須存在於儲存的記錄描述資料中。巢狀字典會以遞迴方式比對巢狀描述資料物件。定量與清單值必須完全相符;清單順序與長度也必須相符。省略此引數,或傳送None以進行搜尋而不篩選描述資料。範例包括純量欄位的metadata_filter={"source": "profile_import"}、巢狀欄位的metadata_filter={"prefs": {"category": "travel"}},以及完全相符的清單metadata_filter={"tags": ["survey", "travel"]}。結合條件以要求所有條件:metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }若要測試陣列成員身分,請使用欄位層次運算子字典。
"$array_contains"會比對一個值或清單中的所有值。"$array_contains_any"會比對清單中的至少一個值。"$not"會否定相同欄位的另一個欄位層次表示式,包括運算子字典或原始完全相符值。正數表示式若失敗 (包括遺漏欄位),負數表示式就會相符;負數陣列成員身分也會與非陣列欄位相符:metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - scope
SearchScope– 選擇性的預建搜尋範圍。提供scope或明確的 ID 和完全相符的引數,不能同時提供兩者。OracleAgentMemory 從屬端搜尋需要解析的範圍,才能在exact_user_match=True中包含明確的user_id。使用user_id=None僅鎖定未作用領域的使用者記錄。
- query
- 退貨:依遞減核發排序的搜尋結果。清單可能包含少於
max_results個項目。 - 傳回類型: list[SearchResult]
- 發出:ValueError – 如果
scope與明確的 ID 或完全相符引數結合,如果max_results小於1、metadata_filter既不是說明也不是None,或者如果實行拒絕已解析的從屬端搜尋範圍,OracleAgentMemory 從屬端搜尋拒絕使用者範圍並拒絕exact_user_match=False。
注意事項
明確的 None 範圍值仍然遵循解析的完全相符規則:exact_*_match=False 會讓該維度維持不限制,而 exact_*_match=True 則只會比對該維度上未限制範圍的記錄。
方法 search_async (非同步)
以非同步方式搜尋與查詢相關的記錄。
- 參數:
- query
str– 自然語言查詢字串。 - user_id
str | None– 使用者 ID 篩選。除非提供scope,否則 OracleAgentMemory 從屬端搜尋需要明確的使用者範圍。將具體user_id傳送至該使用者的目標,或將None傳送至僅鎖定未作用領域的使用者記錄。 - agent_id
str | None– 選擇性的代理程式 ID 篩選。提供scope時會被忽略。 - thread_id
str | None– 選擇性執行緒識別碼篩選。提供scope時會被忽略。 - exact_user_match
bool– 是否應嚴格比對使用者。OracleAgentMemory 從屬端搜尋需要完全相符的使用者並拒絕False。提供scope時會被忽略。 - exact_agent_match
bool– 是否應嚴格比對代理程式。提供scope時會被忽略。 - exact_thread_match
bool– 是否應嚴格比對執行緒。提供scope時會被忽略。 - max_results
int– 可選擇傳回的最大結果數。若有提供,至少必須為1。省略此引數使用預設值10。 - record_types
list[str]– 要包含的選擇性記錄類型清單,例如"memory"或"message"。 -
metadata_filter
dict[str, Any] | None–作為範圍與記錄類型篩選後之其他篩選的選擇性描述資料篩選對應。
metadata_filter中的項目會與 AND 語意結合。值不是欄位層次運算子說明的項目,會使用完全相符的語意:要求的索引鍵必須存在於儲存的記錄描述資料中。巢狀字典會以遞迴方式比對巢狀描述資料物件。定量與清單值必須完全相符;清單順序與長度也必須相符。省略此引數,或傳送None以進行搜尋而不篩選描述資料。範例包括純量欄位的metadata_filter={"source": "profile_import"}、巢狀欄位的metadata_filter={"prefs": {"category": "travel"}},以及完全相符的清單metadata_filter={"tags": ["survey", "travel"]}。結合條件以要求所有條件:metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }若要測試陣列成員身分,請使用欄位層次運算子字典。
"$array_contains"會比對一個值或清單中的所有值。"$array_contains_any"會比對清單中的至少一個值。"$not"會否定相同欄位的另一個欄位層次表示式,包括運算子字典或原始完全相符值。正數表示式若失敗 (包括遺漏欄位),負數表示式就會相符;負數陣列成員身分也會與非陣列欄位相符:metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - scope
SearchScope– 選擇性的預建搜尋範圍。提供scope或明確的 ID 和完全相符的引數,不能同時提供兩者。OracleAgentMemory 從屬端搜尋需要解析的範圍,才能在exact_user_match=True中包含明確的user_id。使用user_id=None僅鎖定未作用領域的使用者記錄。
- query
- 退貨:依遞減核發排序的搜尋結果。
- 傳回類型: list[SearchResult]
- 發出:ValueError – 如果
scope與明確的 ID 或完全相符引數結合,如果max_results小於1、metadata_filter既不是說明也不是None,或者如果實行拒絕已解析的從屬端搜尋範圍,OracleAgentMemory 從屬端搜尋拒絕使用者範圍並拒絕exact_user_match=False。
注意事項
明確的 None 範圍值仍然遵循解析的完全相符規則:exact_*_match=False 會讓該維度維持不限制,而 exact_*_match=True 則只會比對該維度上未限制範圍的記錄。
方法 update_memory
依識別碼更新儲存的類似記憶體記錄。
- 參數:
- memory_id
str– 要更新之類似記憶體記錄的 ID。 - content
str– 可選替代內容。提供字串以取代儲存的內容。省略時,會保留儲存的內容。不支援傳送None;請省略content以保留目前的值,或使用delete_memory()來移除記錄。 - 中繼資料
dict[str, Any] | None– 選擇性取代中繼資料對應。省略時,會保留儲存的中繼資料。若有提供,它會取代儲存的描述資料物件;此 API 並非深層合併描述資料。 - timestamp
str | None– 此記憶體的選擇性新時戳。它代表記憶體建立的時間。省略時,會保留儲存的時間戳記。傳送None以清除儲存的時間戳記,並使用在商店中建立記錄的時間。當ttl_anchor為TimeToLiveAnchor.TIMESTAMP時,不含時區的 ISO-8601 時戳會被視為 UTC。 - ttl_days
int | None– 選擇性到期重新整理 (天)。除非提供ttl_anchor,否則省略此引數讓目前的到期維持不變。PassNoneto useMemoryRetentionConfig.max_ttl_dayswhen the retention configuration sets one, or to clear expiration when it does not. 超過MemoryRetentionConfig.max_ttl_days的值會固定至該上限,但有警告。過期的記憶體無法供此從屬端 API 使用,因此無法重新整理。 - ttl_anchor
TimeToLiveAnchor– 過期重新整理的選擇性存留時間錨點。使用TimeToLiveAnchor.CREATED_AT作為記憶體建立時間,使用TimeToLiveAnchor.TIMESTAMP作為相同更新中提供的取代timestamp,或省略timestamp時的儲存事件時戳。提供不含ttl_days的ttl_anchor會使用綱要預設存留時間持續時間。進行重新整理時省略ttl_anchor時,從屬端會使用TimeToLiveAnchor.CREATED_AT。沒有時區的 ISO-8601 時間戳記會被視為 UTC。 - **kwargs ( 任一 ) – 會拒絕非預期的關鍵字引數。
- memory_id
- 傳回:更新之類似記憶體記錄的 ID。
- 傳回類型: str
注意事項
省略的欄位會從儲存的記錄中保留。儲存的範圍維持不變。描述資料取代是整個物件取代,而非遞迴的 JSON 合併。
方法 update_memory_async (非同步)
以非同步方式依識別碼更新儲存的類似記憶體記錄。
- 參數:
- memory_id
str– 要更新之類似記憶體記錄的 ID。 - content
str– 可選替代內容。提供字串以取代儲存的內容。省略時,會保留儲存的內容。不支援傳送None;請省略content以保留目前的值,或使用delete_memory()來移除記錄。 - 中繼資料
dict[str, Any] | None– 選擇性取代中繼資料對應。省略時,會保留儲存的中繼資料。若有提供,它會取代儲存的描述資料物件;此 API 並非深層合併描述資料。 - timestamp
str | None– 此記憶體的選擇性新時戳。它代表記憶體建立的時間。省略時,會保留儲存的時間戳記。傳送None以清除儲存的時間戳記,並使用在商店中建立記錄的時間。 - ttl_days
int | None– 選擇性到期重新整理 (天)。將此引數與ttl_anchor一起省略,讓目前的到期維持不變。傳送None以清除過期。 - ttl_anchor
TimeToLiveAnchor– 過期重新整理的選擇性存留時間錨點。使用TimeToLiveAnchor.CREATED_AT作為記憶體建立時間,使用TimeToLiveAnchor.TIMESTAMP作為相同更新中提供的取代timestamp,或省略timestamp時的儲存事件時戳。提供不含ttl_days的ttl_anchor會使用綱要預設存留時間持續時間。重新整理期間省略ttl_anchor時,儲存會使用TimeToLiveAnchor.CREATED_AT。 - **kwargs ( 任一 ) – 會拒絕非預期的關鍵字引數。
- memory_id
- 傳回:更新之類似記憶體記錄的 ID。
- 傳回類型: str
注意事項
省略的欄位則維持不變。此 API 不支援範圍更新。描述資料取代是整個物件取代,而非遞迴的 JSON 合併。
方法 update_thread
保存繫線描述資料和持續的程式實際執行組態更新。
- 參數:
- thread_id
str– 要更新的繫線 ID。 - 中繼資料
dict[str, Any] | None– 對話執行緒的選擇性中繼資料更新。省略時,儲存的中繼資料會維持不變。傳送None會明確清除儲存的中繼資料。提供對應時,它會取代儲存的描述資料物件。 - LLM
ILlm– 傳回之OracleThread執行處理的選擇性 LLM 覆寫。這不會持續存在,但會參與與get_thread和create_thread相同的驗證規則。 -
extract_memories
bool–自動擷取記憶體的選擇性持久覆寫。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 - max_message_token_length
int– 可選擇持續覆寫擷取和摘要期間所使用的最大提示時間訊息大小。 - message_shortening_input_token_limit
int– 縮短過大訊息時,可選擇性地覆寫傳送至 LLM 的最大摘錄大小。 -
memory_extraction_window
int–擷取時段大小的選擇性持久覆寫。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
context_summary_update_frequency
int–觸發相關資訊環境摘要重新整理之已附加訊息數目的選擇性持續覆寫。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_frequency
int–為有多少附加訊息觸發自動記憶體擷取的選擇性持久覆寫。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_token_limit
int–擷取與執行彙總提示預算的選擇性持久修訂。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 - context_card_token_limit
int– LLM 提示之輸入記號預算的選擇性永久覆寫,用於建立內容卡中所含的摘要和主題清單。 -
enable_context_summary
bool–針對是否啟用執行中內容摘要的選擇性持續修訂。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_custom_instructions
str | None–附加至記憶體擷取系統提示的選擇性持久自訂指示。傳送
None會清除所有儲存的繫線層次自訂指示;設定時仍會套用從屬端層次預設值。資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–從來源訊息複製到自動擷取之記憶體的描述資料選擇性永久覆寫。
資訊:自 26.6.0 版起已不再使用:此參數在 26.6.0 已不再使用,將會在 27.1 中移除。請改用
memory_extraction_config。 - memory_extraction_config
MemoryExtractionConfig– 選擇性分組的持久性擷取配置更新。提供的欄位會寫入儲存的繫線組態,供稍後載入的OracleThread執行處理和之後的背景擷取工作使用。 - **kwargs ( 任一 ) – 其他實行特定選項。
OracleAgentMemory目前拒絕未知的關鍵字引數。
- thread_id
- 傳回:更新的
OracleThread執行處理反映保存的描述資料和程式實際執行組態。 - 傳回類型:OracleThread
- 發生:
- KeyError – 如果此用戶端實例不明執行緒 ID。
- ValueError – 如果在解析有效的執行時期組態之後,自動記憶體擷取沒有可用的 LLM。
注意事項
程式實際執行組態是從儲存的對話繫線以及傳遞給此呼叫的明確覆寫 (在保存結果之前符合 get_thread 語意) 進行解析。省略的中繼資料和執行時期組態更新會從儲存的資料解析,而不是從任何先前載入的 OracleThread 執行處理解析,而且只會寫入明確提供的中繼資料更新或永久的 Runtime-config 覆寫。描述資料取代是整個物件取代,而非遞迴的 JSON 合併。繫線擁有權無法透過此 API 變動,因此 user_id 和 agent_id 維持不變。可變的程式實際執行狀態 (例如擷取計數器) 會保持不變。
範例
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
updated = client.update_thread(
"c1",
metadata={"flags": {"vip": True}},
message_shortening_input_token_limit=12_000,
)
updated.message_shortening_input_token_limit
12000
方法 wait_for_memory_extraction
等待此從屬端啟動的較早背景記憶體擷取。
此方法會等待已經透過此 OracleAgentMemory 執行處理 (此代理程式記憶體元件擁有的所有繫線) 進行背景擷取。這並不會等到此等待開始、其他代理程式記憶體元件啟動擷取,或是在其他處理作業中執行的擷取啟動後才開始擷取。此等待的擷取失敗計數為已完成。
- 參數:timeout
float | None– 選擇性的等待秒數上限。預設為300。傳送None,等待此代理程式記憶體元件沒有擱置擷取。 - 發出:TimeoutError – 在先前的背景擷取完成之前逾時即觸發。
- 傳回類型:無
範例
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.wait_for_memory_extraction(timeout=10)
方法 wait_for_memory_extraction_async (非同步)
非同步等待更早的背景記憶體擷取。
此方法遵循與 wait_for_memory_extraction() 相同的行為。
- 參數:timeout
float | None– 選擇性的等待秒數上限。預設為300。傳遞None以無限期等待。 - 發出:TimeoutError – 在先前的背景擷取完成之前逾時即觸發。
- 傳回類型:無
範例
await client.wait_for_memory_extraction_async(timeout=10)
記憶體擷取
類別 oracleagentmemory.core.MemoryExtractionConfig
基礎:object
自動擷取記憶體的群組設定值。
將此物件傳送至 OracleAgentMemory、create_thread、get_thread 或 update_thread,以設定自動擷取。省略的欄位會繼承自下一個更大的設定。例如,在沒有 memory_extraction_frequency 的情況下建立的繫線會使用代理程式記憶體元件預設值,而元件預設值會回到 SDK 預設值。
- 參數:
- memory_extraction_window
int– 用於擷取提示的最近訊息視窗。-1表示擷取提示僅使用新增的訊息。省略此欄位以繼承值。 - context_summary_update_frequency
int– 執行相關資訊環境摘要重新整理之間的附加訊息數目。每次附加後0重新整理以下的值。省略此欄位以繼承值。 - memory_extraction_frequency
int– 記憶體擷取執行之間的附加訊息數目。每次附加後0擷取以下的值。省略此欄位以繼承值。 - memory_extraction_token_limit
int– 擷取和摘要提示的輸入權杖預算。1以下的值會停用提示預算限制。省略此欄位以繼承值。 - extract_memories
bool– 是否啟用自動記憶體擷取。設為False以停用自動擷取,並允許沒有擷取 LLM 的作業。省略此欄位以繼承值。 - enable_context_summary
bool– 擷取提示是否維護與使用執行中的相關資訊環境摘要。省略此欄位以繼承值。 - memory_extraction_custom_instructions
str | None– 附加至擷取系統提示的選擇性呼叫程式指示。傳送update_thread上的None以清除儲存的繫線層次指示。省略此欄位以繼承值。 - memory_extraction_inherit_message_metadata
bool | collections.abc.Sequence[str]– 控制從來源訊息複製到擷取之記憶體的中繼資料。True會複製所有來源訊息描述資料、False不複製,以及只比對最上層描述資料索引鍵的序列複本。省略此欄位以繼承值。 - extraction_mode
oracleagentmemory.core.extractors.memoryextractionconfig.MemoryExtractionMode–MemoryExtractionMode.INLINE會在傳回寫入方法之前執行自動擷取。MemoryExtractionMode.BACKGROUND會在原始寫入成功後傳回,並在背景中嘗試到期擷取工作。在背景模式下,衍生的記憶可能會稍後出現、可能暫時過時,或背景工作無法完成時永遠無法寫入。例如,update_message()可在稍後記憶體讀取反映更新的訊息內容之前傳回。省略此欄位以繼承值。若未設定較寬的值,則有效模式為INLINE。 - background_extraction_queue_full_behavior
oracleagentmemory.core.extractors.memoryextractionconfig.BackgroundExtractionQueueFullBehavior– 在背景模式中,控制自動擷取無法立即佇列時會發生什麼事。DROP會記錄警告並繼續而不等待。WAIT_THEN_DROP會等待佇列容量到設定的逾時為止,然後記錄警告並繼續。WAIT_THEN_RAISE會等待佇列容量到設定的逾時為止,然後在原始寫入成功後發出TimeoutError。省略此欄位以繼承值。若未設定較寬的值,有效預設值為DROP。 - background_extraction_queue_put_timeout_seconds
float– 在背景模式中,當background_extraction_queue_full_behavior為WAIT_THEN_DROP或WAIT_THEN_RAISE時,自動擷取等待佇列容量的秒數上限。省略此欄位以繼承值。若未設定較寬的值,有效預設值為300.0秒。
- memory_extraction_window
範例
from oracleagentmemory.core import MemoryExtractionConfig, MemoryExtractionMode
config = MemoryExtractionConfig(
extract_memories=True,
extraction_mode=MemoryExtractionMode.BACKGROUND,
)
類別 oracleagentmemory.core.MemoryExtractionMode
基礎:str、Enum
控制自動記憶體擷取工作執行的時間。
INLINE 會在傳回寫入方法之前執行自動擷取。BACKGROUND 會在原始寫入成功後傳回,並在背景中嘗試到期擷取工作。背景擷取最有效率:衍生的記憶體可能會在稍後出現,或者如果背景工作無法完成,永遠不會寫入。
背景 = 'BACKGROUND'
在原始訊息持續性之後返回,並在背景工作中執行最佳效果擷取。
內嵌 = 'INLINE'
在傳回 write 方法之前執行擷取。
類別 oracleagentmemory.core.BackgroundExtractionQueueFullBehavior
基礎:str、Enum
控制背景擷取無法及時排入佇列時發生的狀況。
刪除 = 'DROP'
記錄警告並在佇列容量無法使用時立即繼續。
WAIT_THEN_DROP = 'WAIT_THEN_DROP'
等待佇列容量到設定的逾時為止,然後記錄警告並繼續。
WAIT_THEN_RAISE = 'WAIT_THEN_RAISE'
等待佇列容量到設定的逾時為止,然後發出 TimeoutError。