PraisonAI Chat

Guide to PraisonAI's chat interface with support for 100+ LLMs, internet search, vision models, and custom database configurations

Different User Interfaces:

InterfaceDescriptionURL
UIMulti-Agent Systems Interfacehttps://praison.ai/docs/ui/ui
ChatChat with 100+ LLMs, single AI Agenthttps://praison.ai/docs/ui/chat
CodeChat with entire Codebase, single AI Agenthttps://praison.ai/docs/ui/code

Quick Start

  1. Install PraisonAI Chat:
bash
pip install "praisonai[chat]"
  1. Set up your OpenAI API key:
bash
export OPENAI_API_KEY=xxxxxxxx
  1. Set up your Database URL:
bash
export DATABASE_URL=postgresql+asyncpg://<username>:<password>@<your-db-instance-url>/<database-name>
  1. Launch PraisonAI Chat:
bash
praisonai chat
  1. URL : http://localhost:8084/
  1. Username: admin
  1. Password: admin
  1. Set Model name to be gpt-4o-mini in the settings

Key Features

Internet Search

PraisonAI Chat now includes internet search capabilities using Crawl4AI and Tavily. This feature allows you to retrieve up-to-date information during your conversations, enhancing the AI’s ability to provide current and relevant information.

Vision Language Model (VLM) Support

You can now upload images and ask questions based on them using Vision Language Models. This multimodal support enables visual understanding and analysis within your chat sessions, allowing for a more comprehensive interaction with the AI.

To use this feature:

  1. Upload an image to the chat interface
  2. Ask questions or request analysis based on the uploaded image
  3. The VLM will process the image and provide insights or answers based on its visual content

These new features significantly expand the capabilities of PraisonAI Chat, allowing for more diverse and informative interactions.

External Agents

The PraisonAI Chat interface includes sidebar Switch widgets that allow you to toggle external AI coding CLI tools when they are installed on your system. These toggles enhance your chat experience by adding specialized coding capabilities.

Available External Agents

When the corresponding CLIs are installed, the following toggle switches appear in the sidebar:

  • Claude Code: Toggle for Claude Code CLI integration (file editing, coding tasks)
  • Gemini CLI: Toggle for Google Gemini CLI (analysis, search capabilities)
  • Codex CLI: Toggle for OpenAI Codex CLI (refactoring, optimization)
  • Cursor CLI: Toggle for Cursor CLI (IDE-style development)

How It Works

  1. Automatic Detection: Only CLIs that are installed and available on PATH show toggles
  2. Persistent Settings: Toggle states are saved to Chainlit settings and persist across sessions
  3. Enhanced Capability: Enabled external agents add specialized tools to your chat agent
  4. Workspace Integration: External agents operate within your PRAISONAI_WORKSPACE directory

Usage Example

When you enable external agents and ask coding-related questions, your chat agent can delegate to the appropriate external CLI:

text
User: "Refactor the authentication module in my project"
Assistant: "I'll use Claude Code to analyze and refactor the auth module..."
→ Delegates to Claude Code CLI

Custom Database

PraisonAI Chat supports custom database configurations, allowing you to use PostgreSQL or other databases instead of the default SQLite database. This is particularly useful for production environments or when you need more advanced database features.

PostgreSQL Configuration

To use PostgreSQL as your database backend:

  1. Install Required Dependencies

For local development:

bash
pip install asyncpg

For Replit: – Open the “Packages” tab in the Tools section – Search for and install: – python3-dev – libpq-dev – Then install Python packages:

bash
pip install asyncpg
  1. Set Environment Variables
  2. Add these variables to your .env file or Replit Secrets:
bash
DATABASE_URL=postgresql+asyncpg://<username>:<password>@<your-db-instance-url>/<database-name>
DATABASE_SSL=true  # Required for most cloud PostgreSQL services

For Replit: – Click on “Tools” in the left sidebar – Select “Secrets” – Add your database configuration as DATABASE_URL

  1. Database Tables
  2. The application will automatically:
  3. Detect PostgreSQL connections
  4. Create all necessary tables if they don’t exist
  5. Set up proper indexes and constraints
  6. Handle table creation errors
  1. Cloud Database Services
  2. For Replit, we recommend using cloud database services that provide free tiers:
  3. Neon (Recommended)
  4. Supabase
  5. ElephantSQL

These services provide: – Free PostgreSQL hosting – Automatic SSL configuration – Connection string ready to use

Default Configuration

If no DATABASE_URL is provided, PraisonAI Chat will automatically use SQLite with the following default configuration:

bash
DATABASE_URL=sqlite+aiosqlite:///{HOME}/.praison/database.sqlite

Supported Database Types

PraisonAI Chat supports these database backends for chat storage:

Currently Supported Chat Storage Backends

  • PostgreSQL (recommended for production)
  • postgresql+asyncpg://user:password@host:port/database
  • SQLite (default)
  • sqlite+aiosqlite:///path/to/database.db
  • MongoDB (document database)
  • mongodb://user:password@host:port/database
  • Redis (key-value store with persistence)
  • redis://user:password@host:port/database
  • DynamoDB (AWS managed NoSQL)
  • dynamodb://region/table-name

Cloud Database Services

  • Supabase (PostgreSQL-based)
  • postgresql+asyncpg://user:password@db.supabase.co:5432/postgres
  • Neon (PostgreSQL-based)
  • postgresql+asyncpg://user:password@endpoint.neon.tech:5432/database

Local Docker Development with Live Reload

To facilitate local development with live reload, you can use Docker. Follow the steps below:

  1. Create a Dockerfile.dev:
dockerfile
FROM python:3.11-slim

WORKDIR /app

COPY . .

RUN pip install flask praisonai==2.2.25 watchdog

EXPOSE 5555

ENV FLASK_ENV=development

CMD ["flask", "run", "--host=0.0.0.0"]
  1. Create a docker-compose.yml:
yaml
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    volumes:
      - .:/app
    ports:
      - "5555:5555"
    environment:
      FLASK_ENV: development
    command: flask run --host=0.0.0.0

  watch:
    image: alpine:latest
    volumes:
      - .:/app
    command: sh -c "apk add --no-cache inotify-tools && while inotifywait -r -e modify,create,delete /app; do kill -HUP 1; done"
  1. Run Docker Compose:
bash
docker-compose up

This setup will allow you to develop locally with live reload, making it easier to test and iterate on your code.