Skip to main content

Python client for the little big brain graph + hybrid search HTTP API

Project description

littlebigbrain — Python SDK

The Python client for Little Big Brain — write graph facts and query one immutable published snapshot. Built on httpx + pydantic; ships sync and async clients.

pip install littlebigbrain   # imports as `lbb`

Quickstart

from lbb import LbbClient

with LbbClient(
    "https://0abc1def--production.db.eu.littlebigbrain.com",
    api_key="lbb_sk_live_...",
    graph="main",
) as lbb:
    graph = lbb.graph("main")

    # 1. Write a fact.
    graph.facts.create({
        "triplets": [{
            "source": {"type": "CONCEPT", "name": "handbook", "key": "doc:42"},
            "relation": "RELATED_TO",
            "target": {"type": "CONCEPT", "name": "vacation policy", "key": "passage:42:1"},
            "evidence": "Employees receive 25 days of annual leave.",
        }],
    }, idempotency_key="doc:42:v1")

    # 2. Publication is automatic. Inspect one coherent watermark when needed.
    published = lbb.read_snapshot_model()
    print(published.snapshot.served_at_seq, published.query_lag_commits)

    # 3. Hybrid search over the snapshot.
    results = lbb.search.hybrid(
        "how much annual leave do employees get?",
        top_k=5,
        consistency="eventual",
    )
    for hit in results.get("assertions", []):
        print(hit["relation"]["name"], hit["score"])

For hosted use, pass the exact endpoint_url shown on the stack's Connect page. Omitting base_url retains the loopback default for local/self-hosted development only; graph and branch remain ordinary client scope parameters.

Facts are graph-scoped (lbb.graph("main").facts); search and published-snapshot inspection use the client's active graph/branch scope.

Examples

Search with filters. Use the request body to filter before ranking — here, only facts an ACL principal may see:

results = lbb.graph_search({
    "query": "incident response runbook",
    "targets": ["entities"],
    "search": {
        "filters": {
            "op": "overlaps",
            "field": "acl",
            "values": ["user:rino@example.com", "group:engineering"],
        },
    },
    "top_k": 20,
})

Bulk import. Load many records as NDJSON in one call:

lbb.graph("main").facts.import_ndjson(
    [
        {"source": {"type": "DOC", "name": "handbook", "key": "doc:42"},
         "relation": "HAS_PASSAGE",
         "target": {"type": "PASSAGE", "name": "leave-policy", "key": "p:42:1"}},
        # …one record per line
    ],
    idempotency_key="handbook-batch-1",
)

Time-travel read. Pin a SPARQL query to a past instant — results reflect the graph as it was then:

results = lbb.sparql(
    "SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10",
    as_of_valid_time="2026-01-01T00:00:00Z",
)
print(results.vars)
for row in results:           # iterates flat {var: value} dicts
    print(row)

The async client mirrors every method — async with AsyncLbbClient(...) as lbb: and await each call.

Errors & retries

Methods return parsed dictionaries and raise LbbError (with status_code, code, param, request_id, and doc_url) on any non-2xx response. Safe reads and idempotency-keyed writes retry 429/5xx and transport failures with full-jitter backoff, bounded by a retry budget (retry_budget_ms, default 60s) rather than a fixed count, and honor Retry-After — a terminal error the server marks non-retryable surfaces immediately. Use raw_request(...) for response headers, request id, and retry/timing metadata.

More

Beyond the quickstart: entities.sample(type=..., limit=...) for a bounded published-generation sample and entities.filter_by_attributes(...) for relation-bound structured SPARQL; context.suggest(...), context.resolve(...), context.decode(...), and context.groundability(...) for vocabulary-grounded applications; and ontology/schema for ontology inspection and atomic schema publication. Model shadow evaluation and planner, preference, suggestion, and extractor datasets remain available. Typed Pydantic responses are exposed by matching *_model helpers; generated models live in lbb.models.

Full reference and guides: docs.littlebigbrain.com/sdks/python.

Develop

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
ruff check lbb tests
mypy lbb
pytest tests

lbb/models.py is generated from the API contract — change the Rust API types and regenerate rather than editing it by hand.

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

littlebigbrain-0.8.1.tar.gz (119.8 kB view details)

Uploaded Source

Built Distribution

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

littlebigbrain-0.8.1-py3-none-any.whl (103.5 kB view details)

Uploaded Python 3

File details

Details for the file littlebigbrain-0.8.1.tar.gz.

File metadata

  • Download URL: littlebigbrain-0.8.1.tar.gz
  • Upload date:
  • Size: 119.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for littlebigbrain-0.8.1.tar.gz
Algorithm Hash digest
SHA256 9a9cbb11db1bcc54f631f914513196af30326f7d401ffbdc75243fb7f230242b
MD5 19723e591f8657bfd297b029c5b24647
BLAKE2b-256 9e908077b24ef4ef431018606f781eb077c19c9a1be8d21f47769aa2e25a18ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for littlebigbrain-0.8.1.tar.gz:

Publisher: release.yml on littlebigbrains/lbb-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file littlebigbrain-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: littlebigbrain-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 103.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for littlebigbrain-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7b235cd1a3026fe253ed500bd1a14216509a3b45352e67f838bc6f4f6d97affb
MD5 79aa7bd7dfd70751a2ed1179bc9f9b99
BLAKE2b-256 abe97673b5700538e141010682a8fb2daa1946ce3cccbd91fc7dea4b071c5f3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for littlebigbrain-0.8.1-py3-none-any.whl:

Publisher: release.yml on littlebigbrains/lbb-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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