MayaAI is an intelligent music industry assistant powered by CrewAI, featuring three specialized agents working together to provide comprehensive music industry insights and creative assistance.
under 3 minute demo of the project:
- Develops comprehensive career development plans
- Creates 6-month career roadmaps
- Identifies potential collaboration opportunities
- Provides brand positioning strategies
- Analyzes target audience demographics
- Plans media and performance engagements
Technical Configuration:
- Tools: SerperDevTool (for web search), OpenWeatherMapTool (configured manually for weather data)
- Max Iterations: 1
- Max Time: 200 seconds
- Allows Delegation: True
- Temperature: 0.5
- Model: WatsonX (granite-3-8b-instruct)
- Conducts data-driven music market research
- Analyzes current genre popularity trends
- Identifies emerging music styles
- Provides demographic listening preferences
- Suggests potential collaborations
- Recommends cover songs based on audience data
Technical Configuration:
- Tools: SerperDevTool (for market research and trend analysis)
- Max Iterations: 1
- Max Time: 200 seconds
- Temperature: 0.5
- Specialized in data-driven analysis
- Generates original musical compositions
- Creates lyrical content matching specified themes
- Provides chord progression recommendations
- Analyzes rhyme schemes
- Suggests musical genre adaptations
- Creates demo lyrics and chord structures
Technical Configuration:
- Tools: None (focused on creative generation)
- Max Iterations: 1
- Max Time: 200 seconds
- Temperature: 0.5
- Outputs saved in structured format with markers:
- 🎵 MUSICAL CONTENT START 🎵
- 🎵 MUSICAL CONTENT END 🎵
Global Model Parameters:
- Decoding Method: Sample
- Max New Tokens: 250
- Top K: 50
- Top P: 0.95
- Model: WatsonX LLM
- Project Integration: CrewAI Framework
- Clone the repository:
git clone https://github.com/evilangelsaahi/MayaAI.git
cd MayaAI- Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Configure API keys:
Create
.envfile in directory, an empty template is present save your API keys there and remove_templateso thatconfig.pyfile can map with your API keys:
# WatsonX Configuration
WATSONX_APIKEY="PUT-YOUR-API-KEY-HERE"
WATSONX_PROJECT_ID="PUT-YOUR-API-KEY-HERE"
WATSONX_URL="PUT-YOUR-API-KEY-HERE"
WATSONX_PLATFORM_URL="PUT-YOUR-API-KEY-HERE"
WATSONX_MODEL_ID="PUT-YOUR-API-KEY-HERE"
# Model Parameters are hardcoded in code but can be put here as well
DECODING_METHOD=sample
MAX_NEW_TOKENS=200
MIN_NEW_TOKENS=0
TEMPERATURE=0
TOP_K=1
TOP_P=1
# Serper Configuration
SERPER_API_KEY="PUT-YOUR-API-KEY-HERE"
# NewsAPIWrapper
NEWS_API_KEY="not-using-this-tool"
# OpenWeatherMap
OPENWEATHERMAP_API_KEY="PUT-YOUR-API-KEY-HERE"Run the main application:
python agent.pyor
python3 agent.pyThe application provides an interactive menu with options to:
- Get career development advice
- Research music trends
- Generate creative content
- Save conversation history
- Exit the application
-
Decoding Method: "sample"
- Randomly selects next tokens based on their probability distribution
- Provides more varied output than "greedy" decoding (which always selects most likely token)
-
Max New Tokens: 250
- Limits output length to 250 new tokens (roughly 800 characters in English)
- Prevents excessively long responses and controls computation time
-
Temperature: 0.4
- Controls randomness in output (scale 0-1)
- Lower setting (0.5) favors consistency and predictability over creativity
- Creates more focused, deterministic responses
-
Top-k: 50
- Restricts token selection to only the 50 most probable options
- Filters out unlikely or nonsensical choices
- Balances output diversity with quality
-
Top-p: 0.95
- Uses "nucleus sampling" to dynamically select tokens
- Considers only tokens whose cumulative probability reaches 95%
- More adaptable than top-k, adjusts based on probability distribution
This configuration creates reliable, consistent outputs with moderate creativity and reasonable length constraints.
Note: There's always a tradeoff between creativity and being right, these params are chosen to suit the best case for this project. Sometimes I noticed right answer in the thought process of Agent, but again in final answer it apologizes for being wrong.
All generated content (lyrics, chords, etc.) is automatically saved to the outputs directory with timestamped filenames in the format:
save text need to be prompted to AI agent to save upto last two conversations
outputs/creative_output_YYYYMMDD_HHMMSS.txt
MayaAI/
├── agent.py # Main application file
├── config.py # Configuration and API keys
├── requirements.txt # Project dependencies
├── outputs/ # Generated content directory
└── README.md # Project documentation
- crewai
- crewai-tools
- langchain-ibm
- langchain-core
- requests
- python-dotenv
This project is licensed under the MIT License - see the LICENSE file for details.
- Nicholas Renotte - Data Science professional at IBM, whose work and tutorials have been foundation for this project
- Maya Murad for the inspiration behind the MAYA (Senior Artist Manager) name whose tutorials have been inspirational for this project
-Watsonx Langchain:WatsonxLLM is a wrapper for IBM watsonx.ai foundation models.
-CrewAI:Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.
👨🏾💻 Project developed by Sahil Bohot - Mainframe Systems Programmer and AI enthusiast
📜 License: This project is licensed under the MIT License
