Skip to main content

Role-based, data-scoped LLM persona templates + router for production analytics copilots.

Project description

omnismart-personas

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.

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

omnismart_personas-0.1.0.tar.gz (7.6 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.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for omnismart_personas-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d7157f9ddd5f1d346c825a230bbe6586b0c7c8284b561dca07e15ab8725a0aae
MD5 86bf11bf2afaaf45bd267163bef0a38b
BLAKE2b-256 5e77da9a23220326d3d9fe768c70873d46d2f9520440a751edbf352e53e6bb7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for omnismart_personas-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ede694cc36c1f0f398d3df220ceae2b20f833dcead4df865e7a8daee2e5e40c9
MD5 69ea7735258be7b0a6ae20be12e8d814
BLAKE2b-256 795b716e3796274ea47edb78320b4166542926881d16e4ce8e33189ebf4a54f9

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