chakravyuh / pyproject.toml
UjjwalPardeshi
deploy: latest main to HF Space
03815d6
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "chakravyuh"
version = "0.3.0"
description = "Multi-agent OpenEnv RL environment for Indian UPI fraud detection — diagnoses + fixes reward hacking in RLHF (v1 100%/36% FPR → v2 99.3%/6.7%)"
readme = "README.md"
requires-python = ">=3.10,<3.13"
license = { text = "MIT" }
authors = [
{ name = "Ujjwal Pardeshi" },
{ name = "Chakravyuh Team" }
]
keywords = [
"reinforcement-learning",
"multi-agent",
"fraud-detection",
"openenv",
"llm",
"grpo",
"lora",
"qwen",
"rlhf",
"reward-hacking",
"ai-safety",
"red-team",
"upi",
"india",
"scam-detection",
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
# Core dependencies are deliberately lightweight so the OpenEnv server
# (HF Space) can build a small image. Torch / transformers /
# sentence-transformers move into the [llm] / [train] extras below.
dependencies = [
"pydantic>=2.6",
"numpy>=1.26",
"python-dotenv>=1.0",
"tqdm>=4.66",
"jsonlines>=4.0",
"openenv-core>=0.2.3,<0.3",
"fastapi>=0.115",
"uvicorn>=0.30",
]
[project.optional-dependencies]
llm = [
"torch>=2.5,<2.6",
"transformers>=4.45,<4.50",
"sentence-transformers>=2.7",
"peft>=0.13",
"trl>=0.12",
"accelerate>=0.33",
"bitsandbytes>=0.44",
"datasets>=2.19",
"wandb>=0.17",
]
demo = [
"gradio>=5.0",
]
train = [
"unsloth",
"vllm>=0.6",
]
eval = [
"scipy>=1.13",
"pandas>=2.2",
"matplotlib>=3.9",
]
frontier = [
# OpenAI-compatible: works for OpenAI + Groq + other compat providers
"openai>=1.40",
# Anthropic Claude
"anthropic>=0.39",
# Google Gemini
"google-generativeai>=0.8",
]
dev = [
"pytest>=8.0",
"pytest-cov>=5.0",
"ruff>=0.6",
"mypy>=1.11",
]
[project.urls]
Homepage = "https://huggingface.co/spaces/ujjwalpardeshi/chakravyuh"
Repository = "https://github.com/UjjwalPardeshi/Chakravyuh"
Documentation = "https://github.com/UjjwalPardeshi/Chakravyuh#readme"
Changelog = "https://github.com/UjjwalPardeshi/Chakravyuh/releases"
Issues = "https://github.com/UjjwalPardeshi/Chakravyuh/issues"
"HF Space (live demo)" = "https://ujjwalpardeshi-chakravyuh.hf.space"
"HF Hub Model (Analyzer v2)" = "https://huggingface.co/ujjwalpardeshi/chakravyuh-analyzer-lora-v2"
"HF Hub Dataset (bench-v0)" = "https://huggingface.co/datasets/ujjwalpardeshi/chakravyuh-bench-v0"
[project.scripts]
# The OpenEnv validator (`openenv validate .`) requires the key to be
# exactly ``server`` and the target to end in ``:main``. This makes
# `uv run --project . server` and `openenv serve .` both work.
server = "server.app:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["chakravyuh_env*", "server*", "training*", "eval*"]
[tool.ruff]
line-length = 100
target-version = "py310"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "B", "UP"]
ignore = ["E501"]
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "-v --tb=short"
markers = [
"unit: fast, no external dependencies",
"integration: slower, multi-component",
]
# OpenEnv integration: ``openenv-core>=0.2.3`` pinned in dependencies above.
# Entry: ``chakravyuh_env.ChakravyuhOpenEnv`` / ``server.app:app``.