Skip to main content

omnismart-personas

License: AGPL v3 Role-based, data-scoped LLM persona templates + router for production analytics copilots. The pattern behind IntelAI's 9-persona RAG copilot, extracted as a tiny, zero-dependency, pure-Python library.

A persona pairs a system prompt with a data-access scope (which business domains it may see) and a sampling temperature — so the same retrieval system can answer through different role-conditioned prompts and data filters ("persona-routed RAG").

Install

pip install omnismart-personas

Use

from omnismart_personas import persona_for_role, scope_records, build_rag_prompt

persona = persona_for_role("cfo")          # → CFO persona (scope: Finance, Growth)
persona.can_access("People")               # False — out of scope

rows = [
    {"category": "Finance", "metric": "gross_margin", "value": 0.42},
    {"category": "People",  "metric": "headcount",    "value": 220},
]
visible = scope_records(persona, rows)     # drops the People row

prompt = build_rag_prompt(
    persona,
    "What drove the Q1 gross-margin change?",
    [f"{r['metric']}={r['value']}" for r in visible],
    language="en",
)
# → send `prompt` to any LLM

API

  • list_personas() → the 9 persona keys
  • get_persona(name) / persona_for_role(role) → a Persona
  • Persona(name, display_name, system_prompt, allowed_tools, data_access, temperature) — immutable; .can_access(domain)
  • scope_records(persona, records, domain_key="category") → records in scope
  • build_system_prompt(persona, *, language="en", extra=None)
  • build_rag_prompt(persona, query, snippets, *, language="en")

Personas: ceo, cfo, cto, coo, chro, esg, risk, analyst, general.

LangChain

Use the personas in any LangChain RAG chain — pip install "omnismart-personas[langchain]":

from omnismart_personas import persona_for_role
from omnismart_personas.langchain import persona_chat_prompt, persona_retriever_filter
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser

persona = persona_for_role("cfo")
prompt = persona_chat_prompt(persona)               # system = scope; {context} + {question}
chain = prompt | ChatOpenAI(model="gpt-4o-mini") | StrOutputParser()

docs = persona_retriever_filter(persona, retriever.invoke(q))   # RBAC on retrieved docs
answer = chain.invoke({"context": "\n".join(d.page_content for d in docs), "question": q})

persona_retriever_filter drops Documents whose metadata["category"] is outside the persona's data_access scope — the same role boundaries, enforced in your LangChain pipeline.

Test

pip install -e ".[test]" && pytest

MIT licensed. Part of the IntelAI project.

⚖️ License & Enterprise Use (Dual-License)

This project is open-source under the AGPL-3.0 License. It is completely free for researchers, students, and open-source hobbyists.

Commercial Use: The AGPLv3 license requires that any proprietary network service (SaaS, internal corporate tools) that uses or modifies this code must also open-source its entire backend.

If you wish to use this framework in a closed-source commercial environment, or require Enterprise features (SSO, Active Directory, Custom VPC Deployment, Strict RBAC), you must obtain a Commercial License. Please reach out to discuss commercial licensing and integration consulting.

📡 Anonymous Telemetry

This project collects anonymous, GDPR-compliant startup pings to help the author understand usage volume and prioritize development.

  • What is collected: Only the project name and a "startup" event timestamp. No PII, no API keys, no user data.
  • How to disable: We respect your privacy. To opt-out, simply set TELEMETRY_OPT_OUT=true in your .env file.

Licensing

This project is licensed under the AGPL-3.0 License.

Commercial Use: If you wish to use this software commercially without releasing your own source code, please see COMMERCIAL.md to obtain a commercial license.

Download files

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

Source Distribution

omnismart_personas-0.1.3.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

omnismart_personas-0.1.3-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file omnismart_personas-0.1.3.tar.gz.

File metadata

  • Download URL: omnismart_personas-0.1.3.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for omnismart_personas-0.1.3.tar.gz
Algorithm Hash digest
SHA256 7aeea6129573916873e3622718b097f7c19cb2ad46751bdc1c38a44475a957ab
MD5 bcc6edbf200409eb29b263d0407f5b86
BLAKE2b-256 3c28640e66df7814e5d82f7126ff44d9c9410a6adbc7b1255659638c6190a034

See more details on using hashes here.

File details

Details for the file omnismart_personas-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for omnismart_personas-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 22971b7573739327e442bdb45732cf55e32fdd16aaada1642e6f1c827a6fa99a
MD5 90f5ef73392b36f1af5c038204ff990d
BLAKE2b-256 87a2566a1b7578687b4ab7b5beaf5c0f8c4fe742bf8438d22c4184e1d6e39659

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 Sentry Error logging StatusPage Status page