# pythontest **Repository Path**: LFJ-warehouse-2026/pythontest ## Basic Information - **Project Name**: pythontest - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-09 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 情感约会助手(motion) 这是根据课程笔记 `05_项目综述说明.md`、`06_情感咨询功能.md`、`07_约会行程规划功能.md` 整理出的 Python/FastAPI 项目骨架。 ## 功能 - 情感咨询:多轮对话、可选 RAG 检索、恋爱报告 Markdown 流式生成、PDF 下载。 - 约会行程规划:通过 HITL 对话收集信息,查询天气/交通/偏好,搜索活动和餐厅,生成时间线方案。 - 默认 `ENABLE_MOCK_LLM=true`、`ENABLE_MOCK_TOOLS=true`,不会调用真实模型、Tavily 或高德接口。所有模型调用都集中在 `core/llm.py`,你可以按自己的方式替换。 ## 运行 ```bash cd /e/Pythonproject/motion python -m venv .venv source .venv/Scripts/activate pip install -r requirements.txt cp .env.example .env uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` 健康检查: - `GET /health` - `GET /api/health` ## 主要接口 ### 情感咨询 1. `POST /api/emotion/threads` 创建情感咨询会话。 2. `POST /api/emotion/chat/stream` SSE 流式聊天。 3. `POST /api/emotion/indexes/build` 构建书籍向量库。 4. `GET /api/emotion/reports/{report_id}` 下载恋爱报告 PDF。 ### 约会规划 1. `POST /api/threads` 创建约会规划线程。 2. `POST /api/runs/stream-plan` 开始或恢复约会规划流程。 恢复示例: ```json { "threadId": "...", "command": {"resume": "明天在杭州西湖区湖滨约会,14:00-18:00"} } ``` ## 目录说明 - `api/`:FastAPI 路由、请求体模型、SSE 序列化。 - `core/`:配置和 LLM 适配器。真实模型接入从 `core/llm.py` 替换。 - `emotion/`:情感咨询、多轮记忆、RAG 检索、报告生成。 - `emotion/indexing/`:PDF 书籍加载、清洗、切分、Chroma 入库。 - `emotion/reports/`:Markdown 到 PDF 的 ReportLab 渲染。 - `agent/`:约会规划 workflow、状态、节点、提示词。 - `agent/tools/`:高德地图和 Tavily 搜索封装。 ## 环境变量 见 `.env.example`。如需真实外部服务: - `ENABLE_MOCK_LLM=false` 后在 `core/llm.py` 接入你自己的模型调用。 - `ENABLE_MOCK_TOOLS=false` 后配置 `AMAP_API_KEY`、`TAVILY_API_KEY`。 - 若使用 Redis 和 Chroma,请启动对应服务并配置 `REDIS_URL`、`CHROMA_HOST`、`CHROMA_PORT`。 ## Docker 辅助服务 ```bash # Redis # 拉取镜像 docker pull redis:7 # 启动容器,6379 端口暴露给本机 docker run -d --name motion-redis -p 6379:6379 redis:7 # Chroma # 拉取镜像 docker pull chromadb/chroma:0.5.23 # 启动容器,8001 映射到容器 8000 docker run -d --name motion-chroma -p 8001:8000 chromadb/chroma:0.5.23 ```