42 lines
1.2 KiB
TOML
42 lines
1.2 KiB
TOML
[project]
|
|
name = "ai-service"
|
|
version = "0.0.0"
|
|
description = "RAG orchestration for the Duoc Thu medical chatbot"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"fastapi>=0.115,<1",
|
|
"httpx>=0.27,<1",
|
|
"psycopg[binary]>=3.2,<4",
|
|
"pydantic-settings>=2.6,<3",
|
|
"qdrant-client>=1.7,<2",
|
|
"uvicorn[standard]>=0.30,<1",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
test = ["pytest>=7.4,<9"]
|
|
# Both optional on purpose: the service answers without a metrics stack, and
|
|
# without a cloud generator. Neither is a precondition for a grounded answer.
|
|
metrics = ["prometheus-client>=0.20,<1"]
|
|
generation = ["anthropic>=0.112,<1"]
|
|
observability = [
|
|
"opentelemetry-api>=1.27,<2",
|
|
"opentelemetry-sdk>=1.27,<2",
|
|
"opentelemetry-exporter-otlp-proto-http>=1.27,<2",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
|
|
[tool.ruff.lint]
|
|
select = ["F", "E9", "B", "ARG"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# Test doubles implement the domain's Protocols. Conformance requires the full
|
|
# signature even where a double ignores an argument, so ARG here would push
|
|
# tests toward fakes that no longer match the interface they stand in for.
|
|
"tests/*" = ["ARG001", "ARG002"]
|