代理程式記憶體

此頁面顯示具體 Oracle AI Agent Memory 實行。

Oracle 代理程式記憶體

注意:OracleAgentMemory.delete_thread() 是執行緒作用領域重疊清除的支援路徑。它會將執行緒與相關聯的訊息、持久記憶體及受管理的擷取資料一起移除。大於 OracleThread.delete_message(),只刪除原始訊息資料列。從屬端層次刪除會等待相關的較早背景擷取:繫線刪除會等待該繫線,記憶體刪除會在已儲存目標的繫線出現時等待,而使用者或代理程式刪除則會等待已知擁有的繫線 (無論是否啟用連鎖清除)。這些等待只涵蓋相同從屬端在等待開始之前接受的工作。

類別 oracleagentmemory.core.OracleAgentMemory

基本:IAgentMemory

由 Oracle DB 或來電者提供的存放區所支援的代理程式記憶體從屬端。

建立記憶體從屬端。

警告:SchemaPolicy.CREATE_IF_NECESSARY 可能比一般從屬端啟動更昂貴,因為在初始化成功之前,它可能會套用受管理的綱要 DDL 和最佳效果資料重新寫入。當該綱要可能包含許多資料列時,計畫第一個開啟的舊受管理綱要作為移轉或維護作業。

如果綱要設定必須建立受管理過期記錄永久清除工作,但資料庫使用者缺乏 Scheduler-job 權限,初始化會警告並繼續。已過期的訊息和記憶體會保持隱藏,無法讀取和搜尋,但要等到工作由具備 CREATE JOB 或同等排程器權限的使用者建立後,才會實際將它們整個清除。

SchemaPolicy.CREATE_IF_NECESSARY 先透過現有綱要建立受管理的混合索引時,Oracle 會掃描儲存的搜尋文字,並從設定的資料庫內模型建立受管理的混合索引狀態。用戶端啟動會等待該 DDL 完成,因此請將第一個混合式升級規劃為大型綱要的移轉或維護作業。SearchIndexSyncMode 控制索引存在之後的進行中維護;它不會使第一個索引建立成為非同步。

範例

若要存取其他資料庫使用者所建立的綱要,請為應用程式資料庫使用者設定 memory_rw_pool,然後將 memory_schema_owner 設為所屬使用者的未報價資料庫名稱。

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),
)
pruned_search_client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
    pruner_llm=llm,
)
shared_client = OracleAgentMemory(
    connection=memory_rw_pool,
    embedder=embedder,
    llm=llm,
    schema_owner=memory_schema_owner,
)

使用資料庫內內嵌模型來利用 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,
    memory_store_id=memory_store_id,
)

方法 add_agent

新增專員資料檔記錄至商店。

備註

客服員資料檔記錄會儲存在客戶層級商店中,故意不受範圍限制。傳回的記錄識別碼與應用程式用作 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_agent_async (非同步)

以非同步方式將專員資料檔記錄新增至商店。

備註

客服員資料檔記錄會儲存在客戶層級商店中,故意不受範圍限制。傳回的記錄識別碼與應用程式用作 agent_id 的公用識別碼相同。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
asyncio.run(client.add_agent_async(
    "a1",
    "Support assistant",
    metadata={"source": "catalog"},
))
'a1'

方法 add_image

將影像記錄加入至用戶端。

範例

image_id = client.add_image(
    b"image-bytes",
    description="Image description",
    mime_type=ImageMimeType.PNG,
    image_id="img-1",
    user_id="user-1",
)
image_id
'img-1'

方法 add_image_async (非同步)

透過設定的存放區保留一個獨立映像檔。

省略 description 或 None 時,設定的 LLM 會產生標題。

方法 add_memory

在記憶體系統中新增屬於指示之使用者、代理程式以及繫線的記憶體。

範例

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 (非同步)

以非同步方式在記憶體系統中增加記憶體。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
memory_id = asyncio.run(client.add_memory_async(
    "User likes pizza", memory_id="mem-1"
))
memory_id
'mem-1'

方法 add_user

新增使用者資料檔記錄至商店。

備註

使用者基本資料記錄儲存在用戶端層級儲存區中,故意不受範圍限制。傳回的記錄識別碼與應用程式用作 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'

方法 add_user_async (非同步)

以非同步方式將使用者資料檔記錄新增至商店。

備註

使用者基本資料記錄儲存在用戶端層級儲存區中,故意不受範圍限制。傳回的記錄識別碼與應用程式用作 user_id 的公用識別碼相同。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
asyncio.run(client.add_user_async(
    "u1",
    "Prefers concise answers.",
    metadata={"source": "crm"},
))
'u1'

方法 close

關閉代理程式記憶體元件。

關閉會停止接受新的背景工作 (包括記憶體擷取和產生影像描述),並等待擱置中的工作完成到設定的逾時。如果逾時到期,即使部分工作仍未完成,close() 仍會傳回。方法為冪等。

範例

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() 相同的關閉行為。如果逾時到期,則可在背景工作仍在執行中時傳回。

範例

import asyncio
asyncio.run(client.close_async())

方法 create_thread

建立與註冊執行緒。

範例

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'

方法 create_thread_async (非同步)

建立與註冊非同步執行緒。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
thread = asyncio.run(client.create_thread_async(
    thread_id="c1", user_id="u1"
))
thread.thread_id
'c1'

方法 delete_agent

依識別碼刪除專員資料檔記錄。

備註

刪除設定檔之前,此方法會等候多達 300 秒的較早背景擷取,已接受此代理程式記憶體元件已知之擁有的繫線。不論是否啟用連鎖清除,都會套用此等待。系統會規劃階層式清除,並在備份存放區中以單一作業的方式執行。此方法不會等待等待開始後的工作,或是其他代理程式記憶體元件或處理作業啟動的工作。不支援在進行刪除時使用並行動作者作用領域。

範例

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_agent_async (非同步)

以非同步方式依識別碼刪除專員資料檔記錄。

備註

此方法遵循 delete_agent() 所記錄的背景擷取等待與並行行為。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
asyncio.run(client.add_agent_async("a-delete", "Support assistant"))
'a-delete'
asyncio.run(client.delete_agent_async("a-delete"))
1

方法 delete_image

依識別碼刪除影像記錄。

方法 delete_image_async (非同步)

透過設定的存放區刪除一個獨立映像檔。

方法 delete_memory

依識別碼刪除類似記憶體的記錄 (例如,記憶體、事實、偏好或準則)。

備註

刪除繫線作用領域記錄之前,此方法會解析其儲存的繫線,並等待先前透過此代理程式記憶體元件接受的背景擷取。它不會等待不相關的繫線、等待開始後接受的工作,或是其他代理程式記憶體元件或處理作業啟動的工作。沒有執行緒範圍與未知識別碼的記錄不會造成擷取等待。

範例

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 (非同步)

非同步刪除類似記憶體的記錄。

備註

此方法會遵循 delete_memory() 所記載的目標背景擷取等待與並行行為。

範例

import asyncio
memory_id = asyncio.run(client.add_memory_async(
    "Temporary memory", memory_id="mem-delete"
))
asyncio.run(client.delete_memory_async(memory_id))
1

依 ID 刪除關係或完成端點元組。

未提供 relation_id 時,請提供儲存之來源至目標方向的每個來源、目標、類型以及關係標籤引數。

範例

client.delete_record_link(relation_id="relation-id")
1

依 ID 或完整的端點元組以非同步方式刪除關係。

方法 delete_thread

刪除所有與執行緒識別碼相關聯的記錄。

備註

當您需要完全移除執行緒的保留時,請使用此作業。備份存放區會將繫線連同相關的繫線作用領域訊息、持久的記憶體,以及受管理的擷取資料一起刪除。這與 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_thread_async (非同步)

以非同步方式刪除與執行緒識別碼相關聯的所有記錄。

備註

當您需要完全移除執行緒的保留時,請使用此作業。備份存放區會將繫線連同相關的繫線作用領域訊息、持久的記憶體,以及受管理的擷取資料一起刪除。這與 OracleThread.delete_message() 不同,它只會移除原始訊息記錄,不會串聯至從該訊息建立的衍生記憶體。刪除繫線之前,此方法會等待先前已透過此代理程式記憶體元件接受該繫線的背景擷取。在等待開始後或由其他代理程式記憶體元件或處理作業啟動工作之後,它就不會等待接受背景工作。不支援在進行刪除時同時使用相同的繫線。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
thread = asyncio.run(client.create_thread_async(thread_id="c-delete"))
asyncio.run(client.delete_thread_async(thread.thread_id))
1

方法 delete_user

依識別碼刪除使用者設定檔記錄。

備註

刪除設定檔之前,此方法會等候多達 300 秒的較早背景擷取,已接受此代理程式記憶體元件已知之擁有的繫線。不論是否啟用連鎖清除,都會套用此等待。系統會規劃階層式清除,並在備份存放區中以單一作業的方式執行。此方法不會等待等待開始後的工作,或是其他代理程式記憶體元件或處理作業啟動的工作。不支援在進行刪除時使用並行動作者作用領域。

範例

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

方法 delete_user_async (非同步)

以非同步方式依識別碼刪除使用者資料檔記錄。

備註

此方法遵循 delete_user() 所記錄的背景擷取等待與並行行為。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
asyncio.run(client.add_user_async("u-delete", "Prefers concise answers."))
'u-delete'
asyncio.run(client.delete_user_async("u-delete"))
1

方法 get_thread

擷取先前建立的執行緒。

備註

優先採用明確的每通電話置換。若省略程式實際執行覆寫,重新開啟的繫線會在回到 SDK 預設值之前使用保存的程式實際執行組態 (若有的話)。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
created = client.create_thread(thread_id="c2", user_id="u1")
loaded = client.get_thread("c2")
loaded.user_id
'u1'

方法 get_thread_async (非同步)

以非同步方式擷取先前建立的執行緒。

備註

優先採用明確的每通電話置換。若省略程式實際執行覆寫,重新開啟的繫線會在回到 SDK 預設值之前使用保存的程式實際執行組態 (若有的話)。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
import asyncio
created = asyncio.run(client.create_thread_async(
    thread_id="c2", user_id="u1"
))
loaded = asyncio.run(client.get_thread_async("c2"))
loaded.user_id
'u1'

建立兩個預存記錄之間的直接關係。

目前這兩個端點都必須類似記憶體的記錄:"memory"、"fact"、"guideline" 或 "preference"。內建關係類型包括 "supersedes" ("is_superseded_by")、"contradicts"、"refines" ("is_refined_by")、"supports" ("is_supported_by") 以及 "duplicates"。"contradicts" 和 "duplicates" 會反向使用相同的標籤。

一個端點組只能儲存一個方向。opposite_relation_type 會在從目標到來源的周遊時命名關係。例如,如果 new "supersedes" old,則反向周遊為 old "is_superseded_by" new。

範例

client.link_records(
    "fact-1", "fact", "memory-1", "memory", "supports"
)
'relation-id'

以非同步方式在儲存的記錄之間建立分類關係。

目前這兩個端點都必須類似記憶體的記錄:"memory"、"fact"、"guideline" 或 "preference"。內建關係類型包括 "supersedes" ("is_superseded_by")、"contradicts"、"refines" ("is_refined_by")、"supports" ("is_supported_by") 以及 "duplicates"。"contradicts" 和 "duplicates" 會反向使用相同的標籤。

方法 list_agents

列出持續的專員資料檔記錄。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
client.add_agent("a1", "Support assistant", metadata={"source": "catalog"})
'a1'
[record.id for record in client.list_agents(metadata_filter={"source": "catalog"})]
['a1']

方法 list_agents_async (非同步)

以非同步方式列出持續的專員資料檔記錄。

範例

import anyio
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
async def main():
    await client.add_agent_async(
        "a1",
        "Support assistant",
        metadata={"source": "catalog"},
    )
    records = await client.list_agents_async(metadata_filter={"source": "catalog"})
    return [record.id for record in records]
anyio.run(main)
['a1']

方法 list_images

列出保留的獨立影像記錄。

範例

images = client.list_images(user_id="u1", limit=10)
[image.id for image in images]
['img-1']

方法 list_images_async (非同步)

以非同步方式列出保留的獨立影像記錄。

範例

images = await client.list_images_async(
    user_id="u1",
    limit=10,
)
[image.id for image in images]
['img-1']

方法 list_memories

列出持續性類似記憶體的記錄。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
client.add_memory("User likes pizza.", user_id="u1", memory_id="mem-1")
'mem-1'
[record.id for record in client.list_memories(user_id="u1", limit=10)]
['mem-1']

方法 list_memories_async (非同步)

以非同步方式列出持續性類似記憶體的記錄。

範例

import anyio
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
async def main():
    await client.add_memory_async("User likes pizza.", user_id="u1", memory_id="mem-1")
    records = await client.list_memories_async(user_id="u1", limit=10)
    return [record.id for record in records]
anyio.run(main)
['mem-1']

方法 list_messages

列出持續的交談訊息記錄。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
thread = client.create_thread(thread_id="c1", user_id="u1")
message_id = thread.add_messages([{"role": "user", "content": "Hello"}])[0]
[record.id for record in client.list_messages(thread_id="c1", limit=10)] == [message_id]
True

方法 list_messages_async (非同步)

以非同步方式列出持續的交談訊息記錄。

範例

import anyio
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
async def main():
    thread = await client.create_thread_async(thread_id="c1", user_id="u1")
    message_ids = await thread.add_messages_async(
        [{"role": "user", "content": "Hello"}]
    )
    records = await client.list_messages_async(thread_id="c1", limit=10)
    return [record.id for record in records] == message_ids
anyio.run(main)
True

方法 list_threads

列出持續的對話繫線。

範例

from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
client.create_thread(thread_id="c1", user_id="u1").thread_id
'c1'
[record.thread_id for record in client.list_threads(user_id="u1", limit=10)]
['c1']

方法 list_threads_async (非同步)

以非同步方式列出持續對話執行緒。

範例

import anyio
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
async def main():
    await client.create_thread_async(thread_id="c1", user_id="u1")
    records = await client.list_threads_async(user_id="u1", limit=10)
    return [record.thread_id for record in records]
anyio.run(main)
['c1']

方法 list_users

列出持續的使用者資料檔記錄。

範例

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'
[record.id for record in client.list_users(metadata_filter={"source": "crm"})]
['u1']

方法 list_users_async (非同步)

以非同步方式列出持續的使用者資料檔記錄。

範例

import anyio
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)
async def main():
    await client.add_user_async(
        "u1",
        "Prefers concise answers.",
        metadata={"source": "crm"},
    )
    records = await client.list_users_async(metadata_filter={"source": "crm"})
    return [record.id for record in records]
anyio.run(main)
['u1']

同步搜尋與查詢相關的記錄。

備註

明確的 None 範圍值仍然遵循解析的完全相符規則:exact_*_match=False 會讓該維度維持不限制,而 exact_*_match=True 則只會比對該維度上未限制範圍的記錄。

方法 search_async (非同步)

以非同步方式搜尋與查詢相關的記錄。

備註

明確的 None 範圍值仍然遵循解析的完全相符規則:exact_*_match=False 會讓該維度維持不限制,而 exact_*_match=True 則只會比對該維度上未限制範圍的記錄。

方法 update_image

依識別碼更新儲存的影像記錄。

備註

省略的欄位則維持不變。此 API 不支援範圍更新。描述資料取代是整個物件取代,而非遞迴的 JSON 合併。

方法 update_image_async (非同步)

透過設定的存放區更新一個獨立映像檔。

省略 image 以保留現有的位元組。如果提供 image,則必須隨其提供 mime_type。省略 description 以保留現有的描述。傳送 None 以使用設定的 LLM 產生新的描述;非空值描述會直接取代它。提供時會更新描述資料、時戳和到期設定值。

方法 update_memory

依識別碼更新儲存的類似記憶體記錄。

備註

省略的欄位會從儲存的記錄中保留。儲存的範圍維持不變。描述資料取代是整個物件取代,而非遞迴的 JSON 合併。

方法 update_memory_async (非同步)

以非同步方式依識別碼更新儲存的類似記憶體記錄。

備註

省略的欄位會從儲存的記錄中保留。儲存的範圍維持不變。描述資料取代是整個物件取代,而非遞迴的 JSON 合併。

範例

import asyncio
memory_id = asyncio.run(client.add_memory_async("Original memory"))
(
    asyncio.run(client.update_memory_async(
        memory_id, content="Updated memory"
    ))
    == memory_id
)
True

更新一個已儲存關係的可變欄位。

省略的值會被保留。當 relation_type 變更為內建記憶體關係類型時,其固定反向標籤會取代 opposite_relation_type。傳送 timestamp 或 metadata 的 None 以清除該值。

範例

client.update_record_link("relation-id", relation_type="supports")
1

以非同步方式更新一個儲存的關係。

方法 update_thread

保存繫線描述資料和持續的程式實際執行組態更新。

備註

程式實際執行組態是從儲存的對話繫線以及傳遞給此呼叫的明確覆寫 (在保存結果之前符合 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

方法 update_thread_async (非同步)

以非同步方式持續更新的執行緒中繼資料與持續執行時間組態。

方法 wait_for_memory_extraction

等待此從屬端啟動的較早背景記憶體擷取。

此方法會等待已經透過此 OracleAgentMemory 執行處理 (此代理程式記憶體元件擁有的所有繫線) 進行背景擷取。這並不會等到此等待開始、其他代理程式記憶體元件啟動擷取,或是在其他處理作業中執行的擷取啟動後才開始擷取。此等待的擷取失敗計數為已完成。

範例

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() 相同的行為。

範例

import asyncio
asyncio.run(client.wait_for_memory_extraction_async(timeout=10))

影像輸入限制

類別 oracleagentmemory.core.ImageInputLimitConfig

基礎:object

設定原始影像和 LLM 影像要求限制。

省略的欄位會繼承自下一個更廣泛的組態範圍。從屬端欄位會繼承 SDK 預設值,而每個繫線欄位則會繼承從屬端組態。無法停用驗證,而且解析的值不能超過 SDK 的絕對 maxima。

範例

from oracleagentmemory.core import ImageInputLimitConfig
config = ImageInputLimitConfig(
    max_raw_image_bytes=16 * 1024 * 1024,
    max_images_per_llm_request=200,
)

記憶體擷取

類別 oracleagentmemory.core.MemoryExtractionImageContext

基礎:str、Enum

選擇影像自動抽出記憶體的方式 。

DISABLED 會省略擷取提示的影像和影像描述。影像會傳送原始影像部分。CAPTION 會以文字傳送影像描述,並要求每個選取的影像都具有非空白的描述。

圖形 = 'CAPTION'

包含描述作為文字,且每個選取的影像都需要一個描述。

停用 = 'DISABLED'

請勿在擷取提示中包含影像或影像描述。

影像檔 = 'IMAGE'

在萃取提示中包括原始影像零件。

記憶體 = 'MEMORY'

目前暫不支援影像特定的記憶體擷取。

類別 oracleagentmemory.core.MemoryExtractionConfig

基礎:object

自動擷取記憶體的群組設定值。

將此物件傳送至 OracleAgentMemory、create_thread、get_thread 或 update_thread 以設定自動擷取。extraction_mode 與背景佇列設定也會控制自動產生影像描述。每個欄位都會獨立解析。為作業提供的值優先,後面接著已儲存的繫線值、從屬端值和 SDK 預設值。新的與獨立執行緒沒有已儲存的執行緒值。

範例

from oracleagentmemory.core import (
    MemoryExtractionImageContext,
    MemoryExtractionConfig,
    MemoryExtractionMode,
    MemoryLinkExtractionMode,
)
config = MemoryExtractionConfig(
    extract_memories=True,
    memory_extraction_image_context=MemoryExtractionImageContext.CAPTION,
    extraction_mode=MemoryExtractionMode.BACKGROUND,
    memory_link_extraction_mode=MemoryLinkExtractionMode.POST_EXTRACTION,
    memory_link_extraction_token_limit=8_000,
)

當解壓縮或影像描述無法立即排入佇列時,該怎麼辦。

省略的值會解析為 DROP。

等待佇列容量 (以等待模式) 的背景工作等待秒數上限。

省略的值會解析為 300.0 秒。

自動重新整理前最新有效摘要後的訊息。

每次檢查時小於或等於 0 重新整理的值。

OAM 是否維護繫線讀取和擷取提示的相關資訊環境摘要。

擷取與影像描述是以內嵌方式執行,還是以背景工作執行。

省略的值會解析為 BACKGROUND。

擷取執行之間的訊息;每次附加後 0 擷取以下的值。

影像表示法;省略會解析為執行緒、用戶端,然後解析為 DISABLED。

已將來源訊息描述資料複製到擷取的記憶體。

提示的輸入記號預算;值低於 1 會停用限制。

用於擷取提示的最近訊息視窗;-1 只會使用新訊息。

附加至自動連結解析提示的選擇性呼叫程式指示。

如何解析已擷取記憶的自動連結。

省略的值會解析為 POST_EXTRACTION。

POST_EXTRACTION 連結解析的輸入權杖預算總計。

1 以下的值會停用限制。

類別 oracleagentmemory.core.MemoryExtractionMode

基礎:str、Enum

控制自動擷取和影像描述何時執行。

INLINE 會在傳回寫入方法之前完成衍生的工作。BACKGROUND 會在原始寫入成功後傳回,並嘗試將該工作排入佇列。背景工作是最佳作法:產生的描述和衍生的記憶可能會在稍後出現,如果無法完成,則永遠無法寫入。

背景 = 'BACKGROUND'

在原始寫入後返回,並在背景執行衍生工作。

內嵌 = 'INLINE'

在傳回寫入之前完成解壓縮與影像描述 。

類別 oracleagentmemory.core.BackgroundExtractionQueueFullBehavior

基礎:str、Enum

控制設定的背景工作無法及時佇列時所發生的情況。

儘管擷取特定名稱,此設定也適用於在背景模式中自動產生影像描述。

刪除 = 'DROP'

記錄警告並在佇列容量無法使用時立即繼續。

WAIT_THEN_DROP = 'WAIT_THEN_DROP'

等待佇列容量到設定的逾時為止,然後記錄警告並繼續。

WAIT_THEN_RAISE = 'WAIT_THEN_RAISE'

等待佇列容量到設定的逾時為止,然後發出 TimeoutError。