Chatboti
A simple chatbot example demonstrating how to build an AI agent that uses MCP (Model Context Protocol) to query a RAG database. Includes CLI, web UI, and Docker deployment options.
What It Does
An LLM-powered agent answers questions by searching a simple speaker database using semantic search. The agent uses MCP tools to find the best matching speaker for any topic.
Quick Start
Prerequisites
- Python 3.13+
uvpackage manager
Installation
uv sync
Configuration
Create a .env file:
CHAT_SERVICE=openai
OPENAI_API_KEY=your-api-key-here
Supported services: openai, bedrock
Three Ways to Run
1. Web UI
uv run chatboti ui-chat
Opens a browser with an interactive chat interface.
2. CLI Chat
uv run chatboti cli-chat
Interactive terminal chat with the agent.
3. Docker
uv run chatboti docker
Builds and runs a Docker container. The Dockerfile is configured for CI/ECS deployment with:
- Port
80 - Health endpoint at
/health
AWS Credentials for Bedrock:
When using CHAT_SERVICE=bedrock or EMBED_SERVICE=bedrock, CLI automatically:
- Extracts AWS credentials from your
AWS_PROFILE(or default profile) - Injects them into Docker container as environment variables
- Validates credentials before building image
No manual credential configuration needed - just ensure your AWS profile is configured locally.
How It Works
User Query → Agent (LLM) → MCP Tools → RAG Database → Response
- Agent - An LLM that decides when to use tools
- MCP Server - Provides tools via Model Context Protocol
- RAG Service - Semantic search using embeddings on speaker data
Project Structure
chatboti/
├── cli.py # CLI commands
├── agent.py # LLM agent with MCP client
├── mcp_server.py # MCP server with RAG tools
├── rag.py # Embeddings and semantic search
├── server.py # FastAPI web server
├── index.html # Web UI
└── data/ # Speaker database (CSV + embeddings)
API Endpoints
/- Web chat interface/chat- Chat API endpoint/health- Health check/info- Service configuration
Environment Variables
| Variable | Description |
|---|---|
CHAT_SERVICE |
LLM provider: openai or bedrock (required) |
EMBED_SERVICE |
Embedding provider (defaults to CHAT_SERVICE) |
OPENAI_API_KEY |
OpenAI API key |
AWS_PROFILE |
AWS profile for Bedrock |
Model Configuration
The project supports multiple LLM and embedding models configured in summary-evals/models.json:
Chat Models:
- OpenAI: GPT-4o, GPT-4o-mini, GPT-4-turbo, GPT-3.5-turbo
- Bedrock: Amazon Nova Pro
- Ollama: Llama 3.2
- Groq: Llama 3.3-70b-versatile
Embedding Models:
- OpenAI: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002
- Ollama: nomic-embed-text, mxbai-embed-large, all-minilm
- Bedrock: Amazon Titan Embed Text v2 & v1, Cohere Embed v3
Recent Improvements
Test Suite Refactoring
- Reduced Mock Usage: Replaced mock-based tests with integration tests using real services
- Consolidated Test Utilities: Created shared
conftest.pywith deterministic embed client - Parameterized Tests: Added unified search tests for both FAISS and HDF5 backends
- Improved Service Creation: Abstracted RAG service creation with unified
create_rag_service()function
Storage Backends
The project supports multiple storage backends for flexibility:
- FAISS + JSON: Standard multi-file format (
.faiss+.json) - HDF5: Single-file format (
.h5) with compression and partial loading
Both backends are fully tested and supported in production.
Metadata
Release files for chatboti 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chatboti-0.2.2.tar.gz | 1.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chatboti-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.8 MB
Release files / chatboti-0.2.2.tar.gz
| Download URL | chatboti-0.2.2.tar.gz |
|---|---|
| Size | 1.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09570e0a23dd5777cfe4566c6fce7d8300287a6dbcaab670cfb3bbbbbf5b0b14
|
|
BLAKE2b-256 checksum How to use checksums |
50f311d2b00a36ecdf52938cf838894b19bdf44f4aea42e2feac9faa00e64669
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.5
|
Release files / chatboti-0.2.2-py3-none-any.whl
| Download URL | chatboti-0.2.2-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec76730fde15a89b8b612c41b7d74eb82a8cee0804f893f6beac913dc7da46f1
|
|
BLAKE2b-256 checksum How to use checksums |
719cd9ee43ebf44341204492eca6cd90ac99a6321110fe085137c80cc87016ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.5
|