Tous les produits
Search
Centre de documentation

Tablestore:Common objects

Dernière mise à jour :Sep 25, 2026

L'API Memory Storage réutilise les structures de données suivantes : Scope, Agent Scope, Scope Filter, Message et Metadata.

Scope

Le champ Scope définit la hiérarchie de propriété des données de mémoire et comprend quatre champs.

Champ

Type

Description

appId

string

Identifiant de l'application.

tenantId

string

Identifiant du locataire ou de l'utilisateur.

agentId

string

Identifiant de l'agent.

runId

string

Identifiant de session, d'exécution ou de tâche.

Les règles régissant les champs Scope obligatoires et la prise en charge du caractère générique * varient selon l'API.

Scénario

Règle Scope

Écriture (AddMemories)

appId est obligatoire ; les champs omis prennent la valeur __default__ ; le caractère * n'est pas autorisé.

Recherche (SearchMemories)

appId est obligatoire et ne peut pas valoir * ; les champs omis prennent la valeur __default__, et seul un * explicite fait office de caractère générique.

Interrogation des messages à court terme (ListMemoryStoreMessages)

Les quatre champs sont obligatoires ; le caractère * n'est pas autorisé.

Obtention, mise à jour ou suppression d'une mémoire à long terme unique

scope est facultatif ; s'il est renseigné, les quatre champs sont obligatoires et le caractère * n'est pas autorisé.

Opérations exactes sur les fichiers

Les quatre champs sont obligatoires ; le caractère * n'est pas autorisé. Les fichiers en lecture seule générés par le service acceptent uniquement un Scope exact.

Listage et opérations par plage sur les fichiers de gestion des applications

appId et tenantId sont obligatoires ; agentId et runId acceptent l'utilisation hiérarchique de *.

Suppression par lot des versions de fichier (DeleteItemVersions)

appId et tenantId doivent avoir des valeurs spécifiques ; un caractère générique est requis (il est recommandé de spécifier explicitement runId="*") ; agentId peut avoir une valeur spécifique ou valoir * ; le Scope exact et la suppression inter-locataires ne sont pas pris en charge.

ListMemoryStoreScopes

scope est facultatif et accepte l'utilisation hiérarchique de * ; vous pouvez également utiliser un filter structuré.

Autres requêtes de liste

Le Scope peut être spécifié par hiérarchie ; les champs omis prennent la valeur __default__ et acceptent l'utilisation hiérarchique de *.

Si un niveau utilise *, les niveaux suivants doivent également utiliser * ou être omis. Par exemple, app-001/user-001/*/* est valide, tandis que app-001/*/assistant/* est invalide.

{
  "appId": "app-001",
  "tenantId": "user-001",
  "agentId": "assistant",
  "runId": "session-001"
}

Agent Scope

Wiki utilise un Agent Scope à trois segments contenant uniquement appId, tenantId et agentId. Ces trois champs sont obligatoires, leur longueur maximale est de 128 octets chacun, et ils ne peuvent pas contenir / ni utiliser *. Les requêtes Wiki ne peuvent pas inclure runId.

Chaque Agent Scope possède un seul Wiki dans un magasin de mémoire, et les sessions avec différentes valeurs de runId partagent ce Wiki.

Scope Filter

SearchMemories, ListMemories et ListMemoryStoreScopes permettent d'utiliser filter pour filtrer le Scope de manière structurée. Si scope et filter sont tous deux fournis, ils s'appliquent conjointement (relation ET). filter correspond uniquement au Scope, et non au corps du texte de la mémoire ni aux Metadata.

op

Champ

Description

and, or

conditions

conditions représente une ou plusieurs sous-conditions.

not

condition

condition est une sous-condition unique. La forme conditions contenant un seul élément est également prise en charge.

eq

field, value

Correspondance exacte de chaîne. Le champ virtuel text utilise également cet opérateur.

in

field, values

Correspond à n'importe quelle valeur d'un tableau de chaînes ; values ne doit pas être vide.

exists

field

Correspond au Scope contenant ce champ.

Les champs filtrables incluent scopeType, scopeKey, appId, tenantId, agentId, runId, wikiId et le champ virtuel text. Le Scope de conversation utilise agentId et runId, tandis que le Scope Wiki utilise wikiId. Les champs standards n'acceptent que la correspondance exacte ; les opérateurs prefix, wildcard et range ne sont pas pris en charge.

text effectue une correspondance sur des segments courts des valeurs de champ du Scope et n'accepte que op: "eq". Sa value peut utiliser * pour correspondre à une séquence de caractères de n'importe quelle longueur, et ? pour correspondre à un seul caractère Unicode, par exemple *abc*. Le motif ne peut pas être vide et peut comporter jusqu'à 32 caractères Unicode ; le nombre total de caractères autres que * ne peut pas dépasser 4.

{
  "op": "and",
  "conditions": [
    { "op": "eq", "field": "appId", "value": "app-001" },
    { "op": "eq", "field": "text", "value": "*abc*" }
  ]
}

filter peut être imbriqué jusqu'à 8 niveaux et contenir jusqu'à 64 conditions feuilles. Les requêtes paginées doivent conserver scope et filter inchangés ; le même nextToken ne peut pas servir à d'autres conditions de requête.

filter dépend des capacités de requête Scope du magasin de mémoire cible. Certains magasins de mémoire existants ne prennent pas en charge filter ni le champ virtuel text. En cas de renvoi de INVALID_PARAMETER, utilisez un Scope exact ou avec caractère générique. En cas de renvoi de SERVICE_UNAVAILABLE, réessayez d'abord avec un backoff ; si la condition text reste indisponible, utilisez plutôt les conditions eq, in ou exists sur les champs standards.

Message

Le champ messages de l'API AddMemories utilise la structure suivante.

Champ

Type

Obligatoire

Description

role

string

Oui

Rôle du message, par exemple user, assistant, system.

content

string

Oui

Contenu du message.

messageId

string

Non

ID du message, jusqu'à 256 caractères.

timestamp

string

Non

Heure au format RFC3339.

metadata

object

Non

Métadonnées au niveau du message ; les clés et les valeurs sont des chaînes.

Metadata

Les Metadata se composent de paires clé-valeur de type chaîne utilisées pour associer des tags métier. Dans SearchMemories, les Metadata servent à la correspondance exacte de chaîne complète et au filtrage ; lorsque plusieurs paires clé-valeur sont fournies, les résultats doivent satisfaire simultanément toutes les conditions. Des caractères tels que *, ?, la virgule et le signe égal sont traités comme des caractères ordinaires et ne représentent pas des caractères génériques.

Limite

Valeur

Nombre maximal de clés dans un objet Metadata unique

16

Longueur maximale de la clé

64 caractères Unicode

Taille JSON maximale d'un objet Metadata unique

65536 octets (UTF-8, 64 KiB)

Les metadata de premier niveau de AddMemories, ainsi que les Metadata au niveau du message obtenues en fusionnant les metadata de premier niveau avec les metadata de chaque message, doivent chacune respecter les limites précédentes. Une valeur écrite unique n'a pas de limite distincte de 1024 caractères ; cependant, chaque valeur de requête dans SearchMemories.metadata peut comporter jusqu'à 1024 caractères Unicode. Les valeurs stockées dépassant cette longueur peuvent être lues, mais ne peuvent pas servir de conditions de requête Metadata.

{
  "source": "chat",
  "topic": "preference"
}

Les magasins de mémoire dont outputTypes inclut structured prennent en charge la correspondance exacte complète décrite ci-dessus, ce qui convient à la récupération de valeurs longues telles que les UUID et les ID de trace.