A software requirements analysis tool that uses multiple LLMs (Large Language Models) to generate domain models, detect missing requirements, and analyze requirement completeness.
- Multi-LLM Support: Choose from multiple LLMs (DeepSeek, OpenAI, Claude) for analysis
- Majority Voting: Aggregate results from multiple LLMs using different voting strategies
- Domain Model Generation: Generate UML class diagrams from natural language requirements
- Requirements Analysis: Detect issues, missing requirements, and measure completeness
- Interactive UI: Review and accept/reject suggested improvements
-
Clone the repository:
git clone https://github.com/yourusername/requirements-analyzer.git cd requirements-analyzer
-
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
-
Set up environment variables:
- Copy
.env.example
to.env
- Edit
.env
and add your API keys for the LLMs you want to use:- DeepSeek: Get API key from https://platform.deepseek.com
- OpenAI: Get API key from https://platform.openai.com
- Claude: Get API key from https://console.anthropic.com
- Copy
-
Start the application:
python app.py
-
Open a web browser and navigate to:
http://127.0.0.1:5000/
-
Input your software requirements in the text area.
-
Select the LLM models you want to use for analysis.
-
Choose the aggregation method for combining results from multiple models.
-
Click "Analyze Requirements" to generate the domain model and analysis.
-
Review the generated model and suggestions, then accept or reject changes.
The system supports three LLM providers:
- DeepSeek: Uses the DeepSeek chat model
- OpenAI: Uses the GPT models (default: gpt-o4-mini (high reasoning))
- Claude: Uses Claude models (default: claude-3-7-sonnet-20250219)
When multiple LLMs are selected, their results can be combined using different methods:
- Majority Vote: Simple majority voting where elements that appear in most models are included
- Weighted Vote: Similar to majority voting but with model-specific weights
- LLM-based Meta-Analysis: Use another LLM to analyze and combine the results from other models
app.py
: Main application entry pointconfig.py
: Configuration and API key managementmodels/
: Domain model analysis logicservices/
: LLM clients and adapterstemplates/
: HTML templates for the UIutils/
: Utility functions for JSON handling and other taskslog/
: Log files
- Add the new API key to
.env
andconfig.py
- Create a new client module in
services/
- Add a new adapter class in
services/llm_adapters.py
- Update the factory in
services/llm_client_factory.py
- Add the new model to the available models in
config.py