Added my contributions to community-contributions-RAG
This commit is contained in:
67
week5/community-contributions/tourist-guide/README.md
Normal file
67
week5/community-contributions/tourist-guide/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Tourist Assistant
|
||||
|
||||
An interactive voice-enabled tourist guide that provides information about cities, landmarks, and destinations worldwide. This application uses OpenAI's GPT models for text generation and speech features for a natural conversation experience, along with RAG capabilities and Google Places API integration for real-time attraction information.
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
|
||||
- Text-based chat interface for asking questions about tourist destinations
|
||||
- Voice input capability through microphone recording
|
||||
- Audio responses using OpenAI's text-to-speech technology
|
||||
- Clean, responsive user interface with Gradio
|
||||
- RAG (Retrieval-Augmented Generation) system using PDF knowledge base
|
||||
- Google Places API integration for real-time information about attractions
|
||||
- Set current location for contextual queries
|
||||
- Quick access to nearby attractions information
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.9+
|
||||
- OpenAI API key
|
||||
- Google Places API key (optional, for location search features)
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone this repository
|
||||
2. Install the required dependencies:
|
||||
```
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
3. Create a `.env` file in the project directory with your API keys:
|
||||
```
|
||||
OPENAI_API_KEY=your_openai_api_key_here
|
||||
GOOGLE_PLACES_API_KEY=your_google_places_api_key_here
|
||||
```
|
||||
4. (Optional) Add PDF files to the `knowledge-base/` directory to enhance the assistant's knowledge about specific locations
|
||||
|
||||
## Running the Application
|
||||
|
||||
Start the application by running:
|
||||
|
||||
```bash
|
||||
python tourist-assistant.py
|
||||
```
|
||||
|
||||
The interface will automatically open in your default web browser. If it doesn't, navigate to the URL shown in the terminal (typically http://127.0.0.1:7860/).
|
||||
|
||||
## Usage
|
||||
|
||||
1. Type your question about any tourist destination in the text box
|
||||
2. Or click the microphone button and speak your question
|
||||
3. The assistant will respond with text and spoken audio
|
||||
4. Set your current location using the "Set Location" feature
|
||||
5. Click "Nearby Attractions" to get information about attractions near your current location
|
||||
6. Use the "Refresh Knowledge Base" button to reload PDFs in the knowledge-base directory
|
||||
7. Use the "Clear" button to start a new conversation
|
||||
|
||||
## Technologies Used
|
||||
|
||||
- OpenAI GPT-4o Mini for chat completions
|
||||
- OpenAI Whisper for speech-to-text
|
||||
- OpenAI TTS for text-to-speech
|
||||
- Langchain for RAG implementation
|
||||
- FAISS for vector storage
|
||||
- Google Places API for location-based attraction information
|
||||
- Gradio for the web interface
|
||||
- pydub for audio processing
|
||||
11
week5/community-contributions/tourist-guide/requirements.txt
Normal file
11
week5/community-contributions/tourist-guide/requirements.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
openai>=1.0.0
|
||||
gradio>=4.0.0
|
||||
python-dotenv>=1.0.0
|
||||
pydub>=0.25.1
|
||||
pypdf>=4.0.0
|
||||
langchain>=0.1.0
|
||||
langchain-openai>=0.0.5
|
||||
langchain-community>=0.0.13
|
||||
faiss-cpu>=1.7.4
|
||||
tiktoken>=0.5.2
|
||||
requests>=2.31.0
|
||||
92
week5/community-contributions/tourist-guide/style.css
Normal file
92
week5/community-contributions/tourist-guide/style.css
Normal file
@@ -0,0 +1,92 @@
|
||||
/* Styling for Tourist Assistant */
|
||||
|
||||
.container {
|
||||
max-width: 850px;
|
||||
margin: auto;
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
padding: 20px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-size: 2.5rem !important;
|
||||
margin-bottom: 0.5rem;
|
||||
color: #2563EB;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
text-align: center;
|
||||
font-size: 1.1rem !important;
|
||||
margin-bottom: 1.5rem;
|
||||
color: #4B5563;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
margin-top: 1rem;
|
||||
color: #6B7280;
|
||||
font-size: 0.9rem !important;
|
||||
}
|
||||
|
||||
.mic-container {
|
||||
text-align: center;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
|
||||
.clear-button {
|
||||
max-width: 120px;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.chatbot-container {
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
/* Styling for the microphone button */
|
||||
#mic-btn {
|
||||
width: 150px !important;
|
||||
margin: 0 auto !important;
|
||||
}
|
||||
|
||||
#mic-btn .wrap {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* Make the mic button more prominent and attractive */
|
||||
#mic-btn button.record-button {
|
||||
width: 60px !important;
|
||||
height: 60px !important;
|
||||
border-radius: 50% !important;
|
||||
background-color: #3B82F6 !important;
|
||||
color: white !important;
|
||||
font-size: 24px !important;
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
justify-content: center !important;
|
||||
margin: 0 auto !important;
|
||||
border: none !important;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1) !important;
|
||||
transition: all 0.2s ease !important;
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
|
||||
#mic-btn button.record-button:hover {
|
||||
transform: scale(1.05) !important;
|
||||
box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15) !important;
|
||||
}
|
||||
|
||||
/* Hide the audio controls */
|
||||
#mic-btn .audio-controls {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Hide the audio playback */
|
||||
#mic-btn audio {
|
||||
display: none !important;
|
||||
}
|
||||
BIN
week5/community-contributions/tourist-guide/travel.jpg
Normal file
BIN
week5/community-contributions/tourist-guide/travel.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
Reference in New Issue
Block a user