自訂內容卡內容

情境卡提供關於服務人員在產生回應時可使用的對話的精簡內容。它可以包括對話繫線摘要、最近的訊息以及相關記憶體。

本文說明如何自訂 Oracle AI Agent Memory 內容卡中所傳回的內容。

get_context_card() 傳回的內容卡也可以包含擷取主題與相關持久性記錄。當專員需要長期對話的連續性,但不需要將完整成績單傳回模型時,請使用內容卡。這可以減少輸入記號的使用量、讓代理程式保持焦點,以及藉由將相關記憶體放在提示相關資訊環境前方,減少對某些代理程式層級工具呼叫的需求。

如需包含 LangGraph 的完整提示壓縮工作流程,請參閱使用 LangGraph 的代理程式記憶體短期 API 。如需 API 詳細資訊,請參閱 OracleThreadContext Cards

備註:當預設擷取結果未包含記錄類型的正確組合時,請使用內容卡自訂。例如,當一般事實主導結果時,應用程式可以保留使用者偏好設定或回應準則的空間。

依記錄類型要求最低結果

依預設,內容卡擷取會一次搜尋所有類似記憶體的記錄類型。例如,如果事實或一般記憶體擁擠偏好設定或準則,請傳送 min_relevant_results_by_type 以要求特定記錄類型的計數下限。

import oracledb

from oracleagentmemory.core import MemoryExtractionConfig
from oracleagentmemory.core.embedders.embedder import Embedder
from oracleagentmemory.core.llms.llm import Llm
from oracleagentmemory.core.oracleagentmemory import OracleAgentMemory

embedder = Embedder(model="YOUR_EMBEDDING_MODEL")
llm = Llm(model="provider/model_id")
db_pool = oracledb.SessionPool(
    user="YOUR DB USER",
    password="YOUR DB PASSWORD",
    dsn="YOUR DB CONNECT STRING",
)

memory = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)

thread = memory.create_thread(
    thread_id="context_card_customization_demo",
    user_id="user_123",
    agent_id="assistant_456",
    memory_extraction_config=MemoryExtractionConfig(
        memory_extraction_custom_instructions=(
            "Extract restaurant preferences as preference records and assistant "
            "response-style instructions as guideline records."
        )
    ),
)
thread.add_messages(
    [
        {
            "role": "user",
            "content": "I need vegetarian dinner recommendations for Friday.",
        },
        {
            "role": "assistant",
            "content": "I can compare concise options and tradeoffs.",
        },
    ]
)

card = thread.get_context_card(
    max_relevant_results=6,
    min_relevant_results_by_type={
        "preference": 1,
        "guideline": 1,
    },
)

prompt_context = card.content
print(prompt_context)

呈現的卡片是類似 XML 的提示文字。確切的記錄取決於您儲存的資料,但 <relevant_information> 區段可在所有記憶體類型搜尋的剩餘結果之前包含要求的類型:

<context_card>
  <summary>
    User is planning dinner recommendations.
  </summary>
  <topics>
    <topic>pizza planning</topic>
    <topic>dinner</topic>
  </topics>
  <relevant_information>
    <preference>
      <content>User prefers vegetarian restaurants.</content>
    </preference>
    <guideline>
      <content>Offer concise recommendations with clear tradeoffs.</content>
    </guideline>
    <memory>
      <content>User is comparing pizza places for Friday.</content>
    </memory>
  </relevant_information>
  <recent_messages>
    ...
  </recent_messages>
</context_card>

最小值是最佳努力。如果要求的類型沒有足夠的相符記錄,電訪仍會成功,而剩餘的結果容量則可透過一般的全記憶體類型搜尋來填入。最終相關記錄一律以 max_relevant_results 為上限。

支援的金鑰為 "memory""fact""guideline""preference"。省略 min_relevant_results_by_type 以保留預設的全記憶體類型擷取行為。

省略 max_relevant_results 時,除非要求的總計下限較大,否則 Oracle 代理程式記憶體會使用預設的相關結果預算。在此情況下,有效預算會擴充以符合要求的最小總計。

調整類型搜尋並行

每一類型的擷取可執行一個全記憶體類型填滿搜尋,再針對每個要求的記錄類型執行一個搜尋。依預設,最多可同時執行五個搜尋。若要減少即時繫線處理的後端輸出,請在建立或重新開啟繫線時傳送 context_card_type_search_concurrency。此值不會與繫線資料列一起保存:

thread = memory.get_thread(
    "context_card_customization_demo",
    context_card_type_search_concurrency=2,
)

card = thread.get_context_card(
    max_relevant_results=6,
    min_relevant_results_by_type={
        "preference": 1,
        "guideline": 1,
    },
)

結論

在本指南中,我們瞭解如何針對特定類似記憶體的記錄類型要求相關資訊環境卡結果計數下限,以及如何調整每種類型擷取所使用的平行搜尋扇出。

瞭解如何自訂相關資訊環境卡擷取之後,您現在可以繼續使用 LangGraph 的代理程式記憶體短期 API

完整代碼

#Copyright © 2026 Oracle and/or its affiliates.
#This software is under the Apache License 2.0
#(LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) or Universal Permissive License
#(UPL) 1.0 (LICENSE-UPL or https://oss.oracle.com/licenses/upl), at your option.

#Oracle Agent Memory Code Example - Customize Context Card Content
#-----------------------------------------------------------------

##Reserve relevant results by record type

import oracledb

from oracleagentmemory.core import MemoryExtractionConfig
from oracleagentmemory.core.embedders.embedder import Embedder
from oracleagentmemory.core.llms.llm import Llm
from oracleagentmemory.core.oracleagentmemory import OracleAgentMemory

embedder = Embedder(model="YOUR_EMBEDDING_MODEL")
llm = Llm(model="provider/model_id")
db_pool = oracledb.SessionPool(
    user="YOUR DB USER",
    password="YOUR DB PASSWORD",
    dsn="YOUR DB CONNECT STRING",
)

memory = OracleAgentMemory(
    connection=db_pool,
    embedder=embedder,
    llm=llm,
)

thread = memory.create_thread(
    thread_id="context_card_customization_demo",
    user_id="user_123",
    agent_id="assistant_456",
    memory_extraction_config=MemoryExtractionConfig(
        memory_extraction_custom_instructions=(
            "Extract restaurant preferences as preference records and assistant "
            "response-style instructions as guideline records."
        )
    ),
)
thread.add_messages(
    [
        {
            "role": "user",
            "content": "I need vegetarian dinner recommendations for Friday.",
        },
        {
            "role": "assistant",
            "content": "I can compare concise options and tradeoffs.",
        },
    ]
)

card = thread.get_context_card(
    max_relevant_results=6,
    min_relevant_results_by_type={
        "preference": 1,
        "guideline": 1,
    },
)

prompt_context = card.content
print(prompt_context)



##Tune type search concurrency

thread = memory.get_thread(
    "context_card_customization_demo",
    context_card_type_search_concurrency=2,
)

card = thread.get_context_card(
    max_relevant_results=6,
    min_relevant_results_by_type={
        "preference": 1,
        "guideline": 1,
    },
)