Skip to main content

Python SDK for TinyHumans API - ingest and delete memory

Project description

TinyHuman Neocortex SDK

A persistent memory layer for AI applications. Neocortex lets your AI agents store, retrieve, and use context across conversations -- so they remember what matters.

Built on the TinyHumans API.

Install

pip install tinyhumansai

Requires Python 3.9+. The only runtime dependency is httpx.

Running locally

From the package directory (packages/sdk-python), install the project and optional dependency groups with uv:

uv sync --group dev --group examples
  • --group dev — test and lint tools (pytest, pytest-asyncio, mypy, ruff).
  • --group examplespython-dotenv for running the example script.

Then run the example:

# Copy .env.example to .env and set TINYHUMANS_TOKEN, TINYHUMANS_MODEL_ID, OPENAI_API_KEY (for recall_with_llm).
uv run python example.py

To install only the package and examples (no dev tools): uv sync --group examples.

Quick start

import tinyhumansai as api

client = api.TinyHumanMemoryClient("YOUR_APIKEY_HERE")

# Store a single memory
client.ingest_memory({
    "key": "user-preference-theme",
    "content": "User prefers dark mode",
    "namespace": "preferences",
    "metadata": {"source": "onboarding"},
})

# Ask a LLM something from the memory
response = client.recall_with_llm(
    prompt="What is the user's preference for theme?",
    api_key="OPENAI_API_KEY"
)
print(response.text) # The user prefers dark mode

Core concepts

Memory items are the basic unit of storage. Each item has:

Field Required Description
key yes Unique identifier within a namespace (used for upsert/dedup)
content yes The memory text
namespace yes Scope for organizing items
metadata no Arbitrary dict for tagging/filtering
created_at no Unix timestamp in seconds
updated_at no Unix timestamp in seconds

Namespaces let you organize memories by category (e.g. "preferences", "conversation-history", "user-facts").

Context is a pre-formatted string built from your stored memories, ready to inject into any LLM prompt as system context.

API reference

TinyHumanMemoryClient

client = api.TinyHumanMemoryClient(
    token="your-api-key",       # Required. TinyHumans API key.
    model_id="neocortex-mk1",   # Required. Model identifier.
    base_url="https://...",     # Optional. Override API base URL.
)

The client supports the context-manager protocol for automatic cleanup:

with api.TinyHumanMemoryClient(token="...", model_id="...") as client:
    ctx = client.recall_memory(namespace="preferences", prompt="User preferences", num_chunks=10)

ingest_memory

Upsert a single memory item. The item is deduped by (namespace, key) -- if a match exists, it is updated; otherwise a new item is created.

result = client.ingest_memory(
    item={
        "key": "fav-color",
        "content": "User's favorite color is blue",
        "namespace": "preferences",
    }
)
print(result.ingested, result.updated, result.errors)

With the MemoryItem dataclass:

from tinyhumansai import MemoryItem

result = client.ingest_memory(
    item=MemoryItem(key="fav-color", content="Blue", namespace="preferences")
)

ingest_memories

Upsert multiple memory items in one call. Items are deduped by (namespace, key).

result = client.ingest_memories(
    items=[
        {"key": "fav-color", "content": "Blue", "namespace": "preferences"},
        {"key": "fav-food", "content": "Pizza", "namespace": "preferences"},
    ]
)
print(result.ingested, result.updated, result.errors)

recall_memory

Fetch relevant memory chunks using a prompt and return them as an LLM-friendly context string. The API uses the prompt to retrieve the most relevant chunks from the namespace.

# Fetch up to 10 chunks relevant to the prompt
ctx = client.recall_memory(
    namespace="preferences",
    prompt="What is the user's favorite color?",
    num_chunks=10,
)
print(ctx.context)  # Formatted string
print(ctx.items)    # List of ReadMemoryItem objects
print(ctx.count)    # Number of items

# Optional: fetch more or fewer chunks
ctx = client.recall_memory(namespace="preferences", prompt="User preferences", num_chunks=5)

# Optional: filter by specific key(s) instead of prompt-based retrieval
ctx = client.recall_memory(namespace="preferences", prompt="", key="fav-color", num_chunks=10)

delete_memory

Remove memory items by key or delete all in a namespace. namespace is required.

# Delete a specific key
client.delete_memory(namespace="preferences", key="fav-color")

# Delete multiple keys
client.delete_memory(namespace="preferences", keys=["fav-color", "fav-food"])

# Delete all memories in a namespace
client.delete_memory(namespace="preferences", delete_all=True)

recall_with_llm (optional)

Query an LLM provider with your stored context injected -- no extra SDK dependencies needed. Supports OpenAI, Anthropic, and Google Gemini out of the box, plus any OpenAI-compatible endpoint.

ctx = client.recall_memory(namespace="preferences", prompt="User preferences", num_chunks=10)

# OpenAI
response = client.recall_with_llm(
    prompt="What is the user's favorite color?",
    provider="openai",
    model="gpt-4o-mini",
    api_key="your-openai-key",
    context=ctx.context,
)
print(response.text)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tinyhumansai-0.5.1.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tinyhumansai-0.5.1-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file tinyhumansai-0.5.1.tar.gz.

File metadata

  • Download URL: tinyhumansai-0.5.1.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tinyhumansai-0.5.1.tar.gz
Algorithm Hash digest
SHA256 97aefdcf1c8a3382ba16d9b1998c85a3a730e32a781b835e243b9d46fea33962
MD5 7be9971758fa1246438852eb07da7fbe
BLAKE2b-256 3d69d4069791d4b47b2957293ac6800b5d0d9c64af201fca91231e5886af0099

See more details on using hashes here.

File details

Details for the file tinyhumansai-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: tinyhumansai-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tinyhumansai-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cda9d9e4e5bd1b4652f91b3d9e60aea1545508a9e6d9117eead4c74adce8613f
MD5 a104874a7dde4f3e1a6ae2b31e16f807
BLAKE2b-256 9c37eb0a4cb8bfca975b14cf3bcc491d1f2f49664fd27b33992333e51e877e19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page