Magasins et schéma

Cette page présente les abstractions du magasin principal et les contrôles de schéma utilisés par la trousse SDK de mémoire de l'agent Oracle.

API de magasin

classe oracleagentmemory.core.OracleMemoryStore

Bases : IMemoryStore

Interface de magasin commune utilisée par OracleAgentMemory.

Une implémentation de magasin est responsable de la persistance des enregistrements de texte et de la recherche de similarité. Les points d'entrée synchrones et asynchrones sont définis afin que les API de niveau supérieur puissent exposer les surfaces de synchronisation/asynchrones correspondantes sans dupliquer la logique propre au magasin.

méthode add (résumé)

Intégrer et conserver des enregistrements de texte.

Exemples

store.add(["Abstract memory"], record_type="memory", record_ids="mem-abstract-docs")
['mem-abstract-docs']

méthode search (résumé)

recherche d'enregistrements par similarité;

Exemples

store.add(
    ["Searchable abstract memory"],
    record_type="memory",
    record_ids="mem-search-abstract-docs",
)
['mem-search-abstract-docs']
store.search("Searchable", 1, record_types={"memory"})[0][0].id
'mem-search-abstract-docs'

Filtre sur une valeur de métadonnées scalaire :

store.add(
    ["pizza release"],
    record_type="memory",
    record_ids="mem-search-meta-source-docs",
    metadata={"source": "slack"},
)
['mem-search-meta-source-docs']
any(
    record.id == "mem-search-meta-source-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"source": "slack"},
    )
)
True

Filtrer sur les métadonnées imbriquées :

store.add(
    ["pizza review"],
    record_type="memory",
    record_ids="mem-search-meta-review-docs",
    metadata={"review": {"status": "open"}},
)
['mem-search-meta-review-docs']
any(
    record.id == "mem-search-meta-review-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"review": {"status": "open"}},
    )
)
True

Correspondance exacte d'une valeur de liste, ordre compris :

store.add(
    ["pizza tags"],
    record_type="memory",
    record_ids="mem-search-meta-tags-docs",
    metadata={"tags": ["prod", "urgent"]},
)
['mem-search-meta-tags-docs']
any(
    record.id == "mem-search-meta-tags-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"tags": ["prod", "urgent"]},
    )
)
True

Magasin Oracle DB

classe oracleagentmemory.core.OracleDBMemoryStore

Bases : OracleMemoryStore

Persistance soutenue par la base de données pour les messages et les enregistrements de mémoire typés.

Créez un magasin Oracle DB.

méthode add

Ajoutez des enregistrements à la mémoire.

Exemples

store.add(
    ["Hello from docs"],
    record_type="message",
    record_ids="msg-docs-add",
    thread_ids="c-docs-add",
    roles="user",
)
['msg-docs-add']

méthode add_agent

ajout d'une table de profil d'agent;

Exemples

store.add_agent("a-docs-agent", "Support assistant")
'a-docs-agent'

méthode add_user

Ajouter un enregistrement de profil d'utilisateur.

Exemples

store.add_user("u-docs-profile", "Prefers concise answers.")
'u-docs-profile'

méthode delete

Supprimez un enregistrement de table vectorielle gérée et ses enregistrements de fragmentation par identificateur.

Exemples

store.add(["Delete me"], record_type="memory", record_ids="mem-delete-docs")
['mem-delete-docs']
store.delete("memory", "mem-delete-docs")
1

méthode delete_thread

Supprimez un fil et les enregistrements de table vectorielle et de fragmentation associés.

Exemples

store.delete_thread("c1")
0

méthode get

Extraire un message ou une mémoire stockée par identificateur.

Exemples

store.add(["Remember this"], record_type="memory", record_ids="mem-get-docs")
['mem-get-docs']
store.get("memory", "mem-get-docs").id
'mem-get-docs'

méthode list

Énumérer les enregistrements persistants pour un type d'enregistrement.

Exemples

store.add(
    ["First listed", "Second listed"],
    record_type="memory",
    record_ids=["mem-list-docs-1", "mem-list-docs-2"],
)
['mem-list-docs-1', 'mem-list-docs-2']
[record.id for record in store.list("memory", limit=2)]
['mem-list-docs-1', 'mem-list-docs-2']

méthode list_thread_messages

Renvoyer les messages persistants pour un thread.

Exemples

store.list_thread_messages("c1")
[]

méthode search

recherche d'enregistrements par similarité;

Exemples

store.add(
    ["pizza preference"],
    record_type="memory",
    record_ids="mem-search-docs",
    thread_ids="c-search-docs",
)
['mem-search-docs']
results = store.search(
    "pizza",
    1,
    thread_id="c-search-docs",
    exact_thread_match=True,
    record_types={"memory"},
)
results[0][0].id
'mem-search-docs'

Filtre sur une valeur de métadonnées scalaire :

store.add(
    ["pizza release"],
    record_type="memory",
    record_ids="mem-search-meta-source-docs",
    metadata={"source": "slack"},
)
['mem-search-meta-source-docs']
any(
    record.id == "mem-search-meta-source-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"source": "slack"},
    )
)
True

Filtrer sur les métadonnées imbriquées :

store.add(
    ["pizza review"],
    record_type="memory",
    record_ids="mem-search-meta-review-docs",
    metadata={"review": {"status": "open"}},
)
['mem-search-meta-review-docs']
any(
    record.id == "mem-search-meta-review-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"review": {"status": "open"}},
    )
)
True

Correspondance exacte d'une valeur de liste, ordre compris :

store.add(
    ["pizza tags"],
    record_type="memory",
    record_ids="mem-search-meta-tags-docs",
    metadata={"tags": ["prod", "urgent"]},
)
['mem-search-meta-tags-docs']
any(
    record.id == "mem-search-meta-tags-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"tags": ["prod", "urgent"]},
    )
)
True

méthode update

mise à jour du contenu de la table stockée, de l'intégration des fragments et des valeurs des métadonnées;

Exemples

store.add(["Original note"], record_type="memory", record_ids="mem-update-docs")
['mem-update-docs']
store.update("memory", "mem-update-docs", text="Updated note")
1
store.get("memory", "mem-update-docs").content
'Updated note'

Politique de schéma

classe oracleagentmemory.core.SchemaPolicy

Bases : str, Enum

Politique de création de schéma pour les magasins Oracle DB.

EXIGENCES EXISTANTES

Vérifiez que le schéma géré complet existe déjà et qu'il est à jour. Ne créez ni ne modifiez les objets de base de données.

CREATE_IF_VIDE

S'il n'existe aucun objet géré, amorcer le schéma. Si des objets existent déjà, vous devez disposer d'un schéma géré complet et à jour.

CRÉER SI NÉCESSAIRE

Créer uniquement les objets gérés manquants, y compris les métadonnées.

RECRÉEZ

Supprimez et recréez tous les objets de schéma gérés. C'est destructeur.