ishaq101's picture
[NOTICKET] Demo agentic agent
bef5e76
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "demo-agent-service"
version = "0.1.0"
description = "DEMO Agentic Service Data Eyond — Multi-Agent AI Backend"
requires-python = ">=3.12,<3.13"
dependencies = [
# --- Web Framework ---
"fastapi[standard]==0.115.6",
"uvicorn[standard]==0.32.1",
"python-multipart==0.0.12",
"starlette==0.41.3",
"sse-starlette==2.1.3",
# --- LangChain Core Ecosystem (NO LiteLLM) ---
"langchain==0.3.13",
"langchain-core==0.3.28",
"langchain-community==0.3.13",
"langchain-openai==0.2.14",
"langchain-postgres>=0.0.13",
"langgraph==0.2.60",
"langgraph-checkpoint-postgres==2.0.9",
# --- LLM / Azure OpenAI ---
"openai==1.58.1",
"tiktoken==0.8.0",
# --- Database ---
"sqlalchemy[asyncio]==2.0.36",
"asyncpg==0.30.0",
"psycopg[binary,pool]==3.2.3",
"pgvector==0.3.6",
"alembic==1.14.0",
# --- Azure ---
"azure-storage-blob==12.23.1",
"azure-identity==1.19.0",
"azure-ai-documentintelligence==1.0.0",
# --- Pydantic / Validation ---
"pydantic==2.10.3",
"pydantic-settings==2.7.0",
# --- Observability ---
"langfuse==2.57.4",
"structlog==24.4.0",
"prometheus-client==0.21.1",
# --- Security ---
"passlib[bcrypt]==1.7.4",
"cryptography==44.0.0",
# --- Rate Limiting ---
"slowapi==0.1.9",
"redis==5.2.1",
# --- Retry ---
"tenacity==9.0.0",
# --- Document Processing (for reading existing docs from blob) ---
"pypdf==5.1.0",
"python-docx==1.1.2",
"openpyxl==3.1.5",
"pandas==2.2.3",
# --- Chart/Visualization ---
"matplotlib==3.9.3",
"plotly==5.24.1",
"kaleido==0.2.1",
# --- MCP ---
"mcp==1.2.0",
# --- Advanced RAG ---
"rank-bm25==0.2.2",
"sentence-transformers==3.3.1",
# --- PII Detection (no LiteLLM) ---
"presidio-analyzer==2.2.355",
"presidio-anonymizer==2.2.355",
"spacy==3.8.3",
# --- Utilities ---
"httpx==0.28.1",
"anyio==4.7.0",
"python-dotenv==1.0.1",
"orjson==3.10.12",
"cachetools==5.5.0",
"apscheduler==3.10.4",
"jsonpatch>=1.33",
"pymongo>=4.14.0",
"psycopg2>=2.9.11",
]
[project.optional-dependencies]
dev = [
"pytest==8.3.4",
"pytest-asyncio==0.24.0",
"pytest-cov==6.0.0",
"httpx==0.28.1",
"ruff==0.8.4",
"mypy==1.13.0",
"pre-commit==4.0.1",
]
[tool.uv]
dev-dependencies = [
"pytest==8.3.4",
"pytest-asyncio==0.24.0",
"pytest-cov==6.0.0",
"ruff==0.8.4",
"mypy==1.13.0",
"pre-commit==4.0.1",
]
[tool.hatch.build.targets.wheel]
packages = ["src/agent_service"]
[tool.ruff]
target-version = "py312"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "S", "B", "A", "C4", "T20"]
ignore = [
"S101", # assert statements OK in tests
"S105", # hardcoded passwords — false positives in config
"S106",
"B008", # FastAPI Depends() calls OK in function args
]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["S101", "S105", "S106"]
[tool.mypy]
python_version = "3.12"
strict = true
ignore_missing_imports = true
plugins = ["pydantic.mypy"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
filterwarnings = [
"ignore::DeprecationWarning",
]