SCOUT is an AI-powered personal assistant that aims to empower people through intelligent, adaptive, and personalized support. Built on a foundation of open-source software and community collaboration, SCOUT offers a transparent and user-controlled approach to AI assistance. It serves as a platform for innovation and experimentation, enabling users to push the boundaries of artificial intelligence across various domains.
SCOUT is an innovative AI-powered personal assistant that offers intelligent, scalable, and responsive support for a diverse array of tasks. Utilizing state-of-the-art technologies like transformers, multi-agent systems, and cognitive operations, SCOUT aims to deliver a user experience that is both seamless and highly personalized.
At its heart, SCOUT is about empowering people through artificial intelligence. It's an AI-powered personal assistant that goes beyond just answering questions or performing simple tasks. SCOUT is designed to be a true partner in every sense of the word - an intelligent, adaptive, and personalized system that can help users navigate the complexities of the modern world.
What sets SCOUT apart is its commitment to openness, transparency, and user control. Unlike other AI assistants that operate as black boxes, with opaque algorithms and proprietary codebases, SCOUT is built on a foundation of open-source software and community collaboration. This means that users can see exactly how the system works, contribute to its development, and even customize it to suit their own unique needs and preferences.
SCOUT isn't just a tool for individuals - it's a platform for innovation and experimentation. By providing a flexible, extensible framework for AI development, SCOUT enables researchers, developers, and enthusiasts from all walks of life to push the boundaries of what's possible with artificial intelligence. Whether you're interested in natural language processing, computer vision, robotics, or any other field, SCOUT gives you the tools and the community support you need to turn your ideas into reality.
SCOUT is about something much bigger than just technology. It's about the future of humanity, and the role that artificial intelligence will play in shaping that future. By putting the power of AI into the hands of the people, and by fostering a culture of openness, collaboration, and innovation, SCOUT is laying the groundwork for a world in which humans and machines can work together in harmony - not as master and servant, but as true partners in the quest for knowledge, understanding, and progress.
-
Intelligent Task Management: SCOUT is adept at managing various tasks, such as scheduling, reminders, to-do lists, weather updates, news discovery, programming assistance, language translation, research support, and medical patient assistance. It leverages natural language processing and machine learning to comprehend and accurately respond to user requests.
-
Multi-LLM Provider Platform: SCOUT supports leading model providers including OpenAI, Anthropic, Mistral, Google, and limited HuggingFace support.
-
Multi-TTS/STT Provider Platform: SCOUT currently supports Google TTS and STT, with plans to integrate more providers.
-
Multi-Agent System: SCOUT's future multi-agent system will enable efficient task coordination and distribution among multiple agents, providing parallel processing, fault tolerance, and scalability. Users can currently invoke interactive personas, each with a unique system prompt and toolset. All personas share a base toolset, including internet search via
serp_api
and current time/date retrieval. Future updates will include follow-up actions on search results, such as webpage scraping. -
Responsive Communication: Designed for interactive communication, SCOUT understands and generates natural language responses for a more human-like interaction. Google Cloud Speech provides TTS and STT capabilities, with additional providers to be added.
-
Cognitive Operations: SCOUT's cognitive operations enhance user interaction by learning and storing user preferences and observations, creating a personalized profile that helps models adapt and improve.
- Initialization: Sets up logging, custom exception handling, and starts the application.
- Asynchronous Context Management: Uses
asynccontextmanager
to manage background tasks. - Dynamic Module Loading: Loads different modules based on the current LLM (Large Language Model) and background provider.
- Application Shutdown: Handles cleanup and shutdown tasks.
2. Graphical User Interface (GUI) (gui/app.py
, gui/chat_component.py
, gui/sidebar.py
, gui/tool_control.py
, gui/status_bar.py
)
- Main Window (
SCOUT
): Initializes the main application window, manages user sessions, and sets up the custom title bar. - Chat Component (
ChatComponent
): Manages the chat interface, including message entry, chat log, and persona selection. - Sidebar (
Sidebar
): Provides navigation and tool selection options. - Tool Control Bar (
ToolControlBar
): Manages quick access to various tools like VoIP, RSS feed, browser, and calendar. - Status Bar (
StatusBar
): Displays current provider, model, and user information.
- Cognitive Background Services: Manages background tasks related to conversation processing, such as generating conversation names and updating user profiles.
- Conversation Manager: Handles database operations related to conversations, messages, function calls, and responses. Uses SQLite for data storage.
- Provider Manager: Manages different LLM providers, background providers, and speech providers. Switches between providers based on the current configuration.
- Model Manager: Manages the current model and its configurations, such as allowed models and maximum tokens.
- Tool Manager: Loads functions from JSON and maps them to the current persona. Handles function calls and integrates them into the conversation flow.
- User Data Manager: Manages user profiles, EMRs (Electronic Medical Records), and system information. Formats and retrieves user data for persona personalization.
- OpenAI API: Handles communication with the OpenAI API for generating conversations and cognitive background services.
- Logger Setup: Configures logging for different modules to track application behavior and errors.
- Persona Manager: Manages different personas, personalizes them based on user data, and updates the current persona.
12. Function and Tool Definitions (modules/Personas/{persona}/Toolbox/functions.json
, modules/Personas/{persona}/Toolbox/maps.py
)
- Function Definitions: JSON files defining available functions for each persona.
- Function Maps: Python files mapping function names to their implementations.
- Main Application: Initializes and runs the application, managing the event loop and background tasks.
- GUI Components: Interact with the user, display information, and handle user inputs.
- Background Services: Perform asynchronous tasks like conversation processing and profile updates.
- Conversation Manager: Stores and retrieves conversation data, ensuring persistence.
- Provider Manager: Switches between different AI models and services based on the current configuration.
- Tool Manager: Executes functions and integrates their results into the conversation flow.
- User Data Manager: Provides personalized data to enhance user interactions.
- OpenAI API: Facilitates communication with the OpenAI API for generating responses and background services.
Our roadmap outlines the upcoming features and improvements for SCOUT:
- Task management implementation (scheduling, reminders, to-do lists)
- Integration of tool use/function calling for all AI providers
- Expansion of supported tasks and domains
- Multi-agent coordination and task distribution enhancements
- User profile management and personalization improvements
- Advanced NLP techniques for better understanding and generation
- Additional TTS and STT provider integrations
- Performance and scalability optimizations
- Extensive testing and bug fixing
- Stable release version preparation
To begin using SCOUT, follow these steps:
-
Clone the repository:
git clone https://github.com/DigitalHallucinations/SCOUT-2.git
-
Install Microsoft Visual C++ 14.0 or greater via the "Microsoft C++ Build Tools" here.
-
Install required Python dependencies:
pip install -r requirements.txt
-
Configure
.env_template
with your API keys and rename it to.env
. -
Enter your Google Cloud credentials in
./assets/scout/GCC_template.json
and rename it toGCC.json
. -
Create a desktop shortcut for
SCOUT.bat
and update paths inrun_app.vbs
andSCOUT.bat
to match your directory. Change the icon to 'assets/SCOUT/SCOUT.ico'. Make sure to set the shortcut to run as administrator. You must give the shortcut administrative priviledges as several tools require it. -
Launch SCOUT using the shortcut, sign up, and enjoy the assistant!
For comprehensive usage details, refer to the documentation (coming soon).
To use SCOUT, you will need to obtain several API keys and configure them in the .env
file. Here's where you can find the required API keys:
-
OpenAI API Key:
- Sign up for an OpenAI account at openai.com.
- Generate an API key by going to the API Keys section in your OpenAI account.
- Copy the API key and paste it in the
OPENAI_API_KEY
field in the.env
file.
-
Google Cloud Credentials: _ This is not the same as the Google AI Studio.
- Go to the Google Cloud Console and create a new project.
- Enable the necessary APIs, such as:
- Cloud Speech-to-Text
- Cloud Text-to-Speech
- Cloud Natural Language API
- Create a service account and download the JSON credentials file.
- In the
./assets/SCOUT/
directory, there is a file calledGCC_template.json
. Open this file and fill in the following fields with the values from the downloaded JSON credentials file:"type"
"project_id"
"private_key_id"
"private_key"
"client_email"
"client_id"
"client_x509_cert_url"
- Rename the filled-out
GCC_template.json
file toGCC.json
. - Update the
GOOGLE_APPLICATION_CREDENTIALS
field in the.env
file to point to theGCC.json
file. - In the Google Cloud Console, navigate to the API Library and enable the following APIs for your project:
- Cloud Speech-to-Text API
- Cloud Text-to-Speech API
- Cloud Natural Language API
-
SerpAPI Key:
- Sign up for a SerpAPI account at serpapi.com.
- Generate an API key in the API Keys section of your SerpAPI account.
- Copy the API key and paste it in the
SERPAPI_KEY
field in the.env
file.
-
NCBI API Key:
- Only neccessary for medical personas
- Sign up for an NCBI account at ncbi.nlm.nih.gov.
- Generate an API key in the API Key Management section of your NCBI account.
- Copy the API key and paste it in the
NCBI_API_KEY
field in the.env
file.
-
OpenWeatherMap API Key:
- Sign up for an OpenWeatherMap account at openweathermap.org.
- Generate an API key in the API Keys section of your OpenWeatherMap account.
- Copy the API key and paste it in the
OPENWEATHERMAP_API_KEY
field in the.env
file.
-
NewsAPI.org API Key:
- Sign up for a NewsAPI.org account at newsapi.org.
- Generate an API key in the API Keys section of your NewsAPI.org account.
- Copy the API key and paste it in the
NEWSAPI_API_KEY
field in the.env
file.
-
Google AI STUDIO API Key:
- This is separate from the Google Cloud Credentials.
- Navigate to the API Keys section in the Google Cloud Console.
- Generate a new API key and copy it.
- Paste the API key in the
GOOGLE_API_KEY
field in the.env
file.
-
Hugging Face API Key:
- Sign up for a Hugging Face account at huggingface.co.
- Generate an API token in the Settings section of your Hugging Face account.
- Copy the API token and paste it in the
HF_API_TOKEN
field in the.env
file.
-
Mistral API Key:
- Sign up for a Mistral account at mistral.ai.
- Generate an API key in the API Keys section of your Mistral account.
- Copy the API key and paste it in the
Mistral_API_KEY
field in the.env
file.
-
Anthropic API Key:
- Sign up for an Anthropic account at anthropic.com.
- Generate an API key in the API Keys section of your Anthropic account.
- Copy the API key and paste it in the
Anthropic_API_KEY
field in the.env
file.
After configuring all the necessary API keys, save the .env
file and proceed with the rest of the setup instructions.
Contributions are welcome! Please adhere to the contributing guidelines.
To contribute:
- Fork the repo and create a feature or bug-fix branch.
- Develop your changes with adherence to coding conventions and style.
- Write tests for stability and reliability.
- Update documentation, including README and API/usage guides.
- Submit a pull request with a clear description of your changes.
Your contributions are valued and will be reviewed promptly.
SCOUT is available under a custom license with the following terms:
- Non-Commercial Use: SCOUT can only be used for personal and research purposes unless a commercial license is obtained from Digital Hallucinations.
- Modification: Modifications to the SCOUT codebase are encouraged, but the modified code must be submitted as a pull request and accepted by the SCOUT development team before it can be used.
- Custom Deployments: Custom deployments and commercial use of SCOUT can be arranged by obtaining a license from Digital Hallucinations.
- Personal and Research Use: SCOUT can be used for personal and research purposes under the following restrictions:
- The SCOUT application and its components cannot be redistributed or shared publicly.
- The SCOUT application and its components cannot be used to create derivative works or commercial products without prior approval from Digital Hallucinations.
- The SCOUT application and its components must be used in accordance with the project's documentation and guidelines.
The full license details and terms will be provided in the project's LICENSE
file. Users interested in commercial use or custom deployments should contact the Digital Hallucinations team to discuss licensing options.
SCOUT is in active development; features may be incomplete. Your patience and support are appreciated as we work towards a versatile AI assistant.
For questions or issues, please contact me. Join us in advancing AI-powered personal assistance!