Files
Edu/services/ai/pyproject.toml
2026-07-10 18:57:39 +08:00

59 lines
1.5 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[project]
name = "ai-service"
version = "0.1.0"
description = "AI 网关服务 - LLM 集成 + 出题 + 备课工作流D6 智能洞察领域 · 生成子域)"
requires-python = ">=3.12"
dependencies = [
"fastapi>=0.115.0",
"uvicorn[standard]>=0.30.0",
"pydantic>=2.9.0",
"pydantic-settings>=2.5.0",
"httpx>=0.27.0",
# gRPC
"grpcio>=1.66.0",
"protobuf>=5.28.0",
# Kafka用量事件发布派生数据豁免 Outbox
"aiokafka>=0.11.0",
# Prompt 模板渲染
"jinja2>=3.1.0",
"pyyaml>=6.0.2",
# Redis限流 + 缓存 + 工作流状态)
"redis>=5.1.0",
# 重试机制LLM 调用 + 下游 gRPC
"tenacity>=9.0.0",
# 可观测性三支柱
"opentelemetry-api>=1.27.0",
"opentelemetry-sdk>=1.27.0",
"opentelemetry-exporter-otlp>=1.27.0",
"opentelemetry-instrumentation-fastapi>=0.48b0",
"opentelemetry-instrumentation-grpc>=0.48b0",
"prometheus-client>=0.20.0",
"structlog>=24.4.0",
]
[project.optional-dependencies]
dev = [
"grpcio-tools>=1.66.0",
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=5.0.0",
"ruff>=0.7.0",
]
[tool.ruff]
line-length = 100
target-version = "py312"
exclude = ["src/ai/proto_gen", "tests"]
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP", "B", "SIM"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "--cov=src --cov-report=term-missing --cov-fail-under=80"
[tool.coverage.run]
omit = ["src/ai/proto_gen/*"]