Observed since 20 Oct, 22:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agentops-ai
AI-powered development platform: Multi-agent system for requirements discovery, conversational document building, and test automation
AgentOps is a next-generation, AI-powered development platform that automatically generates requirements and tests from your codebase. Using advanced multi-agent AI systems, AgentOps bridges the gap between technical implementation and business requirements through bidirectional analysis.
# Install from PyPI
pip install agentops-ai
# Or install from source
git clone https://github.com/knaig/agentops_ai.git
cd agentops_ai
pip install -e .
# 1. Initialize your project
agentops init
# 2. Run complete analysis on your code
agentops runner myfile.py
# 3. Check results and status
agentops status
# 4. View traceability matrix
agentops traceability
That's it! AgentOps will automatically:
| Command | Description | Example |
|---|---|---|
agentops init | Initialize project structure | agentops init |
agentops runner <file> | Complete workflow execution | agentops runner src/main.py |
agentops tests <file> | Generate test suites | agentops tests src/main.py |
agentops analyze <file> | Deep requirements analysis | agentops analyze src/main.py |
agentops status | Check project status | agentops status |
agentops traceability | Generate traceability matrix | agentops traceability |
agentops onboarding | Interactive setup guide | agentops onboarding |
agentops version | Show version information | agentops version |
agentops help | Show detailed help | agentops help |
| Option | Description | Example |
|---|---|---|
--all | Process all Python files | agentops runner --all |
--auto-approve | Skip manual review | agentops runner myfile.py --auto-approve |
-v, --verbose | Detailed output | agentops runner myfile.py -v |
Combined Usage:
# Batch process entire project with automation
agentops runner --all --auto-approve -v
# Generate tests for all files
agentops tests --all --auto-approve
# Detailed analysis with verbose output
agentops analyze myfile.py -v
New users can get started quickly with the interactive onboarding:
agentops onboarding
This will:
Process your entire project with a single command:
# Analyze all Python files in your project
agentops runner --all
# Generate tests for all files
agentops tests --all
# With automation and verbose output
agentops runner --all --auto-approve -v
Perfect for automated workflows:
# Fully automated analysis
agentops runner --all --auto-approve
# Check project status
agentops status -v
Create a .env file in your project root:
# Required: OpenAI API Key
OPENAI_API_KEY=your_openai_api_key_here
# Optional: Custom settings
AGENTOPS_OUTPUT_DIR=.agentops
AGENTOPS_LOG_LEVEL=INFO
Validate your API keys before running:
# Run the validation script
./scripts/validate_api_keys.sh
After running AgentOps, you'll find these artifacts in your project:
.agentops/
├── requirements/
│ ├── requirements.gherkin # Requirements in Gherkin format
│ └── requirements.md # Requirements in Markdown format
├── tests/
│ ├── test_main.py # Generated test files
│ └── test_coverage.xml # Test coverage reports
├── traceability/
│ └── traceability_matrix.md # Requirements-to-tests mapping
└── reports/
└── analysis_report.json # Detailed analysis results
agentops runner does everything# myfile.py
def calculate_total(items, tax_rate=0.1):
"""Calculate total with tax for a list of items."""
subtotal = sum(items)
tax = subtotal * tax_rate
return subtotal + tax
def apply_discount(total, discount_percent):
"""Apply percentage discount to total."""
discount = total * (discount_percent / 100)
return total - discount
# Run analysis
agentops runner myfile.py
Generated Requirements (Gherkin):
Feature: Shopping Cart Calculations
Scenario: Calculate total with tax
Given a list of items with prices [10, 20, 30]
And a tax rate of 10%
When I calculate the total
Then the result should be 66.0
Scenario: Apply discount to total
Given a total amount of 100
And a discount of 15%
When I apply the discount
Then the final amount should be 85.0
Generated Tests:
def test_calculate_total_with_tax():
items = [10, 20, 30]
result = calculate_total(items, tax_rate=0.1)
assert result == 66.0
def test_apply_discount():
result = apply_discount(100, 15)
assert result == 85.0
# agentops_ai/agentops_core/config.py
LLM_MODEL = "gpt-4"
LLM_TEMPERATURE = 0.1
OUTPUT_DIR = ".agentops"
LOG_LEVEL = "INFO"
from agentops_ai.agentops_core.orchestrator import AgentOrchestrator
# Create orchestrator
orchestrator = AgentOrchestrator()
# Run analysis
result = orchestrator.run_workflow("myfile.py")
# Access results
print(f"Requirements: {len(result.requirements)}")
print(f"Tests generated: {len(result.test_code)} lines")
print(f"Quality score: {result.quality_score}")
API Key Errors:
# Set your OpenAI API key
export OPENAI_API_KEY="your-key-here"
Permission Errors:
# Ensure write permissions
chmod 755 .agentops/
Import Errors:
# Reinstall dependencies
pip install -r requirements.txt
# Show detailed help
agentops help
# Check version
agentops version
# Validate setup
agentops status
We welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.
AgentOps: Bridging technical implementation and business requirements through AI-powered analysis. 🚀
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
clickEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | click>=8.1.3 | runtime |
richEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | rich>=13.3.5 | runtime |
openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | openai>=1.0.0 | runtime |
python-dotenvEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | python-dotenv>=1.1.0 | runtime |
langchain_openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | langchain_openai>=0.0.1 | runtime |
fastapiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | fastapi>=0.100.0 | runtime |
uvicornEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | uvicorn>=0.23.0 | runtime |
pandasEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pandas>=1.5.0 | runtime |
jinja2Environment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | jinja2>=3.1.0 | runtime |
markdownEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | markdown>=3.4.0 | runtime |
sqlalchemyEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | sqlalchemy>=1.4.0 | runtime |
pytestEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0.0 | runtime |
weasyprintEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | weasyprint>=65.0 | runtime |
python-docxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | python-docx>=1.2.0 | runtime |
streamlitEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | streamlit>=1.28.0 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pydantic>=2.0.0 | runtime |
typing-extensionsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | typing-extensions>=4.0.0 | runtime |
questionaryEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | questionary>=2.0.0 | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.3.5; extra == "dev" | runtime |
pytest-json-reportEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-json-report>=1.5.0; extra == "dev" | runtime |
coverageEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | coverage>=7.8.2; extra == "dev" | runtime |
pydoc-markdownEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pydoc-markdown>=4.7.0; extra == "dev" | runtime |
mkdocs-materialEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocs-material>=9.4.0; extra == "dev" | runtime |
mkdocsEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocs>=1.5.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.1.0; extra == "dev" | runtime |
blackEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | black>=23.0.0; extra == "dev" | runtime |
pydocstyleEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pydocstyle>=6.3.0; extra == "dev" | runtime |
bdist_wheel · 220.61 KB · Python py3
sdist · 193.79 KB · Python source
Observed since 20 Oct, 22:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:3cda07e5b37222456463258bcc778cbf6591dcf03cd557100085605410125e48