Skip to main content

PyPI version Python versions License Downloads

RostaingChain Logo

🧠 RostaingChain v2.0.4

Enterprise-grade Agentic Hybrid RAG framework for building autonomous AI agents, multi-agent systems, enterprise search, workflow automation and production LLM applications.

Autonomous Agents | Multi-Agent Teams | Real-Time Sound Device VAD | SLA Monitoring | DLP & PII Masking | Model Context Protocol (MCP) | NoSQL-like SQL Bootstrapping

📋 Overview

RostaingChain v2.0.4 is an industry-ready, high-performance, and resilient Python framework designed to build secure, autonomous, and hybrid Retrieval-Augmented Generation (RAG) systems. It seamlessly bridges the gap between private local compute (Ollama, local vector stores) and cloud-scale engines (OpenAI, Claude, Gemini, Groq, Mistral, Zilliz, Weaviate), featuring a robust real-time file watcher, advanced database connector pollers, and a unified multi-agent team control plane.

🚀 Key Architectural Pillars

1. Unified Multi-Agent Teams (RostaingTeam)

Orchestrate multiple specialized agents working collaboratively in three distinct coordination modes:

  • Route Mode: A history-aware master router analyzes the query, resolves conversational pronouns, and delegates the task to the best-suited expert agent.
  • Coordinate Mode: Simultaneously queries all workers in parallel using multi-threaded execution, then synthesizes their findings into a single, cohesive, and cross-referenced executive summary.
  • Sequential Mode: Pipeline tasks sequentially through agents, building upon the outputs of previous steps.

2. Autonomous Data Analyst & SQL Auto-Bootstrapping

When connected to structured data sources (CSV, Excel, Parquet, SQL, NoSQL), the agent executes local, sandboxed Python code to calculate exact statistics, perform advanced math (correlations, hypothesis testing), and save visualization charts directly to public/graph/.

  • Zero-Config SQL Bootstrapping: Like MongoDB, if you connect to a non-existent database in MySQL, PostgreSQL, or MS SQL Server, the framework automatically logs into the system master, programmatically builds the database container on the fly, and instantiates the schemas with no manual DBA intervention required.

3. Enterprise DLP Security (RGPD & SOC2 Compliant)

Protects sensitive personal identifiable information (PII) from leaking to external LLM APIs:

  • Inbound Tokenization: Replaces raw PII (emails, SSNs, credit cards, salaries, etc.) with reversible cryptographic tokens (e.g., [ANON_EMAIL_1]) before sending them to the cloud.
  • Outbound Redaction / De-anonymization:
    • Redact Mode (Censorship): Replaces tokens in the final output with clean, permanent placeholders (e.g., [Email Redacted]).
    • De-anonymization Mode (Restore): Safely restores original values only for authorized local users.

4. Advanced SLA Monitoring & LLM-as-a-Judge Evaluation

Tracks system performance and data alignment automatically.

  • Observability: Logs response latency, conversation turns, and exact data sources used.
  • LLM-as-a-Judge: Programs parallel evaluators to grade Retrieval (Precision@K, Recall@K, MRR) and Generation (Groundedness, Faithfulness, Relevance) metrics.
  • Independent Column Persistence: Saves these metrics directly as flat, queryable columns inside your SQL (SQLite, PostgreSQL, MySQL, MSSQL) or NoSQL (MongoDB) databases, fully decoupled from local files.

5. High-Throughput Performance Engine

  • Semantic Cache: Employs local vector databases to instantly serve identical or semantically similar queries (0 ms API latency).
  • Auto-Context Scaling: Bypasses chunking entirely for small documents (CVs, invoices, short reports under 15,000 characters) to ensure 100% information retrieval, while using an advanced, non-fragmenting SemanticChunker for massive datasets.
  • Just-In-Time (JIT) Lazy Loading: Heavy scientific or multimedia libraries (like PyGame, PyTorch, Matplotlib, Seaborn, or Unstructured) are loaded only on demand, achieving sub-0.1s startup times.

6. Conversational Voice AI with Interruption Handling

  • Real-time VAD: Grabs mic streams and transcribes them using local Whisper.
  • Sustained Speech Debouncer: During TTS playback, a background thread monitors the microphone. If it hears continuous human speech (exceeding a calibrated threshold for 0.3s), it instantly stops the speaker, handles the interruption, and listens to the user.

7. Big Data Management

Implemented intelligent chunking (adaptive chunking), streaming ingestion, pagination/batching, and native DataFrame support (Pandas, Polars) to eliminate data truncation and optimize vectorization for large volumes. Includes memory management and disk/streaming fallback.

8. SKILLS System (Claude Code-like)

A robust modular skill architecture where each capability includes SKILL.md instructions, executable scripts, references, and assets. Features integrated, non-blocking file system hot-reloading: creating, modifying, or deleting skills on disk is automatically detected and dynamically injected into the active agent's system prompt on-the-fly, requiring zero server restarts. Fully compatible with dynamic tool execution and multi-agent orchestration.

9. Automation (n8n-like) & CLI Control

RostaingAgent can now plan tasks, execute autonomous workflows, act as an orchestrator, and control the PC via a secure shell (with placeholders for full integration).

10. Enterprise Cross-Platform & Headless Compatibility (Windows, macOS, Linux)

RostaingChain is engineered to run consistently across all major operating systems (Windows, macOS, Linux) and headless cloud architectures (Docker, Kubernetes). The framework employs unified path abstractions to resolve directory separator differences automatically, and features graceful degradation guardrails—such as falling back to silent text logging when audio hardware or local OCR engines are absent on remote servers. This ensures your agentic workflows deploy reliably on local workstations or enterprise cloud nodes with zero configuration friction.

🛠 Environment Setup

To ensure stability and avoid dependency conflicts, we strongly recommend using a virtual environment. RostaingChain requires Python 3.9 or higher.

Option 1: Using Python venv (Standard)

This is the built-in method. Choose the commands based on your Operating System:

On Windows:

# 1. Create the environment
python -m venv venv

# 2. Activate it
venv\Scripts\activate

On macOS / Linux:

# 1. Create the environment
python3 -m venv venv

# 2. Activate it
source venv/bin/activate

Option 2: Using Conda (Recommended for Data Science)

Conda is often more robust for managing complex dependencies like pyodbc or chromadb.

# 1. Create the environment with a specific Python version
conda create -n rostaing_env python=3.12 -y

# 2. Activate the environment
conda activate rostaing_env

📦 Installation & System Dependencies

Once your environment is activated, you can install the framework.

Install the core framework:

pip install rostaingchain

To run high-concurrency relational databases or local vector stores, install their respective packages:

# For Milvus Cloud
pip install "pymilvus[milvus_lite]" "langchain-milvus"

# For Weaviate Cloud (WCS)
pip install "weaviate-client" "langchain-weaviate"

🔑 Environment Configuration (.env)

Create a .env file at your project root to manage your API keys, databases, and alerting SMTP servers securely:

  1. Create a file named .env in your project root.
  2. Add your API keys following this format:

To use remote LLMs (like OpenAI, Groq, Claude, Gemini, Grok, Mistral, DeepSeek) without hardcoding your credentials in the code, RostaingChain supports environment variables.

# --- LLM API KEYS ---

# Standard Providers
OPENAI_API_KEY=...
ANTHROPIC_API_KEY=...
GOOGLE_API_KEY=...

# Fast Inference Providers
GROQ_API_KEY=...
MISTRAL_API_KEY=...

# OpenAI-Compatible Providers
DEEPSEEK_API_KEY=...
XAI_API_KEY=...

HF_TOKEN=...

# --- SLA & BDD METRICS RECORDING (SQL & NoSQL) ---
# SQL Database (Supports SQLite, PostgreSQL, MySQL, MSSQL, Oracle)
# The framework automatically bootstraps (creates) the database on the server if it does not exist.

# 1. MySQL (using pymysql driver)
EVAL_SQL_CONNECTION=mysql+pymysql://root:password@localhost:3306/eval_database

# 2. PostgreSQL (using psycopg driver)
# EVAL_SQL_CONNECTION=postgresql+psycopg://postgres:password@localhost:5432/eval_database

# 3. Microsoft SQL Server (using pymssql driver)
# EVAL_SQL_CONNECTION=mssql+pymssql://sa:password@localhost:1433/eval_database

# 4. Oracle Database (using cx_oracle driver)
# EVAL_SQL_CONNECTION=oracle+cx_oracle://system:password@localhost:1521/?service_name=eval_database

# 5. SQLite (using native sqlite driver with automatic WAL mode enabled)
# Dynamically configures Write-Ahead Logging (WAL) to allow simultaneous reads and writes.
# EVAL_SQL_CONNECTION=sqlite:///C:/Users/username/Desktop/rostaingchain/memory_cache/eval_database.db

# --- NoSQL DATABASE RECORDING (MongoDB) ---
# Automatically persists evaluation runs natively into your local or cloud MongoDB instances.

# 1. Local MongoDB Connection
EVAL_NOSQL_CONNECTION=mongodb://127.0.0.1:27017/

# 2. Cloud MongoDB Atlas Connection (Secure TLS)
# EVAL_NOSQL_CONNECTION=mongodb+srv://username:password@cluster-name.mongodb.net/


# --- ENTERPRISE SMTP EMAIL ALERTING ---
# Servers (Optional — uses the default value if not specified)
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587

SENDER_EMAIL=alerts-sender@gmail.com
SENDER_PASSWORD=...  # Google App Password
ALERT_RECIPIENT_EMAIL=admin-audit@yourcompany.com # Alert recipient
  1. Load the keys at the start of your script using python-dotenv:
pip install python-dotenv

⚡ Quick Start

1. The "Chat with Anything" Mode

Simply point data_source to a file, a folder, a database, or a URL.

from rostaingchain import RostaingAgent

# Initialize the Agent
agent = RostaingAgent(
    llm_model="llama3.2", # Use local Ollama and ensure you ran 'ollama pull llama3.2' in your terminal
    data_source="/path/to/data", # Watches this folder
    auto_update=True             # Real-time ingestion
)

# Chat
response = agent.chat("What are the main topics in these documents?")
print(response)

2. 🚀 Quick Start: Interactive Console Agent

import os
from dotenv import load_dotenv
from rostaingchain import RostaingAgent

# 1. Load environment variables (Make sure your .env file is set up)
load_dotenv()

def main():
    # 2. Initialize the Agent
    # RostaingAgent automatically handles data profiling, vector indexing, and memory.
    agent = RostaingAgent(
        llm_model="gpt-4o",
        llm_provider="openai",
        llm_api_key=os.getenv("OPENAI_API_KEY"),
        data_source="data/products.xlsx",  # Path to your CSV/SQL/Excel/Image/...
        vector_db="faiss",                 # High-performance vector storage
        reset_db=False,                    # Set to True to re-index the data
        memory=True,                       # Keep track of the conversation context
        stream=True
    )

    print("\n" + "="*40)
    print("🤖 RotaingChain AGENT: CONSOLE MODE")
    print("Type your question below or 'q' to exit.")
    print("="*40 + "\n")

    try:
        while True:
            # 3. Capture User Input
            user_input = input("👤 You: ").strip()

            # Exit condition
            if user_input.lower() in ["q", "quit", "exit"]:
                print("\nShutting down... Goodbye! 👋")
                break

            if not user_input:
                continue

            # 4. Generate & Display Response
            print("🤖 Agent:", end=" ", flush=True)
            
            try:
                response = agent.chat(user_input)
                print(response)
            except Exception as e:
                print(f"\n❌ Error: {str(e)}")

    except KeyboardInterrupt:
        print("\n\n[System] Session interrupted by user. Closing... 👋")
    finally:
        print("Program closed.")

if __name__ == "__main__":
    main()

🛠️ Advanced Usage

1. YouTube Video Analysis

Extract transcripts and metadata automatically.

from rostaingchain import RostaingAgent
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()

agent = RostaingAgent(
    llm_model="openai/gpt-oss-120b",
    llm_provider="groq",
    data_source="https://www.youtube.com/watch?v=3mTK0vYYXA4",
    vector_db="faiss",
    stream=True
)

# Streaming response for better UX
generator = agent.chat("Summarize this video in 3 bullet points.")

for token in generator:
    print(token, end="", flush=True)

2. Data Security (DLP)

Protect sensitive information from being displayed.

from rostaingchain import RostaingAgent

agent = RostaingAgent(
    llm_model="llama3.2",
    data_source="bank_statements.pdf",
    # Enable Security
    security_filters=["IBAN", "BIC", "PHONE", "EMAIL", "MONEY", "CREDIT_CARD"] # Optional: DLP Security. Set to True for ALL filters, False to disable, or a list to select specific fields.
)

response = agent.chat("Give me the IBAN of the supplier.")
print(response)
# Output: "The IBAN is [Protected IBAN bank details]."

3. Working with DataFrames (Pandas)

import pandas as pd
from rostaingchain import RostaingAgent
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()

df = pd.read_csv("titanic.csv") 

# Direct Memory Ingestion
agent = RostaingAgent(
    llm_model="gpt-4o",
    data_source=df,
    vector_db="chroma" 
)

print(agent.chat("What is the average age of passengers?"))

4. Chat with a Website (Web RAG)

from rostaingchain import RostaingAgent
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()

# Direct Memory Ingestion
agent = RostaingAgent(
    llm_model="gpt-4o",
    llm_provider="openai",
    data_source="https://en.wikipedia.org/wiki/Artificial_intelligence",
    vector_db="chroma",  # Options: 'faiss', 'qdrant' or 'chroma'
)

response = gent.chat("Give me a summary.")
print(response)

5. Chat with an image (RAG)

from rostaingchain import RostaingAgent

# Direct Memory Ingestion
agent = RostaingAgent(
    llm_model="llama3.2", # Ensure you ran 'ollama pull llama3.2' in your terminal
    llm_provider="ollama", # Runs 100% locally on your machine for privacy
    embedding_model="nomic-embed-text", # Ensure you ran 'ollama pull nomic-embed-text' in your terminal
    img4rag=True,
    data_source="invoice.jpg", # Supports: .png, .jpeg, .bmp, .tiff, .webp
    memory=True, # Enable conversation history
    vector_db="chroma",  # Options: 'faiss', 'qdrant'
)

response = gent.chat("Give me a summary.")
print(response)

6. Reporting Chatbot

from rostaingchain import RostaingAgent
from dotenv import load_dotenv
import pandas as pd

# Load environment variables from .env file
load_dotenv()

df = pd.read_csv("C:/Users/Rostaing/Desktop/db/ds_salaries.csv")

# Direct Memory Ingestion
agent = RostaingAgent(
    llm_model="gpt-4o",
    llm_provider="openai",
    data_source=df,
    vector_db="chroma",  # Options: 'faiss', 'qdrant', 'chroma', etc.
    auto_update=True,
    skills_dir="./skills",
    max_memory_turns=5,

    # --- ULTRA-ADVANCED ENGINES ACTIVATION ---
    semantic_chunking=True,    # Intelligent Semantic Segmentation
    semantic_cache=True,       # Local Semantic Cache (0 ms latency for duplicate requests)
    reranking=True,            # Re-scoring local MMR + Cosine Similarity
    self_corrective_rag=True,  # Intelligent Prompt Rewriting for Failed Searches
    memory=True,
    canvas="word",
    alert_email=os.getenv("ALERT_RECIPIENT_EMAIL"),
    eval_pipeline=True,
    eval_sql_connection=os.getenv("EVAL_SQL_CONNECTION"),
    # security_filters= ["EMAIL", "PHONE", "MONEY", "DATE"],
    # redact_outbound=False,
    eval_nosql_connection=os.getenv("EVAL_NOSQL_CONNECTION"),
    stream=True
)

# Console-Based Interaction Loop
while True:
    try:
        # Retrieve user input
        user_input = input("\nYou : ")
        
        # Check if the user wants to quit (q or Q)
        if user_input.strip().lower() == 'q':
            print("\nClosing the console. Goodbye!")
            break
        
        # Ignore empty inputs
        if not user_input.strip():
            continue
        
        print("Agent : ", end="", flush=True)
        
        # Send the question to the agent
        response = agent.chat(user_input)
        
        # Stream the response
        for token in response:
            print(token, end="", flush=True)            
        
        # Line break at the end of the response
        print() 

    except KeyboardInterrupt:
        # Handle Ctrl+C shutdown
        print("\n\nInterruption detected (Ctrl+C). Goodbye!")
        sys.exit(0)
        
    except Exception as e:
        # Handle potential errors (API issues, etc.) to prevent the loop from crashing
        print(f"\nAn error occurred: {e}")

7. Chat with a file (Streaming RAG)

from rostaingchain import RostaingAgent
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()

# Direct Memory Ingestion
agent = RostaingAgent(
    llm_model="gpt-4o",
    llm_provider="openai",
    data_source="your_file.txt", # Supports: .pdf, .docx, .doc, .xlsx, .xls, .pptx, .ppt, .html, .htm, .xml, .epub, .md, .json, .log, .py, .js, .sql, .yaml, .ini, etc.
    vector_db="chroma",  # Options: 'faiss' or 'chroma'
    stream=True
)

response = gent.chat("Give me a summary.")

# Real-time display loop
for token in response:
    # Prints every token as soon as it arrives (ChatGPT-like effect)
    print(token, end="", flush=True)

8. Connecting to Databases (SQL / NoSQL)

RostaingAgent uses a Polling Watcher to monitor database changes.

from rostaingchain import RostaingAgent
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()

# PostgreSQL Configuration
db_config = {
    "type": "sql",
    "connection_string": "postgresql+psycopg2://your_username:your_password@localhost:5432/your_database",
    "query": "SELECT * FROM sales" # Your query
}

agent = RostaingAgent(
    llm_model="gpt-4o",
    llm_provider="openai",
    data_source=db_config,
    poll_interval=30, # Check for DB changes every 30 seconds
    reset_db=False,     # Start with a fresh index
    vector_db="faiss"
)

print(agent.chat("What is the total revenue for Q1?"))
# Thanks to Deep Profiling, the AI will know the exact sum/mean/max.

⚡ Advanced Code Examples

1. Zero-Config Collaborative Multi-Agent Team with Shared Memory & Cache

This example demonstrates how to orchestrate a team of three agents sharing a single, unified database and memory. We enable Parallel Execution to query the workers concurrently, Semantic Cache to avoid redundant API costs, and Auto-Context Scaling for data ingestion.

import os
from dotenv import load_dotenv
from rostaingchain import RostaingAgent, RostaingTeam

load_dotenv()

# Shared corporate data source
data_file = "C:/Users/Rostaing/Desktop/db/data.pdf"

# Initialize Agent 1: Financial Expert
agent_finance = RostaingAgent(
    name="Financial_Expert",
    role="Senior Auditor. You analyze and extract budgets, financial forecasts, and costs.",
    data_source=data_file,
    shared_team_db=True,      # Shares the vector store with the team
    semantic_chunking=True,   # Segment data by semantic boundaries
    reset_db=True,            # Build the initial database once
    memory=True,
    semantic_cache=True,
    eval_pipeline=True
)

# Initialize Agent 2: Legal Expert
agent_legal = RostaingAgent(
    name="Legal_Expert",
    role="Corporate Attorney. You analyze contractual clauses, liabilities, and legal timelines.",
    data_source=data_file,
    shared_team_db=True,      # Uses the exact same database as Agent 1 (No re-indexing!)
    semantic_chunking=True,
    reset_db=False,           # Reuse the existing database
    memory=True,
    semantic_cache=True,
    eval_pipeline=True
)

# Initialize the RostaingTeam
team = RostaingTeam(
    agents=[agent_finance, agent_legal],
    mode="coordinate",        # Coordinate mode: query workers, then synthesize
    parallel=True             # EXTREME SPEED: Query both workers in parallel!
)

print("\n🚀 RostaingTeam is online. Asking team for consolidated analysis...")
query = "Evaluate this Business Plan: summarize the project, list the financial costs, and extract any legal liabilities."
response = team.chat(query)

print(f"\nFinal Consolidated Response:\n{response}")

2. Conversational Voice AI with Real-Time Interruption & SLA Logging

This script initializes a conversational loop. When the user speaks, it performs a RAG query on their local data, generates the response, reads it aloud, and listens for voice interruptions.

import os
import sys
import time
from dotenv import load_dotenv
from rostaingchain import RostaingAgent

load_dotenv()

# Initialize the RAG Agent with voice input, output, and evaluation pipeline
agent = RostaingAgent(
    llm_model="gpt-4o",
    llm_provider="openai",
    data_source="C:/Users/Rostaing/Desktop/db/sleep_health_dataset.csv",
    
    # --- VOICE CAPABILITIES ---
    input_voice=True,         # STT active (Whisper)
    output_voice=True,        # TTS active (gTTS)
    voice_language="fr",      # Constrains Whisper to French (No background noise language confusion)
    
    # --- MONITORING & EVALUATION ---
    eval_pipeline=True,       # Auto-saves flat metrics to SQL / NoSQL defined in .env
    self_corrective_rag=True, # Auto-corrects pronunciations or typos
    memory=True
)

print("\n" + "="*50)
print("🎙️ Real-time Conversational Voice AI Agent Active!")
print("Speak freely. You can interrupt the agent's voice at any time.")
print("Press Ctrl+C to terminate.")
print("="*50 + "\n")

# Start the infinite background listening loop
agent.voice_agent.start_full_duplex()

try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    agent.voice_agent.stop()
    print("\nSession closed. Goodbye!")

3. Desktop Canvas Automation (RAG to justified Word Report / Excel Sheet)

This example shows how to direct the agent's output into a fully styled Word Document with justified text paragraphs and embedded tables, and open it natively on the user's desktop.

import os
from dotenv import load_dotenv
from rostaingchain import RostaingAgent

load_dotenv()

agent = RostaingAgent(
    llm_model="gpt-4o",
    llm_provider="openai",
    data_source="C:/Users/Rostaing/Desktop/db/sleep_health_dataset.csv",
    save_graph=True,          # Automatically save generated charts to public/graph/
    
    # --- CANVAS ENGINE ---
    # Options: "word" (justified report), "excel" (native spreadsheet), "powerpoint" (slides), "text" (plain log)
    canvas="word",
)

# This query will make the agent run python code, plot a chart, 
# write a beautifully justified Word Report, insert the chart natively,
# close any existing Word lock, save it to the Desktop, and open it!
query = "Plot the distribution of Sleep Duration across professions and summarize the statistics."
response = agent.chat(query)
print("Task Completed.")

4. Zero-Config Model Context Protocol (MCP) filesystem integration

Connect your agent to a secure local filesystem server using the open-source MCP standard in one line of configuration:

import os
from dotenv import load_dotenv
from rostaingchain import RostaingAgent

load_dotenv()

agent = RostaingAgent(
    llm_model="gpt-4o",
    data_source="C:/Users/Rostaing/Desktop/db/doc.docx",
    
    # --- REGISTER MCP SYSTEM TOOLS ---
    # Automatically boots up the Node server and registers: read_file, write_file, list_directory
    mcp_tools=[
        {
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-filesystem", "C:/Users/Rostaing/Desktop"]
        }
    ]
)

# The agent can now use the filesystem tools to write its findings to a new file!
query = "Read the main points of doc.docx and write a short summary inside a new file on my Desktop named RAG_Summary.txt"
agent.chat(query)

🗄️ Database Configuration Examples

To connect RostaingAgent to a database, create a dictionary db_config and pass it to the data_source parameter.

SQL Databases (via SQLAlchemy)

PostgreSQL

pg_config = {
"type": "sql",
"connection_string": "postgresql+psycopg2://your_username:your_password@localhost:5432/your_database",
"query": "SELECT * FROM sales" # Your query
}

MySQL

mysql_config = {
    "type": "sql",
    "connection_string": "mysql+pymysql://my_username:your_password@localhost:3306/your_database",
    "query": "SELECT * FROM orders WHERE status = 'shipped'" # Your query
}

Oracle

# Requires Oracle Instant Client installed
# Ensure you ran 'pip install cx-oracle' in your terminal
oracle_config = {
    "type": "sql",
    "connection_string": "oracle+cx_oracle://your_username:your_password@localhost:1521/?service_name=ORCL",
    "query": "SELECT * FROM employees" # Your query
}

SQLite

sqlite_config = {
    "type": "sql",
    "connection_string": "sqlite:///C:/path/to/your_data.db",
    "query": "SELECT * FROM invoices" # Your query
}

Microsoft SQL Server

# Option 1

mssql_config = {
    "type": "sql",
    "connection_string": "mssql+pymssql://your_username:your_password@localhost:1433/your_database",
    "query": "SELECT top 100 * FROM customers" # Your query
}

# Option 2 (Recommended)
# We build a valid SQLAlchemy URL.
# We use quote_plus to handle special characters like \ in the server name.

host = r"your_host" # Example: DESKTOP-9K6BSF8\SQLEXPRESS
db_name = "your_database"
username = "your_username"
password = "your_password"

connection_string = f"mssql+pyodbc://{username}:{password}@{host}/{db_name}?driver=ODBC+Driver+17+for+SQL+Server&TrustServerCertificate=yes"
mssql_config = {
    "type": "sql",
    "connection_string": connection_string,
    "query": "SELECT * FROM customers" # Your query
}

NoSQL Databases

MongoDB

mongo_config = {
    "type": "mongodb",
    "uri": "mongodb://localhost:27017/",
    "db": "ecommerce_db",
    "collection": "products",
    "limit": 50 # Optional: Limit the number of documents to ingest
}

Neo4j (Graph)

neo4j_config = {
    "type": "neo4j",
    "uri": "bolt://localhost:7687",
    "user": "neo4j",
    "password": "your_password",
    "query": "MATCH (p:Person)-[:WROTE]->(a:Article) RETURN p.name, a.title LIMIT 20" # Your query
}

Usage Example

agent = RostaingAgent(
    llm_model="gpt-4o",
    data_source=mysql_config, # Pass the dictionary here.
    poll_interval=3600,         # Watch for changes every minute
    reset_db=False
)

☁️ Cloud Vector Databases (Qdrant, Milvus & Weaviate)

In production enterprise deployments, local embedded vector databases are discouraged due to memory and platform-locking constraints. RostaingChain supports connecting natively to enterprise-grade managed cloud vectors.

1. Milvus (Zilliz Cloud)

To connect your agent to Zilliz Cloud (the managed service for Milvus), set vector_db="milvus", and pass your Zilliz Endpoint as the db_connection_string and your Zilliz Token as the llm_api_key.

from rostaingchain import RostaingAgent

agent = RostaingAgent(
    vector_db="milvus",
    # Pass your managed Zilliz Cloud endpoint URI
    db_connection_string="https://in03-xxxxxxxxxxx.zillizcloud.com:443", 
    # Pass your Zilliz Cloud API cluster token
    llm_api_key="your-zilliz-cloud-token",                             
    data_source="C:/path/to/corporate_document.pdf"
)

2. Weaviate (Weaviate Cloud Services - WCS)

To connect your agent to Weaviate Cloud Services (WCS), set vector_db="weaviate", and pass your WCS Cluster URL as the db_connection_string and your WCS API Key as the llm_api_key.

from rostaingchain import RostaingAgent

agent = RostaingAgent(
    vector_db="weaviate",
    # Pass your Weaviate Cloud Services cluster URL
    db_connection_string="https://your-cluster-name.weaviate.network", 
    # Pass your Weaviate WCS API cluster Key
    llm_api_key="your-wcs-api-key",                                  
    data_source="C:/path/to/corporate_document.pdf"
)

3. Qdrant Cloud

To connect your agent to Qdrant Cloud, set vector_db="qdrant", and pass your Qdrant Cloud Cluster URL as the db_connection_string and your Qdrant Cloud API Key as the llm_api_key.

from rostaingchain import RostaingAgent

agent = RostaingAgent(
    vector_db="qdrant",
    # Pass your Qdrant Cloud cluster URL (usually listening on port 6333)
    db_connection_string="https://your-cluster-id.aws.qdrant.io:6333", 
    # Pass your Qdrant Cloud API access Key
    llm_api_key="your-qdrant-cloud-api-key",                                  
    data_source="C:/path/to/corporate_document.pdf"
)

💡 Auto-Fallback Note: If you initialize your agent with vector_db="milvus" or vector_db="weaviate" but do NOT provide a valid cloud db_connection_string, RostaingChain's internal factory will automatically fallback to Chroma locally to ensure zero-crash operations.

Use a custom LLM (e.g., vLLM on another server)

from rostaingchain import RostaingAgent
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()

# Direct Memory Ingestion
agent = RostaingAgent(
    llm_model="my-finetuned-model",
    llm_provider="custom",
    llm_base_url="http://192.168.1.50:8000/v1", # Your vLLM server
    llm_api_key="token-if-needed",
    memory=True,
    vector_db="chroma",  # Options: 'faiss', 'chroma' or 'qdrant'
    data_source="/path/to/your_file.pdf", # Supports: .txt, .docx, .doc, .xlsx, .xls, .pptx, .ppt, .html, .htm, .xml, .epub, .md, .json, .log, .py, .js, .sql, .yaml, .ini, .jpg, .png, .jpeg, .bmp, .tiff, .webp, SQL/NoSQL Databases, Web(link), etc.
    reset_db=True, # Start with a fresh index
    temperature=0,
    top_k=0.1,
    top_p=1,
    max_tokens=1500,
    stream=True
)

response = gent.chat("Give me a summary.")

# Real-time display loop
for token in response:
    # Prints every token as soon as it arrives (ChatGPT-like effect)
    print(token, end="", flush=True)

Universal Intelligence: Switching LLM Providers

A. Use DeepSeek (the cheaper GPT-4 alternative)

agent = RostaingAgent(
    llm_model="deepseek-chat", # Auto-detection
    provider="deepseek",
    # If the key is not in the .env:
    llm_api_key="sk-your-deepseek-key" 
)

B. Use Groq (Lightning speed – 500 tokens/s)

agent = RostaingAgent(
    llm_model="openai/gpt-oss-120b",
    llm_provider="groq" # Force the provider to ensure it
)

C. Use Claude Sonnet (Best for coding)

agent = RostaingAgent(
    llm_model="claude-4.5-sonnet",
    llm_provider="anthropic" # Force the provider to ensure it
)

D. Use Gemini 3 Pro (Google)

agent = RostaingAgent(
    llm_model="gemini-3-pro-preview",
    llm_provider="google" # Force the provider to ensure it
)

E. Use Mistral (via Groq for Speed)

agent = RostaingAgent(
    llm_model="mistral-large-2512",
    llm_provider="mistral" # Force the provider for ultra-fast inference
)

F. Use Grok (xAI)

agent = RostaingAgent(
     llm_model="grok-4.1",
    llm_provider="grok" # Automatically configures the xAI API base_url
)

G. Use OpenAI (GPT-4o)

agent = RostaingAgent(
    llm_model="gpt-4o",
    llm_provider="openai" # Automatically uses OPENAI_API_KEY from your .env file
)

H. Use Local LLMs (Ollama)

agent = RostaingAgent(
    llm_model="llama3.2",  # Ensure you ran 'ollama pull llama3.2' in your terminal
    llm_provider="ollama", # Runs 100% locally on your machine for privacy
    # llm_base_url="http://localhost:11434" # Optional: Default URL
)

I. Using LM Studio (Local & Private) Ensure LM Studio is running and the Local Server is turned on (default port 1234).

agent = RostaingAgent(
    llm_provider="lmstudio",
    llm_model="local-model", # The name doesn't matter much for LM Studio
    # You don't even need to provide base_url or api_key, it automatically knows to use http://localhost:1234/v1 !
    data_source="C:/Users/rostaing/Desktop/db/doc.docx"
)

J. Using vLLM (High-Performance Local) Ensure your vLLM server is running on port 8000.

agent = RostaingAgent(
    llm_provider="vllm",
    llm_model="meta-llama/Llama-3-8b-Instruct", # The specific model loaded in vLLM
    # Automatically defaults to http://localhost:8000/v1
    data_source="C:/Users/rostaing/Desktop/db/doc.docx"
)

K. Using Hugging Face (Cloud Inference API) (Note: Some large models on Hugging Face require a Pro subscription for their API, but thousands of smaller models are free).

import os

agent = RostaingAgent(
    llm_provider="huggingface",
    llm_model="mistralai/Mistral-7B-Instruct-v0.3", # Any compatible Hugging Face Hub model ID
    llm_api_key=os.getenv("HF_TOKEN"), # Your Hugging Face Access Token
    data_source="C:/Users/rostaing/Desktop/db/doc.docx"
)

📝 Key Parameters Explained

  • stream=True: This is essential for User Experience (UX). Instead of waiting for the entire response to be generated (which can take time for long summaries), the method returns a Python Generator. You must iterate over it (using a for loop) to display tokens in real-time, exactly like ChatGPT.

  • output_format: This parameter enforces the structure or style of the LLM's response. It accepts three values:

    • "text" (Default): A standard, conversational plain text response.
    • "json": Forces the LLM to output a valid JSON object. Extremely useful if you are building an API or need to parse the result programmatically.
    • "cartoon": Makes the LLM generate responses in a playful, cartoon-style tone with simplified language and expressive descriptions. Useful for educational content, storytelling, or kid-friendly interfaces.
  • vector_db: Defines the local vector storage engine. RostaingChain currently supports two robust, file-based options:

    • "chroma": Uses Chroma vector database (lightweight, developer-friendly, optimized for local-first embedding storage and retrieval).
    • "faiss": Uses Facebook AI Similarity Search (highly efficient for CPU).
    • "qdrant\": Uses Qdrant vector database (open-source, written in Rust, optimized for fast similarity search with payload filtering and horizontal scaling).

⚙️ Configuration Parameters

For the full list of configuration parameters, place your cursor inside the RostaingAgent constructor in VS Code and press Ctrl + Space to trigger autocomplete/IntelliSense.

Parameter Type Default Description
RostaingAgent Core
llm_model str "llama3.2" Name of the active LLM (e.g., "gpt-4o", "claude-3-5-sonnet", "llama3").
llm_provider str "auto" LLM provider: "openai", "anthropic", "google", "groq", "mistral", "deepseek", "grok", "vllm", "lmstudio", "huggingface", or "ollama".
llm_api_key str None Custom API Key (optional if configured in your .env file).
llm_base_url str None Custom API endpoint URL (for local vLLM, LM Studio, or proxy endpoints).
embedding_model str "BAAI/bge-small-en-v1.5" Model used for vectorizing documents into embeddings.
embedding_source str "fastembed" Embeddings library provider: "fastembed", "openai", "huggingface", or "ollama".
llm_prompt_cost float None Custom prompt/input token rate (in USD per 1,000,000 tokens) to dynamically override default model prices.
llm_completion_cost float None Custom completion/output token rate (in USD per 1,000,000 tokens) to dynamically override default model prices.
vector_db str "chroma" Vector Database engine: "chroma", "faiss", "qdrant", "milvus", "weaviate", or "supermemory".
data_source str/dict/obj "./data" Unified source path: local files, folder directories, Pandas/Polars DataFrames, Web URLs, or SQL/NoSQL connection configurations.
Automation & Watchers
auto_update bool True Activates real-time, non-blocking background folder Watchers (using watchdog) or database Polling.
poll_interval int 60 Interval in seconds between consecutive database or web polling runs.
reset_db bool False Wipes and resets both the local vector store and the semantic cache on startup.
memory bool False Enables persistent multi-turn conversational history (saves to ./memory_cache).
save_graph bool False Saves autonomously generated analyst charts directly to public/graph/.
save_logs bool False Writes secure, timestamped JSON logs to public/logs/.
Generation Settings
temperature float 0.1 Creativity/determinism of the model (0.0 = analytical, 1.0 = creative).
max_tokens int None Strict limit on the maximum generated response tokens.
top_p float None Nucleus sampling probability threshold.
top_k int None Top-K vocabulary filtering threshold.
seed int None Integer seed to guarantee deterministic, reproducible outputs.
stream bool False Enables token-by-token streaming generator output.
cache bool True Enables fast in-memory compilation caching.
output_format str "text" Enforces response styles: "text", "json", "markdown", or "cartoon".
Agent Identity
role str "Helpful Assistant" Defines the precise persona and authority profile of the agent.
goal str "Assist the user..." The primary mission of the agent.
instructions str "Answer concisely." Strict behavioral constraints or custom formatting rules.
reflection bool False Enables "Step-by-step" chain-of-thought planning and internal critique before answering.
Company Context
company_name str None Organization name for custom context grounding.
company_description str None Overview of the company's industry and baseline operations.
company_url str None Reference URL for web-informed queries.
Security & PII (DLP)
security_filters list/bool None List of target PII data types to protect (e.g. ["EMAIL", "PHONE", "MONEY"]) or True for all.
redact_outbound bool True True to permanently censor sensitive data to [Redacted]. False to temporarily mask only API-bound data, safely restoring original values for the final output.
user_profile str None Role-Based Access Control (RBAC) profile (e.g. "Intern", "Admin"). Admins automatically bypass DLP redactions.
user_id str None Unique ID for multi-tenant billing and auditing.
session_id str None Unique ID to separate distinct user chat session logs.
agent_id str None Unique ID to audit the specific agent instance performance.
system_prompt str None Full, advanced override of the underlying system prompt.
SLA Monitoring & Evaluation
eval_pipeline bool False Enables parallel LLM-as-a-Judge evaluations on every run. Automatically auto-activates if connection keys are detected in your .env.
eval_sql_connection str None Relational database URI to save metrics natively as flat columns (Supports SQLite, PostgreSQL, MySQL, MSSQL, Oracle).
eval_nosql_connection str None MongoDB connection URI to save metrics natively as flat document fields.
Advanced Agentic Features
shared_team_db bool False Shares a single synchronized database and memory across all agents inside a RostaingTeam, preventing data duplication and context loss.
semantic_chunking bool False Uses a dynamic, list-aware sentence similarity model to chunk data, keeping headings and lists strictly grouped.
semantic_cache bool False Employs a local FAISS semantic cache to instantly serve recurring or highly similar queries with 0 ms API latency.
reranking bool False Performs a local matrix Cosine Similarity re-scoring on retrieved context chunks, retaining only the top 4 highly relevant sources.
self_corrective_rag bool False Invokes an automatic query-reformulation loop if initial retrieval is poor, correcting typos, phonetic transcriptions, and spelling mistakes.
Conversational Voice AI
input_voice bool False Enables microphone capturing and local, multilingual Whisper transcription.
output_voice bool False Enables natural, multilingual speech synthesis (gTTS) with automatic language detection.
voice_language str None Constrains both the voice input and output to a strict language code (e.g., "fr", "en") to prevent background noise translation glitches.
Tools & Office Canvas
mcp_tools list None List of Model Context Protocol server configurations (e.g. {"command": "npx", "args": [...]}) to dynamically mount external system tools.
canvas str None Destination format for reporting: "word" (justified report), "excel" (spreadsheets), "powerpoint" (slides), or "text" (plain logs). Opens the application natively on Desktop on run.

👥 RostaingTeam Configuration Parameters

Parameter Type Default Description
agents list Required List of fully instantiated RostaingAgent objects representing the specialized team members.
mode str "route" Orchestration mode for the team: "route" (context-aware router), "coordinate" (collaborative synthesis), or "sequential" (linear pipeline).
ask_other_team_members bool True Intercepts prompts to enable autonomous background inter-agent collaboration, peer-to-peer queries, and delegation.
parallel bool False Enables high-performance parallel, multi-threaded execution (using ThreadPoolExecutor) of all worker agents in coordinate mode to cut latency.

📊 SLA Evaluation & Audit Database Schema

When eval_pipeline=True is enabled and database connection strings are present in your .env, RostaingChain automatically and independently persists the following flat, indexed metrics into your SQL (SQLite, PostgreSQL, MySQL, MS SQL Server, Oracle) and NoSQL (MongoDB) databases:

Database Field / Column Type (SQL) Type (NoSQL) Description
id INTEGER (PK) ObjectId Unique auto-incrementing identifier for the run.
timestamp VARCHAR(50) String Exact date and time when the interaction took place.
user_id VARCHAR(100) String Unique identifier of the user who initiated the request.
sources_used TEXT String Comma-separated list of document source files read by the RAG.
model_name VARCHAR(100) String Name of the active LLM model used for the run (e.g., gpt-5.5, claude-3-5-sonnet).
query VARCHAR(1000) String The raw text or voice question submitted by the user.
ai_response TEXT String The exact response generated by the AI (supports heavy Base64 charts).
latency_seconds FLOAT Double End-to-end execution time in seconds.
precision_at_k FLOAT Double Retrieval metric: Ratio of relevant retrieved documents in Top K.
recall_at_k FLOAT Double Retrieval metric: Proportion of retrieved relevant items in Top K.
mrr FLOAT Double Mean Reciprocal Rank: Positional quality of the first relevant document.
groundedness FLOAT Double Judge score (0.00-1.00): Is the answer strictly based on the context?
faithfulness FLOAT Double Judge score (0.00-1.00): Is the response 100% truthful (no hallucinations)?
relevance FLOAT Double Judge score (0.00-1.00): Does the response fully and directly answer the query?
resolution_rate INTEGER Int32 Business metric: 1 for successfully resolved task, 0 for knowledge gap.
time_saved_seconds FLOAT Double Business metric: Estimated human work seconds saved (300s baseline - latency).
"est_user_satisfaction" FLOAT Double Estimated user satisfaction score based on generation quality.
prompt_tokens INTEGER Int32 Exact count of input tokens sent to the LLM.
completion_tokens INTEGER Int_32 Exact count of output tokens generated by the LLM.
total_tokens INTEGER Int_32 Total token volume (prompt + completion) consumed.
cost_usd FLOAT Double Real-time billing cost calculated dynamically in USD based on model rates.

🛡️ Security Filters & PII Masking

When security_filters is active, the framework tokenizes data before sending it to any local or cloud LLM, and processes it on exit according to redact_outbound:

Data type Redact Mode (True) Reversible Mode (False)
EMAIL [Email Redacted] Restores original email (e.g. user@email.com)
PHONE [Phone Redacted] Restores original phone number
ID_NUM [Id Num Redacted] Restores original ID
PASSPORT [Passport Redacted] Restores original passport
SSN [Ssn Redacted] Restores original SSN
ADDRESS [Address Redacted] Restores original address
POSTAL [Postal Redacted] Restores original postal code
BIC [Bic Redacted] Restores original BIC
IBAN [Iban Redacted] Restores original IBAN
VAT_ID [Vat Id Redacted] Restores original VAT
CREDIT_CARD [Credit Card Redacted] Restores original card
MONEY [Money Redacted] Restores original money amount
CRYPTO [Crypto Redacted] Restores original crypto wallet
IP_ADDR [Ip Addr Redacted] Restores original IP
MAC_ADDR [Mac Addr Redacted] Restores original MAC
API_KEY [Api Key Redacted] Restores original API key
DATE [Date Redacted] Restores original date
SALARY [Salary Redacted] Restores original salary
BIRTHDATE [Birthdate Redacted] Restores original birthdate
MEDICAL [Medical Redacted] Restores original medical term

💡 Pro Tip: VSCode Autocomplete

Don't memorize the parameters! If you are using VSCode, you can view the complete list of available options for RostaingAgent instantly.

Just place your cursor inside the parentheses and press:

Ctrl + Space

This will trigger IntelliSense and display all configuration arguments (like memory, security_filters, temperature, cache, etc.) with their descriptions.

🔗 Useful Links

Download files

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

Source Distribution

rostaingchain-2.0.4.tar.gz (255.1 kB view details)

Uploaded Source

Built Distribution

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

rostaingchain-2.0.4-py3-none-any.whl (243.4 kB view details)

Uploaded Python 3

File details

Details for the file rostaingchain-2.0.4.tar.gz.

File metadata

  • Download URL: rostaingchain-2.0.4.tar.gz
  • Upload date:
  • Size: 255.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for rostaingchain-2.0.4.tar.gz
Algorithm Hash digest
SHA256 1105a8b52e41e0788e40939ed9249f6e38ad9a48214fa2ed1f6c909832b80a9d
MD5 c612fcb3d14646aaff4e38c8c6b3e72d
BLAKE2b-256 ca66ffc944f8eceaa9cf79d55e8996aaffad3a89cc4bd96c15513b3fcdb2b71f

See more details on using hashes here.

File details

Details for the file rostaingchain-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: rostaingchain-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 243.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for rostaingchain-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9dc79affa52f3c0cd05c3ae887fe68e5626d48f89211aad47ec371181f21cf03
MD5 c7113e00b20c231cf43acc6b8da04d6f
BLAKE2b-256 50bb1c9dc6212412db81fac5690c5b4b6e86a537b9e158ad7bfcb1b3a255ce13

See more details on using hashes here.

Release history Release notifications | RSS feed

2.0.5

2 files

This release

2.0.4 This release

2 files

2.0.3

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page