This project follows a clean, modular architecture:
src/chat_ui_streamlit/
├── core/ # Core configuration and constants
│ ├── config.py # Application configuration
│ └── constants.py # Application constants
├── ui/ # User interface components
│ ├── components/ # Reusable UI components
│ │ ├── chat_component.py
│ │ ├── header_component.py
│ │ ├── home_component.py
│ │ └── sidebar_component.py
│ ├── pages/ # Streamlit pages
│ │ └── CAT_Deep_Research.py
│ ├── styles/ # CSS styling
│ └── Homepage.py # Main entry point
└── tests/ # Test suite
- Core Module: Contains configuration, constants, and core business logic
- UI Module: Houses all user interface components and pages
- Components: Reusable UI elements that can be imported across pages
- Pages: Individual Streamlit pages representing different application views
- Styles: CSS files for custom styling
A modern, AI-powered chat interface built with Streamlit and Google Gemini, designed for intelligent conversations and deep research capabilities.
- Modern UI/UX: Clean, responsive interface built with Streamlit
- AI-Powered Chat: Integration with Google Gemini for intelligent conversations
- Deep Research: Advanced research capabilities with structured analysis
- Component-Based Architecture: Modular design for maintainability and scalability
- Environment Configuration: Secure API key management with Pydantic settings
- Real-time Interactions: Seamless chat experience with instant responses
- Python 3.11+
- Google Gemini API Key
- Search Engine (Exa.ai Key)
-
Clone the repository
git clone https://github.com/Bang-tv259/Chatbot-streamlit.git cd Chat-UI-Streamlit -
Install dependencies
# Using pip pip install -e . # Or using uv (recommended) uv sync --all-packages
-
Environment Configuration
Create a
.envfile in the project root:CHAT_UI_GEMINI_API_KEY=your_gemini_api_key_here CHAT_UI_SEARCH_ENGINE_API_KEY=your_search_engine_api_key_here (exa.ai)
-
Run the application
streamlit run src/chat_ui_streamlit/ui/Homepage.py
-
Access the application
Open your browser and navigate to
http://localhost:8501
- streamlit: Web application framework
- pydantic: Data validation and settings management
- pydantic-settings: Settings management for Pydantic
- google-generativeai: Google Gemini AI integration
- exa-py: Search Engine
- pytest: Testing framework
- mypy: Static type checker
- ruff: Fast Python linter and code formatter
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Write comprehensive tests for new features
- Update documentation for any API changes
- Use type hints for all function signatures
- Initial release with core chat functionality
- Google Gemini integration
- Search Engine integration
- Component-based UI architecture
- Environment-based configuration
- Streamlit Cloud deployments: https://cat-chatbot.streamlit.app/
This project is licensed under the MIT License - see the LICENSE file for details.
- Streamlit for the amazing web framework
- Google Gemini for AI capabilities
- Exa.ai for search engine
- Pydantic for robust data validation
For support, email cat@cat.com or open an issue on GitHub.
Built with ❤️ by Cat | Powered by Streamlit & Google Gemini

