Personnaliser l'extraction automatique de mémoire
L'extraction automatique de la mémoire peut capturer des détails utiles sans configuration supplémentaire. Les instructions personnalisées permettent à une application d'ajouter des conseils au processus d'extraction lorsque le comportement par défaut doit être adapté à un cas d'utilisation spécifique.
Cet article explique comment guider l'extraction automatique de la mémoire de l'agent Oracle AI avec des instructions personnalisées.
Des instructions personnalisées fournissent des conseils supplémentaires spécifiques à l'application pour l'extraction de mémoire. Ils sont utiles lorsque votre application a besoin d'une extraction pour refléter les connaissances du domaine, la stratégie produit ou les priorités spécifiques aux conversations.
Remarque : utilisez des instructions personnalisées lorsque l'extraction de mémoire doit suivre les instructions propres à l'application. L'extraction par défaut est appropriée lorsqu'aucun conseil supplémentaire n'est nécessaire.
Conseil : reportez-vous à Introduction à la mémoire d'agent pour savoir comment installer oracleagentmemory. Si vous avez besoin d'une base de données Oracle locale pour cet exemple, suivez Exécuter Oracle AI Database localement.
Configuration des instructions d'extraction au niveau du client
Créez le composant Mémoire de l'agent Oracle avec un pool ou une connexion Oracle DB, un intégrateur, un LLM et des instructions d'extraction axées sur le support. Ces instructions s'appliquent aux threads créés ou chargés via ce client, sauf si un thread fournit ses propres instructions d'extraction.
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")
memory_llm = Llm(model="YOUR_MEMORY_LLM")
db_pool = oracledb.SessionPool(
user="YOUR DB USER",
password="YOUR DB PASSWORD",
dsn="YOUR DB CONNECT STRING",
)
support_extraction_instructions = """
Only extract customer support facts:
- order ids
- return requests
- delivery problems
Ignore greetings, small talk, and one-off troubleshooting text.
""".strip()
memory = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=memory_llm,
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_custom_instructions=support_extraction_instructions
),
)
| Référence d'API : OracleAgentMemory | OracleThread |
Extraire les mémoires de support des messages de thread
Créez un thread de support et ajoutez des messages utilisateur et d'assistant. L'exemple définit memory_extraction_config=MemoryExtractionConfig(memory_extraction_frequency=1) afin que add_messages() exécute l'extraction automatisée immédiatement pour la rotation insérée. Les instructions personnalisées gardent la mémoire extraite concentrée sur les ID de commande, les demandes de retour et les problèmes de livraison.
support_thread = memory.create_thread(
thread_id="support_ticket_7421",
user_id="customer_123",
memory_extraction_config=MemoryExtractionConfig(memory_extraction_frequency=1),
)
#add_messages persists the turn and runs automated memory extraction because
#MemoryExtractionConfig(memory_extraction_frequency=1) is set for this thread.
support_thread.add_messages(
[
{
"role": "user",
"content": (
"Hi, order 7421 arrived damaged. I need a return request "
"and a replacement delivery."
),
},
{
"role": "assistant",
"content": "I can help start the return request for order 7421.",
},
]
)
results = support_thread.search(
"return request order 7421",
max_results=5,
record_types=["fact"],
)
for result in results:
print(f"- [{result.record.record_type}] {result.content}")
Sortie :
- [fact] Customer reported damaged order 7421 and requested a return and replacement delivery.
La sortie ci-dessus est illustrative. Le texte exact de la mémoire dépend du LLM d'extraction configuré, mais les mémoires extraites doivent suivre les instructions personnalisées fournies au client.
La différence est plus facile à voir en comparant le type de mémoire que l'extracteur est invité à conserver :
Avec des instructions personnalisées
L'extracteur conserve le fait durable du support client et ignore le message d'accueil et la formulation conversationnelle.
- [fact] Customer reported damaged order 7421 and requested a return and replacement delivery.
Sans instructions personnalisées
L'extracteur peut conserver une mémoire de conversation plus large car l'invite d'extraction par défaut n'est pas ciblée pour prendre en charge les opérations.
- [memory] The user contacted support about order 7421 and discussed a damaged delivery.
| Référence d'API : OracleThread | OracleSearchResult |
Instructions de substitution pour un thread
Transmettez memory_extraction_config=MemoryExtractionConfig(memory_extraction_custom_instructions=...) à create_thread() lorsqu'un thread nécessite une stratégie d'extraction plus étroite que la valeur par défaut du client. La valeur de niveau thread est prioritaire pour ce thread et est conservée avec la configuration du thread.
billing_thread = memory.create_thread(
thread_id="billing_ticket_9310",
user_id="customer_123",
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_frequency=1,
memory_extraction_custom_instructions=(
"Only extract billing facts, invoice identifiers, and payment issues."
),
),
)
billing_thread.add_messages(
[
{
"role": "user",
"content": "Invoice INV-9310 was paid twice and needs a refund.",
}
]
)
| Référence d'API : OracleAgentMemory | OracleThread |
Mettre à jour ou effacer les instructions de thread
Utilisez update_thread() pour modifier les instructions d'extraction persistantes d'un thread existant. Transmettez None pour effacer les instructions de niveau thread afin que les gestionnaires de threads futurs utilisent les instructions de niveau client ou, si aucune n'est configurée, le comportement d'extraction normal du kit SDK.
memory.update_thread(
"support_ticket_7421",
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_custom_instructions=(
"Only extract product defects and replacement requests."
)
),
)
memory.update_thread(
"support_ticket_7421",
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_custom_instructions=None
),
)
Remarque : get_thread(..., memory_extraction_config=MemoryExtractionConfig(memory_extraction_custom_instructions=...)) peut appliquer des instructions à l'identificateur de thread actif renvoyé sans mettre à jour la configuration de thread persistant.
| Référence d'API : OracleAgentMemory | OracleThread |
Conclusion
Dans ce guide, nous avons appris à configurer des instructions d'extraction personnalisées au niveau du client, à les remplacer pour un thread spécifique et à mettre à jour ou effacer des instructions d'extraction au niveau du thread.
Après avoir appris à personnaliser l'extraction automatisée, vous pouvez maintenant passer à Utilisation des API à court terme de mémoire d'agent avec LangGraph.
Code complet
#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 Automatic Memory Extraction
#------------------------------------------------------------------------
##Configure custom memory extraction instructions
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")
memory_llm = Llm(model="YOUR_MEMORY_LLM")
db_pool = oracledb.SessionPool(
user="YOUR DB USER",
password="YOUR DB PASSWORD",
dsn="YOUR DB CONNECT STRING",
)
support_extraction_instructions = """
Only extract customer support facts:
- order ids
- return requests
- delivery problems
Ignore greetings, small talk, and one-off troubleshooting text.
""".strip()
memory = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=memory_llm,
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_custom_instructions=support_extraction_instructions
),
)
##Extract support memories from thread messages
support_thread = memory.create_thread(
thread_id="support_ticket_7421",
user_id="customer_123",
memory_extraction_config=MemoryExtractionConfig(memory_extraction_frequency=1),
)
#add_messages persists the turn and runs automated memory extraction because
#MemoryExtractionConfig(memory_extraction_frequency=1) is set for this thread.
support_thread.add_messages(
[
{
"role": "user",
"content": (
"Hi, order 7421 arrived damaged. I need a return request "
"and a replacement delivery."
),
},
{
"role": "assistant",
"content": "I can help start the return request for order 7421.",
},
]
)
results = support_thread.search(
"return request order 7421",
max_results=5,
record_types=["fact"],
)
for result in results:
print(f"- [{result.record.record_type}] {result.content}")
#- [fact] Customer reported damaged order 7421 and requested a return and replacement delivery.
##Override custom instructions for one thread
billing_thread = memory.create_thread(
thread_id="billing_ticket_9310",
user_id="customer_123",
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_frequency=1,
memory_extraction_custom_instructions=(
"Only extract billing facts, invoice identifiers, and payment issues."
),
),
)
billing_thread.add_messages(
[
{
"role": "user",
"content": "Invoice INV-9310 was paid twice and needs a refund.",
}
]
)
##Update or clear thread custom instructions
memory.update_thread(
"support_ticket_7421",
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_custom_instructions=(
"Only extract product defects and replacement requests."
)
),
)
memory.update_thread(
"support_ticket_7421",
memory_extraction_config=MemoryExtractionConfig(
memory_extraction_custom_instructions=None
),
)