# 中华药典 AI Agent — Pharmacopoeia AI > 服务于药店医师、营业员和医生的 AI 药典查询系统 ## 项目结构 ``` pharmacopoeia-ai/ ├── backend-java/ # Java Spring Boot 后端(生产推荐) │ ├── pom.xml │ └── src/main/java/com/pharmacopoeia/ │ ├── config/ # 配置属性 │ ├── entity/ # JPA 实体 │ ├── security/ # Spring Security + JWT │ ├── service/ # LLM / RAG / 持久化 │ └── controller/ # REST + SSE 控制器 │ ├── backend-python/ # Python FastAPI 后端(开发原型) │ ├── app/ │ │ ├── api/ # chat / auth / drug / admin / exam │ │ ├── core/ # config / security / llm_client │ │ ├── rag/ # retriever / reranker / prompt / intent │ │ └── models/ # ORM 模型 │ └── requirements.txt │ ├── data-pipeline/ # 数据采集与入库管道(Python) │ ├── crawlers/ # PDF 提取 / 维基采集 / NMPA 爬虫 │ ├── processors/ # 文本清洗 / 切片 / 向量化 │ ├── schemas/ # JSON Schema(drug / knowledge_point / question) │ ├── data/ # 药典目录 / 示例数据 / Wiki 采集 │ └── ingest.py # 向量化入库脚本 │ ├── frontend-web/ # HTML5 Web 测试前端 │ └── index.html │ ├── miniprogram/ # 微信小程序 AI 模块(uni-app 增量) │ ├── api/ai.js # API 封装(SSE多事件) │ ├── utils/sse.js # SSE 工具 │ ├── pages/ai-yaodian/ # AI 药典查询页面 │ └── components/ai-chat/ # 浮动对话面板 │ ├── deploy/ # 部署配置 │ ├── docker-compose.yml # PG + Redis │ ├── nginx.conf │ └── supervisord.conf │ ├── docs/ # 文档 │ ├── SCHEME.md # 整体方案设计 │ ├── DATA_GUIDE.md # 数据准备操作指南 │ ├── CRAWLER_ASSESSMENT.md # 爬虫能力评估 │ └── MINIPROGRAM_INTEGRATION.md # 小程序联调手册 │ ├── .env.example # 环境变量模板 └── .gitignore ``` ## 快速开始 ### 1. 环境准备 ```bash docker compose -f deploy/docker-compose.yml up -d # 启动 PostgreSQL(pgvector) + Redis ``` ### 2. Java 后端(推荐) ```bash cd backend-java # 编辑 src/main/resources/application.yml 填入 qwen.api-key mvn spring-boot:run ``` ### 3. Python 后端(原型验证) ```bash cd backend-python pip install -r requirements.txt cp ../.env.example ../.env # 编辑填入 QWEN_API_KEY uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` ### 4. 导入数据 ```bash cd data-pipeline pip install -r requirements.txt python ingest.py # 需要先在 data/ 下准备 drug JSON 文件 ``` ### 5. 前端测试 打开浏览器访问 http://localhost:8000(Python)或 http://localhost:8080(Java) ## 技术栈 | 层级 | Python版 | Java版 | |------|---------|--------| | 后端框架 | FastAPI + Uvicorn | Spring Boot 3.3 | | 鉴权 | python-jose + passlib | Spring Security + JJWT | | 向量检索 | pgvector (raw SQL) | pgvector (JdbcTemplate) | | LLM API | OpenAI SDK → Qwen | WebFlux → Qwen | | ORM | SQLAlchemy | Spring Data JPA | | 数据库 | PostgreSQL + Redis | PostgreSQL + Redis | ## API 清单 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/v1/chat/stream` | SSE 流式对话 | | POST | `/api/v1/chat/ask` | 非流式对话 | | GET | `/api/v1/chat/history` | 对话历史 | | POST | `/api/v1/auth/login/wechat` | 微信登录 | | GET | `/health` | 健康检查 |