You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This project implements RockTalk, a ChatGPT-like chatbot webapp using Streamlit for the frontend, LangChain for the logic, and Amazon Bedrock as the backend. The webapp provides a user-friendly interface for interacting with various Language Models (LLMs) with advanced features for customization and data input.
Key Features
π¬ Real-time chat with streaming responses and interactive controls
π Powerful search across chat history and session metadata
π Customizable templates for different use cases
πΌοΈ Support for text and image inputs
π Complete session management with import/export
β³ Temporary sessions for quick, unsaved interactions
βοΈ Fine-grained control over LLM parameters
π§ Extended thinking support for Claude 3.7 Sonnet
Getting Started
Requirements
Python >=3.11 (only 3.11 tested, but >3.11 expected to work as well)
AWS Account with Bedrock model access
Supported models: Claude, Titan, etc.
Quick Start (Recommended)
Install RockTalk using pip:
pip install rocktalk
Configure AWS credentials:
RockTalk uses AWS SDK for Python (Boto3). Configure credentials via:
New Chat: Click "New +" in the sidebar to start a new chat session. This session will be saved automatically.
New Temporary Chat: Click
history_toggle_off
(temporary session) in the sidebar to start a temporary chat session that will not be saved unless you choose to save it. These are ideal for spontaneous conversations where you might not need to keep a record.
Saving a Temporary Session:
If you wish to save a temporary session, click "Save Temporary Session" in the sidebar.
Provide a session title and confirm. You can use LLM to auto-generate a title.
The session will then be saved to your session history and managed like any other session.
New Chat with Template: Click
playlist_add
(quick template selector) to use a specific template when creating a new chat or temporary chat.
Start typing in the chat input box.
Use β/β + β« to stop streaming responses.
Managing Sessions
Switch sessions: Click any session in the sidebar.
Rename: Click the pencil icon next to session title.
Delete: Click the trash icon next to session.
Duplicate: Use the duplicate button in session settings.
Export: Download session as JSON from session settings.
Import: Upload previously exported session files.
Saving Temporary Sessions: Temporary sessions can be saved at any time by clicking "Save Temporary Session" in the sidebar.
Working with Templates
Create template: Save current session settings as template.
Apply template: Select template when creating new chat.
Modify templates: Edit existing templates in template manager.
Token budget is "up to" - model may use less if appropriate
Monitor token usage in session settings to optimize costs
Troubleshooting
AWS credentials setup.
Common error messages.
Performance tips.
Logging:
Set ROCKTALK_LOG_LEVEL=DEBUG for detailed logging.
Logs are stored in ~/.rocktalk/logs/rocktalk.log.
View logs in the application settings panel.
Advanced Setup
File Locations
RockTalk stores its data in the following locations:
Main configuration directory: ~/.rocktalk/
Database file: ~/.rocktalk/chat_database.db
Log files: ~/.rocktalk/logs/
Environment file (optional): ~/.rocktalk/.env
Environment Variables
RockTalk can be configured using the following environment variables:
ROCKTALK_DIR: Main configuration directory (default: ~/.rocktalk/)
ROCKTALK_DEFAULT_MODEL: Override default Bedrock model
ROCKTALK_LOG_LEVEL: Set logging level (default: "INFO")
Available levels: "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"
DEBUG: Detailed information for debugging
INFO: General operational information
WARNING: Warning messages for potential issues
ERROR: Error messages for serious problems
CRITICAL: Critical errors that may prevent operation
Development Details
Technology Stack
Frontend: Streamlit
Backend: Amazon Bedrock
Logic/Integration: LangChain
Storage: SQLite
Storage
The storage interface is designed to be extensible for future additional storage options. The storage engine interface:
Stores all chat sessions, messages, and templates.
Supports full-text search and complex queries.
By default:
Chat database is stored in chat_database.db in the project root directory ~/.rocktalk. This file is auto-generated with preset templates and necessary tables to meet the interface requirements. The database file can be deleted at any time and it will be regenerated.
The database contents can be modified manually using any SQLite editing tool (e.g., SQLite3 Editor extension in VS Code). This can be useful for debugging application issues or just to see how your data is stored.
Security Note: While default database file permissions restrict access to just the current user (read/write only), the database file itself is not encrypted. Exercise caution with sensitive information as the contents remain readable if the file is accessed.
Chat Templates
RockTalk implements a flexible template system that allows users to save and reuse chat configurations. Templates include:
Configuration Persistence: Save complete LLM configurations including model parameters, system prompts, and other settings.
Template Management:
Create templates from successful chat sessions.
Save frequently used configurations.
Import/Export templates for sharing.
Duplicate and modify existing templates.
Easy Application:
Apply templates to new sessions.
Quick-start conversations with predefined settings.
Consistent experience across multiple chats.
Template Metadata:
Custom names and descriptions.
Unique template IDs for tracking.
Configuration versioning.
Use Cases:
Specialized chat personas.
Task-specific configurations.
Team-wide standardized settings.
Experimental configurations.
Extended thinking templates for complex reasoning tasks.
Implementation Status
β Set up the development environment
β Create the basic Streamlit interface for RockTalk
β Integrate LangChain with Bedrock backend
β Implement core chat functionality
β Add session management features
β Develop LLM settings customization
π§ Integrate support for various input types
β Implement advanced features (editing, multiple sessions)
β Add extended thinking support for Claude 3.7 models
"Trim History" option to remove all session messages after selected message.
Advanced search capabilities β
Keyword search across all sessions and messages.
Filter by titles and/or content.
Date range filtering.
Configurable search logic (match ALL terms or ANY term).
Batch operations on search results.
Rich search results with message previews.
Comprehensive Session Management β
Session Organization with visibility control.
Temporary Sessions for quick, unsaved interactions.
Session Creation, Navigation, and Customization.
Session Management with copy, import/export, and cleanup options.
Chat Templates β
Create templates from existing sessions.
Save and load predefined configurations.
Custom template naming and descriptions.
Share configurations across sessions.
Extended thinking templates for complex reasoning tasks.
Edit previous chat messages within a session β
Edit any user message in history.
Automatic regeneration of subsequent response.
Stop and modify streaming responses.
Customizable LLM settings β
Adjust model parameters (temperature, top_p, etc.).
Model selection with advanced provider filtering.
System prompt customization.
Extended thinking settings for Claude 3.7.
Save configurations as templates.
Support for multiple input types
Text input β
Image input β
PDF documents β³
Folder structures β³
ZIP files β³
Web links / Internet access β³
Additional connectors (e.g., databases, APIs) β³
Development Setup
If you want to contribute to RockTalk development:
Clone the repository:
git clone https://github.com/tahouse/rocktalk.git
cd rocktalk
Create a Python environment (optional):
conda create -n rock 'python=3.11'
conda activate rock
Install development dependencies:
pip install -e ".[dev]"
Install pre-commit hooks:
pre-commit install
Run the development version:
streamlit run rocktalk/app.py
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to:
Follow the existing code style.
Update tests as appropriate.
Update documentation as needed.
Add yourself to CONTRIBUTORS.md (if you'd like).
By contributing to this project, you agree that your contributions will be licensed under the Apache License 2.0.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
About
RockTalk is a private, locally running chatbot using Streamlit for the frontend, LangChain for the logic, and Amazon Bedrock as the backend. The webapp provides a user-friendly interface for interacting with various Language Models (LLMs) with advanced features for customization and data input, while keeping your session data local and private.