[project] name = "yuxi-workspace" version = "0.6.0-dev" description = "基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建" readme = "README.md" requires-python = ">=3.12,<3.14" dependencies = [ "asyncpg>=0.30.0", "aiosqlite>=0.20.0", "sqlalchemy[asyncio]>=2.0.0", "langchain>=1.2.0", "langchain-core >= 1.2.5", "colorlog>=6.9.0", "dashscope>=1.23.2", "docx2txt>=0.9", "fastapi>=0.121", "langchain-community>=0.4", "langchain-deepseek>=1.0", "langchain-mcp-adapters>=0.1.9", "langchain-openai>=1.0.2", "langchain-tavily>=0.2.13", "langchain-text-splitters>=1.0", "langgraph>=1.0.1", "langgraph-checkpoint-sqlite>=3.0", "langgraph-checkpoint-postgres>=2.0.0", "langgraph-cli[inmem]>=0.4", "langsmith>=0.4", "lightrag-hku>=1.4.6", "llama-index>=0.14", "llama-index-readers-file>=0.4.7", "markdownify>=1.1.0", "readability-lxml>=0.8.1", "mcp>=1.20", "neo4j>=5.28.1", "networkx>=3.5", "openai>=1.109", "opencv-python-headless>=4.11.0.86", "pyjwt>=2.8.0", "pymilvus>=2.5.8", "pymupdf>=1.25.5", "python-dotenv>=1.1.0", "python-jose[cryptography]>=3.4.0", "python-multipart>=0.0.20", "pyyaml>=6.0.2", "rapidocr-onnxruntime>=1.4.4", "tavily-python>=0.7.0", "unstructured>=0.17.2", "uvicorn[standard]>=0.34.2", "httpx>=0.27.0", "tqdm>=4.66.4", "rich>=13.7.1", "typer>=0.16.0", "tabulate>=0.9.0", "minio>=7.2.7", "Pillow>=10.5.0", "pymysql>=1.1.0", "tenacity>=8.0.0", "pypinyin>=0.55.0", "tomli", "tomli-w", "aiofiles>=24.1.0", "aiohttp>=3.9.0", "arq>=0.26.3", "chardet>=5.0.0", "deepagents>=0.2.5", "json-repair>=0.54.0", "torch>=2.8.0", "torchvision==0.23", "docling>=2.68.0", "loguru>=0.7.3", "redis>=5.2.0", ] [tool.ruff] line-length = 120 # 代码最大行宽 lint.select = [ # 选择的规则 "F", "E", "W", "UP", ] [tool.uv] [[tool.uv.index]] name = "tsinghua" url = "https://pypi.tuna.tsinghua.edu.cn/simple" default = true [[tool.uv.index]] name = "pytorch-cpu" url = "https://download.pytorch.org/whl/cpu" explicit = true [tool.uv.sources] torch = { index = "pytorch-cpu" } torchvision = { index = "pytorch-cpu" } [tool.uv.workspace] exclude = ["."] members = [ "package/yuxi", ] [tool.pytest.ini_options] addopts = "-v --tb=short" testpaths = ["test"] markers = [ "auth: marks tests that require authentication", "slow: marks tests as slow", "integration: marks tests as integration tests" ] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" [dependency-groups] dev = [ "ruff>=0.12.1", ] test = [ "pytest>=8.0.0", "pytest-asyncio>=0.24.0", "pytest-httpx>=0.32.0", "pytest-cov>=6.0.0", ]