Persona-(session) and RAG-based intake SDK (prototype)
Project description
ai_intake_bot
Minimal SDK for persona-based and RAG-based conversational intake.
What this repo is: an SDK, not an app. No data persistence, no auth system, no background jobs.
Quickstart (persona mode with FakeLLM)
-
Create a venv and install deps:
python -m venv .venv source .venv/bin/activate python -m pip install -U pip pip install -e ".[dev]"
-
Example (persona, expert_eval) using the FakeLLM for deterministic results:
from ai_intake_bot.core.engine import IntakeBot
from ai_intake_bot.core.llm import FakeLLM
bot = IntakeBot(
mode="persona",
template="expert_eval",
persona="expert_reviewer",
problem={"description": "Cannot login", "emotional_state": "frustrated", "goals": ["restore access"]},
api_key="sk-test",
qdrant_url=None,
qdrant_api_key=None,
files=None,
selection_probability=0.5,
enable_alerts=True,
extra_system_prompt=None,
)
bot.set_llm(FakeLLM())
out = bot.handle("Please evaluate this scenario")
print(out)
Using a real LLM (OpenAI)
-
This SDK supports optional, explicit use of a real LLM. It will only call an LLM when you inject one via
IntakeBot.set_llm()(so the default is safe for local development and tests). -
To use OpenAI's API, set
OPENAI_API_KEYin your environment and then:
from ai_intake_bot.core.engine import IntakeBot
from ai_intake_bot.core.llm import OpenAIChatLLM
llm = OpenAIChatLLM(model="gpt-4o")
bot = IntakeBot(...)
bot.set_llm(llm)
response = bot.handle("Ask something")
Security model: the SDK never persists secrets to disk. OpenAIChatLLM expects
OPENAI_API_KEY to be set and will not log its value.
RAG with Qdrant (dev-friendly)
-
The RAG engine uses a
LocalVectorStoreby default; if you provideqdrant_urlwhen constructingIntakeBot, the RAG engine will upload chunks to the configured Qdrant instance (ephemeral collection by default) and ground responses on the retrieved documents. -
For a full integration with LangChain and Qdrant follow the example in
scripts/run_qdrant_integration.sh(this script starts a Qdrant Docker container and runs the Qdrant integration test). The integration requireslangchain_qdrant,langchain_openai, and an OpenAI key for embeddings.
Demos
-
scripts/demo_persona_openai.py— Runs anexpert_evalpersona using OpenAI (requiresOPENAI_API_KEY). -
scripts/demo_rag_qdrant.py— Ingests a PDF using LangChain'sPyPDFLoader, splits withRecursiveCharacterTextSplitter, embeds withOpenAIEmbeddings, writes to Qdrant (requiresQDRANT_URLandOPENAI_API_KEY), and performs a retrieval + chat. -
scripts/demo_tts.py— Demonstrates the TTS adapters. Prefers macOSsay, falls back topyttsx3, and ultimately to a no-op adapter.
Run demos (examples):
-
Persona demo (OpenAI):
export OPENAI_API_KEY=<your_key> python scripts/demo_persona_openai.py
-
RAG demo (Qdrant + LangChain):
export OPENAI_API_KEY=<your_key> export QDRANT_URL=http://localhost:6333 python scripts/demo_rag_qdrant.py
-
TTS demo (local):
python scripts/demo_tts.py
Security reminder: never commit real API keys. Use .env files for local testing and set CI secrets for integration runs.
AI_INTake
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_intake_bot-0.1.1.tar.gz.
File metadata
- Download URL: ai_intake_bot-0.1.1.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6e8ea81909e5bb49d25219e06f5ed1a30553f79216e56d8b5996381a9f7571f
|
|
| MD5 |
966f5f8e717da77337edf6ededc75d92
|
|
| BLAKE2b-256 |
73942b97dd7bc572c5d13b3a5835831acbbf9bbaf10672c35426b8ae56da6bb1
|
File details
Details for the file ai_intake_bot-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ai_intake_bot-0.1.1-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29fde0a5aec01b1715ccddb7b286398ce41234c0805dff46bc50fdca0eddac9f
|
|
| MD5 |
f3cda383fc06376278d71e717acd6742
|
|
| BLAKE2b-256 |
c115999ec3e3ba967068a07bb3524ee4330249fa45d50ff04a6c048ed58b8009
|