Gérez la mémoire à long terme dans un magasin de mémoire : écriture, recherche, récupération, liste, mise à jour et suppression.
Prérequis
Un magasin de mémoire a été créé avec le type d'entrée
messageset un type de sortie incluantstructured. Consultez la rubrique Gestion des magasins de mémoire.SDK Agent Storage installé : Python ≥
1.0.10, TypeScript ≥0.0.13
Écriture en mémoire
Écrivez des messages de conversation ou du texte dans le magasin de mémoire. Le service enregistre les messages originaux sous forme de mémoire à court terme et extrait la mémoire à long terme structurée de manière asynchrone.
Le champ
scope.appIdest obligatoire et ne peut pas être défini sur*; lorsquetenantId/agentId/runIdsont vides, ils prennent la valeur__default__. Les caractères génériques ne sont pas autorisés lors des opérations d'écriture.Le paramètre
messagesprend en charge jusqu'à 20 éléments pour une taille totale ≤ 32 000 octets ; vous pouvez également utilisertext(≤ 32 000 octets), mais pas les deux simultanément.Par défaut, l'opération est asynchrone (
sync=false) : les messages originaux sont immédiatement disponibles pour interrogation, tandis que la mémoire structurée est générée en arrière-plan. Enregistrez l'identifiantrequestIdrenvoyé et appelezGetMemoryTaskpour suivre la tâche d'extraction.Les magasins de mémoire incluant la sortie
filene prennent en charge que les écritures asynchrones ;sync=trues'applique uniquement aux magasins sans sortiefile, sinon l'erreurINVALID_PARAMETERest renvoyée.
Console
Connectez-vous à la console Agent Storage, ouvrez le magasin de mémoire cible, accédez à la page Long-term memory et cliquez sur Write memory.
Renseignez le champ Scope (application, locataire, agent, session).
Saisissez les messages de conversation (rôle + contenu) ou du texte brut.
Cliquez sur OK. Le service extrait la mémoire structurée de manière asynchrone.
SDK
Python
from tablestore_agent_storage import AgentStorageClient
client = AgentStorageClient(
api_key="<your-api-key>",
ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
ots_instance_name="<instance-name>",
)
resp = client.add_memories({
"memoryStoreName": "agent_memory",
"scope": {
"appId": "app-001",
"tenantId": "user-001",
"agentId": "assistant",
"runId": "session-001",
},
"messages": [
{"role": "user", "content": "I like drinking Americano coffee"},
{"role": "assistant", "content": "Got it. I've noted your preference."},
],
})
print(f"requestId: {resp.get('requestId')}, status: {resp.get('status')}")
TypeScript
import { AgentStorageClient } from '@tablestore/agent-storage';
const client = new AgentStorageClient({
apiKey: '<your-api-key>',
endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
instanceName: '<instance-name>',
});
const resp = await client.addMemories({
memoryStoreName: 'agent_memory',
scope: {
appId: 'app-001',
tenantId: 'user-001',
agentId: 'assistant',
runId: 'session-001',
},
messages: [{ role: 'user', content: 'I like drinking Americano coffee' }],
});
console.log(resp.requestId, resp.status);
API
Appelez AddMemories pour écrire en mémoire. Pour connaître l'ensemble des champs, consultez la rubrique Écriture de mémoires.
Recherche en mémoire
Utilisez le langage naturel pour rechercher dans la mémoire structurée et les fichiers de mémoire générés par le service. Les résultats sont triés par pertinence.
La recherche cible la mémoire structurée et les fichiers de mémoire générés par le service ; la mémoire de fichier gérée directement n'est pas incluse dans le périmètre de recherche (lisez-la via le chemin indiqué dans la rubrique Mémoire de fichier ou créez-en une via la rubrique Compilation des connaissances (Wiki)).
Le paramètre
queryprend en charge jusqu'à 8 192 caractères Unicode ;scope.appIdest obligatoire et ne peut pas être défini sur*. Les autres champs doivent être explicitement définis sur*pour agir comme des caractères génériques.
Console
Ouvrez le magasin de mémoire cible, accédez à la page Memory search et définissez des valeurs spécifiques pour l'application et le locataire (l'agent et la session peuvent être définis sur « All »).
Saisissez le texte de requête dans le champ Search query, définissez la valeur Top K et, si nécessaire, enable reranking ou développez l'option Advanced search.
Cliquez sur Search. Les résultats s'affichent par catégorie (mémoire structurée, mémoire de fichier et preuves de recherche), incluant le score de pertinence, le score de similarité et la méthode de rappel.
SDK
Python
from tablestore_agent_storage import AgentStorageClient
client = AgentStorageClient(
api_key="<your-api-key>",
ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
ots_instance_name="<instance-name>",
)
result = client.search_memories({
"memoryStoreName": "agent_memory",
"scope": {"appId": "app-001", "tenantId": "user-001", "agentId": "*", "runId": "*"},
"query": "What beverages does the user like",
"topK": 5,
"enableRerank": True,
})
for hit in result.get("results", []):
unit = hit.get("unit", {})
print(f"[score={hit.get('score'):.4f}] {unit.get('text', '')[:80]}")
TypeScript
import { AgentStorageClient } from '@tablestore/agent-storage';
const client = new AgentStorageClient({
apiKey: '<your-api-key>',
endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
instanceName: '<instance-name>',
});
const result = await client.searchMemories({
memoryStoreName: 'agent_memory',
scope: { appId: 'app-001', tenantId: 'user-001', agentId: '*', runId: '*' },
query: 'What beverages does the user like',
topK: 5,
enableRerank: true,
});
for (const hit of result.results) {
console.log(`[score=${hit.score.toFixed(4)}] ${hit.unit?.text?.slice(0, 80)}`);
}
API
Appelez SearchMemories pour rechercher en mémoire. Pour connaître l'ensemble des champs, consultez la rubrique Recherche de mémoires.
Liste des mémoires
Parcourez la liste de la mémoire à long terme selon un Scope spécifié, page par page.
Le paramètre
scopeprend en charge la correspondance par préfixe gauche (le côté droit doit également être*ou vide) ; une seule requête analyse jusqu'à 100 Scopes.La valeur par défaut de
limitest 50 et prend en charge un maximum de 100 ;nextTokendoit être utilisé avec la même combinaisonscope+filter.
Console
Sur la page Long-term memory, définissez le Scope. La liste affiche le contenu de la mémoire, le type, l'heure de création et les actions.
SDK
Python
from tablestore_agent_storage import AgentStorageClient
client = AgentStorageClient(
api_key="<your-api-key>",
ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
ots_instance_name="<instance-name>",
)
resp = client.list_memories({
"memoryStoreName": "agent_memory",
"scope": {"appId": "app-001", "tenantId": "user-001", "agentId": "*", "runId": "*"},
"limit": 50,
})
for m in resp.get("memories", []):
print(f"[{m.get('type_label')}] {m.get('text', '')[:60]} (id={m.get('id')})")
TypeScript
import { AgentStorageClient } from '@tablestore/agent-storage';
const client = new AgentStorageClient({
apiKey: '<your-api-key>',
endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
instanceName: '<instance-name>',
});
const resp = await client.listMemories({
memoryStoreName: 'agent_memory',
scope: { appId: 'app-001', tenantId: 'user-001', agentId: '*', runId: '*' },
limit: 50,
});
for (const m of resp.memories) {
console.log(`[${m.type_label}] ${m.text?.slice(0, 60)} (id=${m.id})`);
}
API
Appelez ListMemories pour lister la mémoire. Pour connaître l'ensemble des champs, consultez la rubrique Liste des mémoires.
Récupération d'une mémoire
Récupérez les détails d'une mémoire à long terme spécifiée.
Console
Dans la liste Long-term memory, cliquez sur View pour la mémoire cible afin de consulter son ID, son contenu, son texte de recherche, son Scope, son type, sa saillance et sa version.
SDK
Python
from tablestore_agent_storage import AgentStorageClient
client = AgentStorageClient(
api_key="<your-api-key>",
ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
ots_instance_name="<instance-name>",
)
resp = client.get_memory({
"memoryStoreName": "agent_memory",
"memoryId": "<memory-id>",
"scope": {"appId": "app-001", "tenantId": "user-001", "agentId": "assistant", "runId": "session-001"},
})
m = resp.get("memory", {})
print(f"Type: {m.get('type_label')}, Content: {m.get('text')}, Salience: {m.get('salience')}")
TypeScript
import { AgentStorageClient } from '@tablestore/agent-storage';
const client = new AgentStorageClient({
apiKey: '<your-api-key>',
endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
instanceName: '<instance-name>',
});
const resp = await client.getMemory({
memoryStoreName: 'agent_memory',
memoryId: '<memory-id>',
scope: { appId: 'app-001', tenantId: 'user-001', agentId: 'assistant', runId: 'session-001' },
});
const m = resp.memory;
console.log(m.type_label, m.text, m.salience);
API
Appelez GetMemory pour récupérer la mémoire. Pour connaître l'ensemble des champs, consultez la rubrique Interrogation de la mémoire.
Mise à jour d'une mémoire
Mettez à jour le texte, les métadonnées et d'autres champs d'une mémoire à long terme spécifiée.
Le champ
metadataest mis à jour par écrasement ; transmettre{}efface toutes les métadonnées.Les paramètres
effectiveAtettimePrecisiondoivent être transmis conjointement.
Console
La console ne permet pas de modifier individuellement la mémoire à long terme. Utilisez le SDK ou l'API pour effectuer les mises à jour.
SDK
Python
from tablestore_agent_storage import AgentStorageClient
client = AgentStorageClient(
api_key="<your-api-key>",
ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
ots_instance_name="<instance-name>",
)
client.update_memory({
"memoryStoreName": "agent_memory",
"memoryId": "<memory-id>",
"scope": {"appId": "app-001", "tenantId": "user-001", "agentId": "assistant", "runId": "session-001"},
"text": "The user likes drinking latte",
"metadata": {"source": "profile"},
})
TypeScript
import { AgentStorageClient } from '@tablestore/agent-storage';
const client = new AgentStorageClient({
apiKey: '<your-api-key>',
endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
instanceName: '<instance-name>',
});
await client.updateMemory({
memoryStoreName: 'agent_memory',
memoryId: '<memory-id>',
scope: { appId: 'app-001', tenantId: 'user-001', agentId: 'assistant', runId: 'session-001' },
text: 'The user likes drinking latte',
metadata: { source: 'profile' },
});
API
Appelez UpdateMemory pour mettre à jour la mémoire. Pour connaître l'ensemble des champs, consultez la rubrique Mise à jour d'une mémoire.
Suppression d'une mémoire
La suppression d'une seule mémoire à long terme est irréversible.
Console
La console ne permet pas de supprimer individuellement la mémoire à long terme. Utilisez le SDK ou l'API pour effectuer la suppression. Pour effacer toutes les données d'un magasin, supprimez l'intégralité du magasin de mémoire.
SDK
Python
from tablestore_agent_storage import AgentStorageClient
client = AgentStorageClient(
api_key="<your-api-key>",
ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
ots_instance_name="<instance-name>",
)
client.delete_memory({
"memoryStoreName": "agent_memory",
"memoryId": "<memory-id>",
"scope": {"appId": "app-001", "tenantId": "user-001", "agentId": "assistant", "runId": "session-001"},
})
TypeScript
import { AgentStorageClient } from '@tablestore/agent-storage';
const client = new AgentStorageClient({
apiKey: '<your-api-key>',
endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
instanceName: '<instance-name>',
});
await client.deleteMemory({
memoryStoreName: 'agent_memory',
memoryId: '<memory-id>',
scope: { appId: 'app-001', tenantId: 'user-001', agentId: 'assistant', runId: 'session-001' },
});
API
Appelez DeleteMemory pour supprimer la mémoire. Pour connaître l'ensemble des champs, consultez la rubrique Suppression de la mémoire.