Readme added
This commit is contained in:
parent
b5015a8c4c
commit
0989faa561
1 changed files with 162 additions and 0 deletions
162
README.md
Normal file
162
README.md
Normal file
|
|
@ -0,0 +1,162 @@
|
||||||
|
# ChatSBT
|
||||||
|
|
||||||
|
ChatSBT is a full-stack chat application that allows users to interact with multiple AI models through a web interface. The application features real-time streaming responses, chat history persistence, and support for various language models.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Real-time chat with multiple AI models
|
||||||
|
- Server-Sent Events (SSE) for streaming responses
|
||||||
|
- Chat history persistence
|
||||||
|
- Responsive web interface built with Svelte
|
||||||
|
- Docker support for easy deployment
|
||||||
|
|
||||||
|
## Technology Stack
|
||||||
|
|
||||||
|
### Backend
|
||||||
|
- **Python 3.11+**
|
||||||
|
- **Starlette** - ASGI framework for building asynchronous web applications
|
||||||
|
- **Langchain** - Framework for developing applications with LLMs
|
||||||
|
- **Masonite ORM** - Database ORM for Python
|
||||||
|
- **SQLite** - Default database (configurable)
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
- **Svelte 5** - Reactive UI framework
|
||||||
|
- **Vite** - Next-generation frontend tooling
|
||||||
|
- **DaisyUI** - Tailwind CSS components
|
||||||
|
- **Marked** - Markdown parser
|
||||||
|
|
||||||
|
### Infrastructure
|
||||||
|
- **Deno** - JavaScript/TypeScript runtime for frontend build
|
||||||
|
- **uv** - Python package installer and resolver
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Before you begin, ensure you have the following installed:
|
||||||
|
- Python 3.11 or higher
|
||||||
|
- Deno 2.4 or higher
|
||||||
|
- uv (Python package installer)
|
||||||
|
- Docker (optional, for containerized deployment)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Backend Setup
|
||||||
|
|
||||||
|
1. Install Python dependencies using uv:
|
||||||
|
```bash
|
||||||
|
uv sync
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Set up environment variables:
|
||||||
|
Create a `.env` file in the project root with the necessary configuration:
|
||||||
|
```env
|
||||||
|
# Database configuration
|
||||||
|
DB_CONNECTION=sqlite
|
||||||
|
DB_DATABASE=chatsbt.db
|
||||||
|
|
||||||
|
# AI Provider API keys (add as needed)
|
||||||
|
OPENAI_API_KEY=your_openai_api_key
|
||||||
|
ANTHROPIC_API_KEY=your_anthropic_api_key
|
||||||
|
```
|
||||||
|
|
||||||
|
### Frontend Setup
|
||||||
|
|
||||||
|
1. Navigate to the frontend directory:
|
||||||
|
```bash
|
||||||
|
cd frontend
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install frontend dependencies:
|
||||||
|
```bash
|
||||||
|
deno install --allow-scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Build the frontend:
|
||||||
|
```bash
|
||||||
|
deno run build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running the Application
|
||||||
|
|
||||||
|
### Development Mode
|
||||||
|
|
||||||
|
To run the application in development mode with hot reloading:
|
||||||
|
|
||||||
|
1. Start the backend server:
|
||||||
|
```bash
|
||||||
|
uv run app.py
|
||||||
|
```
|
||||||
|
The backend will be available at http://localhost:8000
|
||||||
|
|
||||||
|
2. In a separate terminal, start the frontend development server:
|
||||||
|
```bash
|
||||||
|
cd frontend
|
||||||
|
deno run dev
|
||||||
|
```
|
||||||
|
The frontend will be available at http://localhost:5173
|
||||||
|
|
||||||
|
### Production Mode
|
||||||
|
|
||||||
|
To run the application in production mode:
|
||||||
|
|
||||||
|
1. Build the frontend:
|
||||||
|
```bash
|
||||||
|
cd frontend
|
||||||
|
deno run build
|
||||||
|
cd ..
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Start the backend server:
|
||||||
|
```bash
|
||||||
|
uv run app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
The application will be available at http://localhost:8000
|
||||||
|
|
||||||
|
### Using Docker
|
||||||
|
|
||||||
|
To run the application using Docker:
|
||||||
|
|
||||||
|
1. Build the Docker image:
|
||||||
|
```bash
|
||||||
|
docker build -t chatsbt .
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Run the container:
|
||||||
|
```bash
|
||||||
|
docker run -p 8000:8000 chatsbt
|
||||||
|
```
|
||||||
|
|
||||||
|
The application will be available at http://localhost:8000
|
||||||
|
|
||||||
|
|
||||||
|
## API Endpoints
|
||||||
|
|
||||||
|
The backend exposes the following RESTful API endpoints:
|
||||||
|
|
||||||
|
### Models
|
||||||
|
|
||||||
|
- `GET /api/models` - Retrieve list of available AI models
|
||||||
|
- Response: `{"models": ["model1", "model2", ...]}`
|
||||||
|
|
||||||
|
### Chats
|
||||||
|
|
||||||
|
- `POST /api/chats` - Create a new chat session
|
||||||
|
- Request: `{"model": "model_name"}`
|
||||||
|
- Response: `{"id": "chat_id", "model": "model_name"}`
|
||||||
|
|
||||||
|
- `GET /api/chats/{chat_id}` - Retrieve chat history
|
||||||
|
- Response: `{"messages": [{"role": "human|assistant", "content": "message_text"}, ...]}`
|
||||||
|
|
||||||
|
### Messages
|
||||||
|
|
||||||
|
- `POST /api/chats/{chat_id}/messages` - Send a message to a chat
|
||||||
|
- Request: `{"message": "user_message", "model": "model_name"}`
|
||||||
|
- Response: `{"status": "queued", "message_id": "message_id"}`
|
||||||
|
|
||||||
|
- `GET /api/chats/{chat_id}/stream?message_id={message_id}` - Stream AI response
|
||||||
|
- Server-Sent Events (SSE) endpoint that streams the AI response token by token
|
||||||
|
- Events:
|
||||||
|
- `data: token_content` - Individual tokens from the AI response
|
||||||
|
- `event: done` - Indicates the response is complete
|
||||||
|
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue