Skip to main content

Raglet - RAG starter kit with FastAPI, MCP, and multiple LLM providers

Project description

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+
  • uv package 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
  1. Agent - An LLM that decides when to use tools
  2. MCP Server - Provides tools via Model Context Protocol
  3. 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.py with 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.

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

chatboti-0.2.2.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

chatboti-0.2.2-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

Details for the file chatboti-0.2.2.tar.gz.

File metadata

  • Download URL: chatboti-0.2.2.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.5

File hashes

Hashes for chatboti-0.2.2.tar.gz
Algorithm Hash digest
SHA256 09570e0a23dd5777cfe4566c6fce7d8300287a6dbcaab670cfb3bbbbbf5b0b14
MD5 1429d11471dec2476d4fe48a6b2760f1
BLAKE2b-256 50f311d2b00a36ecdf52938cf838894b19bdf44f4aea42e2feac9faa00e64669

See more details on using hashes here.

File details

Details for the file chatboti-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: chatboti-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.5

File hashes

Hashes for chatboti-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ec76730fde15a89b8b612c41b7d74eb82a8cee0804f893f6beac913dc7da46f1
MD5 b3b74b15959351df58fcef56e65c4a2e
BLAKE2b-256 719cd9ee43ebf44341204492eca6cd90ac99a6321110fe085137c80cc87016ae

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